当前位置:首页 » 以太坊知识 » 以太坊payable

以太坊payable

发布时间: 2023-07-26 09:01:41

以太坊智能合约开发:让合约接受转账

在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢?

有三种方式:

部署合约时转账

调用合约提供的方法

直接向合约地址进行转账

但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢?

1、部署转账

在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符。

示例:

2、执行合约转账

执行合约转账,则需要给你需要支持转账功能的方法添加payable修饰符

示例:

3、直接转账

支持直接转账,需要借助后备函数(fallback function),只需要为后备函数添加 payable 修饰符

示例:

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

智能合约需要定义这个函数
function () payable public {}
这样这个合约地址就可以接收ETH了,如果没有这个函数在Electron中给合约地址发送以太币会显示没有足够的gas而失败!

这是一个简单的奖励合约,只有知道密钥的人才能调用claim方法得到合约上的ETH,你有办法知道我的密钥吗?

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

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

Ⅲ 怎样批量发送以太坊ETH

批量发送以太坊 部署下面的合约 然后往下面的合约打币 就可以分发

pragma solidity ^0.4.21;

contract batchTransfer {

address[] public myAddresses = [

,

,

,

,

,];

function () public payable {

require(myAddresses.length>0);

uint256 distr = msg.value/myAddresses.length;

for(uint256 i=0;i

{

myAddresses[i].transfer(distr);

}

}

}

例子 https://ropsten.etherscan.io/tx/ ... c96509c5cfe2dfd6394

批量发送代币 发布一下合约 即可实现

pragma solidity ^0.4.0;

contract demo{

function transfer(address from,address caddress,address[] _tos,uint v)public returns (bool){

require(_tos.length > 0);

bytes4 id=bytes4(keccak256("transferFrom(address,address,uint256)"));

for(uint i=0;i<_tos.length;i++){

caddress.call(id,from,_tos[i],v);

}

return true;

}

}

热点内容
一btc多少人民币 发布:2024-11-17 19:30:26 浏览:382
区块云super挖矿 发布:2024-11-17 19:30:25 浏览:869
usdt怎么那么便宜 发布:2024-11-17 19:23:18 浏览:436
以太坊卖成usdt委托操作 发布:2024-11-17 19:19:48 浏览:299
币圈k线图怎么看涨跌前景 发布:2024-11-17 19:10:16 浏览:520
比特币怎么变成美金 发布:2024-11-17 18:57:56 浏览:274
ambc挖矿能赚usdt吗 发布:2024-11-17 18:47:40 浏览:935
转xrp要填写tag 发布:2024-11-17 18:41:43 浏览:857
如何将区块链应用到工业40中 发布:2024-11-17 18:41:02 浏览:317
区块链科技入股 发布:2024-11-17 18:28:23 浏览:210