【链块技术43期】智能合约基础语言(七)——Solidity单位和特殊变量

本文介绍了Solidity编程语言中的货币和时间单位,如wei, finney, szabo, ether以及seconds, minutes等,并详细阐述了全局上下文中的特殊变量和函数,包括block.blockhash, block.timestamp, msg.sender等,以及合约操作如selfdestruct。" 113550526,10539160,workerman异步MySQL连接池的探讨,"['workerman', '数据库连接池', '异步通信', 'TCP连接', 'PHP']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

智能合约基础语言(七):Solidity单位和特殊变量

一、目录

☛ 货币单位

☛ 时间单位

☛ 特殊的变量及函数

二、货币单位

一个常量的数字,可以使用后缀wei,finney,szabo或ether来在不同面额中转换。如2 ether == 2000 finney的结果是true。

▪ 1 ether==10^3 finney

▪ 1 ether==10^6 szabo

▪ 1 ether==10^18 wei

注意:不含任何后缀的默认单位是wei。

三、时间单位

seconds,minutes,hours,days,weeks,years均可做为后缀,并进行相互转换。

▪ 1 == 1 seconds

▪ 1 minutes == 60 seconds

▪ 1 hours == 60 minutes

▪ 1 days == 24 hours

▪ 1 weeks = 7 days

▪ 1 years = 365 days

注意:

▪ 不含任何后缀的默认单位是seconds

▪ 如果你需要进行使用这些单位进行日期计算,需要特别小心,因为不是每年都是365天,且并不是每天都有24小时,因为还有闰秒。

范例:后缀不能用于变量。如果你想对输入的变量说明其不同的单位,可以使用下面的方式。

四、特殊的变量及函数

有一些变量和函数存在于全局上下文中。主要用来提供一些区块链当前的信息区块和交易的属性。

▪ block.blockhash(uint blockNumber) returns (bytes32),给定区块号的哈希值,只支持最近256个区块,且不包含当前区块;

▪ block.coinbase (address) 当前块矿工的地址;

▪ block.difficulty (uint)当前块的难度;

▪ block.gaslimit (uint)当前块的gaslimit;

▪ block.number (uint)当前区块的块号;

▪ block.timestamp (uint)当前块的时间戳;

▪ msg.data (bytes)完整的调用数据(calldata)

▪ msg.gas (uint)当前还剩的gas;

▪ msg.sender (address)当前调用发起人的地址;

▪ msg.sig (bytes4)调用数据的前四个字节(函数标识符);

▪ msg.value (uint)这个消息所附带的货币量,单位为wei;

▪ now (uint)当前块的时间戳,等同于block.timestamp;

▪ tx.gasprice (uint) 交易的gas价格;

▪ tx.origin (address)交易的发送者(完整的调用链)。

4.1 区块链交易熟悉说明

▪ 对于同一个链上连续的区块来说,当前区块时间戳总是大于上一个区块的时间戳。

▪ 只能查最近256个块,所有其它的将返回0。

五、合约相关

▪ selfdestruct(addressrecipt):销毁当前合约,并把它所有资金发送到给定的地址。

▪ suicide(address recipient):同selfdestruct。

 

-END-

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值