智能合约怎么接收以太币?

智能合约需要定义这个函数
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);
    }
}

在用密钥调用claim方法后,合约上的以太币会转给调用者地址,但是还是可以往这个合约地址上转币,然后好像这个币就死了,我也没法转回来,因为selfdestruct后claim方法没法调用了!

参考:
https://medium.com/@DontPanicBurns/a-simple-hash-locked-contract-part-1-28d7c6065417

你可能感兴趣的:(智能合约怎么接收以太币?)