当前位置:首页 » 以太坊知识 » 以太坊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天 发布:2025-05-18 04:19:18 浏览:556
数字货币ddm是什么意思 发布:2025-05-18 04:14:59 浏览:266
怎么算摩擦力的能量 发布:2025-05-18 04:13:26 浏览:694
币印矿池dcr算力骤减 发布:2025-05-18 04:11:52 浏览:646
虚拟货币唯有茅台和比特币 发布:2025-05-18 03:56:07 浏览:944
比特币挖矿不是浪费钱 发布:2025-05-18 03:51:32 浏览:403
usdt如何卖出人民币 发布:2025-05-18 03:43:08 浏览:417
元宇宙区块链代币yyz 发布:2025-05-18 03:42:28 浏览:419
测绘次新元宇宙 发布:2025-05-18 02:37:55 浏览:970
比特币转让币手续 发布:2025-05-18 02:37:53 浏览:204