安装以太坊客户端(Geth)
sudo apt-get install software-properties-common sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install ethereum
安装进程管理工具
pm2 需要 node 环境
//nvm install node curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node source ~/git/nvm/nvm.sh nvm install 7 //npm install -g pm2 source ~/.bashrc export npm_config_registry=https://registry.npm.taobao.org
启动 geth 配置文件
~/geth.json [ { "name" : "geth", "cwd" : "/usr/bin/", "script" : "geth", "args" : "--rpcapi eth,web3 --rpc --dev --datadir /home/username/geth_private_data", "log_date_format" : "YYYY-MM-DD HH:mm Z", "out_file" : "/home/username/geth_private_data/log/geth_out.log", "error_file" : "/home/username/geth_private_data/log/geth_err.log", "log_file" : "/home/username/geth_private_data/log/geth_log.log", "merge_logs" : false, "watch" : false, "max_restarts" : 10, "exec_interpreter" : "none", "exec_mode" : "fork_mode" } ]
执行 pm2 start geth.json
即可启动 geth
另外如果不想使用 pm2 ,直接启动私有链请查看下面这种方式:
新建一个 shell 脚本文件
~/geth_private.sh#!/bin/bashgeth=${GETH:-geth}$geth --datadir data --networkid 31415926 --rpc --rpcapi "admin,debug,eth,miner,net,personal,shh,txpool,web3" rpcaddr "0.0.0.0" --rpccorsdomain "*" --nodiscover console
更改文件属性问可执行
chmod +x geth_private.sh
三种方式执行 shell 启动脚本
nohup ./geth_private.sh 0<&- &>/dev/null & // 守护进程启动私有链节点 nohup ./geth_private.sh 0<&- &> /tmp/geth.log & // 守护进程启动私有链节点且把日志打印到 /tmp/geth.log 文件 ./geth_private.sh //启动私有链节点并进入交互控制台
第二种打印日志的方式非常有用。其一是如果 geth 启动不成功,可以在日志中看到具体错误体制。其二是在测试链中部署智能合约(切记要确保 geth 中有一个账户处于解锁状态且有一定量的 ether,一般这个账户是 coinbase)被确认时会输出合约地址到日志文件中。在私有测试链中,进入 js 交互控制台,输入 miner.start(1) 挖矿,控制台输出类似 Mined block (#72 / 517dcfd1). Wait 5 blocks for confirmation
则表示合约部署成功。
Ethereum JavaScript API
Ethereum 实现了****javascript runtime environment**** JavaScript Console。
Ethereum's Javascript console exposes the full web3 JavaScript Dapp API and the admin API.
当你安装好 geth 并启动服务之后,通过Non-interactive use: JSRE script mode 命令(例如 Managing accounts) 或者 Interactive use: the JSRE REPL Console 进入控制台操作 geth
$ geth attach ipc:/some/custom/path$ geth attach http://191.168.1.1:8545$ geth attach ws://191.168.1.1:8546
如果你想单独在 node 服务中写代码操作 geth ,添加 web3.js 即可。
web3.js 实现了使用 node 操作 geth 。使用的前提要求启动 geth 启动时 rpcapi 包含了 web3
,在上面的配置文件中 "args" : "--rpcapi eth,web3 --rpc --dev --datadir /home/username/geth_private_data"
已经设置好了。
同时可以看看参考连接详细了解:
安装:
//install web3.js npm install web3 //install solidity for smart contract develope sudo add-apt-repository ppa:ethereum/ethereum sudo add-apt-repository ppa:ethereum/ethereum-dev sudo apt-get update sudo apt-get install solc
web.js 是一个 node 库,实现了Web3.js API Reference
另外有一点需要注意的是:当你都写好并且编译好智能合约之后,接下来的新建和部署智能合约到区块链上需要确保有一个解锁的账号(EOA)及账户有一定的资金
Create and deploy a contract
Before you begin this section, make sure you have both an unlocked account as well as some funds. Create and deploy a contract
作者:黄文威
链接:https://www.jianshu.com/p/86ac141b345b