1.進(jìn)入控制臺
geth --datadir data console
2.編寫合約
s='contract zhaoxiCoin{address public minter;mapping(address=>uint) public balances;event Sent(address from,address to,uint amount);function zhaoxiCoin(){minter=msg.sender;}function mint(address receiver,uint amount){if(msg.sender!=minter) return;balances[receiver]+=amount;}function send(address receiver,uint amount){if(balances[msg.sender]<amount)return;balances[msg.sender]-=amount;balances[receiver]+=amount;Sent(msg.sender,receiver,amount);}}'
3.編譯合約
compiled=web3.eth.compile.solidity(s);
4.部署合約
contract=web3.eth.contract(compiled.zhaoxiCoin.info.abiDefinition);
2.準(zhǔn)備兩個賬戶并解鎖賬戶
要在區(qū)塊鏈上創(chuàng)建一個合約亩进,要把以太坊虛擬機(jī)代碼作為數(shù)據(jù)給空地址發(fā)送交易。需要準(zhǔn)備一個有余額并激活的以太坊賬戶。
如果以前沒有賬戶颂碧,就用personal.newAccount('123456')回車創(chuàng)建賬戶墩瞳,123456是密碼
如果已經(jīng)有賬戶了
user1=eth.accounts[0] personal.unlockAccount(user1) user2=eth.accounts[1] personal.unlockAccount(user2)
查看一下user1里面是否有以太幣哩至,如果沒有的話览妖,就挖一下礦(miner.start() miner.stop()就可以了瘾杭,有的話就不用挖礦了)
eth.getBalance(user1)
demo=contract.new({from:web3.eth.accounts[0],data:compiled.zhaoxiCoin.code, gas:1000000});
注意:1.在沒有挖礦之前倒是第二行address是沒有地址的
2 最后一行這個是合約部署的交易地址)
4.啟動挖礦
miner.start()
注意:1.true下邊那一行表示在第238個區(qū)塊上提交了一個智能合約
5.停止挖礦
miner.stop()
這個時候合約就已經(jīng)部署到區(qū)塊鏈上了站蝠,下面對這個合約進(jìn)行調(diào)用
5 調(diào)用合約
1.查看一下合約信息
demo
2.記錄合約的地址
address="0x9867a3fd2d9e9e261af20a961777d5e910b6e888"
3.調(diào)用合約
g=eth.contract(demo.abi).at(address)
4.終于開始轉(zhuǎn)賬啦
(1)首先注意以下兩點(diǎn)
注意 有這種錯誤就再解鎖一下賬戶
這個時候兩個賬戶里面的代幣都是0
(2)先給自己的賬戶轉(zhuǎn)點(diǎn)錢
g.mint(user1,10000,{from:user1}) miner.start() miner.stop()
注意:一定要挖礦汰具,不然balance一直都是0,不會變的
(3)看一下自己的賬戶是否有錢了
g.mint(user1,10000,{from:user1}) g.balances(user1)
(4)往別的賬戶轉(zhuǎn)賬并查看結(jié)果
`
g.send(user2,10,{from:user1})
miner.start()
miner.stop()
g.balances(user2)
`
就這樣菱魔,最簡單的代幣合約就完成了留荔。巨開心。
以太坊初學(xué)者,一些區(qū)塊鏈的概念我還不是很清楚聚蝶,不過杰妓,磕磕絆絆終于把這個代幣合約完成了發(fā)布和調(diào)用,感謝幫助過我的qq群大神們碘勉,希望這篇文章能給以太坊剛?cè)腴T的您一些幫助巷挥。希望能和區(qū)塊鏈愛好者們多交流,文章有問題的地方歡迎大家指出验靡。
ps 如果賬戶轉(zhuǎn)賬的話,
eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(1, "ether")})
miner.start()
miner.stop()
查詢余額倍宾,就會發(fā)現(xiàn)從0賬戶轉(zhuǎn)賬到了1
geth版本1.5.4 ,
代幣的代碼來源于http://wangxiaoming.com/blog/2016/05/03/blockchain-tech-introduciton-to-smart-contracts/
過程參考了http://www.devutil.cn/353.html