我需要从外部账户向合同发送以太币。 到目前为止我找到的所有代码都是这样的
/usr/share/arduino/libraries/LiquidCrystal/Print.h
但我无法理解它是如何运作的。我认为它应该是这样的:我们应该运行一些发送功能,它将获取当前的合同地址,发件人地址和金额。
有人可以解释一下它背后的逻辑吗?
我还找到了与此逻辑相对应的解决方案
contract Contract {
mapping (address => uint) balances;
event Transfer(address indexed _from, uint256 _value);
function deposit() public returns (uint) {
balances[msg.sender] += msg.value;
Transfer(msg.sender, msg.value);
return balances[msg.sender];
}
}
然后从控制台中调用它
contract Contract {
function pay() payable {}
}
但在这种情况下var contract
Contract.deployed().then(function(instance) { contract = instance; })
contract.pay.sendTransaction({from: eoa_address,to: contract_address,value: web3.toWei(amount,"ether"), gas:1000000})
函数在联系之外调用。
有没有办法从sendTransaction
透视合同中调用它?
答案 0 :(得分:2)
将Ether发送给合同:
如果我们需要付费来执行此功能,我们可以创建一个应付函数
contract Contract {
function do_somthing() payable {
action1
action2
...
}
}
如果我们想在不执行任何功能的情况下将醚发送到合同中,我们会在您的问题中定义回退函数:
contract Contract {
function pay() payable {}
}
您之前提供的示例: 合同合同{
mapping (address => uint) balances;
event Transfer(address indexed _from, uint256 _value);
function deposit() public returns (uint) {
balances[msg.sender] += msg.value;
Transfer(msg.sender, msg.value);
return balances[msg.sender];
}
}
正在记录用户发送给合同的余额(此函数需要声明为最近编译器的应付款:function deposit() public payable returns
)
function deposit() payable returns (uint) {
balances[msg.sender] += msg.value;
Transfer(msg.sender, msg.value);
return balances[msg.sender];
}