Nuwa v1.0.8以后,子鏈引入了多合約的概念。子鏈多合約指的是在一條子鏈中部署多個智能合約,多合約可以將業務邏輯進行拆分,相互呼叫,合約之間也可以進行升級。
本文測驗環境:64位Windows 10 中文版;版本號:1.0.8;網路:testnet;
1.子鏈搭建
以下按照《第六篇 墨客區塊鏈(MOAC BlockChain) 子鏈搭建教程》的步驟,使用版本1.0.8搭建子鏈。
部署子鏈礦池SubChainProtocolBase.sol;
部署三個scs,并注冊到子鏈礦池;
部署Vnode礦池VnodeProtocolBase.sol并將本機vnode節點注冊到礦池;
部署erc20合約erc20.sol;
部署子鏈合約SubChainBase.sol;
此處請注意,部署SubChainBase.sol的時候,對參與子鏈的SCS個數及重繪周期有要求,在合約里這么規定的:
//限定條件在此處
function SubChainBase(address proto, address vnodeProtocolBaseAddr, address ercAddr, uint ercRate, uint min, uint max, uint thousandth, uint flushRound) public {
require(min == 1 || min == 3 || min == 5 || min == 7); //最小scs數量
require(max == 11 || max == 21 || max == 31 || max == 51 || max == 99);//最大scs數量,與最小數量對應
require(flushRound >= 40 && flushRound <= 500); //重繪周期
本文實驗實際部署SubChainBase.sol的引數如下:

部署scs開始出塊,加入scs monitor并同步到最新,子鏈即部署成功:

2.部署基礎業務合約
DAPP智能合約也通過主鏈的sendTransaction發送交易到 proxy vnode 的方式進行部署。
引數:
to: 子鏈控制合約subchainbase的地址
gas: 不需要消耗gas費用,傳值:0
shardingflag:表示操作子鏈,傳值:0x3,請注意,多合約版本部署任何合約shardingflag都為0x3
via: 對應proxy vnode的收益地址
在子鏈上部署多合約基礎合約 dappbase.sol, 部署示例:
chain3 = require('chain3')
solc = require('solc')
chain3 = new chain3();
chain3.setProvider(new chain3.providers.HttpProvider('http://localhost:8545'));
solfile = 'deorder.sol';
contract = fs.readFileSync(solfile, 'utf8');
output = solc.compile(contract, 1);
abi = output.contracts[':DeOrder'].interface;
bin = output.contracts[':DeOrder'].bytecode;
subchainaddr = '0x1195cd9769692a69220312e95192e0dcb6a4ec09';
via = '0xf103bc1c054babcecd13e7ac1cf34f029647b08c';
chain3.personal.unlockAccount(chain3.mc.accounts[0], '123456');
chain3.mc.sendTransaction({from: chain3.mc.accounts[0], value:0, to: subchainaddr, gas:0, shardingFlag: "0x3", data: '0x' + bin, nonce: 0, via: via, });
本文使用http://wallet.moac.io/deploy-contract錢包工具部署:
驗證:
合約部署成功后,Nonce值應該是1,可呼叫monitor的rpc介面ScsRPCMethod.GetNonce進行檢查。
主要參考資料:
1.https://moacdocs-chn.readthedocs.io/zh_CN/latest/
————————————————
著作權宣告:本文作者「Li_Yu_Qing」
uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/26771.html
標籤:區塊鏈技術
上一篇:HarmonyOS應用開發 — HelloWorld應用開發E2E體驗
下一篇:第三十二篇 資料簽名及驗證
