当前位置:首页 » 以太坊知识 » 以太坊客户端消失

以太坊客户端消失

发布时间: 2023-01-17 20:11:57

『壹』 以太坊上的智能合约能不能用rust

以太坊客户端Erigon宣布将结束对Erigon的Rust版本Akula的支持。Erigon团队近期发现,一个基于Rust语言的Ethereum实现将开放源代码,其范围几乎与Akula相同,并有一些相同/相似的构建模块。Erigon团队认为,该项目在开源后将更加受人支持与欢迎,其功能也将很快匹配和超越Akula。 与该项目背后拥有的资源和影响力相比,Erigon无法保证Akula能够吸引未来的资助,因此决定取消对Akula的技术、管理和资金支持。

『贰』 以太坊区块链之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

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

『肆』 怎么接以太坊公链

建立连接以接儒以太坊公链。
一、1、以太坊客户端下载,注意:需翻墙,下载版本为1.8.23-stable,否则可能出现与以太坊钱包客户端存在不匹配问题。
2、以太坊钱包客户端下载。
3、安装以太坊客户端。
二、私有链创建:创建创世区块。
三、安装并启动以太坊钱包客户端。

『伍』 以太坊架构是怎么样的

以太坊最上层的是DApp。它通过Web3.js和智能合约层进行交换。所有的智能合约都运行在EVM(以太坊虚拟机)上,并会用到RPC的调用。在EVM和RPC下面是以太坊的四大核心内容,包括:blockChain, 共识算法,挖矿以及网络层。除了DApp外,其他的所有部分都在以太坊的客户端里,目前最流行的以太坊客户端就是Geth(Go-Ethereum)

『陆』 用Go来做以太坊开发⑤事件日志

智能合约具有在执行期间“发出”事件的能力。 事件在以太坊中也称为“日志”。 事件的输出存储在日志部分下的事务处理中。 事件已经在以太坊智能合约中被广泛使用,以便在发生相对重要的动作时记录,特别是在代币合约(即ERC-20)中,以指示代币转账已经发生。 这些部分将引导您完成从区块链中读取事件以及订阅事件的过程,以便交易事务被矿工打包入块的时候及时收到通知。

为了订阅事件日志,我们需要做的第一件事就是拨打启用websocket的以太坊客户端。 幸运的是,Infura支持websockets。

下一步是创建筛选查询。 在这个例子中,我们将阅读来自我们在之前课程中创建的示例合约中的所有事件。

我们接收事件的方式是通过Go channel。 让我们从go-ethereum core/types 包创建一个类型为 Log 的channel。

现在我们所要做的就是通过从客户端调用 SubscribeFilterLogs 来订阅,它接收查询选项和输出通道。 这将返回包含unsubscribe和error方法的订阅结构。

最后,我们要做的就是使用select语句设置一个连续循环来读入新的日志事件或订阅错误。

我们会在下个章节介绍如何解析日志。

Commands

Store.sol

event_subscribe.go

智能合约可以可选地释放“事件”,其作为交易收据的一部分存储日志。读取这些事件相当简单。首先我们需要构造一个过滤查询。我们从go-ethereum包中导入 FilterQuery 结构体并用过滤选项初始化它。我们告诉它我们想过滤的区块范围并指定从中读取此日志的合约地址。在示例中,我们将从在 智能合约章节 创建的智能合约中读取特定区块所有日志。

下一步是调用ethclient的 FilterLogs ,它接收我们的查询并将返回所有的匹配事件日志。

返回的所有日志将是ABI编码,因此它们本身不会非常易读。为了解码日志,我们需要导入我们智能合约的ABI。为此,我们导入编译好的智能合约Go包,它将包含名称格式为 <Contract>ABI 的外部属性。之后,我们使用go-ethereum中的 accounts/abi 包的 abi.JSON 函数返回一个我们可以在Go应用程序中使用的解析过的ABI接口。

现在我们可以通过日志进行迭代并将它们解码为我么可以使用的类型。若您回忆起我们的样例合约释放的日志在Solidity中是类型为 bytes32 ,那么Go中的等价物将是 [32]byte 。我们可以使用这些类型创建一个匿名结构体,并将指针作为第一个参数传递给解析后的ABI接口的 Unpack 函数,以解码原始的日志数据。第二个参数是我们尝试解码的事件名称,最后一个参数是编码的日志数据。

此外,日志结构体包含附加信息,例如,区块摘要,区块号和交易摘要。

若您的solidity事件包含 indexed 事件类型,那么它们将成为 主题 而不是日志的数据属性的一部分。在solidity中您最多只能有4个主题,但只有3个可索引的事件类型。第一个主题总是事件的签名。我们的示例合约不包含可索引的事件,但如果它确实包含,这是如何读取事件主题。

正如您所见,首个主题只是被哈希过的事件签名。

这就是阅读和解析日志的全部内容。要学习如何订阅日志,阅读上个章节。

命令

Store.sol

event_read.go

首先,创建ERC-20智能合约的事件日志的interface文件 erc20.sol :

然后在给定abi使用 abigen 创建Go包

现在在我们的Go应用程序中,让我们创建与ERC-20事件日志签名类型相匹配的结构类型:

初始化以太坊客户端

按照ERC-20智能合约地址和所需的块范围创建一个“FilterQuery”。这个例子我们会用 ZRX 代币:

用 FilterLogs 来过滤日志:

接下来我们将解析JSON abi,稍后我们将使用解压缩原始日志数据:

为了按某种日志类型进行过滤,我们需要弄清楚每个事件日志函数签名的keccak256哈希值。 事件日志函数签名哈希始终是 topic [0] ,我们很快就会看到。 以下是使用go-ethereum crypto 包计算keccak256哈希的方法:

现在我们将遍历所有日志并设置switch语句以按事件日志类型进行过滤:

现在要解析 Transfer 事件日志,我们将使用 abi.Unpack 将原始日志数据解析为我们的日志类型结构。 解包不会解析 indexed 事件类型,因为它们存储在 topics 下,所以对于那些我们必须单独解析,如下例所示:

Approval 日志也是类似的方法:

最后,把所有的步骤放一起:

我们可以把解析的日志与etherscan的数据对比: https://etherscan.io/tx/#eventlog

Commands

erc20.sol

event_read_erc20.go

solc version used for these examples

要读取 0x Protocol 事件日志,我们必须首先将solidity智能合约编译为一个Go包。

安装solc版本 0.4.11

为例如 Exchange.sol 的事件日志创建0x Protocol交易所智能合约接口:

Create the 0x protocol exchange smart contract interface for event logs as Exchange.sol :

接着给定abi,使用 abigen 来创建Go exchange 包:

Then use abigen to create the Go exchange package given the abi:

现在在我们的Go应用程序中,让我们创建与0xProtocol事件日志签名类型匹配的结构体类型:

初始化以太坊客户端:

创建一个 FilterQuery ,并为其传递0x Protocol智能合约地址和所需的区块范围:

用 FilterLogs 查询日志:

接下来我们将解析JSON abi,我们后续将使用解压缩原始日志数据:

为了按某种日志类型过滤,我们需要知晓每个事件日志函数签名的keccak256摘要。正如我们很快所见到的那样,事件日志函数签名摘要总是 topic[0] :

现在我们迭代所有的日志并设置一个switch语句来按事件日志类型过滤:

现在要解析 LogFill ,我们将使用 abi.Unpack 将原始数据类型解析为我们自定义的日志类型结构体。Unpack不会解析 indexed 事件类型,因为这些它们存储在 topics 下,所以对于那些我们必须单独解析,如下例所示:

对于 LogCancel 类似:

最后是 LogError :

将它们放在一起并运行我们将看到以下输出:

将解析后的日志输出与etherscan上的内容进行比较: https://etherscan.io/tx/

命令

Exchange.sol

event_read_0xprotocol.go

这些示例使用的solc版本

『柒』 区块链0216早报|李礼辉央行数字货币将改变全球货币体系格局

Coinbase Support官方推特表示,发送ETH和ERC20加密货币时出现了延迟情况。团队正在努力修复,一旦解决了这个问题,任何延迟的发送都将完成。

以太坊创始人V神在推特上介绍了以太坊信标链第一个硬分叉(暂定名为“HF1”)升级提案。V神称,HF1添加了轻客户端支持,简化了规范,提高了效率,并引入了惩罚性较小的不活跃泄漏机制。根据文件,硬分叉将使开发人员可以对最近发布的信标链进行一些关键的升级,也将成为将来进行更深层更改的有用测试。其中轻客户端支持对资源的要求最低,并且可以在移动设备上运行的节点。这将允许“最小化信任的钱包”能够自己验证区块链,而不是依赖于外部服务提供者。

隐私币Verge(XVG)在周一遭受了51%攻击后,进行了560000个区块链重组。CoinMetrics的Lucas Nuzzi表示,超过200天的代币交易 历史 记录已被删除。(U.Today)

特斯拉董事会成员Antonio Gracias同时也是数字资产托管公司BitGo和加密货币交易平台ErisX的董事。不过暂不知道Antonio Gracias是否参与特斯拉的15亿美元比特币投资决策。Antonio Gracias是投资公司Valor Equity Partners的创始人。早些时候,Gracias投资了证券型通证平台Harbor,该平台去年被BitGo收购。(Decrypt)

2月16日,Glassnode数据显示,至少持有0.1枚ETH的地址数量超过400万,达4,000,236个。

Mask Network 官方宣布已于近日正式完成新一轮 300 万美元的融资,由 DCG(Digital Currency Group) 领投,参投机构有 Fundamental Labs、隆领投资、Animoca Brands、Moonwhale Ventures、Block0、3Commas、AHP Investments 等;个人投资者包括饿了么联合创始人汪渊、知名科幻作家陈楸帆、Max Webster、Qiao Wang 以及 Imran Khan 等。此轮融资完成之后, Mask Network 也将于近日完成其治理代币 $MASK 的发行。据此前报道, Mask Network 已于完成了上一轮 200 万美元的融资,该轮融资由 HashKey 以及 Hash Global 联合领投。Mask Network(原名Maskbook )是一个帮助用户从Web2.0无缝过渡到Web3.0的桥梁。它允许用户在传统社交巨头的平台上,无缝发送加密信息、加密货币,甚至是去中心化应用(比如DeFi 、NFT和DAO)。

2月16日消息,平面设计师David Rudnick以近20000美元的价格在NFT市场Zora上出售了情人节NFT。(Decrypt)

Yearn.Finance官方刚刚发推称,即将在治理论坛上讨论新的潜在YIP,以暂时将Multisig(多重签名)的授权延长3个月。据悉,现有的授权将于2月24日到期。

吉大正元在互动平台上表示,公司技术储备中包括区块链技术,区块链技术是分布式数据存储、点对点传输、共识机制、加密算法技术的新型应用模式,以密码学方式保证的不可篡改和不可伪造的分布式账本,通过研究区块链技术,寻找PKI技术在区块链中的创新应用模式,尝试将国密算法引入到区块链算法中,实现区块链密码技术国产化方案。

据The Daily Hodl消息,,投资公司CoinShares的首席战略官Meltem Demirors表示,随着围绕第二大加密货币资产的FOMO爆发,机构投资者开始涉足以太坊,上周,有约1.75亿美元流入了以太坊投资产品,我们从未见过像以前那样的机构兴趣,并且企业正在分配比特币以外的其他加密资产,以降低旗舰加密货币带来的风险。

PolkaPets(波卡宠物)宣布四个合作伙伴,包Phala Network、Evolution Land(Darwinia)、Bridge Mutual和BondDex(Bondly Finance)加入PolkaPets世界。四个合作伙伴将于美国东部时间2月17日16点(北京时间2月18日5点)在BondSwap发售PolkaPets NFT。发行指标限量800张,其中400张保留作为将来之用。用户可以使用WETH和$BONDLY代币购买(每个$BONDLY代币的价格将在销售当天挂钩)。据悉,PolkaPets TCG是一种NFT纸牌 游戏 收藏,每个纸牌体现为一个艺术化的动物,代表PolkaPots生态系统中的一个特定项目。这些动物的性格、能力、行为和力量与其所代表的Polkadot项目的特定角色和愿景有关。

据CoinDesk消息,资产管理公司Alpha Innovations和Arcanum Capital合作推出了一只规模为1000万美元的风险投资基金,专注于推动新兴市场的区块链创新发展。该基金名为Arcanum Emerging Technologies,预计将于2月底完成初步投资。

据Cointelegraph消息,Coinbase前首席技术官Balaji Srinivasan表示,印度即将实施的加密货币禁令就类似于禁止互联网,可能使该国损失数万亿美元的潜在利润。且这会将交易收入转移到附近的亚洲市场,对印度来说是个错误。

据CoinDesk消息,泰国证券交易委员会(SEC)本月将举行听证会,以评估应该对开设新加密货币交易账户的散户投资者施加什么样入场条件。该举措是由于监管机构担心投资者的资金安全。因为最近加密货币价格急剧上涨,导致本地交易所注册人数激增。监管机构的目标是确定新加密货币投资者是否有足够的经验,以及是否有足够的财务资金来对抗与加密货币交易和价格波动相关的风险。

据Whale Alert数据显示,北京时间2月15日21:37,Tether公司在以太坊网络新增发4亿枚USDT。交易哈希为

英国加密货币交易所Exmo官方推特表示,平台现在正受到DDoS攻击,服务器暂时不可用。官方正在解决这个问题。

2月15日,据最新数据显示,波场DeFi总锁仓值(TVL)已突破13亿美金。据悉,波场 TRON 以推动互联网去中心化为己任,致力于为去中心化互联网搭建基础设施。旗下的 TRON 协议是全球最大的基于区块链的去中心化应用操作系统协议之一,为协议上的去中心化应用运行提供高吞吐,高扩展,高可靠性的底层公链支持。波场 TRON 还通过创新的可插拔智能合约平台为以太坊智能合约提供更好的兼容性。

据QKL123行情显示,ETH重回1800美元,现报1807.34美元,24小时涨幅为0.41%。

链闻消息,据《南华早报》报道,中国香港拟议的虚拟资产服务提供者发牌制度或于年内提交香港立法会。此前香港特区政府发布「建立虚拟资产服务提供者发牌制度」的相关建议咨询流程已在 1 月底结束,预计这项建议将会变成法案,并在今年晚些时候提交香港立法会。该文件还包括一项提议,扩大在香港以外任何地方从事政治活动人物的尽职调查,包括将来自中国大陆的官员纳入范围。...

摩根大通根据估值、头寸和价格动能评估跨资产投资者自满程度的指标正在接近互联网泡沫破裂以来的最高水平。赚快钱的情绪今年已经有所显现,例如比特币挑战50000美元关口,*****公司受到热捧,对廉价股票打起投机战等。新年以来,全球股市市值增加了7万亿美元,数字货币涨势猛烈,市值达到1.4万亿美元,高收益债券的发行量也创出纪录。尽管这一切都引发了人们对各类资产的估值恐难以为继的担忧,但投资者继续投入资金,因为相信空前的货币和财政宽松将在一段时间里维持市场的热度。摩根大通的策略师们似乎也对此表示赞同。他们说,尽管现在可能会出现“停顿”,但没有理由认为由释放数万亿美元资金所引发的涨势会出现实质性的回落。

2月15日,有推特网友发推建议特斯拉创始人埃隆·马斯克(Elon Musk)开发一个新代币ElonCoin,提供给现有的Dogecoin非主要持有者,以清空他们的钱包。你不需要花美元让那些狗狗币主要持有者变得比现在更富有,并分配你的时间和支持让ElonCoin成为地球上的货币。对此,马斯克回应称:“只有在必要时(考虑)”。今日早间,埃隆·马斯克发推谈及狗狗币。他表示,“如果主要的狗狗币持有者出售他们的大部分代币,将得到我的全力支持。在我看来,过于集中是唯一真正的问题。”

链闻消息,预言机项目 Umbrella Network 更新其原生代币 UMB 的代币经济模型。在代币分配上,最初 Umbrella Network 将 2/3 的代币直接分发给社区,考虑到开发成本、合规、营销和其他成本的,因此将早期建设者的分配比例增加到 15%,分配给社区调整至总发行量的 60%。...

Filecoin核心开发者Why在Slack频道中发布关于将NFT添加到Filecoin网络的想法,引发社区讨论。Why表示:我们可以在Filecoin中添加NFT Actor,允许人们像在以太坊上面那样铸造和交易NFT资产。Filecoin可以原生地支持NFT,并存储在网络中。NTF还可以有一些特殊的机制,比如可以通过某种方式自动验证客户端数据。这意味着任何人铸造的NFT基本上都会立即由网络免费存储。Why在与社区沟通中强调,Filecoin支持原生NFT的功能需要在网络升级中添加,整体的工作量并不小。

链闻消息,火币全球站发布 2021 年 1 月份 HT 运营月报显示,1 月份火币共销毁 1097.02 万枚 HT,约 5816.52 万 USDT,销毁金额环比 12 月份上升 116.2%,HT 当月流通盘通缩率约为 4.01%,HT 持有用户数环比 12 月增长约 7.88%。...

链闻消息,由以太坊官方推出的储存和通讯基础设施 Swarm 宣布将对已在测试网上运行 Bee 节点的地址空投 100 万枚 BZZ 代币,旨在奖励早期使用者和对网络进行压力测试等。官方表示,已证明与受信任的「Queen Bee 节点(qBZZ 节点)」交换了带宽的节点将获得空投资格。此外,Swarm 主网预计在 2021 年上半年上线,空投将在主网上线前结束。在主网正式上线之前,用户需要从 qBzz 节点兑现支票来接收代币。...

链闻消息,日本金融巨头 SBI Holdings 正在与外国金融公司进行谈判,以建立一家加密货币合资企业。SBI Holdings 首席执行官北尾吉孝(Yoshitaka Kitao)表示,该公司旨在扩大业务,将其作为盈利能力的核心支柱。其指出,目前至少有两笔讨论建立加密货币合资企业的交易,但拒绝透露可能的合作伙伴。

链闻消息,根据 ZKSwap 浏览器数据,ZKSwap 主网上线 18 小时,Layer 2 账户锁定资金超过 7000 万美元,流动池子超过 6000 万美元。官方表示,此前由于无法估计 Gas Limit 造成 USDT 无法充值的问题现已修复,团队也正进一步迭代版本,提升用户体验。主网上线约 2-3 日之后,将陆续启动流动性挖矿(PoL)、交易挖矿(PoT)、锁仓挖矿(PoS)和 Gas 费挖矿(PoG)等活动。

链闻消息,跨链 DeFi 协议 Kava 将推出用户资产安全保护基金 Kava SAFU 基金(Secure Asset Fund for Users),通过对 Kava 上的部分基础设施和跨链活动进行保险承保,为 Kava 用户资产提供额外的保障。

链闻消息,专门销售被盗支付卡数据的暗网市场 Joker's Stash 已于 2 月 15 日正式关闭,根据区块链分析公司 Elliptic 发布的报告指出,该平台匿名创始人 JokerStash 在关闭平台前已赚取逾 10 亿美元的利润。Elliptic 还透露,该数值是根据平台多年来的收入以及所有费用得出的保守计算。...

链闻消息,DeFi 期权平台 Premia Finance 已通过首次公募筹集到 19194.888 枚 ETH (约 3373 万美元),总代币供应量的 10%( 1000 万枚 Premia 代币)将分配给参与公募的用户,随后公募代币份额将按比例进行分配。链闻注,Premia Finance 是由匿名开发团队推出的新 DeFi 期权平台,用户将能够买入、出售和行使美式看涨和看跌期权。Premia 还将推出一个类似于「流动性挖矿」的「交互挖矿」活动,购买和出售期权的用户将「按支付给协议的费用的比例」获得 uPremia 代币。uPremia 不可转让的,但可以被抵押以赚取协议费,这些费用将以代币的形式分配给抵押人。

链闻消息,加密货币交易平台 BitMax 将上线去中心化算法稳定币项目 MahaDAO, 并于 2 月 15 日 22 时开放 MAHA/USDT 交易,23 时开放 ARTH/USDT 交易,充提现已开放。...

链闻消息,DeFi 固定利率生成协议 88mph (MPH)表示,其 API 达到了帐户限制,因此 88mph.app 显示当前的利率为 0,现问题已修正。

联合调查表明,黑客实施攻击需要内幕信息。且由于涉及协议和审计公司的范围,内幕人士可能有多个可能。

链闻消息,DeFi 保险项目 Cover Protocol (COVER)已发布智能 DeFi 收益聚合器 BT.Finance 索赔方案,并通过了社区和 CVC 验证。赔偿方案具体表现为:赔付黑客攻击中损失的 140,906 枚 DAI 的 60%,1 枚 CLAIM 代币可兑换 0.6 枚 DAI;1 枚 NOCLAIM 代币可兑换 0.4 枚 DAI。赔付完成时间为 8 天,包括 2 天的兑换延迟期。...

链闻消息,Cosmos 创始人 Jae Kwon 宣布从 Cosmos 网络软件开发公司 AIB (All in Bits)及 The Interchain 基金会(ICF)离职,全职开发 Gno 智能合约语言。The Interchain 基金会是位于瑞士的非盈利基金会以支持 Cosmos 的生态建设,而 AIB 是负责开发 Cosmos 网络的软件开发公司,这意味着 Cosmos 创始人 Jae Kwon 将离开 Cosmos 生态中最核心的支持机构。Jae Kwon 表示,Gno 是适用于 Cosmos 生态的下一代的智能合约编程语言。

链闻消息,亚马逊 AWS、微软、Google、华为和 Mozilla 宣布成立 Rust 语言基金会,承诺两年内投入 100 万美元预算,支持 Rust 项目维护者开发 Rust。链闻注,Rust 是一种在加密货币领域受欢迎的编程语言,以太坊客户端 Parity Ethereum、比特币网络库 Rust Bitcoin 等多个项目均使用 Rust 语言实现。

7:00-12:30关键词:灰度、德意志银行、美国财政部、马斯克 1.灰度计划在2021年将员工数量再增加一倍; 2.德意志银行计划提供加密托管和大宗经纪服务; 3.Bitcoin Advisory创始人:美国财政部已持有7万枚BTC; 4.亿万富翁MarkCuban:ETH比BTC具有更大的价值存储优势; 5.《黑天鹅》作者:比特币是个败局,一直在卖出比特币; 6.神秘地址持有狗狗币27%市场供应量,社区成员推测该地址或属于马斯克; 7.马斯克和比特币登上《金融时报》周末版封面。

在世界经济论坛一份报告中显示,德意志银行已经加入了越来越多的大型金融机构 探索 加密货币托管的行列,并希望为投资该资产类别的对冲基金提供高接触服务。德意志银行数字资产托管原型旨在开发“一个完全集成的托管平台,为机构客户及其数字资产提供与更广泛的加密货币生态系统的无缝连接”。该银行表示,这项服务将针对资产管理公司、财富管理公司、家族理财室、企业和数字基金。在业务模式方面,德意志银行表示,将先收取托管费,然后对代币化和交易收取费用。(Coindesk)

链闻消息,Tezos 核心开发者 Nomadic Labs 在 Edo 的新票证功能中发现了一个关键漏洞。Edo 是 Tezos 协议的新版本,预计将于 2021 年 2 月 13 日发布。发现漏洞后,Tezos 最终选择在 2 月 10 日发布一个 v8.2 修复版本,其中包括 Edo 的补丁。官方表示,运行 v8.2 的节点将自动采用补丁版本,而非原始版本的 Edo。其要求任何节点需立即将其升级为 v8.2 新版本,运行 v8.1 或更早版本的节点将无法与新链通信。

Alpha Finance 提出了一种较为安全获取 LP Token 价格的方法,使针对数量进行控制的攻击变成不可行或成本非常高。

链闻消息,以太坊 2.0 客户端 Nimbus 发布 v1.0.7 版本,它提供了额外 slashing 保护服务,并进一步提高了性能。该版本还引入了 BLS 签名验证的优化批处理(更快的同步速度和减少 CPU 负载),并进一步改进了子网漫游证明(减少带宽和 CPU 使用)。链闻此前报道,Nimbus 曾于 2020 年 11 月发布 v1.0.0 候选版本,以支持以太坊 2.0 创世区块启动。

链闻消息,高性能公链 Solana 宣布已正式启动启动以太坊双向跨链桥 Wormhole,允许用户将 ERC20 代币转换成 Solana 的 SPL 标准代币,以用于 DeFi 应用中。Wormhole 允许用户将 ER20 代币锁定在以太坊智能合约中,并在 Solana 上铸造相应的 SPL 代币。为了实现这一目标,它将依赖于一系列名为「守护者」的「跨链预言机」,该「预言机」将由一组节点运营商来组成,这些运营商包括顶级 Solana 验证者节点以及其他系统的利益相关者,与 Solana 和 Serum 的利益高度一致。官方表示,在未来几周内,Wormhole 还将增加对 Terra 的支持,并将其升级为三向跨链桥。此外,Solana 还将与钱包团队合作,将 Wormhole 支持的跨链转移集成到应用程序中。

这其实就是 FRI 协议的核心思想,下面,让我们来详细介绍 FRI 协议的过程。

链闻消息,波卡生态基础协议 Bifrost 宣布已成功集成跨链 DEX 协议 Zenlink 跨链模块,并基于 Rococo V1 实现了平行链间的跨链资产转移,同时发布了跨链资产转移的演示视频。链闻此前报道,2020 年 12 月,Bifrost 宣布与 Zenlink 达成合作,双方将围绕波卡 Staking 流动性与 DEX 进行深入合作,包括提供技术支持、社区合作、生态建设、市场拓展等方面。此外,Bifrost 将与 Zenlink 在 Rococo V1 上 探索 合作,通过集成 Zenlink DEX mole 的方式优化 vToken 的交易体验。

Nodle 通过软件和连通性证明算法来扩展网络,该算法基于基站数量、网络带宽和地理覆盖范围。

企业以太坊联盟(EEA)调查开发者使用的智能合约语言、开发工具、客户端。

为什么说 ChainAPI 是对预言机 API 市场 Honeycomb 的一次重大迭代?

如果你不满足于 DODO Vending Machine,想要以下几个特性:*能不能支持单边充提***能不能随时改变价格曲线***能不能让价格从零到无穷大分布**那么 DODO Private Pool 就是最适合你的产品。这是一个极度灵活,能满足专业人士需求,同时简单易用的产品。我们之 ...

铸币功能、白名单功能和冻结功能。

『捌』 以太坊扩容方案ETH

以太坊扩容方案 Optimism 宣布将于 10 月推出一键部署功能,将在下一次主网升级中放弃自定义 Solidity 编译器,一些无法解决自定义编译器的项目将可以在不修改其代码的情况下部署在 Optimism。团队表示,Optimistic 将与对现有以太坊客户端代码(Geth)紧密耦合,可以引入对以太坊所做的任何改进,例如将能够快速引入主要的硬分叉。此外, 团队推出了 Optimistic 规范存储库,正在收集此设计相关的所有文档。

以太坊 Layer 2 扩容方案 Optimism 宣布将升级成为 EVM 全兼容,升级后任何编写了以 Geth 为目标的代码的人现在都可以不加修改地进行合约部署,预计一键部署功能将于 10 月推出。 升级后,任何可以在以太坊上运行的工具都将在也被允许在 Optimistic Ethereum. 上运行。这意味着用户将可以在 L2 上使用 DappTools、Vyper、Tenderly 以及 Hardhat。

9 月 18 日,Yearn.finance 的核心开发者「banteg」发推文表示,SushiSwap Launchpad 平台 MISO 攻击者归还全部 865 ETH。据以太坊区块浏览器 Etherscan 显示,此前攻击 SushiSwap Launchpad 平台 MISO 的攻击者向 SushiSwap 归还了 800 ETH ,该操作分为两笔交易,第一笔归还 100ETH,第二笔归还 700ETH,SushiSwap Launchpad 平台 MISO 上 Jay Pegs Auto Mart 项目的 DONA 代币拍卖遭到攻击,攻击者向 MISO 前端插入了恶意代码,将拍卖钱包地址改为了自己的钱包地址,损失目前已达 865 ETH (约 307 万美元)。

『玖』 DApp开发入门

本文仅介绍以太坊系列的DApp开发,其他链原理差不太多。

MetaMask安装完成并运行后,可以在Chrome控制台打印 MetaMask注入的window.ethereum对象

关于ethereum对象,我们只需要关心 ethereum.request 就足够了,MetaMask 使用 ethereum.request(args) 方法 来包装 RPC API。这些 API 基于所有以太坊客户端公开的接口。 简单来说钱包交互的大部分操作都是由 request() 方法实现,通过传入不同的方法名来区分。

⚠️ 即使ethereum对象中提供了chainId,isMetaMask,selectAddress属性,我们也不能完全相信这些属性,他们是不稳定或不标准,不建议使用。我们可以通过上面说的request方法,拿到可靠的数据

钱包通过method方法名,进行对应的实现 以获取钱包地址为例

调用 ethereum.request({ method: "eth_requestAccounts" }) ,钱包实现了该方法,那么就可以拿到钱包的地址了。

MetaMask注入的 window.ethereum 就是一个Provider,一个RPC节点也是一个Provider,通过Provider,我们有了访问区块链的能力。 在连接到钱包的情况下,通常使用钱包的Provider就可以了, ethers.providers.Web3Provider(ethereum)

如果只需要查询一些区块链数据,可以使用EtherscanProvider 和 InfuraProvider 连接公开的 第三方节点服务提供商 。JsonRpcProvider 和 IpcProvider 允许连接到我们控制或可以访问的以太坊节点。

获取当前账户余额

获取最新区块号

其他RPC操作,可以通过 JSON-RPC 查看。

通过 ethers.js 可以连接ERC20的合约,合约编译后会生成ABI,合约部署后,会生成合约地址,开发者通过 ABI和合约地址 ,对合约发送消息。

合约中的方法大致分为两种: 视图方法(免费),非视图方法(消耗Gas) ,可以通过ABI查看方法类型。

⚠️ ERC20需要多加关注的是 Approve() 方法以及 transfer() 和 transferFrom() 的区别 ,授权过的代币,被授权的那一方,可以通过调用 transferFrom() 方法,转走你授权数量内的代币,所以授权是一个很危险的操作,假设你授权了一个不良的合约,那你会面临授权的token被转走的风险,即使你没有泄露私钥助记词。

便利三方库: web3-react use-wallet

文档: doc.metamask.io ethers

『拾』 选择以太坊客户端

有很多以太坊客户端供我们选择。我们推荐在开发和部署时使用不同的客户端。

我们推荐 Ganache ,它是一个运行在你个人电脑上的私有连客户端。它是 truffle 套种中的一部分,
Ganache 将智能合约和交易放在前台并且中心化,从而简化了dapp的开发。使用 Ganache 你可以
快速查看你们的应用是如何影响区块链的,并且对账户,余额,智能合约创建以及燃料消费进行自省。

Ganache 运行在 http://127.0.0.1:7545 。默认会创建是个账户,重启后账户依然不会变,
当然也可以手动随机账户,你也可以用你自己的账户。

我们同样也推荐使用 truffle develop ,它是 truffle 内置的开发链工具。不需要任何的额外安装,
你要使用它只需要一条命令行即可:

Truffle Develop 运行在 http://127.0.0.1:9545 上。

当你的开发机没有图形界面时就无法直接使用 Ganache ,而 Ganache CLI 就提供了没有图形界面系统的能力。

有很多官方和非官网的以太坊客户端你可以选择。以下是部分:

热点内容
轻松筹平台区块链 发布:2024-11-19 08:28:52 浏览:933
怎么查比特币在哪个账户 发布:2024-11-19 08:20:14 浏览:494
百度区块链宠物知乎 发布:2024-11-19 08:06:03 浏览:117
区块链营销证书 发布:2024-11-19 08:05:26 浏览:417
比特币94行情 发布:2024-11-19 07:57:50 浏览:80
如果出租户违约怎么结束合约 发布:2024-11-19 07:50:21 浏览:239
usdt电子钱包怎么开通 发布:2024-11-19 07:50:19 浏览:933
激战二酷寒前线挖矿 发布:2024-11-19 07:47:22 浏览:507
学生爱去的广州的购物中心 发布:2024-11-19 07:37:05 浏览:661
怎样调节trx4舵机行程量 发布:2024-11-19 07:24:08 浏览:775