Uniswap V2提供了简洁的x-y-k自动做市商实现。代码主要由两部分组成:Core实现某个交易的Pair的管理逻辑,Periphery实现路由,即一个或者多个交易对的兑换逻辑。理解增加/抽取流动性以及swap操作,需要结合两部分一起看。核心是在Pair中管理了reserve和total supply。所有提供的流动性都以流动性Token来衡量,所有Token的总和就是total supply。
Zkopru利用零知识证明在以太坊上实现layer2隐私交易的新方案
Filecoin的Gas模型,引入了BaseFee,用来调节交易的拥堵情况。BaseFee,在区块拥堵或者区块交易不够的情况下,都会按照12.5%进行相应的调节。每笔交易的费用计算公式:(Gas Premium + Base Fee) * Gas Limit。其中BaseFee的部分会被燃烧掉,Gas Premium作为矿工的手续费。特别注意的是,GasLimit不要随意设置,多余的Gas Limit会被燃烧。
Filecoin的存储单元称为扇区(Sector)。对传统硬盘结构理解的小伙伴,对这个术语应该比较亲切,传统硬盘的最小存储单元就叫Sector。为了证明Sector的存储,Filecoin进行了一系列的处理,传说中的P1/P2/C1/C2。在处理过程中,一个Sector的计算会生成若干文件,最终会生成replica。相关文件是如何组织的?Cache都是由哪些文件组成,分别是多大?本文就从存储的角度看看这些过程和逻辑。
利用Groth16计算证明之前,需要计算出H。目前,普遍采用的是FFT算法。
Sector计算的部分分为Precommit1和Precommit2两部分。两部分合在一起,称为SDR算法。
Sector的状态管理基于状态机。通用状态机的实现是通过go-statemachine实现。状态的存储通过go-statestore实现。在这些模块的基础上,storage-fsm实现了Sector的状态定义以及状态处理函数。
Lotus的PoSt包括两部分:winningPoSt和windowPoSt。winningPoSt是在获取出块权时,需要提供的PoSt证明。从所有有效的Sector中,抽取一个Sector,并抽查该Sector上的66个叶子。
Snark as a Service是个比较有意思的服务,在Filecoin生态中专门提供零知识证明的计算服务。在Sector大小为32G的情况下,证明需要的数据量在8M左右。
PoREP的电路验证了Sector的计算过程,从Labeling,Encoding到Column Hash。注意的是,在Sector大小为32G的情况下,电路包括144个挑战节点的计算。电路相应的公开输入除了comm_d和comm_r外,还有各个Merkle树的路径信息。