solidity基础(支付ETH+发送ETH)

Posted 泠泠在路上

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了solidity基础(支付ETH+发送ETH)相关的知识,希望对你有一定的参考价值。

一、合约支付ETH


pragma solidity >=0.7.0 <0.9.0;

contract Payable
//payable关键词,函数可以接受以太坊主币的传入,否则传入会报错
    
    address payable public owner;//将地址标记为payable属性,地址就能发送以太坊主币
    constructor()
        owner=payable(msg.sender);
    
     //函数接受主币
     function desposit() external payable

     function getBalance() external view returns (uint)
         return address(this).balance;
     


二、合约发送ETH

有3种方式发送:
1.transfer 2300 gas ,失败会reverts
2.send 2300 gas,返回bool类型标记是否发送成功
3.call 剩余的所有gas, 返回bool和data数据

contract SendEther
//传入主币
constructor() payable 
receive() external payable 
//transfer
function sendViaTransfer(address payable _to) external payable
  _to.transfer(123);

//send
function sendViaSend(address payable _to) external payable
    bool sent=_to.send(123);
    require(sent,"send fail");

//call
function sendViaCall(address payable _to) external payable
   (bool success,)= _to.callvalue:123("");
    require(success,"call faild");

 
//接收主币的log
 contract EthReceiver
    event Log(uint amount,uint gas);
    receive() external payable
    emit Log(msg.value,gasleft());
  
  

以上是关于solidity基础(支付ETH+发送ETH)的主要内容,如果未能解决你的问题,请参考以下文章

solidity 从入门到发币(eth)

Solidity极简入门#22. Call

我如何将 eth 值发送到在 ethers.js 中支付的特定智能合约功能?

创建自己的区块链合约java版web3接口——以太坊代币

笔记区块链ETH学习1--基础概念与钱包使用

北京大学肖臻老师《区块链技术与应用》ETH笔记 - 10.0 智能合约