美文网首页
[Ethereum] 使用网页钱包MyEtherWallet部署

[Ethereum] 使用网页钱包MyEtherWallet部署

作者: ytxing | 来源:发表于2018-06-20 12:14 被阅读70次

    不同步区块也能发币???是的!

    除了使用官方钱包Ethereum Wallet、geth部署合约以外,还有第三种选择,即使用网页钱包MyEtherWallet部署。
    MyEtherWallet是个网页版的以太坊钱包,具有直接和Blockchain交互的能力。这便有了不用同步节点而部署合约的能力(毕竟我可怜的Air可没有上百G的空间)。

    部署的关键在于二进制代码一定要带有构造函数参数。

    1、使用Remix在线IDE调试合约,假设你的合约已经调试通过(最好是在测试网络上已经运行过)。

    2、通过Remix获得合约字节码,也可以拷贝Remix生成的web3代码

    var initialSupply = /* var of type uint256 here */ ;
    var tokenName = /* var of type string here */ ;
    var tokenSymbol = /* var of type string here */ ;
    var xxxtokenContract = web3.eth.contract(tokenAbi);
    var xxxtoken = xxxtokenContract.new(
       initialSupply,
       tokenName,
       tokenSymbol,
       {
         from: web3.eth.accounts[0], 
         data: byteCode, 
         gas: '4700000'
       }, function (e, contract){
        console.log(e, contract);
        if (typeof contract.address !== 'undefined') {
             console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
        }
     })
    

    这段代码的意思是使用Remix编译好的字节码,调用构造函数(最后一句)。其中byteCode和tokenAbi是跟合约有关的变量。

    3、通过js获得构造函数的字节码
    核心在于不直接调用构造函数,而是打印出构造函数的字节码,去让MEW提交到blockchain上。利用的是getData函数。

    var byteCodeWithParam = dectokenContract.new.getData(initialSupply, tokenName, tokenSymbol, {data: byteCode});
    console.log(byteCodeWithParam)
    

    4、把打印出来的字节码,提交到MEW,签名,运行,即可看到自己的合约。

    相关文章

      网友评论

          本文标题:[Ethereum] 使用网页钱包MyEtherWallet部署

          本文链接:https://www.haomeiwen.com/subject/ycvbeftx.html