1.进入控制台
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]
3.编译合约
compiled=web3.eth.compile.solidity(s);
4.部署合约
contract=web3.eth.contract(compiled.zhaoxiCoin.info.abiDefinition);
2.准备两个账户并解锁账户
要在区块链上创建一个合约,要把以太坊虚拟机代码作为数据给空地址发送交易。需要准备一个有余额并激活的以太坊账户。
如果以前没有账户,就用personal.newAccount('123456')回车创建账户,123456是密码
如果已经有账户了
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个区块上提交了一个智能合约
5.停止挖矿
miner.stop()
这个时候合约就已经部署到区块链上了,下面对这个合约进行调用
5 调用合约
1.查看一下合约信息
demo
2.记录合约的地址
address="0x9867a3fd2d9e9e261af20a961777d5e910b6e888"
3.调用合约
g=eth.contract(demo.abi).at(address)
4.终于开始转账啦
(1)首先注意以下两点
注意 有这种错误就再解锁一下账户
这个时候两个账户里面的代币都是0
(2)先给自己的账户转点钱
g.mint(user1,10000,{from:user1}) miner.start() miner.stop()
注意:一定要挖矿,不然balance一直都是0,不会变的
(3)看一下自己的账户是否有钱了
g.mint(user1,10000,{from:user1}) g.balances(user1)
(4)往别的账户转账并查看结果
`
g.send(user2,10,{from:user1})
miner.start()
miner.stop()
g.balances(user2)
`
就这样,最简单的代币合约就完成了。巨开心。
以太坊初学者,一些区块链的概念我还不是很清楚,不过,磕磕绊绊终于把这个代币合约完成了发布和调用,感谢帮助过我的qq群大神们,希望这篇文章能给以太坊刚入门的您一些帮助。希望能和区块链爱好者们多交流,文章有问题的地方欢迎大家指出。
ps 如果账户转账的话,
eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(1, "ether")})
miner.start()
miner.stop()
查询余额,就会发现从0账户转账到了1
geth版本1.5.4 ,
代币的代码来源于http://wangxiaoming.com/blog/2016/05/03/blockchain-tech-introduciton-to-smart-contracts/
过程参考了http://www.devutil.cn/353.html