【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); } }
Facebook评论