主页 > imtoken.im > 智能合约如何接收以太币?
智能合约如何接收以太币?
imtoken.im 2023-03-29 07:05:23
智能合约需要定义这个函数
function() payable public {}
这样合约地址就可以收到ETH了。 如果没有这个功能,在Electron中发送以太币到合约地址会显示gas不够而失败!
这是一个简单的奖励合约。 只有知道密钥的人才能调用 claim 方法获取合约上的 ETH。 你有办法知道我的钥匙吗?
pragma solidity ^0.4.18;
contract HashLock {
bytes32 public hashLock = 0x2fe239f0a705178c0ba5bb205b0847c2c2f7852946d6f0f527ffb716b1c160cb;
function () payable public {}
function claim(string _WhatIsTheMagicKey) public {
require(sha256(_WhatIsTheMagicKey) == hashLock);
selfdestruct(msg.sender);
}
}
用key调用claim方法后,合约上的以太币会转入调用方地址,但是还是可以转币到合约地址,然后好像币死了以太坊智能合约收代币,转不了它回来了以太坊智能合约收代币,因为在 selfdestruct 之后不能调用 claim 方法!
参考:
@DontPanicBurns/a-simple-hash-locked-contract-part-1-28d7c6065417