Solana ZK Token Proof Program

Solana ZK Token Proof Program

  • [Pedersen commitments and ElGamal encryption](#Pedersen commitments and ElGamal encryption)
  • [Context Data](#Context Data)
  • [Proof Instructions](#Proof Instructions)
    • [ElGamal 加密证明​](#ElGamal 加密证明)
    • [Equality proofs​](#Equality proofs)

原生 Solana ZK 代币证明程序可验证许多零知识证明,这些证明专为与椭圆曲线 curve25519 上的 Pedersen 承诺和 ElGamal 加密配合使用而定制。该计划最初旨在验证 SPL Token 2022 计划所需的零知识证明。然而,证明程序中的零知识证明也可以在 SPL Token 2022 之外的更一般的环境中使用。

Program id: ZkTokenProof1111111111111111111111111111111

Pedersen commitments and ElGamal encryption

ZK Token 证明程序验证 Pedersen 承诺和 ElGamal 加密的零知识证明,这些是常见的加密原语,已纳入许多现有的加密协议中。

ElGamal 加密是公钥加密方案的流行实例。 ElGamal 密钥对由 ElGamal 公钥和 ElGamal 秘密密钥组成。可以使用公钥对消息进行加密以产生密文。然后可以使用相应的 ElGamal 密钥对密文进行解密。证明程序中使用的变体是椭圆曲线 curve25519 上的扭曲 ElGamal 加密。

Pedersen 承诺方案是加密承诺方案的流行实例。承诺方案允许用户将消息包装到承诺中,以便稍后揭示已提交的消息。与密文一样,生成的承诺不会泄露有关包含消息的任何信息。同时,该承诺具有约束力,因为用户无法更改承诺中包含的原始值。

有兴趣的读者可以参考以下资源,更深入地了解 Pedersen 承诺和(扭曲的)ElGamal 加密方案。
Notes on the twisted ElGamal encryption

A technical overview of the SPL Token 2022 confidential extension

Pretty Good Confidentiality research paper

ZK Token 证明程序包含有关各种零知识证明的证明验证指令,用于与 Pedersen 承诺和 ElGamal 加密方案配合使用。例如,VerifyRangeProofU64 指令验证零知识证明,证明 Pedersen 承诺包含无符号 64 位数字作为消息。 verifyPubkeyValidity 指令验证零知识证明,证明 ElGamal 公钥是正确形成的公钥。

Context Data

与每个 ZK Token 证明指令相关的证明数据在逻辑上分为两部分:

  1. 上下文组件包含零知识证明正在验证的数据。例如,VerifyRangeProofU64 指令数据的上下文组件是保存无符号 64 位数字的 Pedersen 承诺。 VerifyPubkeyValidity 指令数据的上下文组件是正确形成的 ElGamal 公钥。
  2. 证明组件包含证明上下文数据的不同属性的实际数学部分。

ZK Token 证明程序分两步处理一条证明指令:

  1. 验证与证明指令关联的零知识证明数据。
  2. 如果指令中指定,则程序将上下文数据存储在专用的上下文状态帐户中。

使用证明指令的最简单方法是在不生成上下文状态帐户的情况下执行它。在这种情况下,证明指令可以作为包含其他 Solana 程序指令的较大 Solana 交易的一部分包含在内。程序应该直接从证明指令数据访问上下文数据,并在程序逻辑中使用它。

或者,可以执行证明指令以产生上下文状态账户。在这种情况下,即使在包含证明指令的交易完成其执行之后,与证明指令相关联的上下文数据仍然存在。在需要 PDA 提供 ZK 证明或证明数据太大而无法放入单个交易的情况下,创建上下文状态帐户非常有用。

Proof Instructions

ZK Token 证明程序支持以下零知识证明列表。

ElGamal 加密证明​

VerifyPubkeyValidity:

  1. ElGamal 公钥有效性证明指令证明 ElGamal 公钥-key 是正确形成的公钥。
  2. 数学描述和安全性证明:[注释]
    VerifyZeroBalance:
  3. 零余额证明证明 ElGamal 密文加密数字零。
  4. 数学描述和安全性证明:[注释]

Equality proofs​

VerifyCiphertextCommitmentEquality:

  1. 密文-承诺相等性证明证明 ElGamal 密文和 Pedersen 承诺编码相同的消息。
  2. 数学描述和证明security: [Notes]
    VerifyCiphertextCiphertextEquality:
  3. 密文-密文相等性证明证明两个 ElGamal 密文加密同一消息。
  4. 数学描述和安全性证明:[Notes]

未完待续。。

相关推荐
Footprint_Analytics2 小时前
Footprint Analytics 助力 Sei 游戏生态增长
游戏·web3·区块链
Roun321 小时前
去中心化存储:Web3中的数据安全新标准
web3·去中心化·区块链
dingzd952 天前
Web3对社交媒体的影响:重新定义用户互动方式
web3·去中心化·区块链·媒体
web3探路者2 天前
加密货币行业与2024年美国大选
java·大数据·web3·区块链·团队开发·开源软件
DataFountain数据科学3 天前
2024 Web3.0创新大赛在沪正式启动
大数据·人工智能·web3·创新创业·数据竞赛
Blockchina3 天前
Solana链上的Pump狙击机器人与跟单机器人的工作原理及盈利模式
web3·区块链·智能合约·solana·sol机器人
小树苗1934 天前
Zypher Network:全栈式 Web3 游戏引擎,服务器抽象叙事的领导者
服务器·游戏引擎·web3
李启柱5 天前
Web应用程序安全与风险
运维·前端·网络·安全·web3
Sui_Network5 天前
Web3 Key Talking #4|Sui有何不同?及其发展路线图
大数据·前端·人工智能·web3·区块链
dingzd955 天前
Web3中的数据主权:区块链如何为用户赋能
web3·去中心化·区块链·隐私安全