Mina之账号初始化流程

  • Henry Wei
  • 更新于 2024-12-11 14:50
  • 阅读 213

MinaProtocol是一条轻量级区块链,以其固定大小的区块链和零知识证明(zk-SNARKs)为核心特点。这篇文章,将深入探讨Mina的账户初始化过程,让我们更好地理解和应用Mina网络账户初始化的过程在Mina网络中,账户并非默认存在,而是通过特定操作(如首次接收资金或部

Mina Protocol 是一条轻量级区块链,以其固定大小的区块链和零知识证明(zk-SNARKs)为核心特点。

这篇文章,将深入探讨 Mina 的账户初始化过程,让我们更好地理解和应用 Mina 网络

账户初始化的过程

在 Mina 网络中,账户并非默认存在,而是通过特定操作(如首次接收资金或部署 zkApp)进行初始化。

以下是账户初始化的详细流程。

1. 账户初始化的条件

Mina 中的账户在以下两种情况下会被初始化:

  1. 首次接收 Mina Token 或资金:当一个账户地址首次接收到 Mina Token 时,会触发账户的初始化。
  2. 部署 zkApp:将一个 zkApp 合约部署到账户地址。

在此之前,即使账户的公钥是合法的,但它不会出现在区块链状态中,也无法参与任何链上操作。

2. 初始化的具体流程

普通账户的初始化

当一个普通账户首次接收资金时:

  1. 交易广播

    • 一个已初始化的账户向目标账户(未初始化账户)发送一笔交易,如 Mina Token 的转账。
  2. 账户状态创建

    • 区块生成节点验证目标公钥的有效性后,会为该账户分配存储空间,初始化其状态。

    • 初始状态包括:

      • 公钥(Public Key)
      • Nonce(初始值为 0)
      • 余额(根据交易内容设置)
      • 默认权限(允许基本操作)
  3. 链上存储

    • 初始化后的账户信息会被写入链上的状态证明中,并通过 zk-SNARK 的递归证明更新。

zkApp 合约账户的初始化

当 zkApp 部署时:

  1. 创建账户地址

    • zkApp 的账户地址由开发者提供的公钥(zkAppPublicKey)指定。
  2. zkApp 部署交易

    • 部署 zkApp 的交易将以下内容存储在链上:

      • zkApp 的验证逻辑(验证密钥)
      • 合约的初始状态
  3. 账户标记为 zkApp 合约账户

    • 系统会将该账户标记为 zkApp 类型,其状态和权限逻辑完全由合约代码控制。
  4. 链上存储

    • zkApp 账户的状态通过 zk-SNARK 的递归证明存储在链上。

未初始化账户的特性

  • 公钥是合法的 Mina 地址,但在链上未初始化的公钥无法接收资金,也无法参与链上交互。
  • 初始化操作使账户成为链上状态的一部分
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Henry Wei
Henry Wei
Web3 探索者