以太坊智慧合約代幣應用開發(3)-部署智慧合約

一、概述

    智慧合約使用solidity語言編寫的一個程式碼塊形式上像其他開發語言當中的一個類,其實就是我們在區塊鏈上設定的一些規則,這些規則可以被區塊鏈節點呼叫,完成對應的功能。

二、相關概念

1、solidity語言

Solidity是一種智慧合約高階語言,執行在Ethereum虛擬機器(EVM)之上

2、remix

remix是編寫與編譯solidity智慧合約的一個web ide 工具,使用該工具使用者沒有必要在本地部署智慧合約的編輯工具

3、ABI

ABI是Application Binary Interface的縮寫,字面意思 應用二進位制介面,可以通俗的理解為 合約的介面說明。當合約被編譯後,那麼它的abi也就確定了。

4、bytecode

bytecode可以認為是智慧合約的位元組碼,可以簡單認為是隻能合約的二進位制位元組碼

三、編譯部署合約

1、準備相關程式碼

這是一段簡化的合約程式碼,用於在remix上部署

pragma solidity ^0.4.20;
contract MyToken {
/* This creates an array with all balances */
mapping (address => uint256) public balanceOf;
/* Initializes contract with initial supply tokens to the creator of the contract */
function MyToken(
uint256 initialSupply
) {
balanceOf[msg.sender] = initialSupply;              // Give the creator all initial tokens
}
/* Send coins */
function transfer(address _to, uint256 _value) {
require(balanceOf[msg.sender] >= _value);           // Check if the sender has enough
require(balanceOf[_to]   _value >= balanceOf[_to]); // Check for overflows
balanceOf[msg.sender] -= _value;                    // Subtract from the sender
balanceOf[_to]  = _value;                           // Add the same to the recipient
}
function getBalance(address addr) returns(uint) {
return balanceOf[addr];
}
}

2、在remix上編譯智慧合約

開啟下面網址

http://remix.ethereum.org/ 

將合約程式碼複製到網站中,點選compile進行編譯

如果程式碼沒有錯誤可以成功編譯點選detail檢視詳細資訊,在detail中複製智慧合約的api與bytecode,並進行儲存

複製WEB3DEPLOY程式碼並在geth客戶端中,需要把對應的變數替換為對應的變數值

編譯效果如下圖所示

將合約部署到區塊鏈時需要開啟挖礦功能,因為智慧合約的部署需要算力,算力需要區塊鏈上的礦機來提供

下一篇文章來探討使用web3.js訪問節點並進行互動

區塊鏈 智慧合約 代幣 合約編譯部署