加密库

Sui Move 提供了许多加密函数,允许各种不同的使用场景:

  • bls12381:BLS12-381 签名验证。可用于验证 bls12381 签名。BLS 签名的验证通常比 ECDSA 签名更高效。
  • ed25519:Ed25519 签名验证。这是 Sui 中的默认签名/密钥对方案。
  • ecdsa_k1 或 sep256k1:secp256k1 签名验证。这是比特币使用的签名方案。
  • ecdsa_r1 或 secp256r1:secp256r1 签名验证。这是以太坊和其他 EVM 链使用的签名方案。
  • blake2b (sui::hash 模块):Blake2b 哈希。这是一种快速且安全的哈希算法。
  • keccak256 (sui::hash 模块):Keccak256 哈希。这是以太坊使用的哈希算法。
  • groth16:Groth16 证明验证。用于零知识证明。

使用这些函数可以使开发者在 Sui 上构建安全且高效的应用程序,并能够与其他区块链(如以太坊)生成的签名或证明进行互操作。

public fun verify_ethereum_signature(
    signature: vector<u8>,
    public_key: vector<u8>,
    msg: vector<u8>,
    hash: u8,
): bool {
    sui::ecdsa_r1::secp256r1_verify(&signature, &public_key, &msg, hash)
}

在大多数涉及加密函数的流程中,开发者可以编写函数,接受一个签名消息或证明以及每种加密机制所需的其他参数。然后,Move 代码可以在链上进行验证,保证正确性和去中心化。 请注意,加密函数会消耗大量的 gas,因为它们在后台需要大量计算,这些计算在 Rust 中实现为本地函数。开发者应避免编写进行大量验证的函数。