投票私链交付文档 March 6, 2018 [TOC] ### 环境要求 开发环境: Ubuntu 16.04 Python 3.5+ PM2 创世区块分配钱包地址为:`0x4a244BF6834f7569A726DB8ec0D3B24D31ce52c3` 私钥为:`0x4a115bf4ec4e27fce40db37c974d526953e50cc5c1edbffef3f724062fcb01c7` ### 环境安装 #### 安装PM2 PM2用于管理Geth和Web API后台进程。 **参考安装方式**:通过 nvm 安装 NodeJS ``` curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash source ~/.bashrc nvm install v6.9.1 npm install -g pm2 ``` #### 安装Python环境 安装Web API 必须环境: 安装时注意python应使用python3,如果系统带有python2.7和python3.5,下面命令应使用`python3`。 ``` # python 包管理器pip sudo apt-get python3-pip sudo pip install --upgrade pip # python web framework sudo pip install flask # python web server sudo pip install gunicorn # install web3.py sudo apt-get install libssl-dev libffi-dev autoconf automake libtool git clone git@github.com:ethereum/web3.py.git cd web3.py pip install -r requirements-dev.txt pip install -e .[tester] # install pyethereum sudo apt-get install libssl-dev build-essential automake pkg-config libtool libffi-dev libgmp-dev libyaml-cpp-dev git clone https://github.com/ethereum/pyethereum/ cd pyethereum python setup.py install ``` ### 部署节点 #### 部署主节点 ``` cd vote_master # start block chain pm2 start geth.sh # start web api pm2 start web.sh # show pm2 list pm2 list # show nodeInfo ./geth attach http://127.0.0.1:8545 # 控制台内输入 admin.nodeInfo ``` 保存nodeInfo中的enode: ``` "enode://7c2222797bc4579e5675d75a4ed6803606f7ea925ffd83ce58712e21488c5a30c107758ac69098e791f4589a23663cfb8484d0f56663e06f4d1b9517f3b685f0@[::]:30101" ``` 注意:`[::]`替换为`ip` 更多pm2命令参考:http://pm2.keymetrics.io/docs/usage/quick-start/ #### 部署挖矿节点 ``` cd vote_miner # 初始化挖矿节点 bash init.sh ``` 在`data`目录下新建`static-nodes.json`,保存一下内容,注意替换`ip`: ``` ["enode://7c2222797bc4579e5675d75a4ed6803606f7ea925ffd83ce58712e21488c5a30c107758ac69098e791f4589a23663cfb8484d0f56663e06f4d1b9517f3b685f0@ip:30101"] ``` ``` # 启动节点 pm2 start miner.sh ``` 至此,环境部署完毕。 ### 智能合约 `smart contracts`下`token contract`为代币智能合约源代码,`abu.js`和`votes.js`为合约部署文件。部署智能合约参考推荐在控制台中部署。