部署智慧型合約

2021-09-12 10:06:44 字數 2710 閱讀 3696

合約部署需要挖礦才能成功,我們新開乙個視窗用與挖礦,新開乙個控制台,輸入命令:geth attach 連線到控制台,執行miner.start(1),開始挖礦。

合約demo如下:

pragma solidity ^0.4.0;

contract infocontract

function getinfo() public constant returns (string, uint)

}

編譯後部署**:

var infocontractcontract = web3.eth.contract([,],"payable":false,"statemutability":"view","type":"function"},,],"name":"setinfo","outputs":,"payable":false,"statemutability":"nonpayable","type":"function"}]);

var infocontract = infocontractcontract.new(

, function (e, contract)

})

將編譯好的**拷貝直接放到控制台即可。如果出現error: account is locked undefined錯誤的話, 則使用personal.unlockaccount(eth.accounts[0],'password')命令將使用者解鎖。password為你建立賬號的密碼。 一段時間後geth視窗就會出現contract mined! address..., 表明合約**發布成功。

部署之後會返回合約位址(合約賬戶位址)合約部署成功後,在控制台可以直接呼叫。

set方法改變了合約內部狀態,所以也要解鎖交易傳送者賬戶,消耗gas,並且需要礦工打包交易持久化到區塊。

> infocontract.setinfo.sendtransaction("xiaoming",18,)

get方法沒有改變合約內部狀態,所以不需要消耗gas和礦工打包。

> infocontract.getinfo()

["xiaoming", 18]

為什麼需要這個標準?

為了我們發布的token被以太坊錢包支援,要求我們在實現代幣的時候必須要遵守的協議,如指定代幣名稱、總量、實現代幣交易函式等。

所以才推出了一種以太坊代幣的標準:erc20標準。

標準裡包含了哪些內容?

erc20標準實際上就是乙個合約介面標準。

method:

1、name

function name() constant returns (string name)

返回string型別的erc20代幣的名字,例如:statusnetwork

2、symbol

function symbol() constant returns (string symbol)

返回string型別的erc20代幣的符號,也就是代幣的簡稱,例如:snt。

3、decimals

function decimals() constant returns (uint8 decimals)

支援幾位小數點後幾位。如果設定為3。也就是支援0.001表示。

4、totalsupply

function totalsupply() constant returns (uint256 totalsupply)

發行代幣的總量,可以通過這個函式來獲取。所有智慧型合約發行的代幣總量是一定的,totalsupply必須設定初始值。如果不設定初始值,這個代幣發行就說明有問題。

5、balanceof

function balanceof(address _owner) constant returns (uint256 balance)

輸入位址,可以獲取該位址代幣的餘額。

6、transfer

function transfer(address _to, uint256 _value) returns (bool success)

呼叫transfer函式將自己的token轉賬給_to位址,_value為轉賬個數

批准_spender賬戶從自己的賬戶轉移_value個token。可以分多次轉移。

8、transferfrom

function transferfrom(address _from, address _to, uint256 _value) returns (bool success)

9、allowance

function allowance(address _owner, address _spender) constant returns (uint256 remaining)

返回_spender還能提取token的個數。

events

11、transfer

event transfer(address indexed _from, address indexed _to, uint256 _value)

當成功轉移token時,一定要觸發transfer事件

posted @

2018-11-30 21:06

林深時見鹿! 閱讀(

...)

編輯收藏

以太坊智慧型合約部署代幣

pragma solidity 0.4.0 建立乙個基礎合約,用於指定某些操作只能由合約擁有者 執行 contract owned 宣告乙個修改器,證明只有合約擁有者才能執行某些操作 modifier onlyownerelse 此函式的功能是把合約轉讓給指定使用者 function transfe...

Remix Geth 實現智慧型合約部署和呼叫詳解

geth實現私有鏈部署合約和呼叫介面 記得在setting裡選擇對應版本 點選run,create,實現部署 在部署完之後會出現下面介面,包括合約名字 如何呼叫介面?只需要在對應的介面上輸入引數,呼叫的話,點選前面的介面名就能在下面看到輸出 經過以上兩步 我們應該已經除錯好合約,下面就是部署在私有鏈...

智慧型合約的手動編譯,測試,部署,互動

我們脫離remix環境,或者說對remix的工作原理自己實現,對智慧型合約進行手動編譯,測試,部署,呼叫,徹底理解remix背後工作的原理。專案的結構如圖 contracts存放合約原始碼 test存放合約測試檔案 compile.js是合約編譯檔案 deploy是合約部署檔案 package.js...