用两种版本编译sol并测试用来搭建子链 - coolcat2012/MoacDoc GitHub Wiki

编译sol 成可以安装的js

进入sol代码目录:

cd /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity

用0.4.21编译脚本:

npm install [email protected] -g
solcjs --version
solcjs -o abibin421 --optimize --abi --bin SubChainBase.sol SubChainProtocolBase.sol VnodeProtocolBase.sol

用0.4.24编译脚本:

npm install solc -g
solcjs --version
solcjs -o abibin424 --optimize --abi --bin SubChainBase.sol SubChainProtocolBase.sol VnodeProtocolBase.sol

生成可以部署的javascript:

sed "s/ABIHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin421/SubChainProtocolBase_sol_SubChainProtocolBase.abi)/" p.js > p1.js
sed "s/BINHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin421/SubChainProtocolBase_sol_SubChainProtocolBase.bin)/" p1.js > p421.js
sed "s/ABIHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin421/VnodeProtocolBase_sol_VnodeProtocolBase.abi)/" v.js > v1.js
sed "s/BINHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin421/VnodeProtocolBase_sol_VnodeProtocolBase.bin)/" v1.js > v421.js
sed "s/ABIHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin421/SubChainBase_sol_SubChainBase.abi)/" s.js > s1.js
sed "s/BINHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin421/SubChainBase_sol_SubChainBase.bin)/" s1.js > s421.js

sed "s/ABIHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin424/SubChainProtocolBase_sol_SubChainProtocolBase.abi)/" p.js > p1.js
sed "s/BINHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin424/SubChainProtocolBase_sol_SubChainProtocolBase.bin)/" p1.js > p424.js
sed "s/ABIHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin424/VnodeProtocolBase_sol_VnodeProtocolBase.abi)/" v.js > v1.js
sed "s/BINHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin424/VnodeProtocolBase_sol_VnodeProtocolBase.bin)/" v1.js > v424.js
sed "s/ABIHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin424/SubChainBase_sol_SubChainBase.abi)/" s.js > s1.js
sed "s/BINHOLDER/$(cat /Users/yuechaoma/go/src/github.com/innowells/moac-vnode/solidity/abibin424/SubChainBase_sol_SubChainBase.bin)/" s1.js > s424.js

测试 0.4.21版本的js

运行vnode,scs1,scs2
personal.newAccount("123456")
miner.start()
等待主账号有足够的钱
loadScript("unlock.js")
loadScript("test.js")
loadScript("p421.js") 
等待mining
loadScript("v421.js")
等待minging
loadScript("s421.js")
等待minging

scs1="0xcfFf88aF063D8783fCa45e19935EA1D3a3fEceF5"
scs2="0x4D591aE30e96F4A0487027cDfF98187280620111"

sendtx(mc.accounts[0], scs1, 20)
sendtx(mc.accounts[0], scs2, 20)
等待转账成功
mc.getBalance(scs1)/1000000000000000000
mc.getBalance(scs2)/1000000000000000000

addfundtosubchain()
等待转账成功

registertopool(scs1)
registertopool(scs2)
subchainprotocolbase.scsCount()
等待count为2

subchainprotocolbase.scsList(scs1)
subchainprotocolbase.scsList(scs2)
mc.blockNumber
等待达到scs2的期待号

registeropen()
subchainbase.nodeCount()
等待count为2
registerclose()
等待两个scs出块

测试 0.4.24版本的js

停止scs1,scs2
清除scs1 scs2的数据
重启vnode scs1 scs2

重新做以上步骤,用424版本js
loadScript("p424.js") 
等待mining
loadScript("v424.js")
等待minging
loadScript("s424.js")
等待minging

如何得到scsid

Yuechaos-MacBook-Pro:vnode yuechaoma$ scst="0x$(ls /Users/yuechaoma/Downloads/102/scs1/scsserver/scskeystore/UTC* | rev | cut -d- -f1 | rev)" Yuechaos-MacBook-Pro:vnode yuechaoma$ echo $scst 0xcfff88af063d8783fca45e19935ea1d3a3fecef5

Template

=====
p.js
=====
var protocol = "POR";
var bmin = 10;
var subchainprotocolbaseContract = chain3.mc.contract(ABIHOLDER);
var subchainprotocolbase = subchainprotocolbaseContract.new(
   protocol,
   bmin,
   {
     from: chain3.mc.accounts[0], 
     data: '0xBINHOLDER', 
     gas: '4700000'
   }, function (e, contract){
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
 })

=====
v.js
=====
var bmin = 1;
var vnodeprotocolbaseContract = chain3.mc.contract(ABIHOLDER);
var vnodeprotocolbase = vnodeprotocolbaseContract.new(
   bmin,
   {
     from: chain3.mc.accounts[0], 
     data: '0xBINHOLDER', 
     gas: '4700000'
   }, function (e, contract){
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
 })


====
s.js
====
var proto = subchainprotocolbase.address ;
var vnodeProtocolBaseAddr = vnodeprotocolbase.address ;
var min = 1 ;
var max = 10 ;
var thousandth = 1 ;
var flushRound = 20 ;
var subchainbaseContract = chain3.mc.contract(ABIHOLDER);
var subchainbase = subchainbaseContract.new(
   proto,
   vnodeProtocolBaseAddr,
   min,
   max,
   thousandth,
   flushRound,
   {
     from: chain3.mc.accounts[0], 
     data: '0xBINHOLDER', 
     gas: '6700000'
   }, function (e, contract){
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
         console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
 })