“\x19以太坊签名消息:\n32”前缀含义

jui*_*ice 5 hash keccak solidity

我在网上搜索这个前缀的含义。Solidity 文档没有明确的解释。那么这是什么以及为什么我应该使用它?

"\x19以太坊签名消息:\n32",

Pet*_*jda 4

该前缀是在EIP-191中引入的,作为区分以太坊智能合约和其他加密平台签名的一种方式。通过添加以太坊特定的前缀,消息(带有前缀)会产生不同的签名,仅针对以太坊。但如果没有特定于平台的前缀,则所有平台得到的签名都将相同,这可能会导致签名重放攻击。

注:早在 2016 年,当该标准推出时,还没有其他 EVM 网络(例如币安智能链和 Polygon)——或者至少它们没有被广泛使用。如今,即使消息是用于其他 EVM 网络(例如 Polygon),也通常使用“以太坊”前缀。

这个特定字节0x19被标准化只是因为在标准最终确定之前已经存在的实现(在 Go 以太坊客户端软件中)正在使用它。

最后一个数字(本例中为 32)是正在签名的消息的字节长度(不包括前缀)。