【Solidity】Address地址

地址不是public key,地址是根据我们的public key经过了keccak的算法生成得到的string就是地址,这个string是根据16位进制来并且是40个character的格式来显示。

地址分成3个类别

  • 智能合约地址
  • 创建智能合约的地址,也就是你的个人地址
  • 跟智能合约打交道的地址(任何人的地址,可能是个人地址也可能是其他的合约地址)

代码范例

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract test{
    address private immutable ownerAddress;

    constructor(){
        ownerAddress = msg.sender;
    }

    function getContractAddress() public view returns(address){
        return address(this); //获取本合约的地址
    }

    function getSenderAddress() public view returns(address){
        return msg.sender; //获取调用合约人的地址
    }

    function getOwnerAddress() public view returns(address){
        return ownerAddress; //获取合约作者的地址
    }

    function getBalance()external view returns(uint,uint,uint){

        //以下获取余额的ETH币,wei的单位
        uint contractBalance = address(this).balance;//获取合约本身的余额
        uint senderBalance = msg.sender.balance;//获取调用合约者的余额
        uint ownerBalance = ownerAddress.balance;//获取合约作者的余额
        
        return (contractBalance, senderBalance, ownerBalance);
    }
}

Loading

Facebook评论