首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在部署合同时发送以太到合同?

如何在部署合同时发送以太到合同?
EN

Ethereum用户
提问于 2017-08-29 07:14:13
回答 2查看 1.1K关注 0票数 1

我有一份合同如下:

代码语言:javascript
复制
contract HoneyPot {

  mapping (address => uint) public balances;

  function HoneyPot() payable {
    balances[msg.sender] = msg.value;
  }

}

在部署合同时,我希望发送一些乙醚,这样部署合同的帐户的balances[msg.sender]就可以得到相当于乙醚发送量的余额。应如何做到这一点?

下面是我如何部署合同:

代码语言:javascript
复制
const fs = require("fs");
const solc = require('solc');
let Web3 = require('web3');
let web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
let go = fs.readFileSync('HoneyPot.sol').toString();
let compiledContract = solc.compile(go);
abiDefinition = JSON.parse(compiledContract.contracts[':HoneyPot'].interface);
contract = web3.eth.contract(abiDefinition);
byteCode = '0x'+compiledContract.contracts[':HoneyPot'].bytecode;
let gasEstimate = web3.eth.estimateGas({data: byteCode});

最后,部署它的行(不发送以太):

代码语言:javascript
复制
deployedContract = contract.new({from:web3.eth.accounts[0],data:byteCode,gas: gasEstimate+40000});
EN

回答 2

Ethereum用户

回答已采纳

发布于 2017-08-29 07:43:37

您可以按以下方式调用HoneyPot函数:

代码语言:javascript
复制
deployedContract.HoneyPot({from:web3.eth.accounts[0],value:100})

希望能帮上忙~

票数 3
EN

Ethereum用户

发布于 2017-08-29 09:46:31

只需在部署合同的行中添加"value“即可。

代码语言:javascript
复制
deployedContract = contract.new({from:web3.eth.accounts[0], value: 5 wei, data:byteCode,gas: gasEstimate+40000});
票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/25373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档