状态变量可用关键字constant定义。如果用constant定义,则该状态变量必须用一个常量来赋值。任何读取storage存储,区块链数据(比如now,this.balance或block.number),执行数据(比如msg.value或gasleft())或调用外部合约的表达式都不能被用来给常量状态变量赋值。对内存分配有影响的表达式可以用来赋值,但对内存中对象可能有影响的表达式不能用于赋值。系统自带的函数比如keccak256, sha256, ripemd160, ecrecover, addmod 和 mulmod可以用于赋值。