Skip to content

Files

Failed to load latest commit information.

Latest commit

 Cannot retrieve latest commit at this time.

History

History

hardfork

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

hardfork

这个仓库的目的是为了在区块的中位数时间戳大于等于1542300000时,有效分离bitcoin-abc和bitcoin-sv两条链。实现的策略是:在bitcoin-abc链中注入含bitcoin-abc的特有的操作码OP_CHECKDATASIG的交易,并且在bitcoin-sv链上注入含有bitcoin-sv的特有操作吗OP_MUL,这样可以在bicoin-abc和bitcoin-sv节点各打包出一个含有独有共识的交易,而链认为对方的区块不符合自己的共识规则,从而达到分离bitcoin-abc和bitcoin-sv区块链的目的。

提醒:

这个仓库正处于活跃的开发中,如果您不是专业的开发人员,请不要将您真实的币用于该脚本中。

使用说明:

  1. 安装依赖:

  2. 编译该工具: 该脚本在运行前,需要具有一些UTXO列表,当前的实现是通过硬编码一个UTXO列表在程序里面(主要是考虑在命令行手动输入大量utxo列表容易出错的缘故,故选择硬编码的方式),那就是说每次在重新启动脚本的是否,您需要检查该UTXO列表是否可用。

    • 编译bitcoin-abc目录下的脚本程序,该脚本程序负责创建bitcoin-abc区块链上的特有交易(包含OP_CHECKDATASIG操作码)。

      cd $GOPATH/github.com/copernet/tools/hardfork/bitcoin-abc
      go install
      
    • 编译bitcoin-sv目录下的脚本程序,该脚本程序负责创建bitcoin-sv区块链上的特有交易(包含OP_MUL操作码)。

      cd $GOPATH/github.com/copernet/tools/hardfork/bitcoin-sv
      go install
      

    如果您没有没有安装Go语言环境和Go包依赖,我们为您准备了相应平台的二进制可执行文件,您可以直接运行,而不用经过上面上面繁琐的安装过程。二进制程序覆盖了linux和MacOS操作系统,您可以在bitcoin-abc和bitcoin-sv目录下找到它们,linux二进制包以-linux结尾,MaxOS二进制包以osx结尾。

  3. 目前您需要检查bitcoin-abc和bitcoin-sv节点是否配置了rpcuserrpcpassword选项,如果您执行的脚本程序的不在该节点上,您需要额外配置rpcallowip选项。在配置完相关选项之后,分别启动客户端bitcoin-abc和bitcoin-sv(强烈建议分开部署)。 在确定两个节点的数据已经同步到最高区块高度后(一般需要几小时到几十个小时,取决于您的网络环境和电脑配置)。准备工作已经完成,下面就可以执行我们的脚本程序了。

    下面是一个节点配置文件的示例(目前bitcoin-abc和bitcoin-sv的配置项没有什么差别), 仅供参考:

    rpcuser=0XKRwRnyiY7NN2CfArU=
    rpcpassword=OSAqQIIp6XaPGuH53NvDlVPALQjaWksF4GPJyUimASq9
    txindex=1
    daemon=1
    rpcallowip=106.39.30.175
    
  4. 启动脚本程序

    程序中几个选项的说明(具体的说明可以通过 -h 参看):

    • privkey: 钱包私钥,和硬编码的utxo需要对应,也就是这个私钥能够花费这些utxo;
    • rpchost: rpc server的ip和端口,默认为127.0.0.1:8332
    • rpcuser: rpc server的用户名,用于用户rpc调用的认证;
    • rpcpassword:rpc server的密码,用户用户rpc调用的认证;
    • wait: 表示创建两笔交易之间的间隔时间,单位为秒(s)。需要注意的是如果您的utxo列表过少,同时wait参数过短,将会在节点内存池中产生许多关联交易,如果关联的深度大于25,将会在广播交易的时候失败。建以采用默认配置。
    // 创建bitcoin-abc独有共识的交易
    ./bitcoin-abc --privkey=******* --rpchost=127.0.0.1:8332 --rpcuser=rpc-user --rpcpassword=rpc-password --wait=600
    
    // 创建bitcoin-sv独有共识的交易
    ./bitcoin-sv --privkey=******* --rpchost=127.0.0.1:8332 --rpcuser=rpc-user --rpcpassword=rpc-password --wait=600
    

    程序运行的结果会直接在终端输出, 结果类似于以下的输出:

    available utxo: 1
    first transaction:
    	hash: 09f2e6c95f0fa31f357af90611803e2b35f9cc8256937db21298f7dc7cc8ad28
    rawtx: 0100000001333fb064838ad7685aee6a8650960c22be6ba59f0bc378b33da99ec889c0f79b010000006b483045022100aea45ac5e37125bb8442e634a8b128aa62636ccb9424a007b1fb897827f34ada02200bf1f4114c69336b1d44b76ea83511c0050c83458ecb861e1f3577176d6fe2c141210315eadd14931b1b41c903a291d63fd6aa50ba9523b5558db2857e18fd6df6a208ffffffff02220200000000000017a914fa8311a7df24c87fb759f3db2d2d763f0af5b071879c5c9800000000001976a9142b494c0b23d7aba3a01469fe265599d35179f8a388ac00000000
    second transction:
    	hash: 5b4ec490e265e908ef229f1e0e0caa94a251d105dac6be56d6ab749c9baa9e42
    	rawtx: 0100000001333fb064838ad7685aee6a8650960c22be6ba59f0bc378b33da99ec889c0f79b010000006b483045022100aea45ac5e37125bb8442e634a8b128aa62636ccb9424a007b1fb897827f34ada02200bf1f4114c69336b1d44b76ea83511c0050c83458ecb861e1f3577176d6fe2c141210315eadd14931b1b41c903a291d63fd6aa50ba9523b5558db2857e18fd6df6a208ffffffff02220200000000000017a914fa8311a7df24c87fb759f3db2d2d763f0af5b071879c5c9800000000001976a9142b494c0b23d7aba3a01469fe265599d35179f8a388ac00000000