主页 > 安卓手机怎么安装imtoken > 以太坊2.0中的托管博弈与MPC实现(一)

以太坊2.0中的托管博弈与MPC实现(一)

安卓手机怎么安装imtoken 2023-05-07 06:03:10

Dankrad Feist(以太坊基金会)

谢翔(PlatON)

以太坊 2.0

以太坊是目前世界上使用最广泛的区块链系统之一。 经过大约五年的发展,现在已经进入了第四阶段——“Serenity”,也就是以太坊2.0,常简称为ETH 2.0。

以太坊 2.0 将是迄今为止最雄心勃勃的升级,旨在改进去中心化系统的各个方面。 一旦升级成功,以太坊网络目前的两大问题将得到解决,即可扩展性和可持续性。

01

可扩展性

以太坊网络目前的容量约为20 TPS,远远不能满足数百或数千个应用程序的使用需求。 以太坊社区针对可扩展性提出了很多解决方案,Eth 2.0 最终决定使用分片来实现 Layer 1 扩展。

简而言之,分片将系统划分为可管理的更小部分(分片链),每个分片独立并行处理。 最后,每个分片的结果将一起交联到信标链上。

举个简单的例子,假设一个区块包含三笔交易。 在当前的以太坊网络中,每个节点(例如节点 A、B、C)都必须验证所有交易。 如果算力最差的节点需要3秒来验证区块,则系统的吞吐量为1TPS。 显然,系统的可扩展性取决于单个节点的处理能力。

在分片中,交易可以分配到不同的分片链上,每个节点只需要验证其中一个分片。 交易也分为三个部分,每个部分在单独的分片中分别进行验证。 假设每笔交易都能在1秒内完成验证,那么整个系统的吞吐量就会变成3TPS! 另外,每个节点不需要存储链上所有的数据,它们只需要负责存储某些特定时段的特定分片数据。

以太坊最早是免费挖吗_以太坊私钥是多少位_eth是以太坊吗

当然以太坊私钥是多少位,在实际情况下,每个分片可以由多个验证者节点进行验证。 如果对此感兴趣,可以进一步参考Sharding FAQ()。 ETH 2.0 的目标是创建 1024 个分片(现阶段为 64 个),其吞吐量预计比当前网络提高 1000 倍。 再加上layer 2的扩展机制,其性能会进一步提升。

02

权益证明

现在的以太坊和比特币一样,依靠工作量证明(PoW)来保证系统的共识。 在 PoW 系统中,“矿工”通过消耗电力资源来解决密码学问题,并因解决问题而获得奖励。 安全性源于计算问题的难度。 由于“挖矿”的巨额利润,一些矿池已经中心化垄断,大大降低了系统的安全性。

不仅仅是中心化,挖矿/工作量证明还有很多其他问题。 例如,由于计算所消耗的电力资源的极大浪费,而能源本身的消耗是用来保证系统安全的,这在 PoW 范式中是很难解决的。 另外,系统只有奖励机制,不会对恶意行为进行惩罚。 所以实际上,安全开销比它需要的要高得多。

为了解决这些问题,以太坊 2.0 将转向权益证明 (PoS),一种称为 Casper 的协议。 在PoS系统中,“挖矿”过程被投票系统代替,验证者节点需要质押32个ETH参与系统投票。 为了达成共识,验证者节点轮流对下一个区块进行提议和投票。 正如以太坊权益证明常见问题 [1] 中所述:

这个区块链系统维护了一组验证者节点列表,任何持有其基础加密货币(以太坊中的以太币)的用户都可以通过发送特定类型的交易“锁定”来成为验证者节点。 新区块的产生和达成共识的过程是通过共识算法完成的,所有节点都可以参与共识过程。

信标链将成为以太坊 2.0 的核心,存储和维护所有验证者节点的注册,处理跨分片通信和最终一致性确认。 所有分片始终遵循信标链,持有32个ETH(固定价值)的用户即可成为验证者节点。 在一个周期的每个周期,系统从信标链中随机选择委员会分配给不同的分片。 验证者节点最终会分成几个不同的委员会,每个委员会由至少 128 个验证者节点组成。 该委员会负责在特定分片上生产区块。

另一方面,验证者节点也会因不良行为或不诚实行为而受到惩罚。 最严重的惩罚(Slashing)会销毁该节点所有质押的以太坊。 其他一些轻微的处罚包括:在规定的时间内没有正常运行,证明区块还没有最终确定等。最严厉的处罚是双重签名或签署错误的计算

数据可用性问题

数据可用性问题与欺诈证明高度相关,下面简要说明。 更多细节可以在这个 [2] 中找到

01

欺诈证明

在上面对区块链中节点的描述中(忽略分片),我们实际上指的是全节点。 全节点生成链的区块,下载每个节点中的所有数据,并验证所有交易和状态的有效性。 全节点需要机器配置大量的内存、强大的计算能力和非常高的带宽。 手机等受限设备很难满足这样的配置要求。

轻节点或轻客户端是全节点的低成本替代方案。 它们至少连接到一个完整节点,并且只下载区块头和所需的区块数据。 他们信任全节点来检查数据的有效性,并假设恶意全节点无法创建有效的分叉链。

欺诈证明是轻节点的一种机制,用于降低被非法链欺骗的安全风险。 每当诚实的全节点发现某种不一致状态时,全节点就会生成欺诈证明并向轻节点发出“警报”。 这种欺诈证明很小,并且在整个网络中迅速分布,并且它是某些链确实存在故障的可靠证据。 这样,轻节点就可以完全忽略这条非法链以太坊私钥是多少位,避免它可能造成的系统状态不一致。

例如全节点发现一笔交易t出错,则交易前后的状态分别为S_in和S_out。 然后全节点将这笔交易对应的欺诈证明构造为(S_in,t,S_out)和对应的默克尔根(Merkle root)。 证明本身非常小,易于传播和验证。 轻节点可以通过验证 Merkle 根和交易三元组来判断交易的非法性。

数据可用性证明是指如果某些恶意的全节点在区块头上签名但不在区块中发布某些数据怎么办? 特别是如果数据中包含无效交易(例如窃取转账金额并转入另一个账户的交易)怎么办? 在这种情况下,由于缺乏生成欺诈证明所需的数据,诚实的全节点无法生成欺诈证明。

02

分片中的数据可用性

数据可用性问题在分片中也尤为重要。 如前所述,ETH 2.0 中的验证者节点不会验证所有区块,也不会下载所有数据。 这是为了让分片机制充分利用并减轻各个验证节点的负担。 分片块将由委员会验证,只有承诺的值才会存储在信标链中。 从这个角度来看,除了验证者需要不断参与网络获取之外,其实在大多数分片上都可以算是轻节点。

Sharding中的数据可用性问题描述如下图所示:

以太坊最早是免费挖吗_eth是以太坊吗_以太坊私钥是多少位

整个过程可以用以下步骤来说明:

分片数据存储在Merkle结构中,得到Merkle根。 实际上,这是一个交联数据根,为简洁起见称为 Merkle 根;

提议者节点产生一个新块并签署Merkle根;

其他验证者节点投票并签署区块。 其中,BLS签名可以聚合为一个签名;

当签名数量超过阈值时,签名的 Merkle 根被添加到信标链中。

工作在其他分片上的分片无法知道完整的区块链数据,也不会去下载它,否则,这将直接抵消分片带来的优势。 本例中的数据可用性问题是指如何验证分片 1 中的数据确实可供任何想要下载或验证该数据的全节点使用。

监护游戏

Eth 2.0假设2/3的验证者节点是诚实的,并以这样的方式将验证者节点分配给相应的分片:如果2/3的验证者节点是诚实的,那么它永远不可用或不可用正确的块包含在交联中。 但是这里的“诚实”是什么意思呢? 可能有一些“诚实但懒惰”的验证节点:考虑到在大多数情况下没有人试图作弊,节点可能永远不需要验证任何东西,只需签署任何传入的块头即可。 或者,为了安全起见,您可以等待区块头积累一些签名,然后再继续签名。 您仍然可以通过这种方式获得奖励,但需要做的工作很少。

如果发生这种情况,攻击者可以依靠这些验证者节点来促进无效块的传播。 这会对系统的整体健康状况产生灾难性影响。 因此,我们希望尽可能避免使用“诚实但懒惰”的验证节点,这也正是采用 Custody Game 的目的。

仅靠 Custody Game 并不能完全解决数据可用性问题。 因此,需要额外的数据可用性检查。 但是,它确保至少分片 1 中签署该块的验证器节点具有数据。

粗略地说,在Custody Game中,每个验证者节点都必须计算另一个托管比特(custody bit)。 该托管位只能由持有“秘密”密钥(托管密钥)和数据的验证节点计算。 发布托管密钥后,任何人都可以使用数据来验证托管位。 如果发现无效的托管位,可以在链上对其提出质疑。 如果挑战者是正确的,他们将获得奖励,而托管位生成器将受到惩罚。

以太坊最早是免费挖吗_以太坊私钥是多少位_eth是以太坊吗

保管证明有以下要点:

托管密钥是根据验证节点密钥确定性计算的,以避免新密钥的系统复杂性。 托管密钥定期生成并在托管期结束时发布。 任何人都可以验证托管密钥的有效性。 它也被称为临时密钥,因为它只在一个托管期有效(在 Eth 2.0 中,托管期约为 9 天)。

在没有托管密钥和数据的情况下,托管位的生成方式与随机猜测的方式大致相同。

任何人都可以使用托管密钥和数据来验证托管位的有效性。

在 Eth 2.0 中,验证者节点的公钥将是 BLS 签名系统的公钥。 一旦质押的以太坊成为验证者节点,相应的运营商将生成一对公私钥。 对于每个托管期(9 天),验证节点能够生成一个临时托管密钥 ek。 临时密钥实际上是 BLS 对计数器(当前周期的计数)的签名。 由于 BLS 的签名过程是确定性的,所有的临时密钥都可以完全由公钥预先确定。 临时密钥不能由验证节点本身以外的任何人计算。

托管位是通过某种类型的混合函数计算的。 虽然该函数的具体形式仍在讨论中,但其规范倾向于使用 MPC 友好的结构。 有关详细信息,请参阅 eth2.0-specs[3]。 通常,托管位以 b=mix(ek,D) 的形式生成,其中 D 是块数据。

目前,混合函数的构造使用通用哈希函数(UHF)和勒让德伪随机函数(Legendre PRF)。 这些函数是键控函数并且是确定性的。 因此,给定一个键ek,将其表示为两个元素ek0、ek1。 然后验证人节点可以计算出托管比特b=Leg_PRF(ek0, UHF(ek0,ek1,D)),如下图流程所示:

以太坊私钥是多少位_以太坊最早是免费挖吗_eth是以太坊吗

简而言之,UHF 用于扩展输入数据空间(密码学中的常用技术),同时避免外包计算(只有密钥和数据所有者才能计算 UHF 函数)。 使用Legendre PRF主要有两个原因:第一,它在MPC的计算上非常高效; 其次,它可以保证更好的管理比特的随机性。 详细内容可以参考这篇文章[4],我们会在后续文章中进行更深入的讲解。

MPC友好性

Eth 2.0 的设计目标之一是使其对 MPC 友好。 这样做的原因有两个:首先,它通过允许操作节点将其验证器节点分布在多台计算机甚至不同的数据中心来提供额外的安全性,从而避免单点故障; 去信任的验证者节点池使资金较少的人能够参与 Eth 2.0 验证。 因此,Escrow Proofs 也应该是 MPC-friendly,这是使用 Legendre PRF 的主要原因。 因此,这可能会开辟一个全新的商业模式,并导致许多其他有趣的应用。 有关更多详细信息,请参见此处 [5]。

PlatON 发起了一个由以太坊基金会资助的项目,用于在 MPC 中实施和优化托管证明,目前代码已在 GitHub 上开源 [6]。 更多详情稍后公布,敬请持续关注!

文中链接:[1] [2] [3]#misc[4][5][6]

参考资料: [1] Beacon Chain Ethereum 2.0 详解先看。 [2] 以太坊 2.0:完整指南。 [3] 以太坊 2.0:完整指南。 缩放,第 1 部分。 [4] 以太坊 2.0:完整指南。 [4] 以太坊 2.0:完整指南。 完整指南。 扩展以太坊——第二部分:分片。 parttwo-sharding-902370ac3be[5] 权益证明常见问题解答。[6] 数据可用性检查。[7] 关于数据可用性和擦除编码的说明。 [8] 1 位聚合友好型托管债券。 [9] 使用勒让德符号作为监管证明的 PRF。 [10] 监管证明游戏设计[11] 监管证明游戏。@vbuterin/rkhCgQteN#The-proof-of-custody-game[12] 以太坊 2.0 Trustless Staking Pools。