本页面为社区翻译版本,仅供参考;内容以英文原版为准。
查看英文原版 ↗

签名

建议使用现有的 SDK,而不是手动生成签名。签名出错的可能性有很多。错误的签名会使得根据签名和负载恢复出的签名者与预期不同,并导致以下错误之一:\ "L1 error: User or API Wallet 0x0123... does not exist."\ Must deposit before performing actions. User: 0x123...\ 其中返回的地址与你签名的钱包的公开地址不一致。并且对于不同的输入,返回的地址也会不同。\ 错误的签名并不会指出错在哪里,这让调试变得更具挑战性。要调试此问题,建议仔细阅读 Python SDK 并确保你的实现与其完全一致。如果仍然不行,添加日志以找出输出产生分歧的位置。

一些常见的错误:\ 1. 没有意识到存在两种签名方案(Python SDK 中的方法为 sign_l1_action 与 sign_user_signed_action)。\ 2. 没有意识到字段顺序对 msgpack 很重要。\ 3. 数字末尾的零引发的问题。\ 4. 地址字段中出现大写字母引发的问题。建议在签名和发送前将任何地址转为小写。有时该字段会被解析为字节,导致其在网络传输中被自动转为小写。\ 5. 认为签名一定是正确的,因为在本地调用 recover signer 得到了正确的地址。recover signer 所用的负载是根据 action 构造的,未必与实际签名所用的负载一致。

英文官方来源: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/signing
原文抓取日期: · 镜像构建日期: · 社区翻译,以英文原版为准
非官方社区镜像与翻译,内容版权归 Hyperliquid 所有,以英文原版为准。 来源: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/signing