技术方案

frxETH

frxETH与Frax和FPI稳定币共享了很多代码,并实现ERC-2612标准,允许通过传递给permit()函数的ERC-712签名进行支出批准。

sfrxETH

sfrxETH是一个符合ERC-4626标准的金库。sfrxETH的获取方式是:首先批准sfrxETH合约作为frxETH的支出者,然后调用mint()(铸造特定数量的sfrxETH)或deposit()(铸造特定数量的frxETH)。授权步骤和铸造步骤可以与depositWithSignature()或mintWithSignature()结合,从而不需要两笔单独的交易。

当验证节点产生质押收益时,将铸造等量的frxETH并发送到sfrxETH合约。这意味着一旦奖励是同步的,一个人的sfrxETH可能会被兑换成比它所铸造的更多的frxETH。

为了防止恶意用户窃取验证节点收益分布到保险库,奖励分布随着时间周期进行平滑。无论何时在sfrxETH合约上调用syncRewards(),在合约内部余额上添加到合约的任何额外frxETH都将排队,并在循环窗口的剩余时间内线性分配。

sfrxETH也符合ERC-2612,允许使用签名许可。

frxETHMinter

frxETHMinter在通过submit()或receive()函数接收ETH时铸造frxETH。每当一个提交将minter余额推到32 ETH以上时,智能合约就会从堆栈中弹出验证节点的存款凭证,并将32 ETH的存款连同凭证一起传递到ETH 2.0存款合约中,自动启动一个新的验证节点。

根据需要,将新的凭证添加到堆栈中,以确保始终有验证节点准备接受存款。如果在任何时候合约用完验证节点,frxETH将继续正常生成(除非暂停),但在向堆栈添加更多验证节点之前不会生成新的验证节点。

提现凭据由堆栈上的所有验证节点共享,这意味着所有验证节点共享相同的提现地址。这个地址设置为Frax Multisig启动,以便一旦上线,取款可以安全处理。

此外,在添加验证节点时,需要在生成存款数据时传递提供的DepositDataRoot,这是为了提供冗余,以确保在存入ETH时不接受输入错误参数的验证节点。

该协议可以在提交ETH时设置要扣缴的资金比例。当收集32个ETH存款来启动验证节点时,这些资金不被计算在内,而是用于跨DeFi做市,确保frxETH的流动性市场。

Frax in-House Validators

(文档将会很快推出......)

最后更新于