Mina--质押&Snarking

让我们把注意力转向我们可以与 Mina 网络互动的其他方式--即参与共识,并通过生成 zk-SNARKs 帮助压缩数据。通过操作一个帮助确保网络安全的节点,你可以为你的努力获得 MINA。

加入共识

Mina 网络是由 Proof-of-Stake 共识保证的。通过这种共识模式,你不需要像比特币挖矿那样拥有复杂的设备。只要我们的钱包里有 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 协议有效地将区块链压缩到恒定大小。我们称之为压缩,因为它将TB级的数据减少到几千字节。

然而,这并不是传统意义上的数据编码或压缩--而是节点通过生成加密证明在网络中 "压缩 "数据。节点运营商在这个过程中发挥了关键作用,他们将自己指定为 "snark-workers",为已经添加到区块的交易生成zk-SNARKs。

你可以用这些命令启动一个snark-worker:

mina client set-snark-work-fee <FEE>
mina client set-snark-worker --address $MINA_PUBLIC_KEY

另外,你也可以用这些标志重启守护进程。

mina 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的信息,请查看为Mina做贡献部分

使用daemon.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"
  }
}