首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏开发Notes

    [区块链]Solidity小白菜系列进阶(二)

    //payable关键字表示可以接收以太坊主币 部署后红色按钮contract Payable{ address payable public owner; constructor(){ owner = payable (msg.sender); //需要转换成payable类型的 } function deposit() external payable { } { } receive() external payable { } function sendViaTransfer(address payable _to) external payable{ _to.transfer(123); } function sendViaSend(address payable _to) external payable public owner; constructor(){ owner = payable (msg.sender); } receive() external payable

    36120编辑于 2024-12-27
  • 来自专栏Ethereum

    《纸上谈兵·solidity》第 10 课:Solidity `fallback` / `receive` 函数 —— 合约如何收 ETH 和响应未知调用?

    receive()专门用于接收 ETH 转账必须是 external payable仅在 msg.data 为空时触发fallback()用于处理不存在的函数调用,或者带数据的 ETH 转账可以是 payable 或非 payable在代理合约中,经常用来转发调用可以理解成:receive 是“收款专用”fallback 是“万能接单员”,负责兜底处理各种不在菜单上的请求2. 否 fallback()ETH,有数据 任意 payable 是 fallback()ETH,有数据 任意 非 target) public payable { target.transfer(msg.value); } function sendTo(address payable (address payable target) public payable returns (bool, bytes memory) { (bool success, bytes memory

    57810编辑于 2025-08-11
  • 来自专栏Java开发者杂谈

    solidity开发3-类型1

    address payable:同address,不过包含transfer和send属性。 address payable可以直接隐式转换成address,而address要转换成payable address需要显示使用payable()来进行。 但是只有address或者合约类型才能通过payable显示转换为payable address类型(合约必须是可以接收以太币(有receive方法或者payable修饰的方法))。 Address members address payable x = payable(0xd9145CCE52D386f254917e481eB44e9943F39138); address myAddress

    54610编辑于 2022-05-06
  • 来自专栏Seebug漏洞平台

    LCTF2018 ggbank 薅羊毛实战

    然后就是goodluck函数 function goodluck() public payable authenticate returns (bool success) { require( public { for(int i=0;i<=50;i++){ new attack(); } } function () payable ": True, "stateMutability": "payable", "type": "function" }, { "constant ": True, "stateMutability": "payable", "type": "function" }, { "inputs ": [], "payable": False, "stateMutability": "nonpayable", "type": "constructor

    70340发布于 2018-12-17
  • 来自专栏Netkiller

    以太坊 web3.py 签名转账

    { "constant": true, "inputs": [], "name": "name", "outputs": [ { "name": "", "type": "string" } ], "payable ", "type": "uint256" } ], "name": "approve", "outputs": [ { "name": "success", "type": "bool" } ], "payable constant": true, "inputs": [], "name": "decimals", "outputs": [ { "name": "", "type": "uint8" } ], "payable "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "name": "", "type": "uint256" } ], "payable , "type": "uint256" } ], "name": "burnFrom", "outputs": [ { "name": "success", "type": "bool" } ], "payable

    2.5K100发布于 2018-06-19
  • 来自专栏Ethereum

    《纸上谈兵·solidity》第 16 课:Pull over Push 支付模式与 Check-Effects-Interactions 原则

    支付模式的隐患在 Push 模式下,合约直接在逻辑中调用 transfer 或 call 将资金打到用户地址:// ❌ 不安全的 Push 模式function distribute(address payable contract UnsafePush { mapping(address => uint256) public balances; function deposit() external payable external view returns (uint256) { return balances[user]; } function distribute(address payable 所以用 unchecked { ... } 关闭检查:function distribute(address payable user, uint256 amount) external { require (address(this)), msg.value); } receive() external payable { reentryCount++; uint256

    28800编辑于 2025-08-19
  • 来自专栏终有链响

    智能合约中断言失败

    // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract WithdrawalContract { address payable public owner; uint256 public balance; constructor() { owner = payable(msg.sender); balance = 0; } receive() external payable { balance += msg.value; } public owner; uint256 public balance; constructor() { owner = payable(msg.sender); } receive() external payable { balance += msg.value; } modifier onlyOwner()

    40210编辑于 2024-07-29
  • 来自专栏深入浅出区块链技术

    关于nest2.0智能合约的架构解析三(NEST_MiningSave,NESTAbonus)

    addr = target.make_payable(); //返回一个可支付地址赋值给addr addr.transfer(num); //发送num到addr。 addr = target.make_payable(); addr.transfer(tranAmount); } //这个this说的是NESTLeveling对应的自身地址 (addr); address payable levelingAddr = address(mappingContract.checkAddress("nestLeveling")). (addr); address payable levelingAddr = address(mappingContract.checkAddress("nestLeveling")). make_payable(); nestLeveling = NESTLeveling(levelingAddr); } /** * @dev Deposit

    82510发布于 2021-02-25
  • 来自专栏code人生

    Solidity:接收 ETH

    payable 在Solidity中,payable是一个函数修饰符,它允许函数接收Ether(以太币)。如果一个函数被标记为payable,那么你可以在调用该函数时附带一定数量的Ether。 如果一个函数没有被标记为payable,那么你不能在调用该函数时发送Ether,否则交易将被拒绝。 { address payable public owner; // 合约初始化时可以接收ETH constructor() payable { owner 注意,payable函数修饰符只影响函数是否可以接收Ether,它不影响函数的其他行为。也就是说,一个payable函数可以做任何其他函数可以做的事情,包括修改合约的状态。 注意,receive函数被声明为external payable,并且没有任何参数或返回值。

    77410编辑于 2024-05-28
  • 来自专栏极客编程

    以太坊智能合约部署与交互

    ":"function"},{"constant":false,"inputs":[{"name":"v","type":"uint256"}],"name":"set","outputs":[],"payable ":false,"type":"function"},{"inputs":[{"name":"v","type":"uint256"}],"payable":false,"type":"constructor inputs: [{ name: "v", type: "uint256" }], name: "set", outputs: [], payable > abi=[{"constant":true,"inputs":[],"name":"value","outputs":[{"name":"","type":"uint256"}],"payable ":false,"type":"function"},{"inputs":[{"name":"v","type":"uint256"}],"payable":false,"type":"constructor

    2.9K20发布于 2018-09-04
  • 来自专栏Netkiller

    如何开发以太坊网页钱包·Express + web3.js 实例

    文件 abi/NKC.abi [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable ,{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable :"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable {"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable

    4.5K130发布于 2018-05-18
  • 来自专栏蝉沐风的码场

    静态代理——时间都去哪儿了

    public class Client { public static void main(String[] args) { Payable payable = new SiShiDaDao { //被代理对象 private Payable payable; public SiShiDaDaoTimeProxy(Payable payable) { this.payable = payable; } @Override public void pay() { System.out.println("方法计时开始 { //被代理对象 private Payable payable; public SiShiDaDaoLogProxy(Payable payable) { this.payable = payable; } @Override public void pay() { System.out.println("打印日志

    32420编辑于 2022-08-22
  • 来自专栏字节脉搏实验室

    智能合约安全审计之路-拒绝服务漏洞

    合约将拒绝服务,地址对应的字节码将被标注为删除 合约地址中所有的ETH将被发送到指定的新地址 进行ETH转移时,即使目标地址为一个合约地址,也不会触发该地址的fallback函数,因此不需要该合约有任何的payable contract Auction { address public topBidder; uint256 public topBid; constructor() public payable ); topBid = msg.value; topBidder = msg.sender; } function bid() payable // ... } } contract revertContract{ function testBid(address _addr) public payable () public constant returns(uint256){ return this.balance; } function() public payable

    1.7K40发布于 2020-03-31
  • 来自专栏区块链技术开发分享

    web3.0社交平台投票DAO系统开发智能合约部署详细流程

    name":"candidate","type":"bytes32"}],"name":"totalVotesFor","outputs":[{"name":"","type":"uint8"}],"payable name":"candidate","type":"bytes32"}],"name":"validCandidate","outputs":[{"name":"","type":"bool"}],"payable inputs":[{"name":"","type":"bytes32"}],"name":"votesReceived","outputs":[{"name":"","type":"uint8"}],"payable inputs":[{"name":"","type":"uint256"}],"name":"candidateList","outputs":[{"name":"","type":"bytes32"}],"payable constant":false,"inputs":[{"name":"candidate","type":"bytes32"}],"name":"voteForCandidate","outputs":[],"payable

    57620编辑于 2023-03-01
  • 来自专栏tea9的博客

    solidity的代码

    { _owner = msg.sender; // sender:获取函数调用者的地址 } // 创建一个函数,实现转账功能,转账函数必须有payable 关键字 function transfer() payable{ _owner.transfer(msg.value); // value:在调用当前函数时,传入value值 :获取函数调用者的地址 // 合约创建者在创建合约时输入一定的金额 msg.value; } // 创建一个函数,实现转账功能,转账函数必须有payable 关键字 function transfer() payable{ _owner.transfer(msg.value); // value:在调用当前函数时,传入value值 关键字 function transfer() payable{ _owner.transfer(msg.value); // value:在调用当前函数时,传入value值

    40320编辑于 2022-07-16
  • 来自专栏陈冠男的游戏人生

    智能合约:重入漏洞

    此外,为了接收以太币,fallback 函数必须标记为 payable。 mapping(address => uint) public userBalannce; uint public amount = 0; function Victim() payable {} function receiveEther() payable{ if(msg.value > 0){ userBalannce[msg.sender contract Attacker{ uint public amount = 0; uint public test = 0; function Attacker() payable {} function() payable{ test++; Victim(msg.sender).withDraw(); } function

    2.3K31发布于 2020-05-14
  • 来自专栏Haytham的原创技术文章

    区块链 Hello World -- 基于以太坊的投票Dapp

    name":"candidate","type":"bytes32"}],"name":"totalVotesFor","outputs":[{"name":"","type":"uint8"}],"payable name":"candidate","type":"bytes32"}],"name":"validCandidate","outputs":[{"name":"","type":"bool"}],"payable inputs":[{"name":"","type":"bytes32"}],"name":"votesReceived","outputs":[{"name":"","type":"uint8"}],"payable ":[{"name":"x","type":"bytes32"}],"name":"bytes32ToString","outputs":[{"name":"","type":"string"}],"payable ":false,"type":"function"},{"inputs":[{"name":"candidateNames","type":"bytes32[]"}],"payable":false,"

    97120发布于 2019-09-10
  • 来自专栏问题解决

    Solidity-浆糊日记-msg.value-Ether Units (wei, finney, szabo, ether)

    uint256 current_account_address_balance,uint256 contract_account_balance); constructor() public payable msg.sender, address(msg.sender).balance, address(this).balance); } function deposit() public payable msg.sender).balance, address(this).balance); } function withdrawball(uint256 _value) public payable

    3.3K40发布于 2020-12-10
  • 来自专栏深入浅出区块链技术

    一个蜜罐合约的解析

    etherscan[2] 网上的讨论地址reddit[3]源码如下: contract defi_game { function Try(string memory _response) public payable answerHash == keccak256(abi.encode(_response)) && msg.value > 1 ether ) { payable _question; } } function New(string calldata _question, bytes32 _answerHash) public payable { question = _question; answerHash = _answerHash; } function Stop() public payable isAdmin { payable(msg.sender).transfer(address(this).balance); } constructor(bytes32

    86810编辑于 2022-02-22
  • 来自专栏字节流动

    在以太坊私有链上部署智能合约

    "type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"payable "type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"send\",\"outputs\":[],\"payable ",\"type\":\"address\"}],\"name\":\"balances\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable "type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"payable "type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"send\",\"outputs\":[],\"payable

    1.6K40发布于 2020-06-02
领券