solidity智能合约开发三:地址、交易、支付

1、以太坊地址的本质

1、address 其实是用uint160来存储的,而且他们之间可以相互强制转换
2、地址之间是可以进行比较大小的

solidity智能合约开发三:地址、交易、支付_第1张图片
image.png

2、使用钱包转移资金

合约账户也是账户,也可以存储以太币余额,那么怎么给合约账户发送以太币呢?

solidity智能合约开发三:地址、交易、支付_第2张图片
image.png
pragma solidity >=0.4.22 <0.6.0;

contract payableTest{
    //payable关键字代表我们可以通过这个函数给我们的合约地址转账
// 任何一笔转账都需要使用payable关键字
    function pay() payable public  {
    
    }
    
// 获取合约账户上的金额
//this 表示当前合约地址
    function getBalance() public view returns(uint){
        return address(this).balance;
    }
//获取任意地址的金额
 function getRandomBalance() view public returns(uint){
        address account =0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C;
        return account.balance;
        
    } 

//获取任意地址的金额
 function getRandomBalance2(address account ) view public returns(uint){
        return account.balance;
        
    } 
}

//transfer转移资金(外部地址之间转账),如下图
//如果我们函数里面没有任何操作,但是有payable属性,那么msg.value的值就会直接转给合约账户
    function transferTest() payable   public{
        address payable account1 = 0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB;
        account1.transfer(msg.value);
      //这样也是转10个以太币    
      //account1.transfer(10 ether);
    }
solidity智能合约开发三:地址、交易、支付_第3张图片
image.png

3、以太坊中的全局属性

solidity智能合约开发三:地址、交易、支付_第4张图片
image.png
solidity智能合约开发三:地址、交易、支付_第5张图片
image.png
pragma solidity >=0.4.22 <0.6.0;


contract grobal{
    
    function getGrobal1() view public returns(address) {
        return msg.sender;
    }
    
    
     function getGrobal2() view public returns(uint) {
        return block.difficulty;
    }
    
    
     function getGrobal3() view public returns(uint) {
        return block.number;
    }
    
     function getGrobal4() view public returns(address) {
        return block.coinbase;
    }
}

4、底层send方法

send()是区块链底层的一个方法,执行时有一些风险:

  • 调用递归深度不能超过1024
  • 如果gas不够,执行会失败
  • 返回值是bool类型,所以使用时要检查成功与否
  • transfer相对send较安全
   function sendTest() payable   public returns(bool){
        address payable account1 = 0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C;
        return account1.send(msg.value);
        
    }

你可能感兴趣的:(solidity智能合约开发三:地址、交易、支付)