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

2018-06-20  本文已影响70人  ytxing

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

除了使用官方钱包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,签名,运行,即可看到自己的合约。

上一篇下一篇

猜你喜欢

热点阅读