我想知道我如何能够本机弹出MetaMask窗口发送特定数量的以太作为捐赠给已经定义的SC地址和ABI?
短代码简介:
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控制台,如下所示:
(function () {
CONTRACT.methods.donated_people(1).call().then( function( donated ) {
console.log(donated);
});
})();我可以通过硬编码SC地址和发送地址来发送以太。然而,我想把以太从合同方法直接到本机接收函数,其中有修饰符到最小的数量。在Remix中,我们称之为“低级交互”,如下所示:


有什么想法吗?如何在web3中实现与Remix相同的结果?提前感谢!
发布于 2021-03-02 17:37:47
这个例子很好用。如果你想点击SC地址接收函数,请注意,你必须通过CONTRACT.options.address
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);
});
}发布于 2021-02-23 06:43:44
web3.eth.sendTransaction函数可以直接传递给合同接收函数。
web3.eth.sendTransaction({
from: USER_ADDRESS,
to: CONTRACT_ADDRESS,
value: AMOUNT_IN_WEI,
gas: GAS_AMOUNT
})
.then(function(receipt){
...
});https://ethereum.stackexchange.com/questions/93773
复制相似问题