区块链爱好者(QQ:53016353)
创建链条的geth命令
geth --datadir "./" init genesis.json
geth --datadir "./" --nodiscover console 2>>geth.log
在命令行模式下, 新建账号,并且启动挖矿
> personal.newAccount("123")
"0x48ad44beba68a981e103d28b2bd5777ef21ba0e3"
> miner.start()
true
>
如果链条已经被关闭的话,或者启动不了,或者挖矿无法产生比特币的话,可以重置以太坊私链。
重置以太坊私有链的方法
1.删除根目录下的隐藏文件夹.ethash, 在mac系统中该文件夹在 ~/下
2.删除以太坊私有链所在文件夹下的geth/keystore两个文件夹p1
私有链正常工作的日志如下图所示:
p2
打开私有链所在文件夹,注意应该有一个文件,叫geth.ipc, 记录下文件夹地址p3
Mist 工具
The Mist browser is the tool of choice to browse and use Ðapps.
Mist 是以太坊官方提供的浏览器,通过Mist我们可以很方便的连接上我们的私有网络,从而更好的开发、调试、测试我们的智能合约。
Step 1 安装依赖项
$ curl https://install.meteor.com/ | sh
$ npm install -g
[email protected]
$ npm install -g gulp
Step 2 安装Mist本体
$ cd mist
$ git submodule update --init
$ yarn
Step 3 运行Mist/interface 也就是mist的后台程序
$ cd mist/interface && meteor --no-release-check
这个阶段费时可能稍长,会启动mongodb, proxy等。完成后的控制台截图如下:
p4
Step 4 新开一个窗口,用geth.ipc启动Mist
新开一个窗口,回到mist文件夹下面,输入下方的命令
electron . --rpc /Users/linchen/steveproject2/tmpPrivate/geth.ipc
注意这里的地址/Users/linchen/steveproject2/tmpPrivate/geth.ipc 就是前面我们新建的以太坊私有连下的geth.ipc文件。
p5
启动后的Mist界面如下
p6
Mist 账户界面解说
p7
Main account的地址 0x48ad44BEBa68A981e103D28B2bD5777EF21bA0E3 这个和geth的私有网络中的eth.accounts[0]一致。因为此时我们的Mist正是依赖于所在文件夹下的geth.ipc启动的。 geth截图如下:
p8
左下方的三个参数分别代表了几个含义
1.算力
kh/s 代表每1000 hash/s的计算力。
2.区块数
之前说过,以太坊挖矿的本质就是挖出区块数,因此只要一个网络存在,则区块数会被源源不断的挖掘出来。
3.0 代表当前的节点数字,因为我们现在只有一个节点,所以这个peer=0. 如果要增加节点,可以在geth中使用admin.addPeer()即可。
4.New Block Received表示当前状态,在截图的时候刚好遇到了一个新的区块被确认。平日里更多的是xx秒倒数。如图:
p9
左侧的账户列表,我们接下来细说
右上角是智能合约按钮,之后会经常用到。
Mist 钱包界面
点击左上方的Wallet按钮,进入钱包界面,界面如下图所示
p10
我们可以看到这里列出了当前私有链中所有的账户,目前只有一个,因此所有挖矿出来的以太币都被归入该账户中。 点击 Add Account 按钮以增加账户, 如图所示:
p11
点击Create new account, 并输入密码, 然后重复密码
p12
完成后,可以看到新增了一个账户 account2
p13
回到Mist的wallet页面,可以看到两个账号都已经建立起来。
p14
账户之间的以太币转移
在上一节中,我们已经新建了一个Account2, 那么我们就用Mist里面的工具来给他一笔以太币巨款!
点击Account2 按钮
p15
点击Account 2页面的transfer按钮
p16
设置from/to/amount, 然后点击下方的Send按钮
p17
点击send后,会出现下面的提示框,输入账号密码,点击Send Transaction即可
p18
这里要重复几点
在以太坊的底层眼中,智能合约也是部署在以太坊链条上的一个特殊账户,因此对智能合约的调用,也就是对智能合约账户的一次send transaction
重复一下之前的概念:每个账户的公钥,也就是地址是公开的,是任何人都可以调用的。
任何transaction都需要消耗gas,gas消耗量由transaction的大小决定,而Gas的价格则由以太坊底层的Oracle来决定。在一个开放网络中,如果用户希望自己的transaction被优先执行,那么相应的Gas Price就会上升。反之Gas Price越低,则执行的优先级越低。 简单地说就是:价高者得,价高者优先
因为每一次transaction都需要消耗gas,而gas对应的就是以太币。 之前提过,以太坊有默认的账户保护机制,在不输入密码的情况,任何账号能进不能出,要输出以太币,必须输入密码。
输入完密码后,点击SendTransaction, 然后切换到wallet, 可以看到account 1的金额增加了100以太币。
p19
到此为止,我们介绍了账户页面,以及账户之间的转账。