区块链技术博客
www.b2bchain.cn

基于Buchain ethchain跨链系统部署

这篇文章主要介绍了基于Buchain ethchain跨链系统部署,通过具体代码讲解8104并且分析了基于Buchain ethchain跨链系统部署的详细步骤与相关技巧,需要的朋友可以参考下

本文实例讲述了基于Buchain ethchain跨链系统部署。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/8104.html。具体如下:

   

基于Buchain ethchain跨链系统部署

原文地址https://www.b2bchain.cn/3662.html

 


BU链基本操作:

 


 更换配置文件需,清空数据库  ./bin/bumo --dropdb
 创建账户 ./bin/bumo --create-account
 结束BU进程 ​ ps -ef |grep bu ​ kill -9 xxxxid
 启动BU ./bin/bumo 
 发送交易注意nonce值 ​ { /*发创建账户交易的JSON格式*/ /*js中可以这样写,转成JSON块就好*/     items:[{         private_keys:[],//填私钥,签名用         transaction_json:{             fee_limit: ,         //相当于gaslimit,必须写             gas_price: ,         //单位gas价格,必须写             nounce: ,           //source_addr的交易序号,必须写             source_address: ""  //发送账号                          operations:[{       //这个是必填的,这个是巨坑                 type: ,        //发合约和发交易这个都是1                 create_account{ //创建普通账号                     dest_address: ,  //目的地址                     init_balance:      //初始的钱                     priv:{            //权限                         master_weight: 1,                         thresholds: {tx_threshold:1}                      }  //普通账号这俩都是1,合约的话是一个0一个1                 }              }]               }     }] }
 
   

 

 

 

GETh常用命令

 查询地址余额 eth.getBalance("0x6d3BcC912c41C282e3FBF11b64f28FE026EeC9cf")
 挖矿 miner.start(1);admin.sleepBlocks(20);miner.stop();
 结束全部geth killall -HUP geth

 

 从metamask导入到互联链 ​ 获取metamask私钥后 在geth客户端 personal.importRawKey("AF5E73277F1E5C4564E5BFB57C2DA30204F597A292C62EDA72FE88E830CCFE41","123456")
 geth下转账操作 ​ var acc1=eth.accounts[0] ​ personal.unlockAccount(acc1,"123456") ​ eth.sendTransaction({from: acc1 , to: "0x33A43Ff4A8e2B57bE24da7370c42bE6E9afb3297", value: web3.toWei(1000,"ether")})
 Error: insufficient funds for gas * price value undefined    1:remix产生 web3deploy信息与所选网络有关,需配置metamask链接网络信息包含网络ID  2. 账号需有余额
 解锁账户 personal.unlockAccount("0x6d3BcC912c41C282e3FBF11b64f28FE026EeC9cf","123456")

 

 

 

 


部署合约步骤

 geth下解锁账户 personal.unlockAccount("0x6d3bcc912c41c282e3fbf11b64f28fe026eec9cf","123456")
 remix在线编译生成 compilation detail 中找到 WEB3DEPLOY 复制到Geth命令行
 挖矿 miner.start(1);admin.sleepBlocks(20);miner.stop();
 生成合约lockcontract地址 Contract mined! address: 0x720abf08f31d3361b275ffef9fef600973056e76 

 

 

 


新建geth客户端节点

 {   "config": {         "chainId": 39,         "homesteadBlock": 0,         "eip155Block": 0,         "eip158Block": 0, "eip150Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0 ​     },   "coinbase"   : "0x0000000000000000000000000000000000000000",   "difficulty" : "0x00000002",   "extraData"  : "0xC5A3B1C6706C75732D32303139C4EA3132D4C23139C8D5A3ACB9A7CFB2C4E3A3ACBFB4B5BDD5E2B8F6B4B4CAC0C7F8BFE9B5C4B1B8D7A2",   "gasLimit"   : "0xffffffff",   "nonce"      : "0x0000000000000042",   "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",   "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",   "timestamp"  : "0x00",   "alloc"      : {} } ​
 初始化  geth --datadir chain39  init genesis.json
 启动  geth --datadir "./chain39" --networkid "39" --port "30039" --rpc --rpcaddr "0.0.0.0" --rpcport "8039"  console 2>>eth_chain39.log 
 创建账号 > personal.newAccount("123456")
 lockcontract合约地址 0x720abf08f31d3361b275ffef9fef600973056e76
 部署合约出现错误 The contract code couldn't be stored, please check your gas amount. undefine 原因:gaslimit 限制俩部分 均需修改 1.创世区块部分 Genesis.json 2.生成WEB3DEPLOY gas字段
 lockcontract合约 改用0.5.10+ 由于编译版本问题 browser/LockContract.sol:248:9: TypeError: Type contract LockContract is not implicitly convertible to expected type address. address myAddress = this; ^----------------------^ ​ 248行错误 改为 address myAddress = address(this);

 

 

 合约调用 ​ myAccount=eth.accounts[0]; contractAddres="0x8187f05e640a42d33778e6edcc5c2ee9b9d3154e";   abi=[ { "inputs": [], "payable": true, "stateMutability": "payable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "str", "type": "string" } ], "name": "StrLog", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "trans_Hash", "type": "bytes32" } ], "name": "ePreLock", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "eTransfer", "type": "event" }, { "payable": true, "stateMutability": "payable", "type": "fallback" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "gwAddr", "type": "address" }, { "internalType": "uint256", "name": "authState", "type": "uint256" } ], "name": "authGW", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "doAward", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": true, "inputs": [], "name": "getReigningGW", "outputs": [ { "internalType": "string", "name": "", "type": "string" }, { "internalType": "string", "name": "", "type": "string" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "string", "name": "fromChainID", "type": "string" }, { "internalType": "string", "name": "from", "type": "string" }, { "internalType": "string", "name": "toChainID", "type": "string" }, { "internalType": "string", "name": "to", "type": "string" }, { "internalType": "string", "name": "nonce", "type": "string" } ], "name": "getResult", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "bytes32", "name": "txHash", "type": "bytes32" } ], "name": "getResultByHash", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address[]", "name": "newOrganizations", "type": "address[]" } ], "name": "initOrganizations", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "string", "name": "fromChainID", "type": "string" }, { "internalType": "string", "name": "from", "type": "string" }, { "internalType": "string", "name": "toChainID", "type": "string" }, { "internalType": "string", "name": "to", "type": "string" }, { "internalType": "string", "name": "valueFrom", "type": "string" }, { "internalType": "string", "name": "valueTo", "type": "string" }, { "internalType": "string", "name": "nonce", "type": "string" }, { "internalType": "uint256", "name": "blockNum", "type": "uint256" } ], "name": "lock", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "string", "name": "fromChainID", "type": "string" }, { "internalType": "string", "name": "from", "type": "string" }, { "internalType": "string", "name": "toChainID", "type": "string" }, { "internalType": "string", "name": "to", "type": "string" }, { "internalType": "string", "name": "valueFrom", "type": "string" }, { "internalType": "string", "name": "valueTo", "type": "string" }, { "internalType": "string", "name": "nonce", "type": "string" } ], "name": "preLock", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "gwAccount", "type": "address" } ], "name": "queryGWInfo", "outputs": [ { "internalType": "string", "name": "sgx_account", "type": "string" }, { "internalType": "string", "name": "inner_account", "type": "string" }, { "internalType": "address", "name": "auth_organization", "type": "address" }, { "internalType": "uint256", "name": "state", "type": "uint256" }, { "internalType": "uint256", "name": "block_point", "type": "uint256" }, { "internalType": "uint256", "name": "pledge", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "quitGW", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "refundGW", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "sgx_account", "type": "address" }, { "internalType": "address", "name": "inner_account", "type": "address" } ], "name": "register", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "string", "name": "fromChainID", "type": "string" }, { "internalType": "string", "name": "from", "type": "string" }, { "internalType": "string", "name": "toChainID", "type": "string" }, { "internalType": "string", "name": "to", "type": "string" }, { "internalType": "string", "name": "valueFrom", "type": "string" }, { "internalType": "string", "name": "valueTo", "type": "string" }, { "internalType": "string", "name": "nonce", "type": "string" }, { "internalType": "uint256", "name": "blockNum", "type": "uint256" } ], "name": "unLock", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "string", "name": "fromChainID", "type": "string" }, { "internalType": "string", "name": "from", "type": "string" }, { "internalType": "string", "name": "toChainID", "type": "string" }, { "internalType": "string", "name": "to", "type": "string" }, { "internalType": "string", "name": "valueFrom", "type": "string" }, { "internalType": "string", "name": "valueTo", "type": "string" }, { "internalType": "string", "name": "nonce", "type": "string" } ], "name": "withdrawal", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ]   //abi就上面最早复制的一段代码   lockContract=eth.contract(abi).at(contractAddres);   //然后myContract.xxx();就能调用合约里面的函数了,例如我的getBalance() ​ ​

 

 web3js前端调用 geth开启 geth --datadir "./chainA1" --networkid "19" --port "30019" --rpc --rpccorsdomain="*" --rpcapi "web3,eth,personal,net"  --rpcaddr "0.0.0.0" --rpcport "8019" console 2>>eth_chainA1.log

 

 

 geth --datadir "./chain39" --networkid "39" --port "30039" --rpc --rpcaddr "0.0.0.0" --rpcport "8039" -allow-insecure-unlock  console 2>>eth_chain39.log   需要加最后面的解锁账户,

BU链部署参考

https://github.com/bumoproject/bumo/blob/develop/docs/manual_CN.md

ETH链部署参考

https://my.oschina.net/u/2349981/blog/865256

查看私钥

https://blog.csdn.net/northeastsqure/article/details/79476831

remix本地

https://github.com/ethereum/remix-ide/releases

 remixd  ​ 安装 npm install -g remixd 使用 remixd -s <absolute-path> --remix-ide https://remix.ethereum.org

本文地址https://www.b2bchain.cn/8104.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 基于Buchain ethchain跨链系统部署
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们