Skip to content

Latest commit

 

History

History
70 lines (50 loc) · 2.5 KB

子链节点的更替.rst

File metadata and controls

70 lines (50 loc) · 2.5 KB

子链节点的更替

子链节点添加

子链合约提供了registerAdd方法来支持子链添加,必须由子链部署账号来发送交易请求。

需要对应SubChainProtocolBase矿池合约有等待加入的scs节点。

子链收到请求后,在矿池合约选取scs,开始同步子链区块,等一轮flush后生效,正式加入子链。

registerAdd参数: :: nodeToAdd: 当前scs数+需要加入scs数

调用示例: :: > data = subchainbase.registerAdd.getData(20) > subchainaddr = '0x1195cd9769692a69220312e95192e0dcb6a4ec09'; > chain3.personal.unlockAccount(chain3.mc.accounts[0], '123456'); > chain3.mc.sendTransaction( { from: chain3.mc.accounts[0], value:0, to: subchainaddr, gas: "2000000", gasPrice: chain3.mc.gasPrice, data: data});

验证:scs对应日志开始同步区块,合约公共变量codeCount更新为scs最新数量 :: > SubChainBase.nodeCount()

子链节点退出

子链节点退出有两种方式:

  1. 当子链工作正常时,调用子类合约requestRelease方法请求退出子链,等待一轮flush后生效。

requestRelease参数: :: senderType: 1:scs发起请求 2:收益账号发出请求 index: scs序号(参考ScsRPCMethod.GetSubChainInfo中scs的列表)

调用示例: :: > data = subchainbase.requestRelease.getData(senderType, index) > subchainaddr = '0x1195cd9769692a69220312e95192e0dcb6a4ec09'; > chain3.personal.unlockAccount(chain3.mc.accounts[0], '123456'); > chain3.mc.sendTransaction( { from: chain3.mc.accounts[0], value:0, to: subchainaddr, gas: "2000000", gasPrice: chain3.mc.gasPrice, data: data});

验证:等待一轮flush后,关注合约公共变量codeCount是否变化 :: > SubChainBase.nodeCount()

  1. 当子链工作不正常时,可以调用子类合约requestReleaseImmediate方法请求立即退出子链。

requestReleaseImmediate参数: :: senderType: 1:scs发起请求 2:收益账号发出请求 index: scs序号(参考ScsRPCMethod.GetSubChainInfo中scs的列表)

调用示例: :: > data = subchainbase.requestReleaseImmediate.getData(senderType, index) > subchainaddr = '0x1195cd9769692a69220312e95192e0dcb6a4ec09'; > chain3.personal.unlockAccount(chain3.mc.accounts[0], '123456'); > chain3.mc.sendTransaction( { from: chain3.mc.accounts[0], value:0, to: subchainaddr, gas: "2000000", gasPrice: chain3.mc.gasPrice, data: data});

验证:合约公共变量codeCount是否变化 :: > SubChainBase.nodeCount()