美文网首页区块链研习社Dapp开发区块链技术与金融
【Solidity智能合约系列】07--以太单位及时间单位

【Solidity智能合约系列】07--以太单位及时间单位

作者: 唠嗑008 | 来源:发表于2018-06-05 09:29 被阅读9次

    关于Ether背景

    关于 Ether一词,Vitalik Buterin曾经提过,「Ether」念起来响亮好听,而且其意义为「充满宇宙,让光线行进却不可见的物质」,以太坊的愿景具有类似意义,希望区块链的应用能扩散至每个领域,重新打造一个透明,公平,效率的新世界。

    以太单位(Ether Units)

    数字常量(字面量)后面添加后缀wei, finney, szabo 或者 ether,这些后缀都是以太坊货币单位,不同的单位可以转换。如果** Ether**没有后缀单位的话,默认是 wei,例如, 2 ether == 2000 finney,评估为 true

    Eth不同单位之间的换算方式如下:

    • 1 ether == 10^3 finney
    • 1 ether == 10^6 szabo
    • 1 ether == 10^18 wei

    以太坊的单位,沿袭了科学界的传统,用做过杰出贡献的数学、密码学专家的名字命名。
    wei: Wei Dai 戴伟 密码学家 ,发表 B-money
    finney: Hal Finney 芬尼 密码学家、工作量证明机制(POW)提出
    szabo: Nick Szabo 尼克萨博 密码学家、智能合约的提出者

    以太坊上的计量单位的背景介绍

    时间单位(Time Units)

    seconds, minutes, hours, days, weeksyears都可以加在数字常量后面作为时间单位,不同的单位之间可以相互转换,转换方式如下:

    • 1 == 1 seconds (默认单位)

    • 1 minutes == 60 seconds

    • 1 hours == 60 minutes

    • 1 days == 24 hours

    • 1 weeks = 7 days

    • 1 years = 365 days

      注意:使用这些单位进行日期计算需要特别小心,因为不是每年都是365天,且并不是每天都有24小时,因为还有闰秒(leap seconds
      )。由于无法预测闰秒,必须由外部的预言(oracle)来更新从而得到一个精确的日历库。

    注意:
    由于上诉原因,years后缀已经被废弃了。

    这些后缀不适用于变量,如果你想对输入的变量,说明其后缀单位,比如days,你可以通过如下方式来实现:

    function f(uint start, uint daysAfter) public {
        if (now >= start + daysAfter * 1 days) {
          // ...
        }
    }
    

    相关文章

      网友评论

        本文标题:【Solidity智能合约系列】07--以太单位及时间单位

        本文链接:https://www.haomeiwen.com/subject/thsysftx.html