合約部署需要挖礦才能成功,我們新開乙個視窗用與挖礦,新開乙個控制台,輸入命令: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...