环境搭建
以太坊实际上就是一堆协议,这些协议组成了以太坊的EVM虚拟机,
本次的以太坊环境是用go语言实现的客户端,虚拟机内部运行的是javascript.。举个例子,java虚拟机本身就是用c开发的(windows平台上),但是运行在虚拟机之上运行的是java语言。
1、下载并安装以太坊客户端:我这里使用go客户端。
https://github.com/ethereum/go-ethereum
2、运行。
查看账户命令:geth account list
因为没有账户,所以是空的。如下:
启动客户端命令:geth --datadir "./ethDev" --dev
--datadir表示把数据放到哪个位置。--dev表示启动测试环境。
打开另外一个命令界面,进入控制台:geth --dev console 2>> geth-log
使用上面的命令,进入控制台后。出现下面的界面。并且日志在当前目录下geth-log中。
3、全局变量
其中有一些是全局变量,你可以认为是javascript的全局变量,全局变量拥有自己的方法和函数。
如下eth变量:
personal变量:
4、账户操作。
4.1 创建账户:
personal.newAccount('123456')
创建成功后,会展示创建成功的地址,其中上面的表达式中,中间传入的123456为密码。
4.2 查看一下系统有的用户。eth.accounts
4.3 为用户取一个别名.
很显然如果操作上面的字符串地址是很不方面的,所以下面对字符串用户进行取别名,因为是js语言,所以可以直接使用,如下:把第一个账户命名为user1
user1 = eth.accounts[0]
4.4 对账户进行解锁。
为了安全起见,一般一个用户在创建的时候都是出于锁定的状态,有日志状态可以看到,如下
对账户进行解锁的命令 personal.unlockAccount(user2,'123456')
开始挖矿
开始之前我们检查一下账户user1和user2的金额,你会发现两者的金额都为0。查询余额命令如下:
eth.getBalance(user1)
开始挖矿,命令如下:miner.start()
停止挖矿命令:miner.stop()
开始挖矿后台输出挖矿日志:
运行一会后你去查看用户的账户金额
发现第一个账户中已经含有金额。也就是说默认是挖到了第一个账户中。
转账测试
现在我们模拟从第一个账户像第二个账户转账的命令:
eth.sendTransaction({from:user1,to:user2,value:8})
需要说明的是转账后,账户2并没有立即收到钱,而在是挖矿之后才收到的,主要原因是当前的交易还没有并入到区块链中,我们从日志中可以获取相关信息
像地址0x0b52…写的的交易0xab24..,在区块8中才写入,我们可以查看区块8进行验证