用两种版本编译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);
}
})