서명
수동으로 서명을 생성하는 대신 기존 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 vs sign_user_signed_action).\
2. msgpack에서 필드 순서가 중요하다는 것을 인지하지 못함.\
3. 숫자의 후행 0 관련 문제.\
4. 주소 필드의 대문자 관련 문제. 서명 및 전송 전에 모든 주소를 소문자로 변환하는 것이 좋습니다. 때때로 필드가 바이트로 파싱되어 네트워크 전체에서 자동으로 소문자로 변환되기도 합니다.\
5. 로컬에서 recover signer를 호출했을 때 올바른 주소가 나온다고 해서 서명이 올바르다고 믿는 것. recover signer의 페이로드는 액션을 기반으로 구성되며 반드시 일치하는 것은 아닙니다.