首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web3如何从客户端发送以太到合同地址本机接收功能?

Web3如何从客户端发送以太到合同地址本机接收功能?
EN

Ethereum用户
提问于 2021-02-22 00:00:52
回答 2查看 3.6K关注 0票数 0

我想知道我如何能够本机弹出MetaMask窗口发送特定数量的以太作为捐赠给已经定义的SC地址和ABI?

短代码简介:

代码语言:javascript
复制
pragma solidity >=0.7.0 <0.8.6;
[...]
    receive() external payable minumum_donation_amount(msg.value)  {
        OWNER.transfer(msg.value);
        donated_people[how_many_people_donated+1] = DonatedPeople(msg.sender, block.timestamp, msg.value);
        how_many_people_donated++;
        emit SubscribeDonatedPeople(msg.sender, block.timestamp, msg.value);
    }

    modifier minumum_donation_amount(uint256 amount) {
        require(amount >= 0.0005 ether, "The minumum donation amount is 0.0005 Ether");
        _;
    }
[...]

使用JavaScript匿名函数成功地从SC获取数据到web3控制台,如下所示:

代码语言:javascript
复制
(function () {
  CONTRACT.methods.donated_people(1).call().then( function( donated ) { 
    console.log(donated);
  });
})();

我可以通过硬编码SC地址和发送地址来发送以太。然而,我想把以太从合同方法直接到本机接收函数,其中有修饰符到最小的数量。在Remix中,我们称之为“低级交互”,如下所示:

有什么想法吗?如何在web3中实现与Remix相同的结果?提前感谢!

EN

回答 2

Ethereum用户

回答已采纳

发布于 2021-03-02 17:37:47

这个例子很好用。如果你想点击SC地址接收函数,请注意,你必须通过CONTRACT.options.address

代码语言:javascript
复制
client_account = accounts[0]; // assuming master client addr

function contribute_to_the_project() {
  const amount = "0.0004"; 
  const amountToSend = web3.utils.toWei(amount, "ether"); // Convert to wei value
  web3.eth.sendTransaction({ 
    from: client_account,
    to: CONTRACT.options.address, 
    value: amountToSend 
  }).then( function(tx) { ;
  console.log("Transaction: ", tx); 
  });
}
票数 0
EN

Ethereum用户

发布于 2021-02-23 06:43:44

web3.eth.sendTransaction函数可以直接传递给合同接收函数。

代码语言:javascript
复制
web3.eth.sendTransaction({
    from: USER_ADDRESS, 
    to: CONTRACT_ADDRESS, 
    value: AMOUNT_IN_WEI, 
    gas: GAS_AMOUNT
})
.then(function(receipt){
    ...
});
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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