Mina之账号初始化流程
Mina Protocol 是一条轻量级区块链,以其固定大小的区块链和零知识证明(zk-SNARKs)为核心特点。
这篇文章,将深入探讨 Mina 的账户初始化过程,让我们更好地理解和应用 Mina 网络
账户初始化的过程
在 Mina 网络中,账户并非默认存在,而是通过特定操作(如首次接收资金或部署 zkApp)进行初始化。
以下是账户初始化的详细流程。
1. 账户初始化的条件
Mina 中的账户在以下两种情况下会被初始化:
- 首次接收 Mina Token 或资金:当一个账户地址首次接收到 Mina Token 时,会触发账户的初始化。
- 部署 zkApp:将一个 zkApp 合约部署到账户地址。
在此之前,即使账户的公钥是合法的,但它不会出现在区块链状态中,也无法参与任何链上操作。
2. 初始化的具体流程
普通账户的初始化
当一个普通账户首次接收资金时:
-
交易广播
- 一个已初始化的账户向目标账户(未初始化账户)发送一笔交易,如 Mina Token 的转账。
-
账户状态创建
-
区块生成节点验证目标公钥的有效性后,会为该账户分配存储空间,初始化其状态。
-
初始状态包括:
- 公钥(Public Key)
- Nonce(初始值为 0)
- 余额(根据交易内容设置)
- 默认权限(允许基本操作)
-
-
链上存储
- 初始化后的账户信息会被写入链上的状态证明中,并通过 zk-SNARK 的递归证明更新。
zkApp 合约账户的初始化
当 zkApp 部署时:
-
创建账户地址
- zkApp 的账户地址由开发者提供的公钥(
zkAppPublicKey
)指定。
- zkApp 的账户地址由开发者提供的公钥(
-
zkApp 部署交易
-
部署 zkApp 的交易将以下内容存储在链上:
- zkApp 的验证逻辑(验证密钥)
- 合约的初始状态
-
-
账户标记为 zkApp 合约账户
- 系统会将该账户标记为 zkApp 类型,其状态和权限逻辑完全由合约代码控制。
-
链上存储
- zkApp 账户的状态通过 zk-SNARK 的递归证明存储在链上。
未初始化账户的特性
- 公钥是合法的 Mina 地址,但在链上未初始化的公钥无法接收资金,也无法参与链上交互。
- 初始化操作使账户成为链上状态的一部分
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。