Skip to main content

链改工程编译

编译

编译主链源码,本代码基于一个比特币衍生链合并evm,下载go 解压并追加到PATH环境变量

git clone https://github.com/user00000001/TesraMainChain.git
cd TesraMainChain
make tesramain # for chain execution file.
make all # for all execution files.
make clean # clean all compiled results.

执行文件命令行准备

把执行路径加入PATH环境变量中

echo "export PATH=$PATH:`pwd`/build/bin" >> ~/.bashrc && source ~/.bashrc

用法

Tesra Main Chain基于geth而来,大多数操作参考geth文档. 使用之前需要准备些EOA账号,参考EOA账户生成,准备七个以上账号,替换到源码里,参考代码修改, 基于tesramain的终端命令行 web3, POS部分修改参考API.

  • 启动第一个节点
**********************!!!PROTECTION POLICY!!!**********************
Waiting For The Next Deployment, Maybe It Will Be Displayed After That.
  • 在tesramain终端命令行下启动矿工挖矿
**********************!!!PROTECTION POLICY!!!**********************
Waiting For The Next Deployment, Maybe It Will Be Displayed After That.
  • 检查pow2pos块产生情况,挖矿状态是否停止
eth.blockNumber
  • 当挖矿状态暂停时,退出终端
exit
  • 基于产生的数据,启动tesramain挖矿
index=0 ;tesramain --etherbase $index --ethash.dagdir \
~/tesramainchain/dag/$index --nodiscover --ipcpath \
~/tesramainchain/ipc/$index --datadir ~/tesramainchain/data/$index \
--keystore ~/tesramainchain/keystore --port $((20000+$index)) \
--unlock $index --password ~/tesramainchain/password --verbosity 100 \
--firstPos 10 --mine console
  • 观察终端日志,挖矿过程会再次暂停,记录slot leader的公钥,在已有账号中找到对应公钥以及节点索引FirstPosSlotLeaderIndex
tesramain --etherbase 0 --ethash.dagdir ~/tesramainchain/dag/0 \
--nodiscover --ipcpath ~/tesramainchain/ipc/0 --keystore \
~/tesramainchain/keystore --unlock 0 --password \
~/tesramainchain/password console --exec "eth.accounts.forEach\
(function(v, i, a){var result=personal.showPublicKey(v, '1qaz'); \
console.log(i, a[i], JSON.stringify(result))}"
  • 找到对应节点的enode地址FirstBootEnode
tesramain --etherbase 0 --ethash.dagdir ~/tesramainchain/dag/0 \
--nodiscover --ipcpath ~/tesramainchain/ipc/0 --keystore \
~/tesramainchain/keystore --unlock 0 --password \
~/tesramainchain/password console --exec "admin.nodeInfo.enode"
  • 启动对应节点
**********************!!!PROTECTION POLICY!!!**********************
Waiting For The Next Deployment, Maybe It Will Be Displayed After That.
  • 在网络中其他节点终端里加入此节点,启动挖矿,并检查块高是否增长
admin.addPeer(FirstBootEnode)
miner.start(1)
eth.blockNumber

至此,带有两个节点的类ethereum网络建立好了,共识也由POW切换到(d)POS上