写在前面
这个其实是去年写的毕业论文里面的内容,一些关于环境配置方面的。
在Ubuntu命令行中输入如下命令,以安装以太坊客户端。
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install Ethereum
在命令行输入geth version
如果出现如图2中的文字则说明安装以太坊平台成功。
在用户目录建立一个数据目录,然后切换到该目录,输入geth --datadir="./" account new
,来建立一个新的以太坊钱包账户。如图3所示,在输入两次密码之后,出现的Address即为以太坊钱包账户地址。
建立一个如图4所示的JSON文件,并命名为g.json放在数据目录里面。JSON文件中的字段说明可参照表1进行设置。该文件为以太坊平台的创世块的配置文件。如果以太坊区块链平台作为私有区块链来使用,则需要配置该文件。如果需要连接公有链,可以不进行该操作。
表1 JSON文件字段说明
字段名 | 说明 |
---|---|
mixhash | 与 nonce 一起用于挖矿,是由上一个区块的一部分数据生成的哈希值 |
nonce | 挖矿时候使用的64位随机数 |
difficulty | 设置当前区块链的挖矿难度,这里设置了一个较小的难度 |
alloc | 用来设置初始化以太坊账户以及账户所持有的以太币数量 |
coinbase | 矿工的账户地址,用于接受挖矿产生的以太币 |
timestamp | 创世块的时间戳 |
parentHash | 上一个区块的哈希值,作为创世块使用则填0 |
extraData | 节点附加信息 |
gasLimit | 设置以太坊平台燃料的消耗总量限制,用来限制区块能包含的交易信息总和,作为私有节点可以选择填入最大值 |
在控制台输入geth --datadir="./" --networkid 23422 --rpc --rpccorsdomain="*" --rpcport="8545" --minerthreads="1" --mine --nodiscover --maxpeers=0 --unlock 0 console
然后输入设置的密码开启以太坊服务。如果出现图5的界面,则说明以太坊服务开启成功。
由于在输入命令行时候已经开启了挖矿线程,如果没有响应可以尝试输入miner.start()
来开启挖矿线程。在第一次启动时候以太坊平台要构造一个有向无环图或者从主链同步区块数据,需要等待大量的时间。如果出现图6中的文本,则可以说明该节点开始进行挖矿操作。
以太坊的智能合约可以通过在线IDE网站 http://remix.ethereum.org/ 进行编写和编译,然后将编译好的字节码数据部署到区块链中。在这里为了测试,编写如图7 所示的测试用智能合约,如果合约部署成功会出现如图8 所示的文本。
在以太坊中,所有智能合约的函数都有call
和sendTransaction
两种调用方式。使用call
方式,仅会求值而不会修改区块链上虚拟机存储的数据进行修改,而 使用sendTransaction
方式可以修改值,但是修改值的操作需要消耗燃料(即使用以太币)来运行。
在控制台输入getset.setData.sendTransaction("test",{from: eth.accounts[0]})
如果出现图9中的内容说明发布一个事务(或者叫交易)成功。在执行上一步操作之后,在控制台输入getset.getData.call()
,如果可以看到如图10所示返回了上一步设置的字符串内容。如果以上功能均可以使用,则说明以太坊平台搭建成功