让我们把注意力转向我们可以与 Mina 网络互动的其他方式--即参与共识,并通过生成 zk-SNARKs 帮助压缩数据。通过操作一个帮助确保网络安全的节点,你可以为你的努力获得 MINA。
Mina 网络是由 Proof-of-Stake 共识保证的。通过这种共识模式,你不需要像比特币挖矿那样拥有复杂的设备。只要我们的钱包里有 Mina,我们就可以选择自己入股,或者委托给另一个节点。让我们先来看看如何自己抵押 Mina。
警告:为了正确地与网络保持同步并参与共识,你的服务器必须运行某种形式的时钟同步协议。我们推荐使用NTP,它的设置相对容易,而且已经作为默认服务安装在许多流行的Linux发行版上。
我们可以通过发出以下命令来尝试用我们的 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 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 协议有效地将区块链压缩到恒定大小。我们称之为压缩,因为它将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做贡献部分。
通过在 ~/.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"
}
}
