Open1

デジタル署名

MingleMingle(Thurendous)MingleMingle(Thurendous)
  1. 计算以太坊签名消息: 消息可以是能被执行的交易,也可以是其他任何形式。为了避免用户误签了恶意交易,EIP191提倡在消息前加上"\x19Ethereum Signed Message:\n32"字符,并再做一次keccak256哈希,作为以太坊签名消息。经过toEthSignedMessageHash()函数处理后的消息,不能被用于执行交易:

    /**

    • @dev 返回 以太坊签名消息
    • hash:消息
    • 遵从以太坊签名标准:https://eth.wiki/json-rpc/API#eth_sign[eth_sign]
    • 以及EIP191:https://eips.ethereum.org/EIPS/eip-191`
    • 添加"\x19Ethereum Signed Message:\n32"字段,防止签名的是可执行交易。
      */
      function toEthSignedMessageHash(bytes32 hash) public pure returns (bytes32) {
      // 哈希的长度为32
      return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
      }
      处理后的消息为:

以太坊签名消息: 0xb42ca4636f721c7a331923e764587e98ec577cea1a185f60dfcc14dbb9bd900b