多签合约(如 Gnosis Safe); 去中心化交易所; 元交易和 gas 中继者(如 Gas Station Network)。 但是,如果你想通过正在使用的智能合约钱包签署消息怎么办?我们显然不能让钱包智能合约访问私钥对吧。ERC 1271 提议了一个标准,可以让智能合约验证其它智能合约的签名。其规范非常简单: pragma solidity ^0.7.0;contract ERC1271 {bytes4 constant internal MAGICVALUE = 0x1626ba7e;function isValidSignature(bytes32 _hash,bytes memory _signature) public view returns (bytes4 magicValue);} 合约必须实现 isValidSignature 函数,该函数可以像上述合约那样运行任意函数。如果签名确实是与合约对应的,则函数返回 MAGICVALUE。这样一来,只要是实现了 ERC 1271 的合约,任何合约都可以验证其签名。从内部来说,实现 ERC 1271 的合约可以让多名用户签署同一个消息(例如,在多签合约的情况下),并将哈希值存储在内部。然后,该合约可以验证提供给 isValidSignature 函数的哈希值是否在内部签署,且签名是否对合约所有者之一有效。 总结 对于区块链和去中心化来说,签名非常重要。签名不仅可以用来发送交易,还可以用来与去中心化交易所、多签合约和其它智能合约进行交互。目前还没有明确的消息签名标准,进一步采用 EIP 712 规范有助于生态系统改善用户体验,并为消息签名制定标准。 (责任编辑:admin) |