导航:首页 > 以太坊区 > 以太坊攻击导致下载很慢

以太坊攻击导致下载很慢

发布时间:2023-05-05 09:17:53

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

⑵ 以太坊区块链之Bug --2020/05/19

为了防止交易重播,ETH(ETC)节点要求每笔交易必须有一个nonce数值。每一个账户从同一个节点发起交易时,这个nonce值从0开始计数,发送一笔nonce对应加1。当前面的nonce处理完成之后才会处理后面的nonce。注意这里的前提条件是相同的地址在相同的节点发送交易。

以下是nonce使用的几条规则:

● 当nonce太小(小于之前已经有交易使用的nonce值),交易会被直接拒绝。

● 当nonce太大,交易会一直处于队列之中,这也就是导致我们上面描述的问题的原因;

● 当发送一个比较大的nonce值,然后补齐开始nonce到那个值之间的nonce,那么交易依旧可以被执行。

● 当交易处于queue中时停止geth客户端,那么交易queue中的交易会被清除掉。

         第一个字段 AccountNonce ,直译就是账户随机数。它是以太坊中很小但也很重要的一个细节。以太坊为每个账户和交易都创建了一个Nonce,当从账户发起交易的时候,当前账户的Nonce值就被作为交易的Nonce。这里,如果是普通账户那么Nonce就是它发出的交易数,如果是合约账户就是从它的创建合约数。

为什么要使用这个Nonce呢?其主要目的就是为了防止重复攻击(Replay Attack)。因为交易都是需要签名的,假定没有Nonce,那么只要交易数据和发起人是确定的,签名就一定是相同的,这样攻击者就能在收到一个交易数据后,重新生成一个完全相同的交易并再次提交,比如A给B发了个交易,因为交易是有签名的,B虽然不能改动这个交易数据,但只要反复提交一模一样的交易数据,就能把A账户的所有资金都转到B手里。

当使用账户Nonce之后,每次发起一个交易,A账户的Nonce值就会增加,当B重新提交时,因为Nonce对不上了,交易就会被拒绝。这样就可以防止重复攻击。当然,事情还没有完,因为还能跨链实施攻击,直到EIP-155引入了chainID,才实现了不同链之间的交易数据不兼容。事实上,Nonce并不能真正防止重复攻击,比如A向B买东西,发起交易T1给B,紧接着又提交另一个交易T2,T2的Gas价格更高、优先级更高将被优先处理,如果恰好T2处理完成后剩余资金已经不足以支付T1,那么T1就会被拒绝。这时如果B已经把东西给了A,那A也就攻击成功了。所以说,就算交易被处理了也还要再等待一定时间,确保生成足够深度的区块,才能保证交易的不可逆。

Price 指的是单位Gas的价格,所谓Gas就是交易的消耗,Price就是单位Gas要消耗多少以太币(Ether),Gas * Price就是处理交易需要消耗多少以太币,它就相当于比特币中的交易手续费。

GasLimit 限定了本次交易允许消耗资源的最高上限,换句话说,以太坊中的交易不可能无限制地消耗资源,这也是以太坊的安全策略之一,防止攻击者恶意占用资源。

Recipient 是交易接收者,它是common.Address指针类型,代表一个地址。这个值也可以是空的,这时在交易执行时,会通过智能合约创建一个地址来完成交易。

Amount 是交易额。这个简单,不用解释。

Payload 比较重要,它是一个字节数组,可以用来作为创建合约的指令数组,这时每个字节都是一个单独的指令;也可以作为数据数组,由合约指令来进行操作。合约由以太坊虚拟机(Ethereum Virtual Machine,EVM)创建并执行。

V、R、S 是交易的签名数据。以太坊当中,交易经过数字签名之后,生成的signature是一个长度65的字节数组,它被截成三段,前32字节被放进R,再32字节放进S,最后1个字节放进V。那么为什么要被截成3段呢?以太坊用的是ECDSA算法,R和S就是ECSDA签名输出,V则是Recovery ID。

R,S,V是交易签名后的值,它们可以被用来生成签名者的公钥;R,S是ECDSA椭圆加密算法的输出值,V是用于恢复结果的ID

⑶ 以太坊存在的问题

1.扩展性不足:

以太坊社区的主要开发人员和研究人员始终认为区块链技术要实现大规模采用,可扩展性是区块链应用程序需要解决的唯一最重要的关键。

以太坊的底层设计,最大的问题是以太坊只有一条链,没有侧链,它把所有的程序对等的跑在全球所有节点的矿机上。这样一个很耗资源的程序,会导致问题越来越严重。

2.合约程序漏洞,无法抵御DDOS攻击

据相关研究表明,在基于以太坊的近100万个智能合约上,发现有34,200(约3%)个含有安全漏洞,将允许黑客窃取ETH、冻结资产或删除合约。这几年,以太坊面对合约程序漏洞和DDOS攻击的问题,也一直无法找到很好的解决办法。(更好用的数字货币交易平台“币汇”)

3.对于ICO泡沫和项目方砸盘

目前的ETH下跌,很大程度上来自于项目方的砸盘套现,这个问题可以在ICO代币融资上进行规则限制,不能像现在这样毫无成本的就能发一个币,而且还没有任何监督惩罚机制。任何事情都需要有一套合理的演进规则,大家按规则办事,所谓无规矩不成方圆。在规则的基础上,各类ICO项目有效监督,有序进出,才是一个正常的市场,这样才可能维系着代币生态的持续、稳定发展。

4.智能合约费用过高

在以太坊上现在还是POW的挖矿模式,交易是有手续费的,用来激励矿工来处理交易和保护网络,不同的是以太坊是以“gas”的形式来收费的。

在以太坊协议中规定,交易手续费=Gas 数量 x Gas 价格,其中 Gas 数量由智能合约的复杂程度决定,而 Gas 价格则由合约发起人决定。这对开发者和用户意味着什么呢?虽然读取本地区块链是免费的,但写入和运算是花钱的,储存更是尤其昂贵,因为任何写入的信息都会被永久的储存着。

5.社区对共识协议改变的分歧

以太坊计划实现将 POW 机制改为 POW/POS 混合共识机制。但这个涉及到技术开发和矿工双方能否达到利益共识的问题了。如果协议发生了变化,社区意见不合时,就会导致分叉,大家各自玩各自的。

⑷ 以太坊的智能合约再次被黑客攻击,到底肿么啦

不知道楼主说的被黑客攻击是在哪听说的消息,不过这个也不是不可能,虽然目前区块链热度很高,但是任何东西没有绝对的安全性,哪怕是比特币也不行

⑸ 以太坊带来了那些争议和质疑呢

以太坊和比特币是有着本质区别的,区别在哪里呢?比特币定义的是一套货币体系,而以太坊侧重的是打造一条主链(可以理解为一条公路),可以让大量的区块链应用跑在这条公路上。

从这一点来看,以太坊的应用场景更广泛,这也是为什么我们说以太坊标志着区块链

1.0时代一个单纯的货币体系,向区块链2.0时代实现其他行业以及应用场景的转变。

但是,世界上没有十全十美的事物,以太坊虽然拓展了区块链在各行各业的应用范围,还提升了处理交易的速度,但是它也存在着一定的争议与质疑。

一、以太坊的扩展性不足的解决之道:分片技术和雷电网络

以太坊的底层设计,最大的问题是以太坊只有一条链,没有侧链,这就意味着,所有程序都要对等地跑在这条链上,消耗资源的同时,还会引发系统拥堵。正如去年非常火爆的以太坊游戏“加密猫”,这个游戏火爆的时候,一度引发以太坊网络瘫痪。

对于提升处理能力这个问题,以太坊提出两种方式:一个是分片技术(shard),一个是雷电网络,下面我们分别介绍一下这两种技术。

(一)分片技术

以太坊创始人 V 神(Vitalik Buterin)认为,诸如比特币这种主流的区块链网络,之所以处理交易的速度很慢,是因为每一个矿工要处理全网的每一笔交易,这样的效率其实是非常低下的。分片技术的构想是:一笔交易不必发动全网所有节点都去处理,只要让网络中的一部分节点(矿工)处理就好了。于是,以太坊网络被划分成很多片,同一时间,每一分片都可以处理不同的交易,这样一来,会大大提升网络性能。

但是,分片技术也是有一定争议的。我们知道,区块链技术的重要思想是去中心化,全网都去见证(处理)同一交易,这才具有最高的权威性。而以太坊分片技术,并不是所有节点共同见证,而是类似于分小组见证,这样一来,它便失去了绝对的“去中心化”属性,只能通过牺牲掉一定的去中心化特性来达到高性能的目的。

(二)雷电网络

雷电网络使用的是链下交易的方式。这是什么意思呢?它的意思是:使用雷电网络的参与者在互相转账时,不需要通过以太坊主链交易确认,而是通过参与者之间创建支付通道,在链下完成。

不过,雷电网络并不是脱离主链的,在建立支付通道之前,需要先用主链上的资产做抵押,生成余额证明(Balance Proof),拥有余额证明才能表明你能做出相应余额的转账。在交易双方都持有余额证明的情况下,双方可通过支付通道在链下进行无限制次数的转账。

只有在完成链下交易,需要将资产转回链上时,才会在以太坊主链上登记主链账户的余额变化信息,而这期间不管发生多少次交易在主链上是不会有记录的。

雷电网络还有一个实实在在的好处,就是可以为你省下矿工费用。目前我们在以太坊主链上进行交易,需要消耗 Gas,需要支付矿工费用,那么一旦将交易搬到链下,就可以节省这一部分的成本。

当然,雷电网络并不是十全十美的。在使用雷电网络时需要用主链上的资产作抵押;而这部分资产作为抵押物,在使用者完成链下交易之前是不能使用的。这也就决定了,雷电交易只适合小额交易。

上面就是以太坊扩展性不足的问题,以及目前提出的两个主要解决方案:分片技术和雷电网络。

二、以太坊的智能合约存在漏洞与臭名昭著的 The Dao 事件

以太坊的智能合约很强大,但是,凡是代码都会存在漏洞的,以太坊智能合约最大的争议就在于所谓的漏洞,也就是安全性问题。据相关研究表明,在基于以太坊的近100万个智能合约上,发现有34200(约3%)个含有安全漏洞,将允许黑客窃取ETH、冻结资产或删除合约,比如说,臭名昭著的The Dao 事件。

(一)Dao是什么意思?

介绍 The Dao 事件之前, 我们先见到介绍一下 DAO 是什么。DAO 是 Decentralized

Autonomous Organization 的简称,可以理解为:去中心化自治组织。从以太坊的角度来理解,DAO 是区块链上的某一类合约,或者一个合约组合,用来代替政府的审查以及复杂等中间程序,从而实现高效的、去中心化的信任的系统。所以,DAO 不是特定的某个组织,也就说呢,可以有很多的DAO,各种各样的DAO。

(二)臭名昭著的The Dao事件

但是,我们现在提到DAO,基本上所指的都是The DAO事件,也就是我们刚刚说的那个臭名昭著的黑客攻击事件。我们知道,英文中的 The是特指的意思,The DAO事件呢就

是特指的那个DAO事件,因为我们刚刚说了DAO不是特定的某个组织,可以有很多的DAO,各种各样的DAO。

2016 年的时候,德国一家专注“智能锁”的公司 Slock.it,为了实现去中心化的实物交换(比如说:公寓啊,船只啊),在以太坊上发布了 DAO项目。并且于2016年4月

30日开始,融资窗口开放了28天。

没想到,这个DAO项目的人气非常高,短短半个月就筹得了超过一亿美元,而到整个融资期结束,一共筹集到1.5亿美元,由此呢,它成为历史上最大的众筹项目。然而好景不长,到了6月份,黑客利用智能合约里面的漏洞,成功转移了超过360万个以太币,并投入到一个DAO子组织中,这个组织和The DAO有着同样的结构。以至于当时以太币价格从20多美元直接跌破13美元。

这个事件说明智能合约的确是有漏洞的,而且一旦漏洞被黑客利用,那么后果是非常严重的。这就是现在很多人批评以太坊,说它的智能合约不智能。

对于这个问题,目前国外有很多公司为了解决智能合约的漏洞问题 ,开始提供代码审计服务。而从技术的角度来说,目前一些团队正在对智能合约进行检验,这些团队多数由哈佛、斯坦福和耶鲁的教授带队,部分团队已经获得了头部机构的投资。

除了目前以太坊存在的扩展性不足、智能合约漏洞问题,对于以太坊的争议还在于它所追求的POS共识机制,也就是权益证明机制,在权益证明机制下,如果说谁持币的数量越大、持币时间越久,获得的“权益”(利息)就越多,还有机会得到记账权力,记账又可以获得奖励,那么这样一来,容易造成“强者越强”的寡头优势。

还有一个问题就是ICO乱象的问题。ICO是区块链项目筹措资金的常用方式,咱们可以理解为预售。以太坊上ICO项目的爆发,滋生了打着ICO旗号进行资金盘、诈骗圈钱等不法行为,对社会和金融稳定造成安全隐患。

⑹ 简单解释何为51%攻击

你可能会下意识认为加密货币是安全可靠的。怎么说呢,即使网络犯罪分子以不可思议的规律频繁攻击交易所和热钱包,但底层的区块链技术本身天然抗攻击,不是吗?

好吧,其实不然。区块链容易遭受所谓的“51%攻击”伤害。

当有一组矿工控制超过Token哈希算力(计算能力)的50%时,可能会发生51%的攻击(也称为“多数攻击”)。 实际上,“51%”其实用词不当; 一个成功的攻击实际上仅需要50%+ 1的哈希算力。

如果一个群体可以达到如此高水平的控制,就可以通过以下方式轻易毁掉相关币种。

不进行确认从而阻止产生新的区块

撤消当前块上已完成的事务

在网络上发起“双花”

50%+ 1是确保攻击成功所需的哈希算力。 但是,也有可能以较低的哈希算力成功进行攻击。 安全团队使用统计建模来表明当被控制的哈希算力达到约30%时,漏洞风险可能会开始增加。

比特币以及其他几个主流币种使用工作量证明机制来验证交易并将其广播到区块链上。

在白皮书中,比特币的创始人中本聪简明扼要地将这个过程概括为“一CPU,一票”:

“工作量证明“实质上是一CPU一票,最长的链条代表大多数判断,因为该链条拥有最大量“工作量证明”投入。如果CPU算力的大多数由诚实的节点控制,诚实的链条将以超过其他与之竞争链条的速度快速生长。

您可能已经注意到上述引文中的大问题:“如果大部分CPU功率由诚实节点控制......”

当不诚实的节点数量超过诚实节点时,问题就出现了。 在这些情况下,他们可以“投票孤立”合法的矿工,确保他们自己控制最长的链条,从而控制整个加密货币。

中本聪假定,即使矿工可以控制超过50%的节点,他仍然可能“遵守规则”来保护自己的财富:

如果一个贪婪的攻击者有能力比诚实矿工控制更多CPU算力,他将被迫进行选择,是通过欺诈以偷回其支付的款项(译者注:即双重支付攻击),还是通过(获取)生成的新货币。他应当会发现,按照规则行事更加有利可图,这样的规则有利于他比其他联合起来的每一个人获取更多的新货币,亦优于破坏系统以及损害自己拥有财富的有效性。

不幸的是,网络犯罪分子并不完全遵循规则。 自中本聪的白皮书发布以来,已有无数的51%攻击案例。

到目前为止,我们已经利用比特币来说明51%的攻击是如何发生的。

然而,虽然在技术层面上比特币易受攻击,但在更实际的层面上,由于三个原因,它不太可能成为这个受害者:

1、成本

比特币网络规模巨大,想要获得足够用于攻击的哈希算力,需要相当大量的资金投入。

​据Crypto51称,对比特币进行长达一小时的黑客攻击需要花费237,941美元。 对以太坊进行攻击的成本同样令人望而却步 ——将花费74,837美元。

2、矿池

如今,最大的加密货币的矿池分布广泛。

情况并非总是如此;2014年,Ghash.io大概掌握量51%的比特币哈希算力。比特币当时显然远不如现在影响大,但仍然令人担忧。

不得不说Ghash.io贼靠谱,他们几乎立即放弃了10%算力,并要求社区自愿将自己的算力限制在40%内,以保护区块链的长期完整性。

现在最大的比特币矿池的哈希算力徘徊在20%左右。

3、NiceHash

NiceHash是世界上最大的加密货币挖矿算力市场。

据Crypto51估计,NiceHash可以产生的总功率不到比特币网络总功率的百分之一。 以太坊是5%,比特币现金是2%。 所有主流币的百分比都保持相似的低百分比。

因此,即使是武器化的NiceHash也没有足够的力量对主流币进行51%的攻击。

当你研究较小的币种时,事情开始发生巨大变化。

就像市值排名前十的币种,对其发动攻击基本都是天价,而排名再往后就不好说了。其对应的NiceHash百分比也开始增加。 也有一些较大币种的百分比令人担忧。 以太坊经典为82%,门罗币79%……

2018年5月比特币黄金遭遇51%的攻击时,小币种的脆弱性成为焦点。

比特黄金 ——来自2017年比特币的硬分叉 - 当时甚至出现不到六个月。

以至于该项目的发言人爱德华·伊斯克拉尔必须告知所有可以交易比特黄金的交易所,将确认数从5个增加到50个,并手动审查大额交易是否存在可疑活动。



“持续攻击的成本很高。 由于成本很高,攻击者只有从虚假存款中快速获得高价值的东西才能获利。 像交易所这样的场所,可以自动接受大额存款,允许用户快速交易另一个币种,然后自动撤离。 在清算交易资金之前,我们一直建议设置上限以防止此类攻击,并敦促人工审查BTG的大额存款。“

在很长是一段时间,我们几乎可以肯定的是,51%攻击的次数会不断增加。

但是会有一线希望吗? 很难说目前存在的数千种山寨币给最终用户带来了什么实实在在的好处。 如果由此加密世界能围绕一些较大的币种进行巩固,那么对于该行业的长期健康来说,51%攻击可能不是一件绝对的坏事。

⑺ 以太坊技术系列-以太坊共识机制

区块链的特点之一是去中心化。也就是节点会分布在各个地方组成分布式系统。各个节点需要对1个问题达成一致,理想情况下,只需要同步状态即可。

如上图所示 B节点将a=1=> a=2的状态同步给  ACDE四个节点,这时系统中状态变为a=2, 但如果其中有恶意节点 AE 收到通知后把a=1=>a=3修改为错误的节点,这个时候大家的状态就不一致了,此时需要共识机制使系统中得到1个唯一正确的状态。

如上面说到分布式系统存在恶意节点导致系统中状态不一致的情况有1个比较著名的虚拟问题-拜占庭将军问题。

拜占庭将军问题是指,N个将军去攻打一座城堡,如果大于一定数量的将军同时进攻则可以攻打成功,如果小于则进攻失败。将军中可能存在叛徒。

这个时候有2种情况

1.如果2个叛徒都在BCDE中,那么共识算法需要让其余2个将军听从A的正确决策进攻城堡。

2.如果A是1个叛徒,共识算法需要让BCDE中剩余的3个忠诚将军保持一致。

这个问题有很多种解法,大家有兴趣可以自行查阅(推荐学习PBFT),我们重点来看看以太坊中目前正在使用的Nakamoto 共识和将要使用的 Casper Friendly Finality Gadget共识是如何解决拜占庭将军问题的。

说到Nakamoto共识和Casper Friendly Finality Gadget共识可能大家不太熟悉,但他们的部分组成应该都比较熟悉-POW(工作量证明)和POS(权益证明)。

POW或POS称之为Sybil抗性机制,为什么需要Sybil抗性机制呢,刚刚我们说到拜占庭将军问题,应该很容易看出恶意节点越多,达成正确共识的难度也就越大,Sybil攻击就是指1个攻击者可以伪装出大量节点来进行攻击,Sybil抗性是指抵御这种攻击能力。

POW通过让矿工或验证者投入算力,POS通过让验证者质押以太坊,如果攻击者要伪装多个节点攻击则必将投入大量的算力或资产,会导致攻击成本高于收益。在以太坊中保障的安全性是除非攻击者拿到整个系统51%算力或资产否则不可能进攻成功。

在解决完Sybil攻击后,通过选取系统中的最长链作为大家达成共识的链。

很多人平时为了简化将pow和pos认为是共识机制,这不够准确,但也说明了其重要作用,我们接下来分析pow和pos。

通过hash不可逆的特性,要求各个矿工不停地计算出某个值的hash符合某一特征,比如前多少位是000000,由于这个过程只能依赖不停的试错计算hash,所以是工作量证明。计算完成后其他节点验证的值符合hash特征非常容易验证。验证通过则成为成为合法区块(不一定是共识区块,需要在最长链中)。

以太坊中的挖矿算法用到2个数据集,1个小数据集cache,1个大数据集DAG。这2个数据集会随着区块链中区块增多慢慢变大,初始大小cache为16M DAG为1G。

我们先来看这2个数据集的生成过程

cache生成规则为有1个种子随机数seed,cache中第1个元素对seed取hash,后面数组中每个元素都是前1个元素取hash获得。

DAG生成规则为 找到cache中对应的元素后 根据元素中的值计算出下次要寻找的下标,循环256次后获得cache中最终需要的元素值进行hash计算得到DAG中元素的值。

然后我们再看看矿工如何进行挖矿以及轻节点如何验证

矿工挖矿的过程为,选择Nonce值映射到DAG中的1个item,通过item中的值计算出下次要找的下标,循环64次,得到最终item,将item中的值hash计算得到结果,结果和target比较,符合条件

则证明挖到区块,如果不符合则更换nonce继续挖矿。矿工在挖矿过程中需要将1G的DAG读取到内存中。

轻节点验证过程和矿工挖矿过程基本一致,

将块头里面的Nonce值映射到DAG中的1个item,然后通过cache数组计算出该item的值,通过item中的值计算出下次要找的下标,循环64次,得到最终item,将item中的值hash计算得到结果,结果和target比较,符合条件则验证通过。轻节点在验证过程中不需要将1G的DAG读取到内存中。每次用到DAG的item值都使用cache进行计算。

以太坊为什么需要这2个不同大小的数组进行辅助hash运算呢,直接进行hash运算会有什么问题?

如果只是进行重复计算会导致挖矿设备专业化,减少去中心化程度。因为我们日常使用的计算机内存和计算力是都需要的,如果挖矿只需要hash运算,挖矿设备则会设计地拥有超高算力,但对内存可以缩小到很小甚至没有。所以我们选用1G的大内存增加对内存访问的频率,增加挖矿设备对内存访问需求,从而更接近于我们日常使用的计算机。

我们看看在Nakamoto共识是如何解决拜占庭将军问题的。首先看看区块链中的拜占庭将军问题是什么?

区块链中需要达成一致的是哪条链为主链,虽然采用了最长链原则,但由于分叉问题,还是会带来拜占庭将军问题。

本来以太坊pow目标是抵抗51%以下的攻击,但如上图如果恶意节点沿着自己挖出的区块不断挖矿,由于主链上有分叉存在,恶意节点不需要达到51%算力就可以超过主链进而成为新的主链,为此以太坊使用了ghost协议给上图中的B1和C1也分配出块奖励,尽快合并到主链中,这样主链长度(按照合并后的总长度算,长度只是抽象概念,以太坊中按照区块权重累加)还是大于恶意节点自己挖矿的。

网络中的用户通过质押一定数量的以太坊成为验证者。每次系统从这些验证者从随机选择出区块创建者,其余验证者去验证创建出的区块是否合法。验证者会获得出块奖励,没有被选中的区块不进行验证则会被扣除一定质押币,如果进行错误验证则会被扣除全部质押币。

如上图,权益证明在每隔一定区块的地方设置一个检查点,对前面的区块进行验证,2/3验证者通过则验证通过,验证通过则该区块所在链成为最长合法链(不能被回滚)。

我们简化地只分析了权益证明本身,在以太坊中权益证明较为复杂的点在于和分片机制结合在一起时的运行流程,这部分会在后面单独将分片机制的一篇文章中详述。

本篇文章主要讨论了共识机制是解决分布式系统中的拜占庭将军问题,以及分析了以太坊中的共识机制一般包括最长链选择和一种sybil抗性机制(pow或pos)。重点分析了pow和pos的流程以及设计思想。后续将开始重点讨论智能合约的部分。

⑻ 为什么以太坊芯片机启动那么慢

开机启动速度慢,要看速度有多慢了,慢得让人无法接受的话,一般是因为电脑开机就可以直接上网,病毒大量访问网络造成电脑的假死,拔掉网线试试就知道了;如果不是那么慢,只是比以前慢了一些,也就是二三十秒的样子的话,那是你安装各种软件以后,开机自动启动的软件太多了,可以删掉不必要的

⑼ 闪电贷攻击解读

如何防范闪贷攻击?img=' https://P3 . toutiaoimg.com/large/PGC-image/rrzyiw 2 HF 9 Q1 TN '/(奥维的教堂,梵高)

一句话总结,这些攻击都很“华丽”。在每一次攻击中模携,攻击者都是在不花一分钱的情况下,立即借入数十万美元的ETH,然后通过一系列脆弱的链式协议赚取数十万被盗资金,最后以巨额归还所借的ETH贷款。这一切都发生在一瞬间。即在单个以太坊交易中完成。

封面来自卡迈恩因凡蒂诺。

我们不知道这些攻击者是谁,也不知道他们来自哪里。他们空手而来,不留痕迹地带走了价值几十万美元的东西。

在这些攻击之后,我一直在思考闪贷及其对DeFi security的影响。我觉得值得开诚布公的思考。简而言之,我认为闪贷对DeFi来说是一个巨大的安全威胁。然而,闪贷不会消失,我们需要仔细考虑它们对未来DeFi安全的影响。

什么是闪贷?

闪贷的概念最早是由Marble Agreement的创始人Max Wolff在2018年提出的。Marble自称是市场上的“智能合约银行”。其产品非常简单,但在DeFi方面极具创新性:通过智能合同实现零风险贷款。(蓝狐注:关于什么是闪贷,请参考之前的文章《加密闪贷:互联网货币的神奇新发明》 《闪贷策略:攻击者能取走Maker的7亿美元抵押品吗?》 《bZx事件的启示》)

怎么会有零风险贷款?

传统贷款机构承担两种形式的风险。第一,违约风险:如果借款人跑路,那就太可怕了。贷款人的第二个风险是流动性不足的风险:如果贷款人在错误的时间贷出了过多的资产或未能及时收回还款,贷款人可能会意外缺乏流动性,无法履行义务。

快速贷款减轻了这两种风险。闪贷基本上是这样运作的:我在一次交易中借给你你想要的钱数。不过,在这次交易结束之前,你至少要把我借给你的钱还了。如果你不能做到这一点,我会自动回滚您的交易。是的,智能合约可以做到这一点。

简而言之,你的闪贷是原子性的:如果你不能偿还贷款,整个事情就会恢复,就像贷款从未发生过一样。这种事情只能发生在区块链。比如,你不能在BitMEX上闪付你的贷款。这是因为智能合约平台一次只能处理单笔交易,所以单笔交易中发生的所有事情都是作为批处理按顺序执行的。你可以把它想象成事务执行过程中的“冻结时间”。另一方面,集中交易所可能存在竞争,使你的订单无法履行。在区块链上,可以确保你所有的代码都按顺序运行。

所以让我们考虑一下经济学。传统贷款人的补偿方式有两种:他们所承担的档陵风险(违约风险和流动性风险),以及借出其资本的机会成本(比如,如果我在别处可以获得2%的利息,那么借款人必须向我支付超过2%的无风险费用)。

闪贷不一样。从字面上讲,闪贷没有风险,没有机会成本。这是因为借款人在其闪贷期间“冻结了时间”。所以,在别人看来,体制内的资本从来都是没有风险和负担的,在别处赚不到利息(也就是没有机会行码戚成本)。

从某种意义上说,这意味着做闪贷的出借人是没有成本的。这是非常违反直觉的。那么,在均衡状态下,闪贷的成本应该是多少?(蓝狐注:当我们在这里谈论均衡时,我们指的是当我们充分竞争、成熟和稳定时)

基本上闪贷应该是免费的。或者,更恰当地说,支付一小笔费用来分担包含额外三行代码的成本,这三行代码使资产可用于flash lending。

雷姆科布洛曼

闪贷不能收取传统意义上的利息,因为这类贷款的有效期为零(任意APR*0=0)。当然,如果闪贷人收取更高的费用,他们很容易被其他收取更低利率的闪贷池超越。

快速贷款使资本成为真正的商品。这种竞争必然导致零收费或者微不足道的象征性收费。DYdX目前对闪贷零手续费。另一方面,AAVE对闪贷收取本金的0.09%。我怀疑这是不可持续的。事实上,他们社区中的一些人已经呼吁将成本降低到零。(请注意,这两次攻击都没有将AAVE作为他们的快速贷款池)

贷款有什么用?

闪贷最初的宣传是基本用于套利。大理石的公告声称:

“通过闪贷,交易者可以从大理石银行借钱,然后在一个DEX上买入代币,在另一个DEX上以更高的价格卖出代币,然后将钱返还给银行,在单个原子交易中获得套利收益。”

事实上,从交易量来看,到目前为止,大多数闪贷都用于此类套利。

快速贷款在AAVE的使用。出发地:AAVE

但是,交易量小。自AAVE闪贷业务推出以来,其贷款金额仅为1万美元。与DeFi的套利和清算市场相比,这是微不足道的。

这是因为大多数套利者是由运行复杂机器人的竞争性套利者执行的。他们参与连锁优先天然气拍卖,并使用天然气代币来优化交易成本。这是一个竞争非常激烈的市场,这些人非常乐意在资产负债表上保留一些代币,以优化他们的回报。

另一方面,从AAVE借钱要花80kgas,并收取本金的0.09%,这对争夺微小差价的套利者来说是个高价。事实上,在大多数AAVE套利交易中,借款人最终支付给借款池的钱比他们从套利中获得的钱要多。

长期来看,除非有特殊情况,套利者不太可能利用闪贷进行套利。但在DeFi中,闪贷还有其他更引人注目的使用案例。一个例子是贷款再融资。例如,假设我有一个创客金库(蓝狐注:即抵押债务

务头寸),其中锁定了100美元的ETH,我从中借出了40 DAI的贷款,也就是说,除去债务,我还有60美元的净头寸。现在,假设我想在Compound再融资以获得更好的利息。通常,我需要回购40 Dai来关闭我的CDP,这需要一些前期资金。而现在的可替代方法是,我可以通过闪贷借出40 Dai,关闭100美元的CDP,然后将解锁的价值60美元的ETH存入Compound,通过Uniswap将剩余的价值40美元的ETH换成Dai,然后用它偿还闪贷。Boom!原子性的0资本再融资。

这真是太神奇了。这是货币乐高运作的很好例子。1x.ag实际上构建了一个保证金交易汇聚器,该汇聚器使用闪贷自动执行这一切。但是闪贷可以很酷,bZx攻击者向我们展示了它们不仅是好玩和游戏。

闪贷攻击对安全性有重大影响

我越来越相信,闪贷真正解锁的是闪贷攻击,一种由闪贷提供资金的资本密集型攻击。在最近的bZx攻击事件中,我们第一次看到这一现象,而我怀疑这只是冰山一角。

闪贷对攻击者尤其有吸引力的主要原因有两个:

很多攻击需要大量前期资金(例如预言机操纵攻击)。如果你在赚取价值1000万美元ETH的正向投资回报,则可能不是套利——你可能会说这是在扯淡。

你可能不太喜欢交易所黑名单是如今区块链安全模型的一部分。这是非常黏糊且中心化的。但这是一个重要的现实,它为这些攻击提供演算信息。

在比特币的白皮书中,中本聪宣称比特币有免遭攻击的安全,因为:“攻击者应该会发现,遵守规则...比破坏系统和其财富的有效性更有利可图。”

有了闪贷,攻击者不再需要有利益参与其中。(蓝狐笔记:也就是说,破坏系统不会影响攻击者的自身利益,因为攻击者没有利益相关)。闪贷实质上改变了攻击者的风险。请记住,闪贷可以累积!受制于gas limit,实际上,你可以在单个交易中(最高可达5000万美元 )汇聚各个闪贷池,并将所有资金集中涌入一个脆弱的合约中。这是一个5000万美元的攻城锤,现在任何人都可以猛击任何链上的彩陶罐。这实在恐怖。

当然,仅凭你很有钱还无法攻击协议。如果DeFi堆栈如它宣称的那样安全,所有这些都不是问题——什么类型的协议对巨鲸来说是不安全的?你可能会说,没有考虑这一点就是过失。

但是,我们承认以太坊自身也可能会遭受51%的攻击,当前的攻击成本是每小时不到20万美元。这不算非常多的资金。如果以太坊自身的安全模型都基本上是构建在资本限制上,那么,为什么我们要如此快地去嘲笑可以被1000万美元成功攻击的DeFi使用?(明确地说,我不认为这些数字——这一数字方便地忽略了滑点和供应不足——加上共识层安全和使用层安全是两码事。但你明白这个意思。)

那么,如何减轻闪贷攻击?

假设我是DeFi协议,我想避免被闪贷攻击。自然的可能问题是,我能否检测到与我交互的用户是否在使用闪贷?

简单答案是:不。

EVM并不允许你从任何其他合约中读取存储。因此,如果你想知道其他合约正在发生什么,则可以通过该合约告诉你。因此,如果你想知道是否闪贷合约在被使用,你必须直接询问合约。如今,很多借贷协议并没有对这种查询做出响应(而且一般来说,也没有办法强迫闪贷借贷者的行为)。另外,即便你试图检查,通过使用代理合约或通过串联闪贷池也容易误导此类查询。简单来说,通常很难辨别一个存储用户是否在使用闪贷。

简言之,如果有人拿着1000万美元敲你合约的前门,你无法判断这是否是他们自己的钱。那么,我们有什么真正的选择可以防止闪贷攻击?我们可以考虑如下几种方法。

说服闪贷借贷池停止提供服务。

哈,开玩笑。这是加密世界,你们懂的!

认真地说,试图让借贷池停止提供闪贷就像是试图停止噪音污染——这是典型的公地悲剧。提供闪贷符合每个协议的自身利益,且出于合理原因,它们的用户也希望使用这一功能。因此,我们尽可忽视这一条。闪贷并不会消失。

强制关键交易跨两个区块进行

请注意,闪贷允许你在单个交易时间段内借入资金。如果你需要一个资本密集型交易跨越两个区块,那么,用户必须取出至少两个区块的贷款,由此击败任何闪贷攻击。(注意:为此,用户必须将其资产锁定在两个区块之间,以防止他们偿还贷款。如果你没有正确地考虑设计,则用户可能只是在这两个区块中实施闪贷攻击)

显然,这会带来巨大的UX权衡:它意味着交易不再是同步的。它对普通用户来说极其糟糕,这是很难下决心采取的措施。(蓝狐笔记:为了防止闪贷攻击,导致用户体验糟糕,显然是下策)

很多开发者对异步智能合约操作感到烦恼,例如,与layer 2的交互,以及以太坊2.0的跨分片通信。具有讽刺意味的是,异步其实让这些系统在应对闪贷时更安全,因为你无法在单个原子交易中横跨分片或layer 2。这意味着不会有跨ETH2.0分片或在layer 2针对DEX的闪贷攻击。

要求提供链上证明,以证明用户的先前余额并没有因为闪贷而改变

如果能有方法检测出用户真实的余额多少(也就是他们获得借款之前的余额),我们就可以击败闪贷攻击。

无法在EVM中本地执行此操作,不过,你可以做点带有黑客意味的事情。这就是你要做的:

在用户与你的协议交互之前,你要求提供可以证明之前区块末尾的Merkle证明,他们有足够的余额来解释他们当前使用的资金。你需要对每个区块上的每位用户跟踪这一点。(Ari Juels向我概述了此方法)

这种方法可能有些效果。当然,它也存在棘手问题:在链上验证这些链上证明非常昂贵,并且没有用户会想要生成这些证明以及为此支付gas费用。另外,出于完全正当理由,用户有可能在早些时候在同一区块中已更改了余额。因此,从理论上它有一些优点,但这不是一个切实的解决方案。

以上提到的三个解决方案没有一个有特别的希望。我相信,没有针对闪贷攻击的全面防御措施。但是,有两个特定的使用确实可以缓解闪贷攻击:基于市场价格的预言机和治理代币。

对于像Uniswap或OasisDEX这样的基于市场的价格预言机,闪贷攻击使得你在任何情况下都不能将当前的中间市场价格用作为预言机。对于攻击者来说,在单个交易中移动中间市场价格并制造闪崩、破坏价格预言机,这是孩子的玩法。

这里最好的解决方案是通过TWAP或VWAP使用最后X个区块的加权平均值。Uniswap v2将原生提供这一点。还有Polaris,这是通用的方法,可以为DeFi协议提供移动平均值。具有讽刺意味的是,Polaris也是由Marble的创始人Max Wolff构建的。(Polaris现在已经被抛弃,但Max看到了这一角落的东西,值得赞)

链上治理本身就是自己罐头里的蠕虫。链上治理通常由治理代币持有者之间的代币加权投票决定。但是,如果这些治理代币出现在闪贷借贷池中,那么,任何攻击者可以捡起大量的治理代币并搞出任何他们想要的结果。

当然,大多数治理协议都要求在投票期间锁定这些代币,以防止闪贷攻击。但是,有些形式的投票并不要求这些,例如carbon投票,或Maker的执行合约。如今,随着闪贷攻击的出现,这些形式的投票应该认为完全遭到破坏。

理想情况下,如果治理代币不可用来闪贷,这就很好。但是,这不取决于代币的发行方,而是取决于市场。因此,所有治理行为应该要求锁定,以防止闪贷攻击。Compound的新COMP代币更进一步,它对所有协议投票都要求基于时间的加权,甚至削弱针对其治理代币的常规贷款攻击。

更广泛地说,所有治理代币必须有时间锁。时间锁要求所有治理决定必须等待一段时间才能生效(Compound的时间锁是两天)。这使得系统可以从任何意料之外的治理攻击中恢复。尽管MKR还无法被大量闪贷,MakerDAO最近因为易受此类攻击而被号召实施措施。它最近实施了24小时的时间锁,关闭了此类攻击向量。

从长远看,这一切意味着什么?

我相信bZx攻击改变了这一切。

这不会是最后一次闪贷攻击。第二次bZx攻击是对第一次的模仿,而且我怀疑在未来几个月会掀起一波攻击浪潮。现在,来自世界最遥远角落的成千上万名聪明少年正在嘲笑所有这些DeFi乐高,他们在显微镜下观察,试图发现可以实施闪贷攻击的方法。如果他们设法成功利用漏洞,那么,他们就可以赚取几十万美元,这在世界上的大部分地区都是可以明显改变生活的。

有人称闪贷并不会改变任何东西,因为如果攻击者有足够资金,这些攻击总是可能的。这既正确又相当不正确。大多数鲸鱼都不知道如何黑智能合约,而大多数聪明的攻击者也没有数百万美元的资产。(蓝狐笔记:此处是说,两者的交集不大。同时具备两者的是最可怕的攻击者。但闪贷到来让攻击者获得了免费的利器)现在,任何人仅花费几分钱就可以租用一个价值5000万美元的毁灭球。从现在开始这改变了每个建筑被构建的方式。

在bZx攻击之后,被闪贷攻击就像是在DAO攻击后被重入攻击一样令人尴尬:你不会得到人们的同情。你应该了解这一点。

最后,这些事件让我想到加密货币的一个古老的概念:矿工可提取的价值。矿工可提取的价值是矿工可以从区块链系统中提取的价值。这包括区块奖励和交易费用。但它也包括更多恶意形式的价值提取。例如对交易重新排序或将无赖交易插入区块。

从根本上讲,你应该将所有这些闪贷攻击都视为是在内存池中可以赚取大量金钱的单个交易。例如,第二次bZx攻击产生了价值64.5万美元ETH的收益。如果你一位矿工,你打算开始挖新区块,请想象一下,查看先前的区块交易,并对自己说:“等等,那是什么?当最后一个区块包含64.5万美元的利润时,我为什么还要打算为区区500美元左右的收益挖新区块呢?”你不会选择去扩展区块链,而是回去并试图重写历史,以使自己成为闪贷攻击者。想想看:仅此一笔交易就比4小时诚实地开采以太坊来得多!

这与包含1000倍于常规区块奖励的特殊超级区块是同构的,正如你预期的那样,这样的超级区块的理性结果应该是矿工竞相竞争以孤立链的打赏并为自己偷取该区块。

在均衡状态下,所有闪贷攻击应该最终会被矿工提取。(请注意,他们也应该会最终窃取所有链上套利和清算)具有讽刺意味的是,这会阻止闪贷攻击的发生,既然它会导致攻击者无法利用这些漏洞来获利。或许最后矿工会通过私人渠道征集攻击代码,并向潜在的攻击者支付发现者费用。从技术上讲,可以使用零知识证明无须信任地完成此类操作。

但这一切现在都还是科幻小说。显然矿工今天还没有这么做。

他们为什么不呢?

有大量的原因。它很难,需要很多工作。EVM很难模拟,它有风险,可能会有漏洞导致损失资金或孤块,流氓矿池可能会面临PR危机,被人们冠以“以太坊敌人”的烙印。就目前来看,相对于这么做的收益,矿工可能会在业务、R&D以及孤块上损失更多。

今天是如此。未来不一定永远如此。

这为以太坊提供了另外一个动力,以加速并过渡到ETH2.0。尽管以太坊上的DeFi总是很有趣,但它是绝对和不可撤销的。DeFi在PoW链上不稳定,因为所有高价值交易都受制于矿工的重新分配(也称时间劫匪攻击)。

为了让这些系统大规模运行,你需要最终性——让矿工无法重写已确认的区块。这将保护先前区块的交易免遭重新分配。此外,如果DeFi协议存在于单独的ETH2.0分片中,它们不容易遭到闪贷攻击。

据我估计,闪贷攻击给我们一个小的但有用的提醒,那就是现在还很早期。我们还远没拥有可持续的架构,一个可为未来金融系统构建的架构。

目前,闪贷会是新常态。也许从长期看,所有以太坊上的资产都可用于闪贷:交易所持有的所有抵押品,Uniswap中的所有抵押品,也许所有ERC-20代币本身。

谁知道呢?这只是几行代码的事。

相关问答:

⑽ 走进以太坊网络

目录


术语“以太坊节点”是指以某种方式与以太坊网络交互的程序。从简单的手机钱包应用程序到存储整个区块链副本的计算机,任何设备均可扮演以太坊节点。

所有节点都以某种方式充当通信点,但以太坊网络中的节点分为多种类型。


与比特币不同,以太坊找不到任何程序作为参考实施方案。在比特币生态系统中, 比特币核心 是主要节点软件,以太坊黄皮书则提出了一系列独立(但兼容)的程序。目前最流行的是Geth和Parity。


若要以允许独立验证区块链数据的方式连接以太坊网络,则应使用之前提到的软件运行全节点。

该软件将从其他节点下载区块,并验证其所含交易的正确性。软件还将运行调用的所有智能合约,确保接收的信息与其他节点相同。如果一切按计划运行,我们可以认为所有节点设备均存储相同的区块链副本。

全节点对于以太坊的运行至关重要。如果没有遍布全球的众多节点,网络将丧失其抗审查性与去中心化特性。


通过运行全节点,您可以直接为网络的 健康 和安全发展贡献一份力量。然而,全节点通常需要使用独立的机器完成运行和维护。对于无法(或单纯不愿)运行全节点的用户,轻节点是更好的选择。

顾名思义,轻节点均为轻量级设备,可显著降低资源和空间占用率。手机或笔记本电脑等便携式设备均可作为轻节点。然而,降低开销也要付出代价:轻节点无法完全实现自给自足。它们无法与整条区块链同步,需要全节点提供相关信息。

轻节点备受商户、服务供应商和用户的青睐。在不必使用全节点并且运行成本过高的情况下,它们广泛应用于支收付款。

挖矿节点既可以是全节点客户端,也可以是轻节点客户端。“挖矿节点”这个术语的使用方式与比特币生态系统不同,但依然应用于识别参与者。

如需参与以太坊挖矿,必须使用一些附加硬件。最常见的做法是构建 矿机 。用户通过矿机将多个GPU(图形处理器)连接起来,高速计算哈希数据。

矿工可以选择两种挖矿方案:单独挖矿或加入矿池。 单独挖矿 表示矿工独自创建区块。如果成功,则独享挖矿奖励。如果加入 矿池 ,众多矿工的哈希算力会结合起来。出块速度得以提升,但挖矿奖励将由众多矿工共享。


区块链最重要的特性之一就是“开放访问”。这表明任何人均可运行以太坊节点,并通过验证交易和区块强化网络。

与比特币相似,许多企业都提供即插即用的以太坊节点。如果只想启动并运行单一节点,这种设备无疑是最佳选择,缺点是必须为便捷性额外付费。

如前文所述,以太坊中存在众多不同类型的节点软件实施方案,例如Geth和Parity。若要运行个人节点,必须掌握所选实施方案的安装流程。

除非运行名为 归档节点 的特殊节点,否则消费级笔记本电脑足以支持以太坊全节点正常运行。不过,最好不要使用日常工作设备,因为节点会严重拖慢运行速度。

运行个人节点时,建议设备始终在线。倘若节点离线,再次联网时可能耗费大量的时间进行同步。因此,最好选择造价低廉并且易于维护的设备。您甚至可以通过Raspberry Pi运行轻节点。


随着网络即将过渡到权益证明机制,以太坊挖矿不再是最安全的长期投资方式。过渡成功后,以太坊矿工只能将挖矿设备转入其他网络或直接变卖。

鉴于过渡尚未完成,参与以太坊挖矿仍需使用特殊硬件(例如GPU或ASIC)。若要获得可观收益,则必须定制矿机并寻找电价低廉的矿场。此外,还需创建以太坊钱包并配置相应的挖矿软件。这一切都会耗费大量的时间和资金。在参与挖矿前,请认真考量自己能否应对各种挑战。(国内严禁挖矿,切勿以身试法)


ProgPow代表 程序化工作量证明 。这是以太坊挖矿算法Ethash的扩展方案,旨在提升GPU的竞争力,使其超过ASIC。

在比特币和以太坊社区,抗ASIC多年来一直是饱受争议的话题。在比特币网络中,ASIC已经成为主要的挖矿力量。

在以太坊中,ASIC并不是主流,相当一部分矿工仍然使用GPU。然而,随着越来越多的公司将以太坊ASIC矿机引入市场,这种情况很快就会改变。然而,ASIC到底存在什么问题呢?

一方面,ASIC明显削弱网络的去中心化。如果GPU矿工无法盈利,不得不停止挖矿,哈希率最终就会集中在少数矿工手中。此外,ASIC芯片的开发成本相当昂贵,坐拥开发能力与资源的公司屈指可数。这种现状有可能导致以太坊挖矿产业集中在少数公司手中,形成一定程度的行业垄断。

自2018年以来,ProgPow的集成一直饱受争议。有些人认为,它有益于以太坊生态系统的 健康 发展。另一些人则持反对态度,认为它可能导致硬分叉。随着权益证明机制的到来,ProgPoW能否应用于网络仍然有待观察。


以太坊与比特币是一样,均为开源平台。所有人都可以参与协议开发,或基于协议构建应用程序。事实上,以太坊也是区块链领域目前最大的开发者社区。

Andreas Antonopoulos和Gavin Wood出品的 Mastering Ethereum ,以及Ethereum.org推出的 开发者资源 等都是新晋开发者理想的入门之选。


智能合约的概念于20世纪90年代首次提出。其在区块链中的应用带来了一系列全新挑战。2014年由Gavin Wood提出的Solidity已经成为开发以太坊智能合约的主要编程语言,其语法与Java、JavaScript以及C++类似。

从本质上讲,使用Solidity语言,开发者可以编写在分解后可由以太坊虚拟机(EVM)解析的指令。您可以通过Solidity GitHub详细了解其工作原理。

其实,Solidity语言并非以太坊开发者的唯一选择。Vyper也是一种热门的开发语言,其语法更接近Python。

阅读全文

与以太坊攻击导致下载很慢相关的资料

热点内容
虚拟货币诈骗图片 浏览:136
比特币的现状与发展前景论文 浏览:488
荣耀集团tac数字货币 浏览:163
星火矿池最低多少转账 浏览:421
比特币隔离见证时间 浏览:119
比特币不记名钱包 浏览:747
dais区块链 浏览:825
2019公安部打击虚拟货币平台 浏览:496
比特币减半后会暴跌吗 浏览:190
什么是数字货币和数字钱包 浏览:458
比特币150万转人民币是多少 浏览:670
北京板块数字货币 浏览:159
比特币与数字货币的共性 浏览:572
虚拟货币委托订单是什么意思 浏览:40
禁比特币对中国损失 浏览:162
比特币挖矿机长城电源 浏览:597
手机刷中国比特币 浏览:687
几分钟BTC价格波动 浏览:741
以太坊创办人坐的是什么 浏览:695
查虚拟货币的App 浏览:181