【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评论