# solidity-14-全局变量

By [面向加薪学习](https://paragraph.com/@0x7f7b198684e3cdb54397438fad4c8442f34b9bd9) · 2023-01-28

---

block相关
-------

1.  block.number 它指的是区块链上的一个块的编号。在区块链上，块是一组交易的集合，他们是按线性、时间顺序添加到链上。每个块都有一个唯一的编号，也叫"块高"，它在被添加到链上时分配。块编号可用于在区块链中识别和引用特定块。
    
2.  block.timestamp 它指区块链上的一个块的时间戳。按线性、时间顺序添加到链上。每个块有一个时间戳，在它被添加到链上时分配。
    
3.  block.difficulty 它指的是在区块链上生成一个新块所需要的难度。
    
4.  block.coinbase 它指的是区块链上的一个块的coinbase交易。在区块链上，每个新块都会一笔coinbase交易，这笔交易是为了奖励矿工在挖掘新块时所做出的贡献而生成的。coinbase交易通常是块链上的第一笔交易，并且不需要输入。这笔交易的输出会被用来发放挖矿奖励。
    
5.  block.blockhash 它指区块链上一个块的哈希值。在区块链上，每个块都有一个唯一的哈希值，用来验证区块的完整性和不可变性。
    
6.  block.gaslimit 它指当前区块的最大可用gas限制。是uint类型的值。它是全局的，在每次执行之前可以访问，它是所有智能合约在当前区块中可用的气体总量。只能在合约执行期间才能获取到，不能在编译期间使用。
    

msg相关
-----

1.  msg.sender 是全局变量，表示当前合约调用者的发送者地址。是address类型，也是当前交易的发送者地址。
    
2.  msg.value 是全局变量，是当前合约调用时传递的以太币的值。是uint256类型。
    
3.  msg.data 可能是一个字符串、数字、对象，具体内容取决于程序设计和实现。
    
4.  msg.gas 指定交易或智能合约所需要的gas。每次交易或执行职能合约都需要消耗一定量的gas。
    
5.  msg.sig 签名。用来验证消息的完整性和发送者的身份。
    

错误处理
----

1.  assert() 条件表达式为false，终止合约的执行，并抛出异常。assert主要检查程序内部的状态是否满足预期。
    
2.  require() 条件表达式为false，终止合约的执行，并抛出异常。 require主要用来检查输入的数据是否正确。
    
3.  revert() 用来回滚合约函数的执行并抛出异常。也就是说修改都会被撤销，交易也会失败。不仅仅会终止合约函数的执行，还会回滚所有对状态的修改，适用于在设计合约时处理失败情况。 solidity 0.6版本以后，require、assert、revert都会触发回滚。
    

其他
--

1.  now 当前区块的时间戳。表示从 Unix 时间戳（1970 年 1 月 1 日 00:00:00 UTC）到当前时间的秒数。
    
        if(now > auctionEndTime){
            //todo
        }
        
    
    注：now是代表区块的时间戳，不是真实事件，因为区块的时间戳是由矿工设置的，可能有误差。在区块链上的时间戳是不可信的，不能用来进行高精度的时间比较或高精度的时间操作，如果有这样的需求，建议使用第三方服务进行验证。
    
2.  tx.gasprice 以wei为耽误的整数，表示一次智能合约操作支付的价格。当调用者发送交易的时候，可以设置gas price，矿工可以选择执行gas price最高的交易，如果交易是由合约自己发出的，tx.gasprice为0.
    
3.  tx.origin 是当前交易的发起者地址。用于验证发起者的身份。注：tx.origin不能被用来验证用户身份，因为可以通过构造伪造的交易来欺骗tx.origin.
    
4.  modifier 是一种特殊类型的函数，它可以在其他函数调用之前或者之后执行特定的操作。可以做权限管理，检查参数的合法性等。
    
5.  events 是一种用于在智能合约中记录日志的方式。它可以用来记录合约中发生的重要事件，并且可以被外部监听和访问。事件可以被触发(emit)。事件可以带有参数，并且可以被链上工具监控和分析。

---

*Originally published on [面向加薪学习](https://paragraph.com/@0x7f7b198684e3cdb54397438fad4c8442f34b9bd9/solidity-14)*
