主页 > 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