Mina 文档 - 使用 Mina 之质押与Snarking

  • MinaFans
  • 更新于 2021-12-09 13:29
  • 阅读 2974

Mina 开发者文档

3.4 Staking & Snarking

让我们把注意力转向与Mina网络交互的其他方式——即参与共识,并通过生成zk- snark来帮助压缩数据。通过操作一个有助于保护网络安全的节点,您就可以获得mina。

参与共识

Mina网络由权益证明共识所保护。有了这种共识模型,您不需要像比特币挖矿那样拥有复杂的设备。只要将mina放在我们的钱包中,我们就可以选择自己质押,或者将它委托给另一个节点。让我们先来看看如何自己质押mina:

警告

要正确地保持与网络同步并参与共识,您的服务器运行某种形式的时钟同步协议是很重要的。我们建议使用NTP,它相对容易设置些,并且已经作为默认服务被安装在倍受喜爱的linux发行版上了。

质押mina

我们可以通过发出下面的命令来尝试用mina进行质押:

mina client set-staking -public-key $MINA_PUBLIC_KEY

或者,您可以使用-block-producer-pubkey标志重新启动守护进程:

mina daemon \

    -peer-list ~/peers.txt \

    -block-producer-pubkey $MINA_PUBLIC_KEY

我们总是可以通过使用mina client status命令来检查我们当前正在质押的账户:

mina client status

Mina daemon status
-----------------------------------

Global number of accounts:  372
Block height:        20
Max observed block length:  20
Local uptime:        1m48s
Ledger Merkle root:     ...
Protocol state hash:     ...
Staged Hash:         ...
Git SHA-1:          ...
Configuration directory:   ...
Peers:            5 (...)
User_commands sent:     0
SNARK worker:        None
SNARK work fee:       1
Sync status:         Synced
Block producers running:   1 (...)
Best tip consensus time:   epoch=0, slot=133
Next proposal:        None this epoch… checking at in 5.284h
Consensus time now:     epoch=0, slot=134
Consensus mechanism:     proof_of_stake
Consensus configuration:   ...
Addresses and ports:     ...
Libp2p PeerID:        ...

上述返回结果中的Block producers running字段的值,表示当前质押账户的数量。

警告

请记住,如果您要用一个账户的资产去独立地质押,您需要始终保持与网络的连接,以便成功地生成区块。如果您经常不在线,则最好把您的质押委托给别人。

如果您想将您的coinbase发送到其他账户,您可以在启动守护进程时使用-coinbase-receiver标志。您甚至可以将coinbase指向一个冷钱包!

委托mina

委托mina是直接进行质押的另一种选择,其好处是不必维护那些总是连接到网络的节点。

首先确认您已经解锁您的帐户:

mina account unlock -public-key $MINA_PUBLIC_KEY

然后运行这个命令来委托您的质押:

mina client delegate-stake \

  -receiver <DELEGATE-PUBLIC-KEY> \

  -sender $MINA_PUBLIC_KEY \

  -fee 0.1

该命令的字段:

receiver标志是您的质押委托接收者的公钥

sender是您要委托的帐户公钥

fee是记录您在区块链上的交易费用

您将注意到,这个命令看起来很像一个支付交易。这是因为质押委托也是一个交易!这就是为什么我们必须支付一小笔交易费用来改变这个设置。

如果您对下面的操作感兴趣,那把您的质押委托给别人可能会有些用处:

● 运行自己的质押节点,且该节点使用“冷钱包”的资金

● 委托到定期提供代币支付“质押池”

● 或者如果您的代币不足以负担全职管理一个区块生产者

注意

在您的新质押委托生效前有2-4周的等待期

在Mina网络中压缩数据

Mina协议的独特之处在于,它不需要节点像其他加密货币协议一样维护区块链的完整历史。通过递归地使用加密证明,我们将Mina协议有效地使区块链压缩到常数大小,并称之为压缩,因为它将兆兆字节级的数据减少到几千字节。

然而,这并不是传统意义上的数据编码或压缩——而是节点通过生成密码学证明来“压缩”网络中的数据。节点操作员在这个过程中扮演着至关重要的角色,它们将自己指定为“snark-worker”,从而为添加到区块中的交易生成zk- snark。

您可以使用以下命令启动一个snark-worker:

mina client set-snark-work-fee <FEE>

mina client set-snark-worker -address $MINA_PUBLIC_KEY

或者,您可以用以下标志来重新启动守护进程:

coda daemon \

  -peer-list ~/peers.txt \

  -run-snark-worker $MINA_PUBLIC_KEY \

  -snark-worker-fee <fee>

作为一个snark工作者,您可以分享压缩交易纳入每个区块后的一些区块奖励。区块生产者负责收集压缩的交易,然后再将它们包含到一个区块中,并且协议将激励它们去奖励snark工作者。

Snark工作者的计算强度相当大,因此如果需要限制它们的CPU使用,您可以使用-snark-worker-parallelism标志去指定Snark工作者使用的线程数。如果您试图在同一台机器上运行区块生产商和snark工作者,并且及时地在生成区块时遇到了问题,那么这可能会特别有用。

这大概涵盖了代码节点操作员的角色和职责。由于Mina是一个无许可的点对点网络,所有的东西都是由世界各地的节点以一种去中心化的方式管理和运行的。类似地,Mina项目也是分布式的以及无许可加入的。代码都是开源的,并且也有很多技术上的和非技术上的工作要做。要了解更多关于如何参与到Mina中,请查看对Mina的贡献部分。

使用守护程序.json来配置您的mina守护程序

通过创建一个~/.mina-config/daemon.json文件,您可以配置您的mina守护程序,而不需要在命令行上提供选项。这对于将mina作为一种服务运行,以及避免重复输入非常有用!

能够通过命令行传递给mina daemon 的大多数选项也可以在配置文件中作为选项提供。有关选项的更多文档,请参阅mina daemon -help。下面是一个使用所有可用配置参数的例子(在您的文件中,您只需要指定您想要更改的即可):

{
 "daemon": {
  "client-port": 1000,
  "external-port": 1001,
  "rest-port": 1002,
  "block-producer-key": "/path/to/privkey-file",
  "block-producer-password": "mypassword",
  "block-producer-pubkey": "<MY PUBLICKEY>",
  "coinbase-receiver": "<MY PUBLICKEY>",
  "log-block-creation": false,
  "log-received-blocks": false,
  "log-snark-work-gossip": false,
  "log-txn-pool-gossip": false,
  "peers": ["seed-one.o1test.net", "seed-two.o1test.net"],
  "run-snark-worker": "<MY PUBLICKEY>",
  "snark-worker-fee": 10,
  "snark-worker-parallelism": 1,
  "work-reassignment-wait": 420000,
  "work-selection": "seq"
 }
}
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
MinaFans
MinaFans
minafans.tech