如何在NEAR智能合约中高效验证ed25519签名?
NEAR智能合约Ed25519签名验证问题解答
1. 是否可在智能合约中验证Ed25519签名?
可以,但不推荐直接使用未做针对性优化的第三方库,官方提供了更高效的验证方案。
2. 使用ed25519-dalek crate验证签名Gas成本高的原因?
ed25519-dalek是通用的Ed25519加密实现,没有针对NEAR虚拟机的Gas模型做优化。其底层加密运算在NEAR WASM环境中执行时,会触发大量高Gas消耗的计算操作,导致整体验证成本过高。
3. NEAR是否提供验证Ed25519签名的官方方法?
是的,NEAR官方在near_sdk中提供了env::verify_ed25519_signature函数,专门用于Ed25519签名验证,和ecrecover的定位类似,且经过深度Gas优化,效率远高于第三方库。
示例代码:
use near_sdk::{env, near_bindgen}; #[near_bindgen] pub struct MyContract; #[near_bindgen] impl MyContract { pub fn validate_ed25519_signature(&self, msg: &[u8], sig: &[u8], pk: &[u8]) -> bool { env::verify_ed25519_signature(msg, sig, pk) } }
该函数由NEAR Runtime直接处理,避免了WASM层的冗余计算,能大幅降低Gas消耗。
内容的提问来源于stack exchange,提问作者SolDev
相关产品推荐
相关产品推荐

