Aleo网络中有三种节点类型,分别是Validator、Prover、Client。
Validator
Validator会加入到两个网络中,一个是共识网络,通常监听5000端口,另一个是P2P网络,通常监听4130端口。Validator之间会通过5000端口互相连接,形成一个共识网络,Client和Prover不被允许连接共识网络。
Validator节点的主要职责,是按照AleoBFT的规则产生新的块。
在Aleo P2P Network中,除了Client 和 Prover之间会通过P2P互相连接之外,Client和Prover也会连接一定数量的Validator节点,以获取共识网络中最新块以及状态信息。
Client
Client节点的主要职责,是同步来自共识网络产生的块并更新账本信息。用户可以通过Client的RPC来访问当前Aleo网络的最新状态信息,也可以通过RPC来将Transaction广播到网络中。当共识网络产生的新的块包含Transaction,则意味着Transaction被成功的执行了。
Prover
Prover节点的主要职责,是同步来自共识网络产生的CoinbasePuzzle,并运行CoinbasePuzzle的算法得到满足要求的Solution,然后通过P2P网络广播给共识网络,当共识网络产生的新的块中包含这个Solution,Solution对应的Prover会获得相应的CoinbaseReward奖励。
下面分别介绍这三种节点类型。
验证者节点在网络中的角色以及作用
Aleo Validators之间组成一个共识网络,并通过AleoBFT共识协议来决定区块的生成。Validator通过质押Aleo Credits来获得投票权(节点的投票权与质押的Aleo Credits的数量成正比),AleoBFT保证了:当一个新的区块被生成时,这个区块至少获得了超过2/3的投票,这意味着网络中诚实的Validators已经对这个区块达成一致意见,这有效保证了网络的安全,阻止了恶意节点的攻击。区块一旦形成,便认为是达到了最终确定性,区块以及包含的交易将不会被回滚。
验证者节点的经济激励
AleoBFT的机制保证了如果一个恶意的节点想要攻击网络,则至少需要获得超过1/3的投票权才能阻止新的区块的产生。这意味着,当网络中中质押的Aleo Credits越多时,共识网络会越安全。为了激励验证者节点质押自己的Aleo Credits,当每个区块被产生时,区块中会包含给验证者节点相应的BlockReward奖励。Validator节点获得BlockReward的奖励占比与它质押的Aleo Credits的占比相等。(TODO: Add Link)
如何成为验证者节点?
在Aleo主网上线时,将会拥有10个初始的Validator节点,随后用户可以通过质押至少10,000,000(一百万)的Aleo Credits。当质押的交易请求被共识网络接受之后,新的验证者节点可以立马参与到共识中,并获得BlockReward奖励,这得益于AleoBFT对Narwhal Bullshark所进行的改进。
由于网络中的验证者节点在运行的过程中,会通过相互的通信来获得彼此的状态信息,这意味着网络中的验证者节点越多,需要的网络通信的数量级就越大,通信复杂度为O(n)。通信复杂度的上升会导致区块产生的时间延长,在Aleo网络中限制了验证者节点的最大数量为200,以此来平衡去中心化与网络效率。
当我们只有少量的Aleo Credits时,虽然我们不能成为独立的验证者节点,但是我们可以通过委托质押的方式来获得BlockReward奖励。
什么是委托质押?
委托质押是指用户可以通过Program(Aleo的智能合约)将Aleo Credits质押在某个Validator节点上,质押的AleoCredits所得到的投票权也会委托给相应的Validator节点。用户可以获得线性比例的BlockReward奖励,Validator可以通过Program的设置收取一定比例的Fee。XXX(TODO:ADD Link)钱包、浏览器为用户提供了委托质押的功能,用户可以在他们提供的UI界面上看到各个Validator的Fee比例,方便地完成质押。
用户也可以随时取消质押,取消质押后的360个区块之后,用户可以将取消质押返还的Aleo Credits提取到余额中。
5.Transaction和Solution被验证者节点确认的过程

Transaction/Solution通过P2P网络或者RPC进入到验证者节点的的消息池
验证者节点将从消息池中选出一些Transactions/Solutions放入到BatchPropose(除了Transactions和Solutions,BatchPropose需要包含前一个轮次的2f + 1个BatchCertificate),并广播给其他的验证者节点。
其他的验证者节点在收到BatchPropose并确保它的合法性之后,会对该BatchPropose进行签名得到BatchSignature,并将BatchSignature返回给该验证者节点。
当验证者节点收到超过2f + 1的BatchSignature之后,将其聚合成为一个BatchCertificate,并广播给其他的验证者节点。
所有的节点都会执行并重复这个过程,产生的BatchCertificate构成一个DAG。当DAG被Commit后,新的区块产生,Transaction和Solution都会被包含在新的区块中。
Client的核心还是同步来自共识网络产生的块并更新账本信息,同时提供RPC访问区块中的网络状态,并且将Transaction广播到网络中。
Client的使用官方已经封装好了完整的SDK,提供了JavaScript和Python版本的SDK供不同的开发者,关于JavaScript的使用前面写过了详细的教程
Prover在网络中扮演的角色
Prover是Aleo网络中的一个重要组成部分,它不参与到Aleo的网络共识中。Prover运行特定的算法,通过求解CoinbasePuzzle得到满足ProofTarget的ProverSolution,然后广播,当ProverSolution被验证者节点确认并被打包到区块中时,Prover可以获得相应的CoinbaseReward奖励。
Prover的经济激励
从长期的角度来看,Prover能够获得的CoinbaseReward的奖励与它的算力在整个网络中的占比成正比。Prover的经济激励与Bitcoin中的PoW相类似,不同点在于Aleo网络中并不是赢家通吃的策略,ProverSolution只要满足ProofTarget就可以被网络接受,这样的方式使得Prover获得的奖励更加公平和稳定。值得注意的是,与Validator的BlockReward不同,CoinbaseReward会随着时间而递减,每年的产出会缩减10%,直到10年后,将不再有CoinbaseReward奖励。
用户可以通过浏览器来查看CoinbaseReward、BlockReward、以及PuzzleReward。
PuzzleReward = CoinbaseReward * 2 / 3
BlockReward = 23.8 + CoinbaseReward * 1 / 3
其中:
BlockReward的奖励由Validator根据质押占比进行分配
PuzzleReward的奖励由Prover提交的Solution的ProofTarget的占比进行分配
CoinbasePuzzle
Aleo网络中每360个区块组成一个Epoch,当新的Epoch产生时,CoinbasePuzzle也会发生相应的变化,如果Prover依然在计算旧的CoinbasePuzzle,则其计算出的ProverSolution不会再被网络接收。这意味着Prover需要监听共识网络的区块变化,当新的Epoch产生时,更新当前的CoinbasePuzzle信息。
除了要求ProverSolution是合法的之外,网络还要求ProverSolution满足大于等于ProofTarget。ProofTarget是用来衡量Prover的工作量的,类似于PoW,ProofTarget越大,Prover所需要进行的计算的工作就越大。Aleo网络会根据当前参与到网络中Prover的算力来调整ProofTarget,当参与到网络中的算力增加时,网络会增大ProofTarget来保证网络中不会出现过多的ProverSolution,防止网络拥堵和大量的ProverSolution没有办法呗打包的情况。
如何成为Prover节点
成为Prover节点不需要质押和授权,任何人都可以启动一个Prover节点。
Aleo 官方链接:
