在本文中,我们将重点介绍以太坊上复杂的交易生命周期;开发者在这些情况下尝试让 dapp 提供理想的用户体验的挑战;以及 dfuse 是如何帮助突破这些挑战的。
每当一笔交易提交到以太坊网络上时,它会经历一系列相当复杂的状态,而并非每个状态转换都是向前的——交易可能回滚到较早的状态、可能被另一个交易替换、还可能完全分叉。(下文中会详细描述交易的生命周期。)
在 dapp 中跟踪交易的进程并为用户提供良好的体验是具有挑战性的。如今,许多基于以太坊的 dapp 都可以提供吸引人但还是相对静态的用户体验:应用能显示某个时间点上的交易状态,但必须通过刷新(点击刷新或 dapp UI 定期刷新页面)才能得到信息的更新。市面上有相对更动态的接口,但提供的数据粒度还是不够细,或者/同时以高网络流量为代价,在其底层区块链节点上施加高负载。
接下来我们讨论下造成这种情况的原因,以及如何以高效利用网络和服务器的方式、细粒度的交易状态更新在 dapp 中提供符合现代标准的、流畅的用户体验。
拜登:美国人民和美国企业可以放心,他们的银行存款会在他们需要的时候出现:3月13日消息,硅谷银行爆雷影响正迅速蔓延,拜登当地时间12日晚发推就银行信任危机发声欲提振美国人信心。拜登先是转发美国《纽约时报》报道并发推称,“在我的指示下,耶伦部长和我的国家经济委员会主任与银行监管机构进行合作,以解决硅谷银行和签名银行的问题。我很高兴他们达成了保护工人、小企业、纳税人和我们金融体系的解决方案。”
他随后继续称,“美国人民和美国企业可以放心,他们的银行存款会在他们需要的时候出现。”他还表示:“我坚定承诺,要让那些应该对这场混乱负责的人承担全部责任,并继续努力加强对大型银行的监督和监管,这样我们就不会再次陷入这种境地。”[2023/3/13 13:00:41]
当今的 Dapp 接口
每个 dapp 都需要向用户显示正在执行的交易的区块链底层信息——无论是 Ether 转账、代币转账还是智能合约调用,而当下的许多 dapp 的界面显示这些信息的时候显示的是区块链在单个时间点上的状态。
用户在交易过程中经常需要更新信息(例如,知道转账什么时候完成了),因此 dapp 会在界面上放一个 “刷新” 按键(或定期自动为用户刷新页面),或者用户需要直接点击浏览器的刷新按钮来获取更新。
有些用户体验更成熟的 dapp 会向用户显示交易的动态更新。它们会在后台轮询 AJAX 请求,重复检查其以太坊节点是否有更新,然后将更新发布到前端。这么做是非常复杂的,因为 dapp 必须进行大量 API 调用,查询许多不同的数据源(包括区块、内存池和网络条件),从而才能从头到尾的跟踪交易的生命周期。
Iris Energy面临1.03亿美元设备贷款的违约索赔:金色财经报道,比特币矿企Iris Energy(IREN)周一表示,该公司正面临其贷款人的索赔,称其拖欠了两家特殊目的载体(SPV)持有的1.03亿美元设备贷款。根据周一提交给美国证券交易委员会的文件,债权人于11月4日向该矿企发出违约通知。周一提交的文件称,由于Iris未能参与此类讨论,债权人声称其拖欠了原定于10月25日的付款。鉴于此,债权人希望触发一项加速条款,即要求立即支付全部本金和应计利息。
该公司表示,截至9月30日,两笔有问题的贷款的本金金额分别为3,200万美元和7,100万美元,分别以1.6 EH/s和2.0 EH/秒的采矿机器为担保。该债务由两家全资拥有的无追索权SPV持有,这意味着在违约情况下,出借方将能够没收Iris Energy除抵押品以外的任何资产。(coindesk)[2022/11/8 12:29:32]
这种处理方式会有弊端:要么交易的更新不频繁、信息粒度大,导致用户想去重复点击“刷新”而去更快地获取更新;或者 dapp 必须高频轮询区块链,从而产生大量网络流量,在底层区块链节点上施加高负载。
新西兰板球协会与Dream Sports合作,将发布NFT系列和手游:7月21日消息,新西兰板球协会(NZC)与印度在线游戏独角兽Dream Sports达成五年许可协议后,将发布一系列NFT和手机游戏。
这些数字收藏品将由总部位于新加坡的板球NFT平台Rario开发。手机游戏将由Dream Sports旗下游戏开发部门Dream Game Studios开发。(Sportbusiness)[2022/7/21 2:29:01]
为什么不使用基于链上事件的接口?
对于 dapp 开发人员,做静态页面或轮询一直是仅可用的两个选项,这反映了以太坊节点提供的 API 的性质。如果有一个基于链上事件的接口,可以接收推送到链上的交易状态更新并实时反馈用户,dapp 才能提供更好的用户体验——而标准的以太坊节点并不提供丰富的实时交易数据。
以太坊节点确实提供了链上事件的流读取功能,但功能有限,只能通过使用以太坊的 JSON-RPC 接口的 PUB/SUB 功能才可用(在使用 GraphQL 时不可用)。PUB/SUB 接口允许 dapp 接收一些事件类型的通知:
newHeads——每次新的区块 header-ukjx 附加到链上
logs——根据指定的条件过滤匹配包含在新导入的区块中的日志
上海文旅局局长:正抢抓元宇宙新赛道:金色财经报道,上海市文化和旅游局局长方世忠透露,上海正积极抢抓和布局元宇宙新赛道,联合相关企业、平台和研究机构,深化元宇宙在文旅产业层、应用层的系统研究,加快编制上海市培育文旅元宇宙新赛道的三年行动方案,明确发展目标、重点任务和保障措施,构建一批文旅元宇宙的“上海场景”,制订若干文旅元宇宙的“上海标准”,激发文旅新活力,提升文旅新体验。(澎湃)[2022/7/19 2:24:04]
newPendingTransactions——进入待处理状态并被节点中可用密钥签名的所有交易的哈希(而这种情况在公共节点上很少见)
syncing——指示节点何时开始或停止同步
根据这些事件类型获取信息很受限,dapp 无法通过它们跟踪交易的完整生命周期。
以太坊交易生命周期
以太坊交易是有复杂的生命周期的。每个交易都会经过多个的 state (状态),在整个过程中经历各种 state 的变更,可能前进也可能回滚。
FalconX正式成为TRON DAO Reserve的第七位成员和白名单机构:据官方消息,FalconX正式成为TRON DAO Reserve的第七位成员和白名单机构。
FalconX 是为金融机构打造的可靠的机构加密交易平台。FalconX 通过无缝的价格发现和交易执行策略,以零滑点和零隐藏费用,为机构客户简化数字资产的复杂格局。
波场联合储备(TRON DAO Reserve)由波场网络牵头成立,主要目的为保护区块链行业与市场,缓解极端与长期下行行情,解决金融危机来所带来的恐慌性问题。同时,波场联合储备也将作为初期托管人来维护波场去中心化稳定币 Decentralized USD (USDD) 的权限管理并以其储备金融资产担保,保证 USDD 汇率稳定。[2022/5/28 3:47:07]
交易状态
以太坊交易从提交上链到(在一定的成功几率下)入块,它会经历如下的一系列状态:
UNKNOWN (未知):一个未被网络检测到或未被处理的交易被定义为处于 UNKOWN 状态。
PENDING (待处理):交易在等待矿工拣选和处理,位于我们所称的 mempool (内存池)中。矿工通常会首先选择 gas 价格较高的交易,因此 gas 价格较低的交易可能会长期处于 PENDING 状态。Gas 价格最低的交易可能永远都不会被选中,那就会导致它们无限期地处于 PENDING 状态。
IN_BLOCK(入块):当矿工成功选择交易并将其处理进入区块,交易将进入IN_BLOCK 状态。如果交易进入 IN_BLOCK 状态,但它所在的区块分叉了,则交易可能回到 PENDING 状态。
REPLACED(被替换):在以下两种情况下,交易可以从 PENDING 状态变为 REPLACED 状态:
另一笔来自同一发送者且有相同 nonce 的交易进入了 IN_BLOCK 状态,或
另一笔来自同一发送者且有相同 nonce 但 gas 价格高出12%的另一笔交易进入了 PENDING 状态
下图显示了这些状态以及它们之间的过渡。
States(状态)转换
如上图所示,状态之间的转换也是有名称定义的。
POOLED(入池):处于 UNKOWN (未知)状态的交易进入等待矿工选择的交易池,被称为 POOLED 并进入 PENDING (待处理)状态。处于 REPLACED(被替换)状态的交易,如果替换条件不再成立(例如:在极少数情况下,处于 IN_BLOCK (入块)的低 gas 价格的交易被分叉,而替代它且具有相同 nonce 和发送者的交易仍在网络上游动),则也有可能再次变为 POOLED 状态。
MINED (被挖矿):被挖矿的交易是由矿工处理过的交易,这过程会创建一个区块。一旦被挖,交易就被算做处于 IN_BLOCK (入块)状态。由于以太坊网络的点对点性质,从一个指定节点的角度监测,交易可以从 UNKNOWN (未知)状态直接进入到 IN_BLOCK (入块)状态,无需明显地通过 PENDING (待处理)状态。出于相同的原因,从一个指定节点的角度监测,交易也可以不通过 PENDING (待处理)状态而直接从 REPLACED(被替换)状态转换为 IN_BLOCK (入块)状态。
REPLACED(被替换):从 PENDING (待处理)状态进入到 REPLACED 状态的交易也被称为 REPLACED。请参见文中交易状态中列出的 REPLACED 状态。
FORKED(被分叉):当已被挖的交易处于被网络撤消的区块中时,就是产生了被分叉的交易。那个区块内的所有交易将接连被分叉,从 IN_BLOCK (入块)状态转回到 PENDING (待处理)状态。
CONFIRMED(已确认):处于 IN_BLOCK (入块)状态的交易会在每次它后续的子区块被挖时而被确认。
如上所述,以太坊上的交易的生命周期是非常复杂的,这使得 dapp 很难去准确的跟踪它并向用户提供无缝式、流畅的更新。
毫不费力地跟踪交易状态
dfuse 平台为提供了一个丰富的、能够串流监听的接口,该接口支持实时详细跟踪以太坊交易的生命周期。dfuse 以太坊交易状态跟踪器 API 使开发人员能够提交以太坊交易,然后在同一数据通道上即刻获取精细的状态更新,跟随交易在其整个生命周期中的进展。
使用 GraphQL,您可以实时监听指定类型交易的变化,同时可以精确指定每次交易发生变化时您想收到的数据。dfuse 平台处理了跟踪交易这项工作的复杂性,并会在事件发生时实时传输给 dapp。
这样一来,您无需撰写和运行复杂的后台逻辑和重复进行轮询,也不会浪费带宽和多次运行同样的查询。简单地监听您所需的更新,然后在界面中把这些更新反馈给用户。
下面的动图展示的是一个经历了这种复杂生命周期的交易——它经历了八个状态转换,最后才被包含在区块中并得到确认。
如果没有使用 dfuse,dapp 则必须一次次的访问区块链以捕获交易经历的所有转换再更新给用户,并且后端代码需要去准备好应对每个状态转换。
使用 dfuse,dapp 仅需要通过单个连接获取串流更新,dfuse 会为您跟踪交易经历的各种曲变化,直到它的命运被最终确定。
为先进的 Dapp 提供的现代化平台
Lifecycle (生命周期) API 只是 dfuse 平台的重要的一小部分。dfuse 为 dapp 提供了完整的现代化基础架构层,即:
快速,
可扩展,
提供对区块链事件的高度精细的串流监听,
支持主动的 Webhook 形式的回调,
具有业内最高的可靠性。
如果你在比特币领域较长时间了,你可能已经听说过非洲将是下一个比特币被采用的国家。币安研究报告称,在尼日利亚和南非,比特币的谷歌搜索热度排名大幅上升.
1900/1/1 0:00:00印度最高法院发布了人们期待已久的关于印度储备银行(RBI)对加密货币行业实行禁令的裁决。然而,尽管对该决定持乐观态度,但比特币价格并未显示出立即上涨的迹象.
1900/1/1 0:00:003月16日讯 今日英国时间上午9点后不久,伦交所上市公司英联食品的股价盘中一度暴跌100%,股价跌至1便士。目前该股跌幅已收窄至13%左右,股价如此暴跌又拉回,疑似出现乌龙指.
1900/1/1 0:00:00Overview 概述公益和慈善机构屡次产生信任危机,导致严重后果,并产生恶性循环。本文我们讨论利用区块链的共识机制和代币机制解决该问题.
1900/1/1 0:00:00据coin.dace数据,总部位于芬兰的著名P2P交易平台LocalBitcoins最近几周的比特币在3100-3500枚之间,回到2013年水平.
1900/1/1 0:00:00来自美国药品供应链中的24家公司共同向美国食品药品监督管理局(FDA)提交了MediLedger DSCSA试点项目最终报告,提出了用于美国处方药的可互操作追踪系统的区块链系统.
1900/1/1 0:00:00