一、启动私链。
geth -datadir "./ethDev" --rpc --rpcapi="db,eth,net,web3,personal" --networkid 15 console 2>test.log
同时启动RPC和RPC能使用的API
二、启动mist。
mist.exe --rpc http://127.0.0.1:8545
三、部署合约。
合约源码:
pragma solidity 0.4.16;
contract Token {
mapping (address => uint) public balancesOf;
address public owner;
//这里是创建合约的时候调用。msg.sender就是eth.account[0],也可以改编译后的代码指定。其他地方谁调用msg就是调用者
function Token() {
owner = msg.sender;
balancesOf[msg.sender] = 10000;
}
//msg就是调用者
function transfer(address _to, uint _value) {
//避免转移出去的代币超过当前的存货
if (balancesOf[msg.sender] < _value) revert();
//避免自己调用自己,或者递归调用
if (balancesOf[_to] + _value < balancesOf[_to]) revert();
balancesOf[msg.sender] -= _value;
balancesOf[_to] += _value;
}
function mint(uint _amount) {
balancesOf[owner] += _amount;
}
}
点击“合约”-->"部署合约"
这里可以选择用哪个账户创建合约。
把源码复制进去。注意这里的编译器版本问题:源码声明的版本要和mist的版本一致,否则会报下面的错误。
版本修改正确后,后边“选择合约”
点击“部署”。
弹出框,修改gas值。这个值要大于上面的 Eslimated fee consumption面计算出来的gas费用。
输入密码后,点击 “SEND TRANSITION”。
回到“合约”界面,可以看到刚创建的合约。
注意:虽然是同一份源代码。源代码都一样,但是可以重复用上面的方式创建多份合约。只是合约的地址不一样。
在以太坊中的架构中,智能合约被看作一个特殊的账户,因此智能合约也能和其他账户一样进行交易,可以接受以太币,也可以付出以太币。这样的特性,在我们的金融化应用中非常有用,例如众筹合约等。
四、调用合约的方法。
点击某个合约,进去之后,可以看到如下界面,左边是属性,右边可以选择某个方法执行。
点击“执行”执行某个方法。输入密码,点击“SEND TRANSACTION”。
到“钱包”界面,可以看到正在执行,等待挖矿确认。
点击某条执行记录,可以看到执行的情况。
上面图中,区块。就是这个交易诶记录在哪个区块上,上面3023是区块id,下面是区块地址。
参考文档: http://www.ethchinese.com/?p=822
http://www.ethchinese.com/?p=843