来自:博客园
,作者:AlphaGL
链接:https://www.cnblogs.com/alphagl/p/10025527.html
以太坊作为第二代区块链技术,相比"中本聪"第一代区块链技术比特币,拥有更快的交易确认时间,比特币每笔平均10分钟,以太坊只要18秒左右(EOS为0.5秒,还免手续费)。同时,以太坊自带图灵完备的智能合约编程语言(Solidity),运行在以太坊虚拟机上,拥有更大的灵活性,基于以太坊的Dapp和游戏也越来越多。
以太坊主链上发行的代币成为以太币(ether),用来支付交易的手续费。在主链上部署智能合约之前,我们可以先搭一个以太坊私链环境,用来测试和部署合约,避免不必要的损失。其中,以太币有如下单位:
1 ether = 10^18 wei
1 ether = 10^15 Kwei,1 1Kwei = 10^3 wei
1 ether = 10^12 Mwei,1 Mwei = 10^6 wei
1 ether = 10^9 Gwei,1 Gwei = 10^9 wei
1 ether = 10^6 szabo,1 szabo = 10^12 wei
1 ether = 10^3 finney,1 finney = 10^15 wei
1、私链环境搭建
操作系统:Ubuntu 18.04
1.1 下载Geth
虽然,以太坊的实现有很多语言的版本(ethereum-github),但官方推荐使用Go的实现,所以这里直接下载go-ethereum,可以直接下载源码翻译安装,也可以直接下载编译好的可执行文件。
下载地址:
https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.8.18-58632d44.tar.gz
然后,解压安装即可:
1.2 初始化创世块
(1)新建一个目录,用来存放创世块数据:
(2)新建genesis.json创世块配置文件:
{
"config": {
"chainId": 0,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
注:genesis.json来自于https://github.com/ethereum/go-ethereum
(3)初始化创世块
1.3 启动私链节点
(1)在终端执行以下命令:
sudo geth --networkid 123 --dev --datadir chain --rpc --rpcapi "personal,db,eth,net,web3,miner,admin,debug" --rpcaddr "0.0.0.0" --rpcport 8545 --port 30303 --rpccorsdomain "*" --nodiscover
参数介绍:
networkid:
网络id。(默认值为1)
1:Frontier(主网络)
2:Morden(忽略)
3:Ropsten(测试网络)
4:Rinkeby(测试网络)
dev:
开发模式。包含一个预含以太币的开发者账号。
datadir:
指定数据库和密钥存放的路径。
rpc:
是否开启HTTP-RPC。
rpcapi:
指定哪些HTTP-RPC提供的API接口可用。
rpcaddr:
指定HTTP-RPC监听的地址。默认是:localhost。
rpcport:
指定HTTP-RPC监听的端口。默认是:8545。
port:
网络监听端口,用于与其它节点通信。默认是:30303。
rpccorsdomain:
指定哪些URL可以跨域访问节点。
nodiscover:
关闭节点发现。
注:这里没有开启自动挖矿(--dev.period参数),也没有使用websocket的方式访问。更多参数的含义参考geth --help。
2. 连接到私链
2.1 使用mist钱包连接到本地私链
(1)下载Mist钱包
https://github.com/ethereum/mist/releases
(2)解压Mist钱包
unzip Mist-linux64-0-11-1.zip -d ./Mist
(3)使用Mist连接到私链
sudo ./mist --rpc ./../chain/geth.ipc
如遇到以下错误:
error while loading shared libraries:libgconf-2.so.4:cannot open shared object file:No such file or directory
则需安装
libgconf
库,执行
sudo apt install libgconf-2-4
:
(4)解决上述错误,再次执行步骤(3)会成功打开Mist钱包,并看到一个包含
1.1579e+77
个以太币的帐号。
2.2 使用MetaMask钱包连接到本地私链
(1)下载并安装MetaMask钱包
步骤略。(这里安装MetaMask钱包,可能需要***,自行解决。浏览器使用Chrome)
(2)连接到本地节点
当然,MetaMask也可以不与节点装在同一台机器上,则选择
Custom RPC
,然后配置相应的ip和端口即可。
3. Geth控制台
3.1 Web3命令的使用
(1) 进入Geth控制台
sudo geth attach ./chain/geth.ipc
这里也可以使用HTTP接口的方式:
sudo geth attach http://127.0.0.1
3.2 交易
(1)创建新帐号,并返回新帐号的地址
personal.newAccount("123456")
(2)查询帐号,默认有一个帐号加上新创建,因此,总共看到两个地址 。