以太坊33返99 95折以太坊30

今天给大家聊到了以太坊33返99,以及95折以太坊30相关的内容,在此希望可以让网友有所了解,最后记得收藏本站。

关于以太坊ETH合并的错误观点理清

随着合并的临近,越来越多的文章在向人们发出信号以太坊33返99:它确实快要临近了。这也带来了和 PoS 相关的一系列问题的讨论,人们在反复讨论着同样的话题和同样的误解。在上周 Kiln 测试网成功合并时,我已经在一定程度上看到了这一状况,今后我们还会看到更多类似的东西,所以我将一些常见的问题、观点归纳如下。

每当看到有人提出这些观点时,我就可以把这篇文章分享给以太坊33返99他,我希望大家也可以这样做。如果本文存在一些纰漏,还望斧正或提出补充建议。

什么是合并?

更多的信息可以在 ethmerge.com 上找到,所以本部分将简单介绍。

在合并之后,Ethereum 将采取 PoS(股权证明)而不是 PoW(工作量证明)共识。合并并非「ETH 2.0」、也不存在「ETH 2.0」,这已经是一个过时的术语。

如果是 ETH 持有者,则不需要做任何事情。合并后你仍将持有相同数量的 ETH,没有「ETH2 币」,也不需要进行任何迁移。一切都完全相同,只有共识机制发生了变化。

之所以被称为「合并」,是因为 ETH 将信标链(共识层)与现存的链(执行层)合并,并抛弃了执行层的 PoW 部分。

解释一下,「共识」只是一个花哨的词汇,其含义是指如何对交易进行排序并保证安全性。PoW 和 PoS 都是实现共识的不同手段。

PoW:"打乱区块顺序的成本太高了,因为按规则办事更划算。"

PoS:「扰乱区块顺序的成本太高了,因为如果我这样做就会失去我抵押的所有钱。」

由于只是共识机制的改变,PoS 本身并不会大幅降低 Gas 费用。

为什么合并?

降低安全成本,因为达成共识所需的能源更少。

对于 PoW 来说,收益需要为矿工使用的所有硬件和能源买单,否则将无人再去挖矿。这就需要大量发行并迅速卖出 Ethereum 以换取法币来支付账单。

而 PoS 则不然,PoS 只需要支付给投机者一些收益,让人们愿意存入资本,而不是直接投资到其他地方。除了一台普通的电脑和互联网连接之外,并不需要支付大额账单。所以收益率只需要反映所涉及的机会成本和风险。

更具可持续性。

一条链的安全性基本上与它的市值成正比。无论是 PoW(更高价值的 Token 奖励 = 更有理由按规则行事 = 更多的矿工 = 更难以破坏共识)或 PoS(更高价值的抵押 Token = 更有理由按规则行事以避免失去抵押品)都是如此。

新发行的 Token 本质上是将价值从所有持币人身上转移走,并重新分配给特定的人。在其他条件相同的情况下,将这些 Token 卖出可以从网络中提取价值。

这为未来的许多扩容解决方案打开了大门:数据分片、无状态、轻客户端等等。

通过分离执行层和共识层,这将有助于降低未来的代码复杂性。

安抚环境和 游戏 玩家当然是一个积极的副作用,但这并非是切换到 PoS 的主因。切换更多是由于外部因素导致的,Ethereum 作为一个协议并没有对整个网络太多的控制权,例如能源生产、GPU 供应链等等。

何时合并?

目前官方尚未公布日期。综合各方面的原因,开发者和社区对 6 月中旬合并持谨慎乐观的态度

目前仍在测试之中,在开发人员完全确信不会出现错误之前,不会进行合并。

我个人不把希望寄托在 6 月,但我认为至少也会在夏季完成,除非在测试过程中出了极大的问题。例如,出现一个需要几周时间来修复的关键错误,或者规范本身存在需要几个月时间来修复的漏洞。

难度炸弹被设置在 6 月,所以无论届时是否进行合并,都将进行一次硬分叉。

建议将 wenmerge. com 存入书签,以便快速查看测试网合并的最新预估。

流传已久的错误观点

观点:「你这个白痴!开发团队会像过去一样拖延,早在数年前他们就应允合并了,但至今仍未兑现。」

首先是一些说明:现在仍未宣布正式的合并日期,此前也从来宣布过。一个本就不存在的最后期限,何来的拖延之说呢?

类似于「将在 2018 年转换为 PoS」的说法来自于极端乐观的态度,并且低估了 PoS 设计的复杂性和从 PoW 到 PoS 的安全过渡的复杂性。此前开发者所做的工作相当于部分完成了 Casper FFG 规范(一个混合 PoW 和 PoS 的机制),但它最终被废止了。现状已经存在很多不同了:

经过多年的研究、对潜在的攻击方向进行分析,现在拥有一个完整的协议规范。

客户端已经实现,现在只差测试尚未进行。

合并时所有人都在工作,除了合并外没有其他工作。合并所需的必要步骤都已完成。这甚至不是「他们已经完成了像 EIP1559 这样复杂的内容,所以现在可以把更多的注意力集中在合并上」,而是:「他们把所有的注意力都集中在合并上」。不可能会出现这种状况:因为开发者需从事其他内容的工作而导致合并再次被推迟。在合并完成之前,他们没有其他事情可以做。

自 2020 年 12 月以来,PoS 实际上正在以信标链的形式运行。这意味着以太坊的 PoS 已经在生产环境中进行了一年多的测试(在一定程度上),目前有超过 1000 万 ETH 在运行。它只是还没有为执行层生产区块而已。

观点:「数以百万计的质押 ETH 将在解锁的那一刻崩盘。」

可以肯定的是,会有大量的锁仓者想要最终获利,尤其是那些在 32 个 ETH 仅价值 1 万美元时就锁定了 ETH 的人。但从一角度来看,还有很多需要考虑的问题。

合并并不会解锁任何 ETH。解锁将在合并后的第一次硬分叉中进行,可能是 6-8 个月后。这意味着数个月内都将没有 PoW 方式增发的 ETH(约 13000 ETH/天)被抛售,也没有 PoS 增发的 ETH 进入流通。

就像存 ETH 要排队一样,取 ETH 也要排队。假设发生大规模抛售事件,每个人都将处于排队之中,以每天 1125 名的速度依次解锁。所以不存在 "开闸放水 "的时刻。每个人解冻都需要一年多的时间,一年的时间里,每天有约 38000 个 ETH 进入流通领域(大约是日均量的 1%)。

合并后,验证者也将开始收到费用奖励,有预估表明收益率或将翻倍。现在有成千上万的人在排队等待进入质押。他们既然可以接受 5% 的 ETH 收益率,我不认为他们会在收益率变成 10% 的时候放弃存入。

到目前为止,抵押所涉及的最大风险是合并本身。一些灾难性的事情可能会导致合并出错,尽管存在这种风险、尽管 ETH 被锁定到一个未知的未来日期,但人们已经锁定他们的 ETH 一年多了。有多少人或机构还愿意袖手旁观、等待这种风险消失后再进入呢?

抵押者退出就意味着更少的验证者,这意味着对不退出的抵押者有更高的奖励。这也意味着更能激励其他之前未投资的人开始投资......

当然,这是加密世界,让加密归于加密。合并将带来兴奋和波动,可能会出现「sell the news」的跌幅,谁又知道呢?我不会假装预知未来,但在我看来,更多的 ETH 可能会流入、而不是流出锁仓。

观点:「如果 PoS 这么好,Ethereum 为什么不从一开始就这样做呢?」

PoW 很容易概念化并实现,PoS 则不然。当我们回到 2014 年,PoS 尚是一个仍在研究的理论概念,只有一些区块链实施了它的某种特定版本。

在考虑实施 PoS 之前,需要从研究角度解决一些基本问题。

没有放之四海而皆准的 PoS。每个 PoS 区块链都有自己的 PoS 规范,在各方面都有优缺点,所以这并非是「这个链做到了,为什么 Ethereum 不能做同样的事情」这样简单。

以一个 PoW 链作为开始,让任何人都可以在无需许可的条件下开采 crypto,这让 crypto 的分发机制比那些最初就是 PoS 的链要好得多。因为那些链从最初就是 PoS,这样必须决定如何分配初始 crypto,而不是无需许可的分发 Crypto。

Ethereum 存在预挖、预售,但经过多年的换手,现在已经稀释到一半左右,使其分布更接近 BTC 的分布。所以在 2022 年,当 ETH 作为流动性极强且易于获得的资产时,这并不是什么大问题。

观点:「这实际上只是在多年努力后最后一次坑害矿工的伎俩。」

从第一天起,PoS 就是最终的目标,每个人在挖矿时都知道它早晚有一天会结束。这里并没有什么不公正的事情发生。

经济因素胜过任何形式的矿工对链的忠诚度。你可以把一条链看作是一个企业,把矿工看作是雇员。

矿工/雇员已经为他们提供的服务(即安全共识)获得了区块奖励。工资由雇主支出,它来自于稀释现有持币者的价值。

矿工流向提供奖励最高的链,如果有另一个可由 GPU 开采的 crypto 可以提供更多的奖励,大多数矿工会立即抛弃 Ethereum。

类似地,如果验证者能够以更低的价格完成它所需要的服务,那么 Ethereum 将支付更少的费用。

这并不完全是排他性的。矿工也可以 ETH 的持有者,以及区块链的使用者。没有什么能阻止他们成为抵押者并获取抵押奖励。

观点:「如果挖矿没有花费现实世界的能源,则这枚 crypto 就不再具有内在价值。」

我不太相信这种说法。反复计算哈希值直到找到一个符合任意要求的哈希值,这并没有什么神奇之处。我的意思是,PoW 的区块链其工作是通过解密来完成的,但这并不意味着解密本身就能为世界带来价值。提高一个 Crypto 的挖矿难度并不会神奇地让每个人都变得更富有,它只会让挖矿的利润降低(当然,如果对这种 Crypto 的需求量也上升则不然)。

在我看来,一个币的价值最终来自于供给和需求,而需求来自于区块空间的价值。无论 ETH 是由矿工还是锁仓者生产的,人们都需要 ETH 来购买区块空间。当然,矿工越多,安全性/去中心化程度越高,这进一步增加了区块空间的价值主张,这是一个正反馈循环,但反馈循环也存在于 PoS 的 Ethereum 中,它也同样酷。

观点:「PoS 是中心化的不二法门。」

PoS 与 PoW 基本相同,但又存在差异。「更好」或「更坏」只取决于你的看法。在我看来,PoW 实际上只是 PoS 的额外步骤。

Ethereum 作为一个社区高度重视去中心化,任何潜在的中心化趋势都会被研究团队注意到并提出缓解的方法,即使是以其他重要的东西为代价,就比如可扩展性(保持低 Gas 限制以便更多的节点可以参与其中,即使这会导致拥堵和高费用)。

尽管目前存在一些缺点,但去中心化是一个缓慢的过程,我们还没有到那一步。目前有许多中心化的拐杖从长远来看是需要消失的。我个人认为,想出一大堆东西来解决某个问题比「放弃并说因为某问题而不能做」要吸引人得多。

Ethereum 的 PoS 有一些有趣的设计经常被忽视。单个验证器瘫痪、捣乱或直接攻击网络都不会受到很严重的惩罚。而一千个验证器同时这样做则会受到更严重的惩罚。

这意味着,如果你是一个拥有数千个验证者的大型企业,为了你自己的利益,应该把它们去中心化,避免使用云主机、使用不同的客户端等等。当然,资本仍然是集中的,但至少故障点是去中心化的,这对网络的整体 健康 是有利的。

与依靠中心化摊销成本的大型矿业相比,通过能源更容易发现 PoW 挖矿并被当局关停。在全世界范围内移动采矿设备是很难的,但锁仓则不需要,不需要消费级设备以外的任何额外硬件。

观点:「PoS 实际上就是『越有钱赚得越多』。」

是的。不幸的是,我们生活在一个财富高度不平等的世界。blockchain 并不能解决这个问题。

可这也是 PoW 的真实情况。谁有钱谁就可以买更多的矿机、赚更多的钱。在矿业,投资回报率也在随着规模经济的发展而变得更好。集中式的采矿作业可以获得更好的硬件折扣、并搬到电力便宜的地方。独立小矿工在现实中根本无法与之竞争。有了 PoS,每个人都能按比例获得相同的收益,无论他们的股份是 10 美元还是 1000 万美元。

它可能是中心化,但那些大的采矿业务没有理由攻击网络并削弱它,因为他们在基础设施上投入了数百万美元。所以……或许你对大型中心化主体的存在没有意见,只是对他们在网络中存在巨大利益而不满?

观点:「存款被动产生利息,这是在无中生有地印钱?这简直就是中央银行和法币的翻版!」

验证者仍在进行着「工作」:创建区块和验证其他区块。只是这些工作完全由 blockchain 达成共识所需的实际有用的工作组成,而不是一遍又一遍地计算哈希值。

这并不是真正的 "凭空印出的免费的钱",这些资金仍然有成本,它们只是比能源账单更抽象、更不直观而已。他主要存在于下面几个成本:

机会成本:如果另一项投资能给你带来更好的收益,为什么还要赌?

流动性差:从你存款的那一刻起资金就被锁定了。你需要排队等待你的验证器激活,而当你取款时,又要排队才能取回。

固有风险:这仍然是一个相当新事物,可能会出现问题:一个关键错误、网络被攻击、你的抵押物受损等等。

波动性:这仍然是一种不稳定的资产,如果你以本国法币计价,那么使用一种可能一夜之间下跌 30% 的资产来获取 5% 的收益率并不是那么好。

维护:验证者需要维护验证器、更新软件等,以此来确保 100% 的正常运行时间。

这就是它有趣的地方:越多的锁仓者、每人的奖励就越低。这也意味着所有成本都将交由市场本身定价。如果质押收益率太低,那么奖励就不能证明成本的合理性,人们就会撤出并投资于其他地方,这一举动会使收益率回升。同样,如果收益率太高,也会吸引更多的资本使收益回落。

就通货膨胀而言。假设市场认为 5% 是理想的收益率,其中 3% 来自增发。这样算下来,每年大约有 3000 万个 ETH 被抵押,将发行 90 万个新 ETH。在总供应量为 1.2 亿 ETH 的情况下,通货膨胀率为 0.75%。只要 Gas 费用高于 23gwei,EIP1559 燃烧的 ETH 就将超过这一数量。我要强调的是,Ethereum 很快就会成为一种带有收益的通缩资产。

「ETH 一直没有供应上限,且他们一直在改变货币政策。」

多年来,Ethereum 的目标一直是「确保网络安全的最低可行发行量」,将网络安全置于控制供应上限之上。对货币政策的任何更新都没有增加供应通货膨胀。从第一天起低通胀率就一直是目标。

一旦 EIP1559 的燃烧率与发行率相匹配,就会有一个作为有效供应上限的平衡点——再次由市场力量决定对 Ethereum 区块空间的估值。

并不存在一个 "Ethereum 中央银行 "任意调整利率并向亲信印钞。市场本身决定了有多少通货膨胀/通货紧缩,并不存在一个可以像中央银行控制法币通货膨胀率那样的实体控制 Ethereum。

观点:「巨鲸有足够的钱来接管和改变 游戏 规则,并打击诚实的锁仓者。」

不,Ethereum 没有任何形式的链上治理。

协议更新是社区的努力(Layer 0),你不需要锁仓 ETH 来提出不良的提案、参与协议更新。

这一过程与 PoW 完全相同。即使你拥有 99% 的算力,你也不能在没有私钥的情况下进行无效的交易、窃取他人资产、改变协议规则,或者除了重组区块之外真的做些什么。1% 的诚实节点将拒绝任何不遵守规则的区块,你将在一个无效的/无用的链上挖矿。现在把「哈希算力/挖矿」换成「质押金额/锁仓」,PoS 也是如此。不过不同的是,被发现重组区块的人将被销毁他们的整个权益,而链不能完全摧毁采矿机。

简单地说,这涉及到大量的 ETH。在合并之前高达 1000 万计数的 ETH,约合 300 亿美元。锁仓的 ETH 数额和 ETH 的价值预计都会上升,所以攻击变得越来越不可能,因为做一次攻击所涉及的经济成本太高了。而且如果攻击来自外部行为者,他能够获得这么多 ETH 就是很荒谬的,你在哪里能买到 1000 万 ETH 来拥有 51% 的股份?

观点:「32 个 ETH 太多了,普通人没有这么多钱。」

我同意这是一个很大的问题。之所以有这么高的数字,是因为它必须落在一个技术的平衡点上:它必须低到有充足的验证者来保证链的安全,但又要高到避免验证者太多以使链的开销膨胀。

从技术角度来看,有一大问题涉及到 32ETH,当时 32ETH 价值约 7000 美元。2017 年的早期曾有人甚至建议最低超过 1000ETH。

值得庆幸的是,就像矿池的存在一样,也有锁仓池,允许用户以小金额参与锁仓。这归功于像 RocketPool、Secret Shared Validators 这些使用智能合约的无许可、去中心化的非托管协议。而且由于上面提到的二次惩罚,我相信从长远来看,去中心化的锁仓操作会比中心化的要好。像 Rocket Pool 这样的协议最好被看作是基础锁仓的高级抽象,而不是 "只是一个锁仓池"。

观点:「PoS 还没有被证明,而我们知道 PoW 是有效的。」

这实际上是完全公正,显然我们无法真正的反驳这一点,只有时间会证明。只是我认为在 Ethereum 正在转向 PoS 的背景下,这是无关的。如果你不相信它,就不要参与/投资它。我个人相信一个长期可持续的 PoS Ethereum,但即使如此,我也乐于见到 bitcoin 继续沿用它的 PoW。

这都是我们一生中伟大的 crypto 实验的一部分。PoS Ethereum 要么只是一阵风,失败直至默默无闻,要么将成功地创造出能够超越人类的怪物般的强大网络。

我在 bitcoin 和 Ethereum 中看到,为了实现这一目标,优先考虑去中心化是关键。尽管两者的理念大不相同,但我很高兴能同时拥有这两种东西,以真正看到长期的价值。

以太坊挖矿--谈谈挖矿圈子里的那些坑(纯干货)

1.预期收益

    纵观现在大量的以太坊矿池,绝大多数的挖矿模式都是PPS/PPS+. 这种每日相对稳定的收益模式也被大多数的矿工们所接受.相对应的,为了宣传自己,矿池们都会在首页上展示他们的每日预期收益. 不要被这些数据迷惑了哦.那些看起来预期收益最高的矿池,实际到手的收益却可能大打折扣. 因为这种所谓的预期收益很可能只是空头支票,不能兑现的. 实际上,很多矿池因为相互之间的竞争关系,在收益上展示的预期收益数据都会稍稍做一点假,以此来吸引更多的用户. 所以,一定不要只是看到所谓的预期收益就信以为真,真正到手的才是最可靠的.

2.矿池抽成

    前面说到当下绝大多数的以太坊矿池都是用的PPS/PPS+模式,这种模式的背后往往隐藏着矿池额外的抽成. 因为每天挖到以太坊数量的未知性,而矿池们每天需要给矿工们支付相对固定的收益,这样就存在入不敷出的风险性,为了保障矿池自己的利益,矿池就会对矿工们额外抽成来弥补自己的损失. 所以,不要被矿池1%,甚至是0%的收益抽成所迷惑,理所当然的觉得矿池抽成低,自己的收益就会高. 依然是那句话,真正到手的收益才是最可靠的.

3.算力

    我们的收益与算力息息相关.这个算力不是指你在挖矿软件上看到那个算力,那个算力只能算作是你的本地算力.虽然最后的收益与之有一定的关系,但本地算力更多的是作为一个参考值. 与我们的收益挂钩的是在矿池中显示的算力,这个算力决定了我们的收益. 矿池中显示的算力本质上是被矿池方所承认的算力,就好像每天的工作量一样,矿池方认为你今天为他干了多少活,就会给你与之相对应的’工资’.因为矿池中显示的算力是掌握在矿池的手中,有些时候就会出现克扣工作量的事情,虽然可能很少量,不容易被矿工们发现,所以一定要注意哦.这种情况,就好像你觉得干了200份的活,矿池老板却认为你只干了150份,只支付了150份报酬.这个时候本地算力的作用就体现出来了,本地算力能让你对今天的工作量有个大概估值,当矿池克扣你算力的时候,你也能有所警觉.

4.抽成返水

    我们都知道Claymore会有1%的软件抽成,自然相对应的会有很多破解抽成的软件,这其中有一些自称是返还0.5%抽成,甚至1%全抽成返还的软件.当使用这些所谓的抽成返还的软件时就要擦亮眼睛注意了,警惕这些软件是否做到了抽成返还.

929754407  --自发组织的一个显卡挖矿交流群,欢迎大家加群讨论更多的相关问题哦.

此外,给大家推荐一个比较好用的挖矿软件,算是我目前用过的比较良心的一款的,不多说附上链接:  .

【深度知识】以太坊数据序列化RLP编码/解码原理

RLP(Recursive Length Prefix),中文翻译过来叫递归长度前缀编码,它是以太坊序列化所采用的编码方式。RLP主要用于以太坊中数据的网络传输和持久化存储。

对象序列化方法有很多种,常见的像JSON编码,但是JSON有个明显的缺点:编码结果比较大。例如有如下的结构:

变量s序列化的结果是{"name":"icattlecoder","sex":"male"},字符串长度35,实际有效数据是icattlecoder 和male,共计16个字节,我们可以看到JSON的序列化时引入了太多的冗余信息。假设以太坊采用JSON来序列化,那么本来50GB的区块链可能现在就要100GB,当然实际没这么简单。

所以,以太坊需要设计一种结果更小的编码方法。

RLP编码的定义只处理两类数据:一类是字符串(例如字节数组),一类是列表。字符串指的是一串二进制数据,列表是一个嵌套递归的结构,里面可以包含字符串和列表,例如["cat",["puppy","cow"],"horse",[[]],"pig",[""],"sheep"]就是一个复杂的列表。其他类型的数据需要转成以上的两类,转换的规则不是RLP编码定义的,可以根据自己的规则转换,例如struct可以转成列表,int可以转成二进制(属于字符串一类),以太坊中整数都以大端形式存储。

从RLP编码的名字可以看出它的特点:一个是递归,被编码的数据是递归的结构,编码算法也是递归进行处理的;二是长度前缀,也就是RLP编码都带有一个前缀,这个前缀是跟被编码数据的长度相关的,从下面的编码规则中可以看出这一点。

对于值在[0, 127]之间的单个字节,其编码是其本身。

例1:a的编码是97。

如果byte数组长度l = 55,编码的结果是数组本身,再加上128+l作为前缀。

例2:空字符串编码是128,即128 = 128 + 0。

例3:abc编码结果是131 97 98 99,其中131=128+len("abc"),97 98 99依次是a b c。

如果数组长度大于55, 编码结果第一个是183加数组长度的编码的长度,然后是数组长度的本身的编码,最后是byte数组的编码。

请把上面的规则多读几篇,特别是数组长度的编码的长度。

例4:编码下面这段字符串:

The length of this sentence is more than 55 bytes, I know it because I pre-designed it

这段字符串共86个字节,而86的编码只需要一个字节,那就是它自己,因此,编码的结果如下:

184 86 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116

其中前三个字节的计算方式如下:

184 = 183 + 1,因为数组长度86编码后仅占用一个字节。

86即数组长度86

84是T的编码

例5:编码一个重复1024次"a"的字符串,其结果为:185 4 0 97 97 97 97 97 97 ...。

1024按 big endian编码为0 0 4 0,省略掉前面的零,长度为2,因此185 = 183 + 2。

规则1~3定义了byte数组的编码方案,下面介绍列表的编码规则。在此之前,我们先定义列表长度是指子列表编码后的长度之和。

如果列表长度小于55,编码结果第一位是192加列表长度的编码的长度,然后依次连接各子列表的编码。

注意规则4本身是递归定义的。

例6:["abc", "def"]的编码结果是200 131 97 98 99 131 100 101 102。

其中abc的编码为131 97 98 99,def的编码为131 100 101 102。两个子字符串的编码后总长度是8,因此编码结果第一位计算得出:192 + 8 = 200。

如果列表长度超过55,编码结果第一位是247加列表长度的编码长度,然后是列表长度本身的编码,最后依次连接各子列表的编码。

规则5本身也是递归定义的,和规则3相似。

例7:

["The length of this sentence is more than 55 bytes, ", "I know it because I pre-designed it"]

的编码结果是:

248 88 179 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 163 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116

其中前两个字节的计算方式如下:

248 = 247 +1

88 = 86 + 2,在规则3的示例中,长度为86,而在此例中,由于有两个子字符串,每个子字符串本身的长度的编码各占1字节,因此总共占2字节。

第3个字节179依据规则2得出179 = 128 + 51

第55个字节163同样依据规则2得出163 = 128 + 35

例8:最后我们再来看个稍复杂点的例子以加深理解递归长度前缀,

["abc",["The length of this sentence is more than 55 bytes, ", "I know it because I pre-designed it"]]

编码结果是:

248 94 131 97 98 99 248 88 179 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 163 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116

列表第一项字符串abc根据规则2,编码结果为131 97 98 99,长度为4。

列表第二项也是一个列表项:

["The length of this sentence is more than 55 bytes, ", "I know it because I pre-designed it"]

根据规则5,结果为

248 88 179 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 163 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116

长度为90,因此,整个列表的编码结果第二位是90 + 4 = 94, 占用1个字节,第一位247 + 1 = 248

以上5条就是RPL的全部编码规则。

各语言在具体实现RLP编码时,首先需要将对像映射成byte数组或列表两种形式。以go语言编码struct为例,会将其映射为列表,例如Student这个对象处理成列表["icattlecoder","male"]

如果编码map类型,可以采用以下列表形式:

[["",""],["",""],["",""]]

解码时,首先根据编码结果第一个字节f的大小,执行以下的规则判断:

1. 如果f∈ [0,128), 那么它是一个字节本身。

2. 如果f∈[128,184),那么它是一个长度不超过55的byte数组,数组的长度为 l=f-128

3. 如果f∈[184,192),那么它是一个长度超过55的数组,长度本身的编码长度ll=f-183,然后从第二个字节开始读取长度为ll的bytes,按照BigEndian编码成整数l,l即为数组的长度。

4. 如果f∈(192,247],那么它是一个编码后总长度不超过55的列表,列表长度为l=f-192。递归使用规则1~4进行解码。

5. 如果f∈(247,256],那么它是编码后长度大于55的列表,其长度本身的编码长度ll=f-247,然后从第二个字节读取长度为ll的bytes,按BigEndian编码成整数l,l即为子列表长度。然后递归根据解码规则进行解码。

以上解释了什么叫递归长度前缀编码,这个名字本身很好的解释了编码规则。

(1) 以太坊源码学习—RLP编码( )

(2)简单分析RLP编码原理

( )

我男盆友让我帮他操作以太坊是否骗子呢?

你这个男朋友是不是网上认识的,如果是网上认识的那99%就是骗子啦,正常人绝对不会让你去操作一些自己业务,有什么事情他连自己操作业务的时间都没有啊,你可以看着,到时候肯定会说赚了很多钱,到时候肯定也让你出钱,这个肯定是骗子了。

关于以太坊33返99和95折以太坊30的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

评论