署名
手動で署名を生成するのではなく、既存のSDKを使用することを推奨します。署名が誤くなりうる潜在的な原因は数多くあります。不正な署名は、署名とペイロードから復元されるシグナーが異なるアドレスになり、以下のいずれかのエラーを引き起こします:\
"L1 error: User or API Wallet 0x0123... does not exist."\
Must deposit before performing actions. User: 0x123...\
ここで、返されたアドレスは署名に使用しているウォレットの公開アドレスと一致しません。返されるアドレスは入力が異なると変わります。\
不正な署名は、なぜ不正なのかを示さないため、デバッグがより困難になります。これをデバッグするには、Python SDKを注意深く読み、実装が完全に一致していることを確認することを推奨します。それでも解決しない場合は、ロギングを追加して出力がどこで逸脱しているかを特定します。
よくあるエラー:\
1. 2つの署名スキームが存在することに気づいていない(Python SDKのメソッドは sign_l1_action と sign_user_signed_action)。\
2. msgpackではフィールドの順序が重要であることに気づいていない。\
3. 数値の末尾のゼロに関する問題。\
4. アドレスフィールドの大文字に関する問題。署名および送信前にアドレスは小文字化することを推奨します。フィールドがバイトとしてパースされ、ネットワーク全体で自動的に小文字化される場合があります。\
5. ローカルでrecover signerを呼び出した結果が正しいアドレスになるため、署名が正しいはずだと信じてしまう。recover signerのペイロードはアクションに基づいて構築されるため、必ずしも一致するとは限りません。