以太坊交易希哈值 以太坊交易价格

本篇文章主要给网友们分享以太坊交易希哈值的知识,其中更加会对以太坊交易价格进行更多的解释,如果能碰巧解决你现在面临的问题,记得关注本站!

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

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

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

什么是合并?

更多的信息可以在 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 中看到,为了实现这一目标,优先考虑去中心化是关键。尽管两者的理念大不相同,但我很高兴能同时拥有这两种东西,以真正看到长期的价值。

ETH转账的2种方式的对比

web3j支持使用以太坊钱包文件(推荐)和以太网客户端管理命令来发起一笔交易。当你创建了一个拥有以太币的账户后,你可以通过以下两种交易机制,和以太坊网络(私网/公网)交易:

这里主要讲一下 线下签名交易(Offline transaction signing) 。线下签名交易允许你使用web3j提供的钱包账户发起交易,你完全控制自己的私钥,交易发送到网络上的其它节点并广播。

线下签名交易使用 RawTransaction 对象来完成,一共有如下几步:

1、通过私钥或密码+钱包文件(keystore)来加载转账凭证Credentials

2、获取发起转账账户的nonce 值,也就是第几笔交易

3、创建 RawTransaction交易 对象

4、签名 RawTransaction 对象,也就是对交易做签名

5、发送交易( RawTransaction 对象)给节点处理。

6、获取交易哈希值TxHash

以太坊实战-再谈nonce使用陷阱:

此外,还有一种简单的转账方式

这种方式,不需要自己管理nonce。

这2种方式都是离线交易,先组装交易,然后发送到链上。

参考:

什么是ZK-Rollup(零知识汇总)?

ZK-Rollup(零知识汇总)基于zero-knowledge proof(零知识证明),在发往主链的交易包里包含了一个对应的零知识证明,主链上的rollup(汇总)智能合约只需验证这个零知识证明。

这个零知识证明不会透露任何交易细节,但能通过与智能合约不断交互,证明上链的所有数据的有效性和真实性。

优点:

l 高度的去中心化

l 隐私性好:零知识证明不会透露任何交易细节

l 上链效率高:一次性提交多笔操作的结果,节约时间和gas fee

l 验证效率高:无需等待期,快速完成资产取出动作

l 安全性极高:zk技术保证了提交给主链的数据真实有效,同时主链可随时还原侧链发生的交易细节(即拥有主链的数据可用性),因此拥有以太坊级别的安全性

缺点:

l 技术开发难度大

l 难兼容不同智能合约

l 需要大量运算

代表项目:

l 路印:成熟的zk技术运用,获得4500万美元私募,当前市值超8亿美元

l ZKSync:旨在为以太坊带来 Visa 级别、每秒数千笔交易的吞吐量

链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。

以太坊技术系列-以太坊数据结构

本篇文章和大家介绍一下以太坊的数据结构,上篇文章我们提到,以太坊为了实现智能合约这一功能,使用了基于账户的模型。我们来看看以太坊中数据结构。

既然是基于账户的模型,我们需要通过账户地址找到账户的状态。就像通过银行卡号可以找到你在银行中的各种信息一样。最简单的想法当然是一个简单的哈希表 key是账户地址 value是账户状态。但这里有个问题解决不了。

轻节点如何校验账户合法性?

上篇我们说过,区块链中有2类节点,全节点和轻节点,轻节点只会存储block header,所以轻节点如何才能校验账号是否合法呢?

这个思路和我们平时用的md5校验一致,我们会对区块内的信息进行hash运算从而得出区块内信息唯一确定的值,区块链所有节点中这个值都是相同的。

在这个过程中我们用到了一种数据结构Merkle Tree(哈希树),我们先看下Merkle Tree(哈希树)的示意图。

上篇文章说到区块链中的链表(哈希链)和我们平时常见链表不同的是将指针从地址改为了hash指,这里也一样,哈希树和二叉树的区别有2个

1.将地址改为了哈希值

2.只有叶子节点存储数据

回到之前的问题轻节点是如何校验1个账户或交易是否是在链上的呢?

整个流程如上图所示

1.轻节点需要判断1个账号是否合法

2.轻节点由于只存储block header,所以拿到1个账号的时候会向全节点发出请求

3.全节点存储了所有账户状态,将账户路径中的需要计算用到的hash值返回给轻节点

4.轻节点本地进行计算根hash值,如果计算结果和自己存储一致则账户合法,不一致则不合法。

那以太坊中的账户信息的数据结构就是这样吗?

直接用这样的数据结构来存储账户信息会有2个问题

查找困难

生成hash值不确定

第1个问题应该比较容易发现,在这个树中寻找1个账号需要的复杂度是O(n),因为没有任何顺序。

第2个问题其实也是因为无序导致的,无序的组合每个节点针对同一批账户生成的hash值不一致,这就导致无法达成共识。

既然2个问题都和顺序有关,那我们类似二叉排序树一样,使用哈希排序树是不是就可以解决问题了呢?

使用排序树后会带来另外1个问题

插入困难

因为要维持树是有序的,很可能带来树结构的很大变动。

以太坊中使用了另外一种数据结构字典树。和哈希树不同,字典树应该是很多地方都有使用。我们简单来看下字典树的结构。

字典树能够较好地解决哈希树的2个缺点1.查找困难 2.生成的hash值不确定以及排序二叉树的1个缺点 插入困难。

但字典树我们可以看到可能树的深度可能由于部分元素导致整棵树深度非常深。

这时我们可以进一步优化,将相同路径进行压缩。这就是压缩字典树。

将哈希树和压缩字典树结合,就可以得到以太坊存储账户的最终数据结构-MPT。

将压缩字典树里面的指针从地址改为指针,并且将数据存储在叶子节点中即可。

介绍完状态树的数据结构,我们接下来讨论1个问题,区块中存储的账户状态是什么样的范围。有2种选择。

只保存当时区块中产生交易的账户状态。

保存全局所有的账户。

我们可以看下这2种方式,无非就是空间和时间的平衡,只保存当前区块产生的交易意味着是做懒加载(需要的时候才去寻找账户),在区块链中这个代价是非常大的,因为寻找的账户之前从未交易过,这样会遍历整个区块链。另外一种保存全局的账户方式虽然看起来空间消耗较大,但查找快捷,而且空间的问题我们可以通过其他方式优化。所以最终以太坊选择了第2种每个区块都报错全局所有账户的方式。

我们来看下以太坊中是如何保存状态树的。

可以看到以太坊中虽然每个区块都保存了全部账户,但是会将未发生变化的账户状态指向前1个节点,本身只存储发生变化的状态,这样可以较大程度优化空间占用。

介绍完以太坊中比较复杂的状态树后,我们继续来看看以太坊中的另外两棵树,交易树和收据树。

首先介绍一下,为什么需要交易树收据树。

1.交易树

虽然以太坊是基于账户的模型,但是就像银行不仅会存储银行卡的余额,还会存储卡中的每笔钱怎么来的以及怎么花的。交易树中就存储着当前区块中的包含的所有交易。

2.收据树

由于智能合约的引入增加了不少复杂性,所以以太坊用收据树存储着一些交易操作的额外信息。比如交易过程中执行日志就包含在收据树中方便查询。收据树和交易树是一一对应的。每发生一次交易就会有一次收据。

和状态树不同交易树和收据树只维护当前区块内发生的交易,因为当时区块发生交易时不需要再去查找另外1个交易,也就之前需要可能遍历整个区块链的查找操作了。

由于以太坊中的出块速度较快,我们进行一些查询一些符合条件交易的时候会面临大量数据遍历困难的问题。收据树中引入了布隆过滤器可以帮助我们有效缓解这一困难。

布隆过滤器将大集合中每个元素进行hash运算映射到1个较小的集合,这时再来1个元素要判断是否在大集合的时候,不需要遍历整个大集合,而是去进行hash运算去小集合中寻找是否存在,如果不存在,肯定不在大集合中,如果存在则不能说明任何问题。

如上图所示,布隆过滤器只能证明某1个元素不在集合中,不能证明1个元素在结合中。

以太坊中如果我们要在较多区块中寻找某1个交易,则可以利用布隆过滤器,过滤掉肯定不存在目标交易的区块,然后进入收据树内继续利用布隆过滤器筛选,剩下的才是可能的目标交易的交易,进行一一比对即可。

我们介绍了以太坊的核心数据结构,状态树交易树收据树,他们都是使用相同的数据结构-哈希压缩字典树。但状态树是维护1颗全局账户树,交易树和收据树则是维护本区块内的交易或收据。

介绍完数据结构后,后面我们会用几篇文章来介绍以太坊中的一些核心算法,比如共识机制,挖矿算法等。

以太坊之账户

外部账户创建流程:

当使用 geth account new 命令新建账户,最终调用 accountCreate(accountcmd.go)=keystore.StoreKey=storeNewKey(key.go)

storeNewKey完成私钥、公钥、地址的生产,最后保存成keystore文件到指定路径。

最后保存的keystore文件为json格式,如下:

以下为用密码可以推出私钥的流程

对交易发起人的地址和nonce进行RLP编码,再算出Keccak哈希值,取后20个字节作为该合约的地址,即: Keccak-256(RLP(sender, nonce))[12:]

函数位于: crypto/crypto.go

账户在区块链上的存储结构,内外账户的结构都是一样

文章github地址

小白如何秒懂区块链中的哈希计算

小白如何秒懂区块链中的哈希计算

当我在区块链的学习过程中,发现有一个词像幽灵一样反复出现,“哈希”,英文写作“HASH”。

那位说“拉稀”同学你给我出去!!

这个“哈希”据说是来源于密码学的一个函数,尝试搜一搜,论文出来一堆一堆的,不是横式就是竖式,不是表格就是图片,还有一堆看不懂得xyzabc。大哥,我就是想以太坊交易希哈值了解一下区块链的基础知识,给我弄那么难干啥呀?!我最长的密码就是123456,复杂一点的就是654321,最复杂的时候在最后加个a,你给我写的那么复杂明显感觉脑力被榨干,仅有的脑细胞成批成批的死亡!为了让和我一样的小白同学了解这点,我就勉为其难,努力用傻瓜式的语言讲解一下哈希计算,不求最准确但求最简单最易懂。下面我们开始以太坊交易希哈值

# 一、什么是哈希算法

## 1、定义:哈希算法是将任意长度的字符串变换为固定长度的字符串。

从这里可以看出,可以理解为给**“哈希运算”输入一串数字,它会输出一串数字**。

如果我们自己定义 “增一算法”,那么输入1,就输出2;输入100就输出101。

如果我我们自己定义“变大写算法”,那么输入“abc”输出“ABC”。

呵呵,先别打我啊!这确实就只是一个函数的概念。

## 2、特点:

这个哈希算法和我的“增一算法”和“变大写算法”相比有什么特点呢?

1)**确定性,算得快**:咋算结果都一样,算起来效率高。

2)**不可逆**:就是知道输出推不出输入的值。

3)**结果不可测**:就是输入变一点,结果天翻地覆毫无规律。

总之,这个哈希运算就是个黑箱,是加密的好帮手!你说“11111”,它给你加密成“b0baee9d279d34fa1dfd71aadb908c3f”,你说“11112”它给你弄成“afcb7a2f1c158286b48062cd885a9866”。反正输入和输出一个天上一个地下,即使输入相关但两个输出毫不相关。

# 二、哈希运算在区块链中的使用

## 1、数据加密

**交易数据是通过哈希运算进行加密,并把相应的哈希值写入区块头**。如下图所示,一个区块头包含了上一个区块的hash值,还包含下一个区块的hash值。

1)、**识别区块数据是否被篡改**:区块链的哈希值能够唯一而精准地标识一个区块,区块链中任意节点通过简单的哈希计算都可以获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块链中的信息没有被篡改。

2)、**把各个区块串联成区块链**:每个区块都包含上一个区块的哈希值和下一个区块的值,就相当于通过上一个区块的哈希值挂钩到上一个区块尾,通过下一个区块的哈希值挂钩到下一个区块链的头,就自然而然形成一个链式结构的区块链。

## 2、加密交易地址及哈希

在上图的区块头中,有一个Merkle root(默克尔根)的哈希值,它是用来做什么的呢?

首先了解啥叫Merkle root? 它就是个二叉树结构的根。啥叫二叉树?啥叫根?看看下面的图就知道了。一分二,二分四,四分八可以一直分下去就叫二叉树。根就是最上面的节点就叫 根。

这个根的数据是怎么来的呢?是把一个区块中的每笔交易的哈希值得出后,再两两哈希值再哈希,再哈希,再哈希,直到最顶层的数值。

这么哈希了半天,搞什么事情?有啥作用呢?

1)、**快速定位每笔交易**:由于交易在存储上是线性存储,定位到某笔交易会需要遍历,效率低时间慢,通过这样的二叉树可以快速定位到想要找的交易。

举个不恰当的例子:怎么找到0-100之间的一个任意整数?(假设答案是88)那比较好的一个方法就是问:1、比50大还是小?2、比75大还是小?3、比88大还是小? 仅仅通过几个问题就可以快速定位到答案。

2)、**核实交易数据是否被篡改**:从交易到每个二叉树的哈希值,有任何一个数字有变化都会导致Merkle root值的变化。同时,如果有错误发生的情况,也可以快速定位错误的地方。

## 3、挖矿

  在我们的区块头中有个参数叫**随机数Nonce,寻找这个随机数的过程就叫做“挖矿”**!网络上任何一台机器只要找到一个合适的数字填到自己的这个区块的Nonce位置,使得区块头这6个字段(80个字节)的数据的哈希值的哈希值以18个以上的0开头,谁就找到了“挖到了那个金子”!既然我们没有办法事先写好一个满足18个0的数字然后反推Nounce,唯一的做法就是从0开始一个一个的尝试,看结果是不是满足要求,不满足就再试下一个,直到找到。

找这个数字是弄啥呢?做这个有什么作用呢?

1)、**公平的找到计算能力最强的计算机**:这个有点像我这里有个沙子,再告诉你它也那一个沙滩的中的一粒相同,你把相同的那粒找出来一样。那可行的办法就是把每一粒都拿起来都比较一下!那么比较速度最快的那个人是最有可能先早到那个沙子。这就是所谓的“工作量证明pow”,你先找到这个沙子,我就认为你比较的次数最多,干的工作最多。

2)、**动态调整难度**:比特币为了保证10分钟出一个区块,就会每2016个块(2周)的时间计算一下找到这个nonce数字的难度,如果这2016个块平均时间低于10分钟则调高难度,如高于十分钟则调低难度。这样,不管全网的挖矿算力是怎么变化,都可以保证10分钟的算出这个随机数nonce。

# 三、哈希运算有哪些?

说了这么多哈希运算,好像哈希运算就是一种似的,其实不是!作为密码学中的哈希运算在不断的发展中衍生出很多流派。我看了”满头包”还是觉得内在机理也太复杂了,暂时罗列如下,小白们有印象知道是怎么回事就好。

从下表中也可以看得出,哈希运算也在不断的发展中,有着各种各样的算法,各种不同的应用也在灵活应用着单个或者多个算法。比特币系统中,哈希运算基本都是使用的SHA256算法,而莱特币是使用SCRYPT算法,夸克币(Quark)达世币(DASH)是把很多算法一层层串联上使用,Heavycoin(HAV)却又是把一下算法并联起来,各取部分混起来使用。以太坊的POW阶段使用ETHASH算法,ZCASH使用EQUIHASH。

需要说明的是,哈希运算的各种算法都是在不断升级完善中,而各种币种使用的算法也并非一成不变,也在不断地优化中。

**总结**:哈希运算在区块链的各个项目中都有着广泛的应用,我们以比特币为例就能看到在**数据加密、交易数据定位、挖矿等等各个方面都有着极其重要的作用**。而哈希运算作为加密学的一门方向不断的发展和延伸,身为普通小白的我们,想理解区块链的一些基础概念,了解到这个层面也已经足够。

关于以太坊交易希哈值和以太坊交易价格的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

评论