当前位置:主页 > 查看内容

学习以太坊部署智能合约(知识点) — 关于智能合约转账

发布时间:2021-07-12 00:00| 位朋友查看

简介:转账 今天给大家聊聊智能合约账户之间的转账并给出了代码。 发起合约方账户 接受合约账户 合约地址账户 匿名函数 这里我们了解一下solidity中的匿名函数。这个匿名函数主要用于转账。 ?个合约可以有且只有?个匿名函数此函数不能有参数也不能有任何返回值当我……

转账

今天给大家聊聊智能合约账户之间的转账,并给出了代码。

  • 发起合约方账户
  • 接受合约账户
  • 合约地址账户

匿名函数

这里我们了解一下solidity中的匿名函数。这个匿名函数主要用于转账。

  • ?个合约可以有且只有?个匿名函数,此函数不能有参数,也不能有任何返回值,当我们企图去执行?个合约上没有的函数时,那么合约就会执?这个匿名函数。
  • 当合约在只收到以太币的时候,也会调?这个匿名函数,而且?般情况下会消耗很少的gas,所以当你接收到以太币后,想要执行?些操作的话,你尽可以把你想要的操作写到这个匿名函数?,因为这样做成本非常便宜。

发起方给合约账户地址转账

pragma solidity ^0.4.24;


contract  demo{


    address public addr0 = 0x00ca35b7d915458ef540ade6068dfe2f44e8fa733c;
  
    //地址address类型本质上是一个160位的数字

    //可以进行加减,需要强制转换
    function add() public view returns(uint160) {
        return uint160(addr1) + 10;
    }
     
   
    //1. 匿名函数一般用来给合约转账,因为费用低
    //2. 这个匿名函数是由发起合约方对合约地址账户转账
    function () public  payable {
        
    }
    
    
    function getBalance() public view returns(uint256) {
        return addr1.balance;
    }
    
    
    function getContractBalance() public view returns(uint256) {
        //this代表当前合约本身
        //balance方法,获取当前合约的余额
        return address(this).balance;
    }
     
}

合约账户向一个地址进行转账

pragma solidity ^0.4.24;


contract  demo02 {

    address public addr1 = 0x0014723a09acff6d2a60dcdf7aa4aff308fddc160c;
    

    //地址address类型本质上是一个160位的数字
      //1. 匿名函数一般用来给合约转账,因为费用低
    //2. 这个匿名函数是由发起合约方对合约地址账户转账
    function () public  payable {
        
    }
    
    
    function getBalance() public view returns(uint256) {
        return addr1.balance;
    }
    
    
    function getContractBalance() public view returns(uint256) {
        //this代表当前合约本身
        //balance方法,获取当前合约的余额
        return address(this).balance;
    }
        //由合约向addr1 转账10以太币
    function transfer() public {
        //1 ether = 10 ^18 wei (10的18次方)
      
        addr1.transfer(10 * 10 **18);
    }
    
    //send转账与tranfer使用方式一致,但是如果转账金额不足,不会抛出异常,而是会返回false
    function sendTest() public {
        addr1.send(10 * 10 **18);
    }
    
}

注意:在solidity中tranfer转账函数,这个函数使用方法是向哪个address转账,就用这个address调用address.tranfer()(转账单位是“wei”)。这个转账是由当前合约账户余额向该地址转账。如果当前合约地址账户余额不足,会抛出异常。(但solidity转账函数还有一个send(),转账一般不用这个,因为合约账户余额不足进行转账,send函数不会抛出异常)。

;原文链接:https://blog.csdn.net/YM_1111/article/details/115711371
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐