Blog

Rollup Bridge 介绍(八):Arbitrum 原生桥

Rollup Bridge 介绍(八):Arbitrum 原生桥

作者:Cyan,imToken Labs 资深区块链工程师 本文受众:区块链开发者、对 Rollup 有所了解的区块链爱好者 本篇是 Rollup Bridge 介绍系列的第八篇,介绍 Arbitrum 的原生桥。 Arbitrum 原生桥是基于 Arbitrum 底层的讯息机制搭建而成,专为 Arbitrum 设计与服务的跨链桥,由 Arbitrum 官方所维护,是目前市面上与 Arbitrum 相容性最好、安全性最高的跨链桥。 在接下来的段落里,笔者将先介绍 Arbitrum 底层的讯息机制,讯息机制是连接 Ethereum(L1) 与 Arbitrum(L2)的核心,不只确保了 L2 上交易内容与顺序的唯一性,还能让 L1 与 L2 之间能够互相通讯。 * 讯息与交易两个词在 Arbitrum 文件或是程序中常常会交替使用,本文以讯息来统称介绍。 * 本文中提到 L1 都是指 Ethereum,L2 都是指 Arbitrum。  在了解 Arbitrum 讯息机制的运作原理之后,接着会介绍 Arbitrum 在跨链讯息中独有的 Retryable Ticket 机制,并在文末以「ERC20 token 通过 Arbiturm 原生桥在 L1 与 L2 之间进行跨链转移」为范例,让读者能更了解原生桥的实用场景。 * 对于 Rollup 和 Arbitrum 运作原理还不熟悉的读者,非常推荐事先阅读这篇 Arbitrum 开发者文件对 Rollup 的介绍:Arbitrum Rollup Basics。 讯息机制 Arbitrum 在 L1 上有许多处理讯息的合约,包含 Inbox、Outbox、Bridge 以及 SequencerInbox,这些合约都可以在 Arbitrum GitHub repository 中看到。 * 本文参考的合约实操和链接,皆以 Arbitrum GitHub repository 中的 2d002950 commit 为基准。 其中 SequencerInbox 是决定讯息内容与顺序的唯一参考源(Single Source of Truth),也就是说,SequencerInbox 记录的讯息(包含 L1 和 L2 之间的跨链讯息、和 L2 上原生的交易),从头到尾依序执行一遍,可以得到当下 L2 链上的状态。目前只有官方维运的 Sequencer 节点有权力直接对 SequencerInbox 写入讯息,以确保讯息排序的一致性。 相对于 SequencerInbox 只允许 Sequencer 节点写入,Inbox 提供了开放的入口,让一般使用者与第三方节点也能够写入讯息至 Arbitrum,为 Arbitrum 注入更多的应用空间。通过 Inbox 写入的讯息会先被保存在 Bridge 里,最后会定期被 Sequencer 收入到 SequencerInbox,或是可以借由 Force Inclusion 机制(后面会介绍)强制收入到 SequencerInbox。 Outbox 负责记录、验证并处理 L2 至 L1 的跨链讯息(例如从 L2 提领 token 至 L1),让 L2 发起的跨链讯息能够正确地在 L1 执行兑现。 让我们先用一个架构图来表达他们之间的关联: Arbitrum Message Flow 此架构图以使用者的视角出发,描绘了许多不同情境下的讯息流程,在接下来的小节中会逐一的拆解介绍。 Sequencer Flow Arbitrum Message Flow through Sequencer 通过官方提供的 Offchain Labs RPC 节点(即 Sequencer 节点),使用者可以将 L2 原生交易和 L2 -> L1 跨链讯息委派给 Sequencer 处理。Sequencer 收到使用者的讯息后,会先行执行讯息内容,即时更新 Sequencer 本地节点上的 L2 状态,此时讯息虽然还未上链,但使用者已经可以从 Sequencer 身上获得最新状态。为了节省将讯息写入 L1 SequencerInbox 的成本,Sequencer 会在时间和容量的限制允许之下,尽可能收集多笔讯息,将它们打包成一个 batch,以 batch 的方式一次将多笔讯息写入 SequencerInbox。 * 在此提供一笔 Sequencer 写入 batch 的 L1 交易参考,该交易中呼叫的合约方法实操可以参考 SequencerInbox 合约的原始码。 Sequencer 在处理完本地节点收集的讯息后,会接着从 L1 Bridge 提取部分尚未处理的讯息(即其他人通过 Inbox 写入的讯息),继续执行更新 Sequencer 本地节点上的 L2 状态。等到这些讯息都处理完后,Sequencer 会将本地的讯息 batch 写入 SequencerInbox,并以参数的方式告知 SequencerInbox 这次 batch 额外包含了多少笔来自 Bridge 里的讯息(合约原始码参考),SequencerInbox 会依照参数资讯,主动向 Bridge 收录对应数量的讯息,以保持 Sequencer 与 SequencerInbox 的历史同步。 Inbox Flow Arbitrum Message Flow through Inbox 除了通过官方的 Sequencer 节点,使用者(或第三方节点)可以选择自行通过 L1 Inbox 发送讯息,包括 L2 原生交易、L2 -> L1 和 L1 -> L2 的跨链讯息,特别注意的是,L1 -> L2 跨链讯息只能借由 Inbox 发送,无法通过 Sequencer。Inbox 接收到使用者的讯息后,会对资料做基本的格式包装,包装后的讯息会接着被转发到 Bridge 合约保存起来,并等待 Sequencer 定期将尚未处理的讯息同步至 SequencerInbox。 在正常情形下,使用者通过 Inbox 发送的讯息,背后必须依赖 Sequencer 遵守规则,才能被收录至 SequencerInbox。若 Sequencer 刻意略过 Inbox 发送的讯息,进行审查攻击(Censorship Attack),使用者的讯息将不会被处理和执行。 因此,除了单方面依赖 Sequencer,Arbitrum 在 SequencerInbox 上设计了 Force Inclusion 机制,当某些条件达成时,例如 Sequencer 已经有足够长的时间未处理 Bridge 里的讯息,此时任何人都可以直接要求 SequencerInbox 收录 Bridge 里的讯息,来确保当 Sequencer 进行交易审查时,整个系统还是能公平地运作。 Outbox Flow Arbitrum Message Flow through Outbox Outbox 主要负责记录、执行 L2 ->L1 的跨链讯息,例如从 L2 提领 token 回 L1,使用者在进行 Outbox 流程时,必须先在 L2 网络中发起 L2 -> L1 跨链讯息(虽然上图并没有特别标示出SequencerInbox,但 L2 -> L1 跨链讯息如同前面小节介绍的流程,一样会先被收录到 SequencerInbox),接着就是等待包含这笔讯息的 Rollup 状态的挑战期结束,确定大家对 L2 状态无异议后,这笔 L2 -> L1 跨链讯息最后会被写进 L1 Outbox 里,等待使用者在 L1 执行兑现。 * 在此提供一笔在挑战期结束后,将 L2 至 L1 跨链讯息写入 Outbox 的 L1 交易参考,成功写入时 Outbox 会发出 OutboxEntryCreated 的事件。由于写入跨链讯息至 Outbox 是确认挑战期结束时中间的一个环节,单从这笔交易比较难看出合约互动的过程,想了解更深入的技术读者可以从这段 Rollup 合约的原始码向下挖掘。 当 Rollup 挑战期结束、L2 -> L1 跨链讯息成功写入 Outbox 后,使用者必须在 L1 主动请求 Outbox 执行交易,并提供这笔 L2 -> L1 跨链讯息存在 L2 的证据(可通过 Arbitrum 节点进行查询),Outbox 验证通过后,就会在 L1 执行兑现讯息的内容。 * 在此提供一笔从 Outbox 兑现跨链讯息的 L1 交易参考。 以上是 Arbitrum 底层讯息机制的概括介绍,接下来会继续介绍 Arbitrum 独有的 L1 -> L2 跨链讯息机制:Retryable Ticket。 Retryable Ticket — L1 -> L2 跨链讯息机制 在实际介绍跨链场景前,我们必须先了解一下 L1 -> L2 跨链讯息可能发生的问题,以及 Arbitrum 独有的 Retryable Ticket 机制如何优雅地解决这个困难。 L1 -> L2 跨链讯息传递的过程中参杂了许多不确定的因素(例如 L2 gas limit 估算误差、L2 gas price 波动等等),有可能 L1 -> L2 跨链讯息已经在 L1 成功发送,同时发生了与讯息相关的副作用(side effect),例如转移 token 给 Arbitrum 原生桥,最后讯息却在 L2 执行失败,这个状况会破坏 L1 -> L2 跨链讯息的原子性,导致 L1 和 L2 对状态有不同的认知。 Retryable Ticket 就是为了克服这个问题而设计出来的机制,我们先来了解一下一笔 L1 -> L2 跨链讯息的成本结构如下: L1 -> L2 message fee = L1 gas fee (L1 gas * L1 gas price) + L2 gas fee (L2 gas * L2 gas price) 使用者在 L1 发起一笔 L1 -> L2 跨链讯息时,除了需要预估当下发送 L1 交易所需的 gas 费用之外,还需要事先预估好未来讯息在 L2 执行时所需要的 gas 费用,并在 L1 发起的跨链讯息里,以 call value 的方式,事先带上足够的 ETH,以支付跨链讯息未来在 L2 上执行所需的 gas 费用。 而唯有等到 L1 -> L2 跨链讯息实际在 L2 执行时,才能确切地知道执行所需的 gas 用量,与当下网络的 gas price 需求。因此,使用者在 L1 发送 L1 -> L2 跨链讯息时预估的未来 L2 执行 gas 费用,与实际状况会有一定程度上的误差,当讯息在 L1 call value 夹带的 ETH 不足以支付 L2 gas 费用时,讯息在 L2 上就会执行失败,使用者可能因此遭受损失。 举个例子来说,使用者在 L1 上发起一笔 L1 -> L2 跨链转移 token 的讯息,并以当下 L2 节点数据,预估好未来在 L2 执行的 gas 费用(以 L1 call value 方式夹带),顺利地在 L1 将跨链讯息和 token 交由 Arbitrum 原生桥处理。但不幸的是,讯息在 L2 执行时花费了比预期还多的 gas,使得使用者在 L1 发送讯息夹带的 ETH 不足以支付 L2 gas 费用,造成 L2 转移 token 给使用者的动作失败。在这个例子中,使用者不只没有在 L2 收到相应数量的 token,而且还没有 L2 链上的证据来取回 L1 上交由 Arbitrum 原生桥保管的 token,这些 token 将永远沉淀在 Arbitrum 原生桥里。 * 目前 Optimism L1 -> L2 跨链讯息也有相同的风险存在。 Arbitrum 独有的 Retryable Ticket 机制让 L1 -> L2 跨链讯息在 L2 上拥有成功执行前重试的能力,尽管无法百分之百控制所有不确定的因素,但可以为系统加入时间的维度,来消弥这些短期的波动。以上述的 gas 费用波动为例,当 L1 -> L2 跨链讯息在 L2 上因为 gas 费用高于预期而执行失败,这笔跨链讯息将会被暂时保存在 L2 上的 retry buffer 里,使用者可以等待 L2 网络顺畅后,再从 retry buffer 取出讯息进行重试(ArbRetryableTx.redeem)。 但 Retryable Ticket 并不是没有成本,Arbitrum 为了保存这些提供重试的讯息,需要消耗额外的储存资源,因此在建立 Retryable Ticket 时使用者需要额外支付保存资料的费用(submission cost),费用将与讯息的资料大小成正比。而每一笔 Retryable Ticket 都有其保存期限,以七天为单位,如果在保存期限到期前,想要延长 Retryable Ticket 的期限,只需要再支付一次保存费用,就可以再额外延长七天的时间。若 Retryable Ticket 最终不幸过期,讯息将会从 retry buffer 里永久移除,也就无法再进行重试。 * Arbitrum 开发者文件中有对 Retryable Ticket 做更细节的介绍,有兴趣了解更多的读者可以参考看看。 Arbitrum 原生桥在执行 L1 -> L2 跨链讯息时,都会使用 Retryable Ticket 来保障使用者的讯息最终能在 L2 上完成兑现。 下一章节将开始介绍 Arbitrum 原生桥的跨链场景,我们将会看到讯息机制以及 Retryable Ticket 如何在实际的应用中发挥功用。 原生桥跨链场景 — 以 ERC20 token 跨链转移为例 本章节以 ERC20 token(以下简称 token)通过 Arbitrum 原生桥在 L1 与 L2 之间进行跨链转移为例子,了解 Arbitrum 讯息机制以及 Retryable Ticket 如何在实际场景中发挥作用。 Arbitrum 原生桥对于跨链转移 token 的机制为「Escrow on L1, mint/burn on L2」,意即使用者在 L1 的 token 会全权交由 Arbitrum 原生桥托管,并在 L2 上铸造(mint)或销毁(burn)相同数量的 token,来达成出入金的动作。接下来会分别深入探讨 L1 -> L2 入金(deposit)以及 L2 -> L1 出金(withdraw)的流程细节。 Deposit (L1 -> L2) 在 L1 转移 token 至 L2 的情境中,由于 L2 是以铸造的方式,凭空在 L2 产生对应数量的 token。因此,L2 token 铸造的权限管控是一个非常重要的安全议题。 Arbitrum 基于先前介绍的讯息机制,在 L1 和 L2 各自搭建了互相对应的 Token Gateway 架构,使 L1/L2 Token Gateway 成为 Arbitrum 原生桥转移 token 的唯一出入口,L2 token 只需要赋予 L2 Token Gateway 铸造的权力,而 L2 Token Gateway 只接受来自 L1 Token Gateway 的跨链铸造请求,来保证 L1 -> L2 token 转移的安全性。 * L1/L2 Token Gateway 不只会记录与其对应的 Token Gateway 地址,也会记录 L1 token 与 L2 token 之间的地址映射关系(由 Arbitrum 官方设定),减少了 L1 与 L2 token 之间误转的风险。 整体流程如下图: L1 -> L2 Deposit Flow 使用者首先需要通过 L1 Gateway Router(outboundTransfer)发起将 token 从 L1 转移至 L2 的请求,L1 Gateway Router 会为使用者找到有能力处理该 token 转账的 Gateway,以 ERC20 token 来说一般会是由 L1 ERC20 Gateway 来负责。L1 ERC20 Gateway 接到请求后,会将使用者要跨链转移的 token 数量托管到自己身上;接着,L1 ERC20 Gateway 会通过 Inbox 建立 Retryable Ticket(createRetryableTicket)的跨链讯息,讯息接收方为 L2 ERC20 Gateway,内容为跨链转移 token 的请求(finalizeInboundTransfer),Inbox 会协助标记这笔跨链讯息来自 L1 ERC20 Gateway;最后,这笔跨链讯息将由 Inbox 转发至 Bridge 保存。 等待一段时间后,Arbitrum 会协助将这笔跨链讯息发送到 L2 ERC20 Gateway,L2 ERC20 Gateway 会检查这笔转移 token 的讯息是否来自 L1 ERC20 Gateway,若不是,则拒绝处理。确认跨链讯息来自 L1 ERC20 Gateway 后,L2 ERC20 Gateway 会在 L2 铸造出对应的 token 数量给 L2 使用者,完成 L1 -> L2 deposit token 的流程。 Withdraw (L2 -> L1) 在 L2 转移 token 至 L1 的情境中,L2 是以销毁对应数量的方式,减少 L2 上的 token 总量。因此,L2 token 销毁的权限管控也是一个非常重要的安全议题。基于上一小节所介绍的 Token Gateway 架构,L2 token 只需要赋予 L2 Token Gateway 销毁的权力,而 L1 Token Gateway 只接受来自 L2 Token Gateway 的跨链解除 token 托管的请求,来保证 L2 -> L1 token 转移的安全性。 整体流程如下图: L2 -> L1 Withdraw Flow 使用者首先需要通过 L2 Gateway Router(outboundTransfer)发起将 token 从 L2 转移至 L1 的请求,L2 Gateway Router 会为使用者找到有能力处理该 token 转账的 Gateway,以 ERC20 token 来说一般会是由 L2 ERC20 Gateway 来负责。 L2 ERC20 Gateway 接到请求后,会将 L2 上要移转的 token 进行销毁,并对 ArbSys 发出一笔跨链讯息,讯息接收方为 L1 ERC20 Gateway,内容为跨链移转 token 的请求(finalizeInboundTransfer),等待挑战期结束后,这笔跨链讯息会被写入 L1 上的 Outbox 以供兑现。 * ArbSys 是 Arbitrum 上预先部署好的合约,地址固定为 0x64,是 L2 与 L1 沟通的桥梁。 当讯息被成功写入 Outbox 后,使用者需要主动要求 Outbox 执行讯息(executeTransaction),并附上讯息存在的证明,Outbox 检查无误后,就会帮助使用者在 L1 执行讯息的内容。L1 ERC20 Gateway 接收到来自 Outbox 的转账讯息,会检查这笔转移 token 的讯息是否来自 L2 ERC20 Gateway,若不是,则拒绝处理。确认跨链讯息来自 L2 ERC20 Gateway 后,L1 ERC20 Gateway 会将使用者在 deposit 时交由它托管的 token,转回给使用者,完成 L2 -> L1 withdraw token 的流程。 结语 本文概括地介绍了 Arbitrum 原生桥的运作原理与实际场景,其中还有很多细节无法一一详述,想更深入了解的读者,非常推荐阅读 Arbitrum 开发者文件,文件中从设计缘由、运作原理、到落地实操都有非常清楚的介绍,对 Arbitrum 与 Rollup 会有更深刻的理解。 参考资料 [1] Arbitrum 开发者文件:https://developer.offchainlabs.com/docs/developer_quickstart[2] Arbitrum GitHub Repository:https://github.com/OffchainLabs/arbitrum 了解更多 如何在 imToken 中使用 Arbitrum 钱包 风险提示:本文内容均不构成任何形式的投资意见或建议。 imToken 对本文所提及的第三方服务和产品不做任何保证和承诺,亦不承担任何责任。数字资产投资有风险,请谨慎评估该等投资风险,咨询相关专业人士后自行作出决定。
2022-07-07
imToken 创始人分享:Tokenized World

imToken 创始人分享:Tokenized World

在 imToken 六周年之际,新加坡总部举行了主题为「Equal Access to the Tokenized World」的活动。 以下为 imToken 创始人 Ben 的主题分享实录: 大家下午好!今天来的嘉宾包括我们的投资人,有政府的伙伴,商业的伙伴以及行业的生态伙伴,当然还有线上和线下 imToken 的同事们,欢迎大家来到 imToken 总部在新加坡的新办公室,谢谢大家的光临! 非常荣幸能邀请到 imToken 的新老朋友们,在这里一起庆祝我们的六周年。除此之外,我觉得更重要的是可以一起叙叙旧,聊聊天,畅想一下未来,所以说很高兴今天下午能够和大家在这里度过轻松愉快的时光。 我也是趁这个机会,不只是我,可能大家也会说,现在我们迈入到一个数字世界,是否还有必要需要办公室。再去回想,我们的物理世界可能已经存在了数亿年,但数字空间可能还只有不足 100 年的历史。那么,我们也会思考在接下来的时间历程里,我们的物理世界和平行的数字世界会呈现出怎样的图景。今天,从我的角度来说,想给大家带来一个我对区块链技术为未来的世界所带来的影响和变化的看法。 我们在 90 年代,当时提出互联网世界,到今天 2022 年,我们来看待区块链为核心的这样一个技术变革下,我们的数字世界会发生怎样的变化。首先提到的是,区块链技术在当下被验证最重要的一个创新就是 Token,在座大家应该都听说过这个词,但也有一些新朋友进来,不太了解。大家知道 Token 是什么吗?它对于我们未来的数字世界到底意味着什么?我们说 ERC20 Token,ERC721 NFT 等等,还包括新加坡政府刊发的 DPT,其实都是围绕着 Token 展开。 首先,本人带大家看一个比较崭新的世界,区块链是一个网络,我们人和这个网络无法直接去连接和交互,那么这个 Token 就扮演了一个非常好的媒介。大家比较熟悉的,我们已经在做的转账、交易、质押,我们无法去感知这样一种数据的存在,而 Token 很好地以一种看得见、摸得着,让大家可以和它交互的方式呈现出来,是这样一种人和网络交互的媒介,所以这是一个非常感性的认知,是 Token。 如果我们把区块链技术放到整个信息技术革命的历史进程里来看,它扮演着怎样的角色?我们说数字化的革命是人类的第三次工业革命,前两次包括第一次工业革命,是蒸汽时代,第二次工业革命是以电力时代产生的生产力的变化,信息技术带来的是一个数字化的革命。区块链其实是在 2009 年随着比特币的诞生,它给互联网带来新的不一样的特点,它是对于我们的互联网技术的一种全面升级,它带来的是对于数据的不可篡改,它带来更为透明、更为去中心化的特性。还有最最重要的一个创新在于说,它在整个互联网的网络里带来了一个共识的机制,就是我们说的 POW、POS 这样的一些共识机制。这样的一些技术带给互联网的是一个全面的升级,在这里面技术是底层,它呈现给我们商业业态表现出来的是什么呢?我认为就是 Token。所以我们去看数字化的进程,从文本、图片、音频、视频,然后演进到 Token。 其实大家如果去回顾英特网的发展历史,第一个 web 页面只是文本加上一些超链接,然后逐步有了一些图片,开始有新闻网站,然后有了音频,可能像播客、在线的音乐、视频,所以有了像 YouTube、奈飞这样的实时流视频服务等等,每一次随着数字媒体的演进,都会带来一个巨大财富的变化和社会影响力。Token,我的理解就是这样一种新型的升级之后的数字媒体,就好比视频可以去组合、复合之前像文本、图片类型的内容,我们也可以把之前的文本、图片、视频、动画融合到 Token 里,那是什么?大家可能已经感受到了,就是我们今天非常热门的 NFT Token。 这上面也提到了几个分类,刚才提到 ERC20、ERC721 NFT,包括接下去可能会有新的演进的一些围绕着我们的身份、社交、信用产生的不同类型的 Token 类目。就比如说图片,它可能会有 JPG、PNG 这样的一些格式,Token 也会有不同类目的格式来代表不一样的特征。所以我们理解 Token 是什么?它是整个数字世界里作为一种数字媒体全新的演进,它带来的是从 Digital 进化到 Token 的世界。 我们说 everything can be Tokenized,这句话不止是说任何的事物都可以被数字化,它更会因为区块链的技术而 Token 化,我们来看一下有哪些可以被 Token 化。这张图非常漂亮,我们设计师去表达整个数字媒体的演进过程,可以看到 Token 在接力整个数字化的历史进程。 首先,Token 可以在原生世界里去承接价值,这是区块链带给整个互联网最重要的升级、特性,整个互联网变成一个价值互联网。比如说比特币和以太坊,它就是原生世界里发行或者挖掘出来的原生代币,它可以去承载这个网络的价值,并且作为一种保障这个网络安全运行的一种基础设施,也可以成为我们在数字经济活动里的交易媒体或者媒介,这是数字原生世界。 我们再看第二种类型,是把物理世界映射到数字世界。举个例子,比如说一幅艺术品,我们如果把它在物理世界销毁了,同时在数字世界里把它铸币,变成一个 NFT Token,那么这个 NFT Token 就可以得到一个确权,并且它可以很容易地在数字世界里继续拍卖、流转,这就是我们把物理世界去 Tokenized,映射到数字世界。 第三种场景,大家会想,还有一个可能是我们把数字世界里的东西带到物理世界,这个也是非常有价值的。比如说,我们在数字空间里会去做一些原创内容的输出,去做捐赠,这些行为都是我们在数字世界里的一个足迹,这样的信息自然而然能够成为每个个体的个人信用。连接到我们的物理世界,我们就可以把这样的信用连接起来以后,在申请护照、签证、俱乐部会员,甚至在求职,都可以作为你的信用背书来使用。 再举一个场景,我不知道在座哪位是 BAYC 的会员。其实我也做了一个实验,Adidas 在 BAYC 上做了二级的 NFT 发行和创新,而且你加入到这样的俱乐部,可以变成它的俱乐部一员,第一时间去抢购那些限量版的球鞋。拿到这个 NFT,你凭着 NFT 就可以在线下的专卖店领取这双限量版的球鞋。我用我的手机给大家看一下,这样大家会有更直观的感受,这就是 Adidas 发行的 NFT。这是我们说的从数字世界带回到物理世界。 所以,我们会发现 Token 是一个非常好的媒介,可以去融合数字世界和物理世界。一定程度上我们说数字世界的东西,其实它是很脆弱的,容易被复制,容易被篡改,容易被破坏,但是有了 Token,我们是可以让数字世界的数据或者数字媒体变得具有物理性,甚至具有生物性。同时,我们也可以把数字世界里的信用、资产、价值、数据等等连接回物理世界,让物理世界人们的生活变得更为高效、更为智能。这其实就是我们所畅想的未来以 Token 为单位构建这样的 Tokenized World,也是 imToken 对于区块链,对于未来数字世界构建的一种想象。 下面,想和大家交流一下钱包。钱包是除了区块链技术以 Token 的表达方式呈现出来给到用户之外,另外一个对用户特别重要的基础设施,大家知道钱包是什么,它为什么那么重要?接下去带给大家一些直观的感受。 大家记得这个钱包吗?我已经好几年没用这个钱包了,大家可能还记得,但是新生代未来可能都不会用这样的钱包,因为原来我们钱包里放的钥匙、银行卡、凭证、家里的照片等等,其实这些都数字化了,更进一步的是 Token 化了。所以未来我们的数字钱包会成为这些个人物件的容器、工具,我们说它是 Home of Token,所以数字钱包形象来比喻,它还是一个钱包,但是人进入到数字世界,让我们产生了这样一个数字钱包,来继续使用我们个人的这些物品。 不止是这个,除了我们说的个人的这些资产和物体之外,数字钱包还扮演另外一个很重要的角色,就是帮助用户去接入到这个数字世界。它是一种界面,是一种浏览器,是一种交互的方式,它可以帮助用户去浏览、去使用、去体验数字世界里丰富多彩的应用,都是需要钱包作为一种媒介去接入到数字世界。 如果我们再解构或者解剖这个数字钱包长什么样,我们看一下。作为一个区块链的去中心化钱包,这应该是最最核心的三大支柱: 第一层,是 Key,它代表着我们的 Ownership(所有权)。毫无疑问,产权、所有权是人类文明的基石,私人财产不可侵犯,这是最基础的一个保障。现在因为区块链技术,因为密码学,是技术上让我们拥有了私人财产不可侵犯的保障,这就是 Key。所以在区块链里行业经常会说,Not your key,not your coin。这是 Key 的重要性,也是与普通的数字钱包的最大区别所在。 这里稍微延展开来和大家普及一下,它围绕这个 Key 可能会呈现出哪些不一样的钱包形态。首先,这个 Key,从密码学的角度来说是私钥,但是私钥也有很多不同的类型。对于 Key 的保管方式的不同,会呈现出不同的形态。如果我们把这个 Key 放在一个芯片里,那就是一个硬件钱包,像 imKey。如果把 Key 放在一个隔离的设备里,那它就是一个冷钱包,不联网,会变得更加安全,因为不联网,没有人能够去访问或者读取这个信息。还有就是热钱包,像 imToken 就是一款热钱包,它是把 Key 加密之后存在一个沙盒里来保管。因为资产的规模不一样,或者说用户的安全意识不一样,我们需要采取不一样的保管措施,但总而言之,它是最最重要的,你的资产、数据、链上所有行为的这些信息,都要靠 Key 来掌管。 第二层是 Account。为什么是全局化的账户,这是我觉得区块链带给互联网新的一些回归它本质的特性,就是让整个互联网的网络资源变成一个全人类可以公共访问的资源,就像我们的阳光、空气、水这样的公共资源。Universal Account 就是这样的东西,你不需要任何人的允许,你不需要一个机构或者第三方来开设这个账户,你只要能用电脑或手机,你就可以登上你的账户,因为它基于密码学。拥有这个账户,不需要任何的门槛,也没有影响,所以它是一个全局性的账户体系。 第三层,是 Permissionless Access。这就是我们刚才说的,因为区块链这样去中心化的基础设施,会在数字世界里创造出丰富多彩的应用,包括 Token,钱包就是这样一个无许可的访问工具,可以去接入到这个数字世界,让用户可以自主和自由地去享受这些数字世界里的应用。 刚才我们提到 Token,也提了 Wallet,这两个加起来其实就是 imToken 的愿景,我们也希望一起参与到一个区块链技术的变革浪潮里,去推动这个技术的改进和普及,能够让更多的人可以平等自由地接入到这个数字世界,这也是我们的一个愿景。因为我们相信,区块链的去中心化技术,可以让这个世界更为平等,刚才也介绍到 Key。我们也相信所有的东西都可以被 Token 化,因为 Token 化,它可以变得更高效。我们相信每个人可以平等地接入到数字世界,我们也相信每个人应该可以最大化地保障自己的资产、身份,包括隐私等等。这也是为什么我们要做钱包,因为我们相信只有去打造一款安全放心、简单易用的数字钱包,才能让每一个用户平等自由地去享受未来美好的数字生活。 以上是关于区块链、关于 Token、关于钱包带给大家的一些分享,今天下午还会有其他的环节。回到刚才提的点,因为技术的进步、深化,也因为 Token 影响了我们日常的工作和生活,可能在过去的两三年我们大部分的时间在虚拟空间里,大家在线上实时、异地地协作,虽然也可以面对面的交流,但是我仍然觉得我们需要这样的物理空间,能够和我们的同事们以及各位伙伴们,包括我们的用户们,可以真正面对面近距离的交流,因为这种面对面的交流是线上无法替代的,也是目前数字世界无法更快去创造出来的。所以,当物理世界和数字世界开始交融的时候,我们会觉得这种时空感得到了延展,我们期待更有意义的数字世界的打造,但我们仍然珍惜物理世界的真实感。所以在这里面也希望能够和在座的各位一起去打造一个更有意义的数字世界,让我们生活更丰富,让我们生命得到生长。 谢谢! imToken VP 分享 Chuck:Token 是我们的愿景和核心,钱包是我们使命的基础,钱包加上 Token 就是 imToken。邀请你们和我们一起去体验一下 imToken 的品牌故事,我们团队准备了一个小视频: 现在大家很清楚地知道我们的 logo 是从哪里来的,在六年前我们开始的时候,这个 logo 其实是从鹦鹉螺壳的一个形态来启发的。贝壳具备了这样的形态,它是大自然的馈赠,具有耐用、可分割、可运输、易识别、不易伪造的特点,所以它帮助了我们经济和社会的发展,也在人类文明的过程里扮演了非常重要的角色,我们在贝壳的 logo 形态上再创造了 imToken 的标识。在数学的层面上,在数学表达中,鹦鹉螺壳上的图案称为对数螺旋,也适用于许多自然界的事物,小到 DNA,大到星系,也自然联想到应用于数字代币的数学概念。密码学,它是区块链上安全通信的关键,是不可缺少的基础。 有序而无限,它直接描绘生命循环、关联关系和迭代进化,Token 本身具有生命,就像你和我,Hi,imToken。imToken 品牌和标志从一开始就受到鹦鹉螺外壳的启发,深刻地代表了我们的信念和价值观。Intrinsic 就是追求本质,简单质朴的追随者;Goodwill,良好意愿的践行者;Resilience,坚韧不拔的挑战者。 希望今天的讲解能让大家对我们的品牌故事有更深的认知,对我们的 logo,也更清楚它到底是什么。Welcome to the Tokenized World!
2022-06-23
Rollup Bridge 介绍(七):Optimism 原生桥

Rollup Bridge 介绍(七):Optimism 原生桥

作者:Nic Lin,imToken Labs 资深区块链工程师 本文受众:区块链开发者、对 Rollup 有所了解的区块链爱好者 本篇是 Rollup Bridge 介绍系列的第七篇。 这个系列一开始从跨 Rollup 桥开始介绍,直到第七篇才回过头来介绍 Rollup 本身提供的原生桥,还请读者见谅。 Rollup 原生桥是去中心化跨 Rollup 桥例如 Hop Protocol 的基石,没有 Rollup 原生桥来协助在 L1 与 L2 之间传递信息,这种跨 Rollup 桥就没办法可信的将跨 Rollup 的转账信息从源头 Rollup 传递到目标 Rollup。没办法可信的传递信息就表示使用者要仰赖、相信第三方来传递信息,如此就和一般跨 L1 桥的安全性无异,即便这个第三方是一个多签。 先备知识包含: Ethereum Transaction Solidity、contract call、msg.sender 的概念 Optimistic Rollup Recap: L1 对 Rollup 的重要性 在介绍 Rollup 原生桥之前,先快速复习一下 Rollup 以及 L1 对它的重要性。 Rollup 把交易资料送到链上,但把交易执行搬到链下,执行完后再把结果(State Root)丢回链上。在 Optimistic Rollup 中,都先默认 State Root 是正确的,如果发现错误再通过挑战机制移除错误的 State Root。在 ZK Rollup 中则是通过零知识证明来证明 State Root 是经过正确计算得来的。 但不管是 Optimistic Rollup 或是 ZK Rollup,这两者都需要 L1 来帮他们确保一件事:交易的顺序。Rollup 把交易资料送到链上就决定了这些交易的排序,只要 L1 没有被攻击、没有发生 re-org,交易的执行顺序就不会改变,执行结果也就一定不会改变。因此 Rollup 的安全性也等同于 L1 的安全性。 交易(蓝色区块)送到 L1 后,大家都能够以此交易顺序自行算出执行结果 state 2 交易记录(或更精确地说交易顺序)是最重要的,state(执行结果)是其次、是副产品。确定了交易顺序,自然能确定执行结果。 接下我们将进入到 Optimism 的协议里,先从最核心 — 确保交易顺序的元件 — Canonical Transaction Chain 介绍,接着是交易资料送到链上的方式、信息在 L1 与 Rollup 之间传递的方式、处理另一边传过来的信息的方式,最后是实际通过原生桥传送信息的例子。 Canonical Transaction Chain (CTC) CTC 这个合约就是用来储存交易记录的。当交易一笔一笔提交到 CTC 上,就同时确定了交易彼此之间的顺序,这个顺序就决定了最新的状态。Optimism 上的交易会由 Sequencer 打包然后提交到 CTC 里。另外也有不经由 Sequencer 来送交易的管道,待会会提到。 注:Sequencer 通过 appendSequencerBatch 来打包交易送到 CTC。 另一个合约 State Commitment Chain 则是让人对每一笔交易去 propose 交易执行后的状态,例如交易前状态是我有 10 元,你有 5 元,当一笔我给你 5 元的交易执行后,状态会变成我有 5 元,你有 10 元。我可以提交一个假的状态说交易执行后变成我有 15 元,你有 0 元,但大家都会发现这是错的状态而去发起挑战,最后换上正确的状态。 注:任何人抵押后都可以通过 appendStateBatch来 propose 交易执行后的状态。 Bob propose 一个错的 state,任何人都可以去发起挑战,换上正确的 state Sequencer and Censorship Resistance 目前 Rollup 几乎都是采用中心化 Sequencer 的方式,由项目方先担任唯一 Sequencer,未来再慢慢引入去中心化 Sequncer 的机制。但在这段过渡期我们只能相信 Sequencer 不会作恶,不会故意审查、屏蔽我们的交易吗? 注:我们不需要相信 Sequencer 会把钱卷走,因为当他 propose 一个错的状态时,马上就会被人发现是错的状态并去挑战,所以安全性是不需要担心的。但我们必须要担心 Sequencer 会故意忽略特定使用者的交易(Censorship Attack)。 Force Inclusion Rollup 必须要有机制让使用者发现自己交易被屏蔽时,也能有手段强制让他的交易进到 L1 的交易记录中,让大家都看到他的交易,这个机制称作 Force Inclusion。在前一段我们有提到 Optimism 在 L1 的 CTC 合约就是用来储存交易记录的,那我们开放让使用者能够自己到 CTC 合约去插入交易不就可以让使用者绕过恶意 Sequencer,来达成 Force Inclusion?没错!就是这么做,但会有些地方需要注意。 我们让使用者可以自己把交易插入 CTC 的交易记录中 如果我们让使用者可以直接插入交易到队列中,就有可能被利用来攻击网络的节点,包含 Sequencer。想像你送一笔交易给 Sequencer 请他打包这笔交易,这笔交易是从你朋友 Bob 身上转 100 DAI 给你。Sequencer 收到这笔交易并检查状态,确认 Bob 身上真的有 100 DAI 且他也允许你这么做,所以 Sequencer 告诉你交易成功,这笔交易会被收入,于是你开心地继续准备接下去的交易…… Sequencer confirm 你的交易 但这时 Bob 的坏朋友 Alice 发现这笔交易,于是她直接在 L1 上插入她的交易,这笔交易是她从 Bob 身上转走 100 DAI 的合法交易(假设 Bob 是个慷慨的人)。因为 Sequencer 还没把你的交易打包送到 L1,这表示 Alice 已经插入 L1 的交易会发生在你的交易之前。 Alice 直接在 L1 将交易插入 CTC 里 因此当 Sequencer 发现 Alice 强制插入了这笔交易,Sequencer 必须要重新模拟一次他原本打包到一半的交易们,这时候他就会发现你的交易已经失效了(因为 Bob 的 DAI 已经被 Alice 转走),于是就会产生一连串骨牌效应导致你原本在准备的后续交易也全都失败或无效了。这样的攻击除了会造成使用者的麻烦,也导致即便是诚实的 Sequencer 也没办法确定交易的执行结果。 Sequencer 发现 Alice 的交易排在他本地端准备的交易之前,所以必须重新模拟交易执行 Alice 的交易导致其他交易失败或无效 Enqueue 所以虽然我们允许使用者可以绕过 Sequencer,自行插入交易,但我们不能让使用者插入的交易可以即时生效!所以这些交易会先被放在 CTC 的一个 queue 里(把它当作一个交易的候补队伍),交易被放进这个 queue 里代表不会马上生效,需要等待 Sequeuncer 指示。交易放进 queue 里让 Sequencer 先看见并有时间准备,在下一包交易中 Sequencer 就可以指定要额外处理 queue 里的交易。如此一来使用者有手段可以 Force Inclusion,Sequencer 也可以不被影响。 注:使用者可以通过 enqueue 来将交易放进 queue 里。Sequencer 在 appendSequencerBatch 时可以指定要额外处理 queue 里的交易。 Alice 的交易不会直接生效,而是先放进 CTC 的 queue 里 Sequencer 送出下一包的交易时再顺便指定要处理几笔 CTC queue 里的交易 Where is the Force!? 你可能已经发现:如果还是让 Sequencer 自己决定要不要额外处理 queue 里的交易,那 Sequencer 不就还是可以故意不处理交易吗?没错!所以会需要为 queue 的交易加上限制,例如规定 Sequencer 一定要在交易被放进 queue 后的 XX 时间内处理,否则无法再收入交易,或是 Sequencer 每一包交易都要包含 XX 笔 queue 里的交易。如此一来就能确保交易真的能够被「Force」Inclusion。 如果 Sequencer 还是能自己决定要不要处理 CTC queue 里的交易,就没办法 Force Inclusion 其中一个方式:CTC 规定每一包交易一定要处理 XX 笔 queue 里的交易 但目前 Optimism 还没有提供这个功能,之前版本的 CTC 原本有提供 Force Inclusion 的功能(appendQueueBatch),但被拿掉了。这表示我们目前必须得相信 Sequencer 不会审查我们的交易。 以上是对 Optimism 的核心元件 — CTC 的介绍,接下来将介绍搭建在这之上的信息跨链功能。有了信息跨链,我们才能有代币跨链。 Cross-chain Message(信息跨链) 这里的 Cross-chain 指的是 L1 与 L2 之间的 Cross-chain。 L1 -> L2 Message L1 到 L2 的跨链信息的核心和 Force Inclusion 一样,都是通过上面提到的 enqueue 方式来发送。 enqueue 里带的资料很简单:target 及 data,你可以把它比拟做 L1 交易要填的 to 及 data,只是是在 L2 的环境执行而已。但你不需自己去触发 enqueue 来发送 L1 -> L2 信息,Optimism 提供了一套合约来做跨链信息:CrossDomainMessenger 合约。CrossDomainMessenger 合约在 L1 及 L2 各有一个,你可以把它们想像成是 L1 及 L2 之间通讯的传送门。 L1 Messenger 将传送信息给 L2 Messenger,信息先放进 queue 里,系统再于 L2 解读出接收人和信息 如果你要送一个 L1 -> L2 信息,你要通过 L1 CrossDomainMessenger 合约的 sendMessage 函式,指定你信息要送给谁(target )及内容( data)。L1 CrossDomainMessenger 合约会封装你的信息,夹带在它自己传给 L2 CrossDomainMessenger 合约的信息里,如下图。L2 CrossDomainMessenger 合约收到 L1 CrossDomainMessenger 合约送来的信息后,会拆封对方封装的信息,去呼叫 target 并带上 data。 L1 Messenger 把使用者信息(橘色外框)封装在自己的信息(绿色外框)里,等到 L2 Messenger 收到信息后再拆封并去呼叫使用者指定的 target 合约 注意这边是由 L2CrossDomainMessenger 去触发 target,不是你,因为你在 L1 不在 L2。 跨链信息的 msg.sender 你可能会觉得奇怪,如果在 L2 上是由 L2 CrossDomainMessenger 合约来呼叫 Bob 的 L2 合约,那 Bob 的 L2 合约要怎么知道这信息的来源?有可能是 Alice 在 L1 送的信息,或是别人在 L1 送错信息,或是其实根本是 Carol 在 L2 去呼叫 Bob 的合约,它要怎么分辨? 这个就是 CrossDomainMessenger 要协助解决的问题:当 Bob L1 合约通过 L1 CrossDomainMessenger 合约送 L1 -> L2 信息时,L1 CrossDomainMessenger 合约会把「sender 是 Bob L1 合约」这个资讯附在 relayMessage 信息里,如此 L2 CrossDomainMessenger 合约收到信息时就可以知道原本发起 L1 -> L2 信息的人( sender)是 Bob L1 合约。想像刚刚图中橘色外框的信封里除了 target 和 data 外,L1 CrossDomainMessenger 合约另外在信封上加上 sender 的资讯。 L1 Messenger 为使用者讯息(橘色外框)附加上发送人资讯 L2 CrossDomainMessenger 合约在呼叫 Bob L2 合约之前会先把 sender 记录起来再去触发 Bob L2 合约,如此一来 Bob L2 合约就可以通过查询 L2 CrossDomainMessenger 合约的 xDomainMessageSender 变数来查询 L1 -> L2 信息的发起人是谁,如果不是 Bob L1 合约就终止交易,确保只有 Bob L1 合约可以成功送信息给 Bob L2 合约。 CrossDomainMessenger 合约记录相关资讯,确保信息接收方能验证信息来源 如果是 Carol 在 L2 去呼叫 Bob 合约,想伪装成 L1 -> L2 信息,则 Bob 合约只要检查来呼叫它的人(msg.sender)是 L2 CrossDomainMessenger 合约就好,因为 L2 CrossDomainMessenger 合约没办法在 L2 被操控,它只会接收从 L1 CrossDomainMessenger 合约送来的信息 。 CrossDomainMessenger 合约及 Bob 的 L2 合约都会检查 caller,所以 Carol 没办法伪装成 Bob 的 L1 合约 L2 -> L1 Message L2 -> L1 信息的流程基本上和 L1 -> L2 讯息一样,你可以看到 L1 和 L2 的 CrossDomainMessenger 合约长得很像:sendMessage、relayMessage、xDomainMessageSender……主要的差别就在 L2 -> L1 信息要等待挑战期过后才能完成 relay,且要附上 Merkle Proof 证明那笔 L2 -> L1 信息确实存在(L2 CrossDomainMessenger 在收到 L2 -> L1 信息时会把信息存起来,所以 Merkle Proof 会是用来证明 L2 CrossDomainMessenger 合约的 storage 里确实有这个 L2 -> L1 信息)。 L1 -> L2 信息和 L2 -> L1 信息流程其实差不多:在一端 send,在另一端 relay 以上是信息在 L1 及 L2 之间传递的方式,接下来会以实际的例子介绍使用方法。 代币跨链只是信息跨链的其中一种 不管是 L1 <-> L1 还是 L1 <-> L2 的代币跨链,代币都没办法真的从一条链移动到另一条链。常见的代币跨链方法是在 A 链上锁住代币,并在 B 链上铸造出新的代币(反过来则是先在 B 链上烧毁代币,并在 A 链上解锁代币)。如果我们往后退一步来看,「A 链通知 B 链去铸造出新的代币」这一个动作其实就是在 relay 一个跨链信息:「我这里锁住他的代币了,请在另一边铸造出新的代币给他」、「我在这里烧毁他的代币了,请在另一边解锁他的代币」。真正在移动的是信息,不是代币。 Optimism 的官方代币桥 Optimism 官方有提供 L1StandardBridge、L2StandardBridge 合约来提供代币跨链,但你也可以像 Synthetix 一样自己写一组代币桥合约,毕竟核心是信息的跨链,只要通过 CrossDomainMessenger 合约就能完成各种信息的跨链,包含代币,不需完全仰赖官方的代币桥(但当然你自己写的和官方的代币桥相比,可信度不同)。 L1StandardBridge.depositERC20 以官方桥的跨 ERC20 代币为例,首先 L1StandardBridge 合约在创建时要知道 L2StandardBridge 的地址,因为要告诉 L2StandardBridge 代币已经锁住,可以放心铸造对应的代币了。 使用者呼叫 L1StandardBridge 合约的 depositERC20 函式来启动代币跨链,函式里要指定 L1 代币地址、L2 代币地址及其他一些资讯,函式里面会把代币转到 L1StandardBridge 合约身上,并送出跨链信息到 L2StandardBridge 合约,并触发 L2StandardBridge 合约的 finalizeDeposit 函式。 L2StandardBridge 的 finalizeDeposit 函式里会检查跨链信息里提供的 L1 代币地址是不是符合 L2 代币合约所记录的 L1 地址。这表示 L2 代币合约要记录自己对应的 L1 代币合约。例如 Tether 如果部署代币合约到 Optimism 上,则它在部署时就要记录自己对应的 L1 USDT 地址。如果它 L1 代币地址不小心填成一个 L1 上的垃圾代币,那任何持有那个垃圾代币的人都可以通过代币桥把 L1 垃圾币换成 L2 的 USDT。 如果检查通过,finalizeDeposit 就会铸造出 L2 代币给接收者;如果检查没有通过,则 L2StandardBridge 会封装一个 L2 -> L1 信息 finalizeERC20Withdrawal,这个信息会指示 L1StandardBridge 把原先的 L1 代币解锁还给对方(不过要等挑战期结束才能 relay,完成解锁),也就是原路退还代币。 L2StandardBridge 检查通过则 mint 代币(4a),没通过则送信息回去 L1 解锁代币(4b) L2StandardBridge.withdraw 代币从 L2 回到 L1 的流程基本上就和 L1 到 L2 相反,先烧毁 L2 代币,再接着送出一个 L2 -> L1 信息,基本上就是上一段提到的 finalizeETHWithdrawal,指示 L1StandardBridge 把 L1 代币解锁还给对方。 由 L2StandardBridge 指示 L1StandardBridge 解锁代币给使用者 以上就是 Optimism 官方代币桥的运作方式。如果你要部署代币合约到 Optimism 上并借由官方代币桥来做代币跨链,请记得一些重要的值例如 L2StandardBridge 地址及 L1 代币地址不要填错。 注意事项 L1 -> L2 信息指定的 gas limit 当你在送出 L1 -> L2 信息时,和 L1 交易一样,你需要顺便指定这个信息在 L2 上执行时的 gas limit。但在那个当下没办法知道 L2 实际执行会耗费多少 gas 或是执行结果,这样要怎么收手续费? Optimism 采用的方式是让使用者在 L1 送出信息时,就预付一笔手续费,但有一个免费的限额:只要指定的 gas limit 小于 enqueueL2GasPrepaid,Optimism 就不收钱(目前 enqueueL2GasPrepaid 的值是 192w gas)。超过的话,合约里会用 while loop 去消耗 gas(意即让使用者用消耗的 L1 gas fee 来代付 L2 gas fee)。 但最重要需要注意的是:gas limit 请一定要指定足够,合约里有一个防呆检查:检查一个最低值 MIN_ROLLUP_TX_GAS(目前是 10w gas),但如果你的信息真的到 L2 花超过预期的 gas,那这个信息就会失败,而且没有办法补救。 了解更多 如何在 imToken 中使用 Optimism 钱包及官方桥 风险提示:本文内容均不构成任何形式的投资意见或建议。 imToken 对本文所提及的第三方服务和产品不做任何保证和承诺,亦不承担任何责任。数字资产投资有风险,请谨慎评估该等投资风险,咨询相关专业人士后自行作出决定。
2022-07-05
imToken 支持「交易语义化」,轻松看懂链上信息

imToken 支持「交易语义化」,轻松看懂链上信息

我们很高兴向大家介绍 imToken 的新功能:交易语义化。 什么是交易语义化? 交易语义化指通过将链上交易代码语义化处理,让用户能够轻松读懂链上交易信息。 设计示意图 为什么需要交易语义化? 一直以来,imToken 都致力于普及区块链,和更多人共享我们所预见的数字生活愿景并为之努力。但即便在长达十数年的发展后,区块链仍然处于早期。就链上交易而言,不论是交易速度还是可理解度,区块链都还远离大众的基础认知。 但好在,和 imToken 一样的探索者和从业者正在努力从各个角度抹平认知门槛。在交易体验上,我们看到雨后春笋般发展的 Layer2 生态,正在尝试并极有可能将以太坊的交易吞吐量提升至新高度。我们期望看到 Layer2 的成功,并且积极参与其中。「交易语义化」是我们在用户体验上的里程碑功能:从用户视角出发,将链上交易代码转化为可以轻松看懂的语言。 对用户 显而易见,交易语义化极大提升了链上交易体验,同时搭配 imToken 对 Layer2 生态的进一步集成,我们希望能够从交易速度和可理解角度,双管齐下,降低链上交易门槛。 使用 imToken 轻松上手 Layer2。通过理解每一笔交易,更安全放心地管理链上资产,更轻松地进入区块链世界。 对项目方 交易语义化带给用户的价值,同样也是带给项目方的价值。语义化功能在提升用户 DApp 使用体验的同时,也让用户能更好理解 DApp 项目方的业务,帮助优质项目方从激烈竞争中更快打开市场。 imToken 作为区块链生态的长期建设者,希望和其他建设者们共同进步,一起推动区块链普及。我们看到随着生态的发展,越来越多优秀的生态项目涌现出来。这也意味着链上生态日益丰富和复杂,如何面向用户更好地展示链上交易信息也就愈发重要。 交易语义化是 imToken 搭在项目方和用户之间的一座桥梁,但这座桥梁需要我们与项目方共同维护。我们已经搭好了桥梁基础,而每个项目方的合约、交易类型等信息,需要和项目方们共同协作和持续维护。 交易语义化的下一阶段 我们希望循序渐进,稳步发展。目前交易语义化功能仅支持 Arbitrum 生态应用。 后续,该功能将优先支持 Optimism 生态,然后拓展至更多 Layer2 生态及更多一层公链中(如以太坊、比特币),全面提升提升体验,让「读懂交易」不是难事。 期待合作 imToken 期待和更多优质项目方共同协作,提供更安全好用的钱包体验。 欢迎有合作意愿的项目方,与我们联系 [email protected]。 如果你喜欢的项目方尚未和 imToken 合作,也欢迎将本文发给对方,感谢你的支持。
2022-08-06
imToken:打造 Layer2 生态中最安全好用的钱包

imToken:打造 Layer2 生态中最安全好用的钱包

透明、自由和公平是区块链带给我们的技术保障,也是未来数字生活的基础。而对此的认同和向往,让我们汇聚在一起,倾力打造一款安全放心、简单易用的数字钱包,让每个人平等自由地享受有意义的数字生活。 Layer2 以太坊生态繁荣。繁荣背后是大量涌入的新人和激增的需求。但由于以太坊网络性能限制,区块链的无门槛和自由竞争,反而让链上交易成本成为一道高高的门槛,拒人于链外。 Layer2 由此应运而生,通过将 Layer1 上多样丰富的需求转移到 Layer2,进一步拓展了以太坊的性能,且不失安全性。这让那些曾因为高企的矿工费望而生畏的人,能够重回或来到以太坊生态,自由参与其中,不因资产多少而被区别对待。 Rollup Rollup 是当下最为流行的 Layer2 方案。这类方案通过将以太坊主网(即 Layer1)上交易的计算和存储转移至 Layer2 处理并压缩,再将压缩后的数据上传至以太坊主网以拓展以太坊性能。 Rollup 主要可分为 ZK Rollup 和 Optimistic Rollup 两类。 ZK Rollup  优势:采用零知识证明确保数据有效性,在安全性上更有保障 劣势:与 EVM 兼容性欠佳,同时零知识证明的生成相对耗时 代表项目:zkSync、StarkWare Optimistic Rollup 优势:兼容 EVM,对于 DApp 开发者和用户来说更友好 劣势:采用欺诈性证明确保数据有效性,也因此当用户将资金提取回主网时,需要等待七天挑战期 代表项目:Arbitrum、Optimism    imToken & Layer2 imToken 作为最早期的以太坊钱包之一,长期致力于以太坊生态。而 Layer2 围绕以太坊生态提供解决方案,继承了以太坊的开发者和用户群体,无论是从生态发展角度或是从 imToken 使命视角,着力于 Layer2 都是更为自然和健康的选择。 因此,imToken 早早便参与到了 Layer2 生态之中。 zkSync 1.0 上线不久,imToken 即深度集成了 zkSync,为用户提供 Layer2 生态的第一站体验,即便当时离普及尚早。 而后,imToken 支持了自定义节点功能,让用户能够一键切换 Layer2 网络,并随着 Layer2 项目的测试网 / 主网的上线而持续跟进支持。现在,你可以随时切换 Optimism、Arbitrum 等主流 Layer2 网络。 我们同样也积极加入 Layer2 生态建设,参与 zkSync、Aztec、StarkWare 等优秀项目融资,从钱包角度,为 Layer2 项目发展提供支援。 未来 imToken 对于 Layer2 的支持将不止于此。 我们看到越来越多 Layer2 项目有更多进展,生态发展也日益加速。作为钱包,我们需要进一步深度参与,让每一个有 Layer2 需求的用户不仅能够使用 Layer2 网络,更有流畅、好用的 Layer2 体验。 在各类 Layer2 方案中,Optimistic Rollup 兼容 EVM 的优势使其脱颖而出,在基于以太坊安全性的前提下,成为最具落地可能性的方案。 来源:https://l2beat.com 与此同时,我们也看到,Layer2 虽然有着极大提升用户体验的潜力,但作为一个新概念,它也为用户带来了新的理解成本。为了抹平这一门槛,使 Layer2 真正好用好理解,我们投入长达数月的专注和精力,最新版 imToken 即将与大家见面。 这一版本中,我们不仅将 Layer2 的基础教育渗透在产品体验中,也将从当前最大的 Layer2 生态 Arbitrum 开始,上线全新功能,帮助你如流水一般、顺畅自然地体验 Layer2 世界。敬请期待! 新版设计稿 同样基于 Optimistic Rollup 的 Optimism 也将是我们的关注点,此外,我们也会对 ZK Rollup 保持关注,尤其是 zkSync,对于其 2.0 测试网 zkEVM,我们有十分的兴趣成为第一批支持者。 从更长远的角度看,我们也期待 StarkEx(由 StarkWare 开发)可以在未来的钱包支付场景中有更广泛的应用。 最后 钱包作为区块链入口级的生态位,积极拥抱有益于生态发展的新技术、为用户提供更好的区块链钱包体验是我们持之以恒的追求。 通过更多更好地支持 Layer2 方案,我们希望真正帮助用户降低门槛。从更现实的角度考虑,当交易所普遍支持 Layer2 后,从交易所到钱包将成为用户从中心化到去中心化的第一步转变。 而当越多人得以进入区块链世界,体验更高速更规模化的 Layer2 生态,涌现更多创新想法也就成为必然,这将加速区块链发展的飞轮,让更多人能够进入这个由技术保障透明、自由、公平的区块链世界。 下载 imToken:https://token.im
2022-06-18
imToken 2.10.1,体验全新的 Arbitrum 钱包

imToken 2.10.1,体验全新的 Arbitrum 钱包

自去年 imToken 宣布支持 Layer2 扩容方案 Arbitrum 以来,我们一直在持续优化 Arbitrum 的使用体验。在此次更新中,imToken 为你带来了迄今为止最好用的 Artbirum 钱包! Arbitrum 钱包的特色功能 👀 语义化的交易信息,让每一笔交易都「有意义」 📊 清晰的 DeFi 资产显示,可查看你在 Uniswap、SushiSwap、GMX、Dopex 等交易所持有的头寸 📲 及时的推送通知,帮你实时掌握钱包动态 更多 🌉 支持 Hop、xPollinate、Bungee、LayerSwap 和 Arbitrum Bridge 等 DApp 💹 集成多个价格源,钱包余额和代币价格一目了然 ⛵ 支持 EIP-3085,在 DApp 内即可完成网络切换 📸 支持 WalletConnect,扫描二维码即可切换至桌面端使用 DApp 引领 Layer2 网络的 Arbitrum Arbitrum 是目前第一大 Layer2 网络,每月有约 15 万用户在该网络上使用 SushiSwap、Curve、Uniswap、dForce 等 DApp。 Arbitrum 自去年 9 月主网启动以来,已积累了超过 30 亿美元的 TVL(Total Value Locked 总锁仓价值)。Optimism 在 TVL 排名榜位居第三 ,其成绩是 5.9 亿美元,是 Arbitrum 的 19%。 与其他 Layer2 网络一样,Arbitrum 旨在降低交易成本和提高速度,同时保持以太坊主网级别的安全性。 imToken 带来全新的 Arbitrum 体验 便捷的 L2 网络切换 在 imToken 钱包页顶部,有一个网络切换开关。点击 Arbitrum 或其他 L2(二层网络)网络即可一键切换至对应钱包。 如何向 Arbitrum 钱包充值代币?你可以选择使用 LayerSwap 从交易所提现,或通过 cBridge、Hop、Connext、Bungee、Multichain、Arbitrum Bridge 将你在 ETH 钱包的代币跨链转移至 Arbitrum。 丰富的生态应用 将功能栏向左滑动,点击「生态应用」即可查看并体验 GMX、Dopex、Curve 等 Arbitrum 网络上的 DApps。 过去使用这些 DApps 时,如果想进行网络切换,你必须回到钱包资产首页才可操作。此次更新中,在支持 EIP-3085 的基础上,imToken 进一步支持了 EIP-3326,现在你可以直接在 DApp 内完成以太坊主网和 Arbitrum 网络之间的切换,简单方便。 同时,如果你想在大屏幕上体验 DApp,只需二维码扫一扫,就可以通过 WalletConnect 切换至桌面端。 语义化的交易信息 为了帮助用户更好地理解交易信息,imToken 对 Arbitrum 网络上的交易信息进行了语义化处理,让每一笔交易都「有意义」,让资产管理更安全放心。 清晰的资产显示 imToken 目前的代币价格数据由 CoinGecko、CoinMarketCap 等多家数字资产信息数据平台提供,你可以在钱包内查看所有代币的价格(包括 L2 钱包)。 通过集成 DeBank 的 DeFi 资产管理功能,点击「DeFi」即可查看在 Uniswap、SushiSwap、GMX、Dopex 等协议中锁定、质押和提供了流动性的代币数额。 当你进行转账、收款等操作,钱包余额发生变化时,imToken 也会及时给你推送信息帮你实时掌握钱包动态。 更多新功能 imToken 原生集成的 DEX 聚合器 Tokenlon,现已新增「代币支付矿工费」开关。在 ETH 余额不足时,你可开启此功能,使用 ERC20 代币支付交易所需的矿工费并得到最小交易限额的保护;如果你的钱包内有充足的 ETH,则可关闭此功能,使交易不受最小额度的限制。 另外,此次更新 imToken 也会支持 Nervos(CKB)的 Mirana 升级。 最后,imToken 以上所有新功能,imKey 也同样支持!如果你想存储大额资产,推荐使用 imToken  孵化的专业冷钱包设备——imKey 硬件钱包,保管资产更安全的选择。 如何下载更新 Android 用户 新用户:在 imToken 官网 (https://token.im) 下载 老用户:在 App 内即可直接更新 iOS 用户:需登录 App Store 下载。 注:imToken 未上架中国大陆区 App Store。 如果遇到下载问题,请通过 [email protected] 邮件联系我们。 最后,还是老提示 升级前请确保各钱包都已备份妥当 不要将私钥、助记词或 Keystore 泄露给任何人 了解更多:https://token.im
2022-08-01
需要一款好用的 Layer2 钱包?试试 imToken

需要一款好用的 Layer2 钱包?试试 imToken

如果你也曾因为昂贵的矿工费而默默退出转账页面,那么这篇文章就是为你量身打造。 通过这篇介绍,你能够了解如何借助 imToken 钱包进入 Layer2 生态,体验快速低成本的转账和丰富的应用。 什么是 Layer2? 以太坊是当前区块链世界最有活力的「城市」,但却由于基础设施的性能限制导致网络时常拥堵(在实际体验中,即转账费用昂贵),因此以太坊需要扩容。 Layer2 则是以太坊扩容的主流方案之一,它通过将以太坊主网(即 Layer1)的大量计算和存储需求搬到 Layer2 上以提升以太坊性能。 常见的 Layer2 方案有:Optimistic Rollup、ZK Rollup、侧链和 Validium 等。 点击了解各类 Layer2 方案 imToken 的 Layer2 功能 imToken 希望每个人都能够平等自由地享受基于区块链的数字生活,和 Layer2 愿景不谋而合。因此 imToken 始终深度参与 Layer2 生态,自 2021 年初起即持续支持 Layer2 新功能并上架了各 Layer2 生态的主流应用。 在体验 Layer2 生态前,你需要先下载安装 imToken,下载链接:https://token.im  imToken 支持 zkSync zkSync 是基于 zkRollup 的以太坊 Layer2 扩容方案,旨在在以太坊上实现高效且低成本的支付。它通过零知识证明和链上数据可用性来确保用户的资金安全。 如何操作 打开 imToken 钱包,切换到「我」页面,点击「探索」,即可开启 zkSync 钱包。 点击「充值」按钮进入充值页面,将以太坊主网地址中的资产充值至 zkSync 网络,到账后即可在 zkSync 网络中进行快速、低成本的转账。 详细教程:如何在 imToken 使用 zkSync 钱包? imToken 支持自定义节点 通过自定义节点功能,你可以在 imToken 中快速切换不同的 Layer2 网络,如 Arbitrum、Optimism、Polygon 等。 同时,imToken 支持 Layer2 网络上的代币自动发现和价格显示,以及 Layer2 网络中各 DeFi 协议内的资产展示,帮助 Layer2 用户更好地管理资产。 如何操作,以 Arbitrum 为例 充值 在使用 Arbitrum 钱包前,建议先充值,以便后续转账和 DApp 使用。 你可以通过两种方式进行充值 从支持 Arbitrum 网络的交易所(如币安、FTX 等)提现至你的地址(同以太坊地址); 使用跨链桥 DApp 将 ETH 钱包中的代币充值到 Arbitrum 地址中。 切换网络 进入 ETH 钱包的资产页,点击页面上方的「Ethereum」,在弹出页面选择「Arbitrum」即可切换至 Arbitrum 网络。 体验 Layer2 应用 在 Arbitrum 钱包页面点击「生态应用」,即可看到 Arbitrum 生态中最受欢迎的 DApp。 详细教程:如何在 imToken 中体验 Arbitrum? imToken 支持 Layer2 Bridge imToken 支持主流 Layer2 Bridge 应用。如果你经常使用不同的 Layer2 网络,那么可以在 imToken「浏览」页面搜索使用:cBridge,Multichain,Hop Protocol 等 Layer2 Bridge 应用,在 Layer2 网络间顺畅转移资产。 了解更多 如果你对 Layer2 感兴趣,还可以通过我们搜集整理的 Layer2 学习手册,从入门到精通。 即将到来 为了进一步提升 Layer2 网络的使用体验,imToken 将陆续深度集成更多 Layer2 方案,助你在 Layer 生态中一路顺畅。 准备好了吗?点击进入 Learn and Earn  
2022-08-10
短信电话诈骗频发,请捂紧你的钱包

短信电话诈骗频发,请捂紧你的钱包

临近年底,火币等数字资产交易所的业务调整日期将近,加上年底资金流动相较平时本就频繁,骗子也在近期异常活跃,对用户广撒网,诈骗手法层出不穷。 为了避免更多用户受骗,imToken 安全团队重新整理了近期常见骗局,希望能够帮助大家提高安全意识,捂紧自己的钱包。 短信电话诈骗 为遵守中国境内的监管政策,火币等数字资产交易所正在逐步清退中国大陆用户,不少投资者纷纷选择将数字资产从交易所提至钱包。 但与此同时,骗子们趁机以「交易所服务调整」「钱包关停」等为由,通过短信、电话等方式冒充官方人员诱导用户进入假钱包官网下载假应用,由此导致用户助记词泄漏,资产被盗。 以 imToken 钱包为例,近期不少用户反馈接收到短信前来咨询,短信内容如下: 诈骗短信 请注意,「imToken 因地区关系将关停」是虚假信息。imToken 钱包的转账、收款以及资产管理功能均可正常使用,用户无需担心。 此外 imToken 是一个去中心化钱包,不存储用户的钱包助记词,也不收集用户的任何个人信息,如电话号码、身份信息等。imToken 安全团队认为骗子是通过非法渠道获取用户在交易所填写的个人信息,然后通过广撒网的方式,假冒 imToken 官方人员发送短信给用户实施诈骗。 如何避免此类骗局? imToken 不会通过短信或电话联系用户,遇到声称来自 imToken 的短信或者电话时,对方一定是骗子! 下载时请务必认准 imToken 官网:https://token.im 如有任何问题,认准官方联系邮箱:[email protected],切勿轻信其他第三方渠道 假 App 骗局 我们常会通过应用商店或者百度搜索的方式下载淘宝、微信等 App。但如果在数字资产的世界里仍用同样的方式下载钱包或交易所 App 则会带来巨大的安全隐患。因为钱包和交易所是用户存放资产的地方,在巨大的利益诱惑下,这些 App 成为了骗子们纷纷仿制的对象并在各个渠道扩散其制作的假 App。 事实上,以下 4 种下载渠道或方式都存在风险,稍有疏忽就可能下载到假冒的 App,导致资产被骗子盗取。 一、从所谓的「客服」发送的链接、海报中下载 骗子潜伏在各微信群、电报群中,冒充官方人员,为了博取用户信任还给用户提供虚假工作证,向用户发送海报或链接,诱导用户下载假 App。 二、从百度等搜索引擎下载 骗子通过在搜索网站购买广告位和竞价排名,诱导用户访问其仿制的假官网。在今年 6 月份,我们发现无论搜索 imToken、MathWallet、TokenPocket 或者是 MetaMask,搜索结果第一页中骗子网站为数不少,用户在这些假官网上,会下载到假的钱包应用。 三、从非小号等第三方网站下载 骗子曾试图假冒钱包官方人员联系非小号等网站,将下载地址篡改为骗子网站,因此从非小号等第三方网站下载也存在一定风险。 四、从 App Store、小米、华为等应用商城下载 由于政策限制,钱包、交易所等官方 App 无法在中国大陆地区的应用商城上架。骗子趁虚而入,将假 App 上架至苹果、小米和华为等在中国大陆地区的应用商店。 如何避免此类骗局? imToken 在此提供 3 个小技巧: 将常用的钱包官网添加至浏览器收藏夹,下载更新时直接从收藏夹内打开 imToken 官网:https://token.im MathWallet 官网:https://mathwallet.org TokenPocket 官网:https://www.tokenpocket.pro MetaMask 官网:https://metamask.io 多渠道了解比对信息:在下载 App 时,可以先在公众号、微博或 Twitter 等渠道搜索信息进行对比。真官方在各渠道展示的官网链接都是一致的,而骗子由于只为短期利益(维护多渠道比只做一个假网站成本更高),往往只会在单一或有限的渠道上误导用户; 请教身边可信的人:在了解钱包的时候,一定要找对行业有基础认知,且现实生活中熟悉的人,最好当面请教。注意:不要在微信群或者 Telegram 等即时通讯应用里询问。 转账授权骗局 相比假 App 骗局,转账授权骗局的手法更为隐蔽,且普通用户不理解何为「转账授权」,因此在解析此类骗局之前,需要先了解转账授权的含义。 什么是转账权限?举个例子。 支付宝里有个亲密付功能,当我对家人开通这个功能后,他们购买物品时就会直接通过我的账户进行扣款。即便家人不知道我的支付宝密码,也能使用我账户里的钱。 类似的,当你把代币转账权限给了「朋友」后,对方即便不知道你的助记词和支付密码,也能转走你钱包里的代币。而很多用户由于不了解代币转账权限的含义,在给出这个权限时,往往不自知,所以这类骗局发生得很隐蔽,且越来越多人上当。 骗子通常会以以下三种方式骗走你的转账权限。 一、二维码授权骗局 骗子以 OTC 交易为由,给用户发送一个链接或假冒钱包收款的二维码,用户扫码后会进入假冒的转账页。用户在该页面点击「确认」时,则授予了骗子转账权限。   左:骗子仿冒 Tokenlon 的授权页面;右:真转账页面 请注意,扫码后你可以通过查看页面右上角的图标,区分真假转账页面和二维码。骗子制作的转账页面右上角为「···」和「X」的图标,imToken 钱包内的正常转账页面右上角是扫描二维码的图标。   二、空投代币授权骗局 骗子在波场(TRON)链上空投 OZBT、AAMT、FIL 等代币至用户地址,代币信息中包含「空投币兑换等量 TRX」等虚假内容。在骗子的诱导下,用户进入第三方网站误以为是在进行币币兑换,实则是给予骗子转账权限。   空投代币授权骗局 三、资金盘授权骗局 骗子假借「挖矿」、「稳定收益」等名义诱导用户参与所谓的「投资」,并宣称与行业内知名公司达成了合成。当用户被高额收益吸引,通过钱包的 DApp 浏览器打开第三方网站参与其中时,则授予了骗子转账权限。   资金盘 CB-Titan 授权骗局 如何避免此类骗局? imToken 在此提供 2 个小技巧: 在你进行交易但无法确定收款方是否可信时,请让对方直接提供收款钱包地址,而不是二维码; 天下没有免费的午餐,不要被「稳定收益」、「免费获取价值代币」等字眼迷惑。 另外,imToken 还发布了授权查询与取消的教程,如果你想检查自己的转账权限是否有外泄的情况,可点此查看 👉 安全提醒|请警惕代币授权骗局 最后 区块链作为一个新兴行业,具备发展潜力,但也潜伏着居心叵测的人;它给了人们自主掌控资产的权利,但也要求人们承担起对应的责任。 imToken 作为钱包服务商,努力打造最为安全可靠、简单易用的数字钱包,同时也持续进行着用户教育,提升钱包新人对区块链的理解和安全意识。对于用户资产安全这条底线,我们保持着一丝不苟的安全追求。 最后,再次提醒,近期骗子活跃,请捂紧自己的钱包!
2022-08-01
imToken 现已支持以太坊 EIP-1559,感受新费用机制!

imToken 现已支持以太坊 EIP-1559,感受新费用机制!

EIP-1559 作为以太坊伦敦升级中最受关注的提案,直接改变了我们在以太坊上的交易体验,让我们从黑暗森林般的矿工费市场中脱离出来,不必再盲目竞价和博弈,而只需按照规则行动。 了解更多:什么是 EIP-1559? 据 Galaxy Digital Research 统计,EIP-1559 机制引入 100 天(2021.8.5 - 2021.11.15),以太坊网络中 58% 的交易为 EIP-1559 类型;期间所销毁 ETH 数量为同期增发的数量的 56%,极大减缓了 ETH 的增发速度。从中我们不仅可以看到 EIP-1559 的快速普及,也看到了 EIP-1559 对以太坊经济的显著影响。 历经四个月的观察、研究、开发和测试,我们终于在 imToken 2.9.8 版本中正式支持了 EIP-1559!新版本依然从用户角度出发,将 EIP-1559 设计融入到 imToken 的交易机制: 准确:按照 EIP-1559 机制,默认矿工费将是一个区间,而不是特定值; 便捷:提供三挡矿工费,不同的挡位对应着不同的交易确认时间,用户可按需选择; 可定制:对于资深用户,仍可使用自定义功能,设置 MaxFee 和 MaxPriorityFee。 ---   即便 EIP-1559 已经在以太坊网络稳定运行了 4 个月,但至今,社区仍未形成支持 1559 的成熟模式,对其探索大家都还处在小心谨慎,摸着石头过河的初级阶段。 这一方面是由于 1559 背后愈加复杂的机制给用户体验设计带来了较大挑战;另一方面是 1559 直接改变了我们和区块链交互的最后一个环节,对用户体验有着巨大影响;而这个环节本身又广泛而深刻地影响每一个钱包服务商的基础核心功能。 这也是为什么 imToken 没有在伦敦升级上线之初就立即支持,而是选择持续观察、反复讨论和深度调研,以确保能够为用户提供最可靠的功能体验。 如以太坊官网介绍:「以太坊是一项社区驱动的技术」。imToken 作为社区参与者和建设者,同时又是承载着千万用户的钱包服务商,我们需要积极探索。尤其是从过去的观察中,我们认识到,EIP-1559 是目前最优的交易类型,不仅降低了用户实际矿工费消耗,也有效提高了交易被打包的成功率。 --- imToken 2.9.8 是我们支持 EIP-1559 的第一步,也是我们深思熟虑后的精心答卷。一如 imToken 是第一个提供 ENS 域名注册服务的钱包,第一个在 DeFi&NFT 早期即开始持续科普教育的钱包,关注社区动态和标准、从用户角度出发探索最佳方案是我们持之以恒努力的方向。 我们希望再进一步、深一度地参与到以太坊社区建设中。通过向 imToken 的千万用户提供以太坊社区的最新方案和标准,并和社区参与者们分享实践成果,共同探索最佳实践。 我们相信并追求「数字资产,尽在掌控」,和以太坊社区中志同道合的朋友们,一起将安全可靠的区块链交互提供给更多有需要的人。   关于 imToken  imToken 是一款去中心化的数字钱包,用于承载加密数字世界的资产、身份和数据,成立于 2016 年,imToken 已在全球 150 余个国家和地区,累计为超过 1200 万用户提供了安全可信赖的数字资产管理服务。目前 imToken 支持管理比特币、以太坊等 12 条主流区块链,以及更多 EVM 兼容链,同时支持去中心化币币兑换功能与开放的 DApp 浏览器。
2022-07-20

Load more