Какой алгоритм Phantom Wallet (Solana) использует для подписи сообщений?
Я пытаюсь понять, что происходит под капотом, когда мы вызываем window.solana.signMessage.
1 ответ
Solana использует кривую ed25519 для своей криптографии, поэтому подпись транзакции:
64-байтовая подпись ed25519 R (32 байта) и S (32 байта). С требованием, чтобы R была упакованной точкой Эдвардса не малого порядка, а S была скаляром в диапазоне 0 <= S < L. Это требование не гарантирует гибкости сигнатуры.
Фактический код называется
tweetnacl
х
sign.detached
функция.
Дополнительная информация в официальной документации: https://docs.solana.com/terminology#signature
Код знака транзакции Solana: https://github.com/solana-labs/solana/blob/2a5764ef79cff391da080cc19617f171109c4158/web3.js/src/transaction.ts#L522
Основной код твитнакла: https://github.com/dchest/tweetnacl-js/blob/971d653d301cff2dd694e95a099cb42d9201e922/nacl.js#L1076 .