古人云熊市多读书多学习。话不多说,黑瞎子今天给大家来分享一下ETH智能合约开发语言solidity中区块交易信息API和ABI的相关知识,码字不易,希望大家多多支持,期待下轮牛市ETH突破一万美金🙌$ETH
一、区块和交易常用的API有哪些?
blockhash(uint blockNumber) 返回给定区块号的哈希值,只支持最近的256个区块
block.coinbase returns(address) 当前块矿工的地址
block.difficulty returns(uint) 当前块的难度
block.gaslimit returns(uint) 当前块的gaslimit
block.number returns(uint) 当前块的块号
block.timestamp returns(uint) 当前块的时间戳
gasleft returns(uint) 获取剩余gas
msg.data returns(uint256) 完整的调用数据(calldata)
msg.sender returns(address) 当前调用发起人的地址
msg.sig returns(bytes4) 调用数据(calldata)的前四个字节,例如函数标识符
msg.value returns(uint) 这个消息所附带的以太币,单位为wei
tx.gasprice returns(uint) 交易的gas价格
tx.origin returns(address) 交易的发送者
二、ABI编码
ABI全称是Application Binary Interface 应用程序二进制接口,我们向合约地址发起一个交易(调用函数)其交易内容就是ABI编码数据。下图就是ABI
ABI相关编码函数
abi.encode(...) returns(bytes) 计算参数的ABI编码
abi.encodePacked(...) returns(bytes) 计算参数的紧密打包编码
abi.encodeWithSelector(...) returns(bytes) 计算函数选择器和参数的ABI编码
abi.encodeWithSignature(...) returns(bytes) 计算函数选择器和参数的ABI编码
三、相关代码练习
