本文是 imToken 技术负责人陈凯在 HashBang 和 LongHash 联合主办的 “Polkadot 中国行上海站” 活动中的演讲内容,PolkaWorld 作为活动的独家合作社区整理和报道活动干货。

大家好,我是 imToken 的陈凯。

今天我想从用户角度去看跨链这件事可能会带给我们什么样的新体验。当然,我是一个开发者用户,所以我还会从开发者的视角去看。

我认为跨链对于用户来说的改变,就是从 “多个” 到 “一个”

一个钱包管理多链资产

首先我来讲讲多链钱包。

我们都知道现在有很多的数字资产,由于区块链的特性,每一条链上的数字资产都有不一样的地址和私钥,用户需要记很多东西,很容易困惑的。

目前,想解决这个问题,常用的一个方法就是用一套助记词,然后基于这套助记词,就能推导出不同的链。比如说你每条链上的地址,本质上来说就是你每一个钱包最初始的随机数,这个随机数很容易编码成 12 个单词,然后这 12 个单词就可以管理你的所有钱包。


这样你就能通过一套东西去管理多个链、多个钱包。 在 imToken 上,一个新用户进来的时候,你必须先创建 Identity(身份)。Identity 的意思,就是背后有一套统一的随机数,然后用这套随机数去管理你的多个链的钱包,这就是我们多链管理的逻辑。

对于用户来说,他有了钱包之后特别重要的一点就是保存,比如说你写下来,或者是放在一个硬件钱包比如 m-key,你可以在一个钱包里面去管理你很多个不同区块链上的身份和钱包。 怎么把多个链放到一个钱包去呢?一种方法是刚刚提到的助记词。

未来有跨链技术存在后,钱包会是怎么样呢?

我希望未来对用户而言,他在区块链里能像传统互联网里拥有一个账号一样,能够创建一个身份去管理多链。比如说通过 Polkadot、Cosmos,我们给到用户一个身份,这个身份下可以记录你不同区块链的资产。比如说你在 Cosmos 上完成(交易)之后,还能够用同一个钱包去记录你在比特币、以太坊和各条不同链上的资产。对于用户来,因为你需要管理东西只有一个,跟之前需要管理多个钱包相比,肯定是更加简单方便的。

除此以外,还有一点也很重要 —— 就是一个用户只有一个地址。为什么要一个地址?很多用户去交易所提现的时候都会问我一个问题,就是 “你是否支持这个币”。换句话说,当一个普通用户拿到一个地址的时候,他其实很难辨别出这个地址是属于哪一条链的,快速准确辨别某个地址属于某条链难度太高了。所以假如在跨链的基础上,你有一个地址能管理你的所有资产的话,我发给交易所通知,或者说我发给另外一个人,我都只需要知道一个地址,而不需要知道你是一个比特币地址,还是以太坊地址。

有了一个地址之后,你还可以用一个钱包的域名服务来管理它。假如跨链实现后,有一个域名服务,你可以通过一个好记的 ID 去标记你的地址,比如我的 ID 叫 “Chen Kai” ,你可以通过这个 ID 给我转账,我也可以通过 ID 来搜我所有不同的链上资产。

再举个例子,假如你现在去任何一个交易所提现一个 USDT,这时候一般会跳出三个选项,问你是要提现一个比特币 Omni 上的 USDT,还是一个以太网 ERC 20 上的一个 USDT,还是一个 TRON 上的 USDT。我觉得这其实是很烦的,提个现还要想那么多。在传统 ATM 上提现的话,你只需要放卡进去,你知道它出来的就是人民币或美元(你不需要选择你要 “哪一种”人民币)。

未来,跨链让用户管理自己的资产减少了很多的负担 —— 你的不同的资产、不同的钱包、不同的链上的资产,最终都能抽象到一个。比如说两年后三年后大家用上了跨链之后,那么整个门槛会被拉低,当门槛拉低之后才会有用户参与进来。

标准的 Dapp 环境

接着我讲讲跨链对 Dapp 的影响,从用户角度和从开发者角度两个方面来讲。

目前用户使用 Dapp 操作很复杂,假如你现在用某个链的 Dapp 的话,你需要选择你钱包。对于一个多链钱包言,首先你要知道这个 Dapp 的链,比如说是 Cosmos 还是 EOS 还是以太坊上的钱包。你每次去点开一个 Dapp 的时候,都有这种认知负担在,这就是很不友好的事情。

这张截图是一个例子。我现在是在一个 Cosmos 钱包上做完了一笔 Staking,比如我质押给了 HashQuark,然后我去点开 Edgeware,想 Lock 一些 Ether 进去,那么这时候我就需要点开来,再选择我的以太坊钱包,然后再去做下一个操作。

背后对于我们钱包去实现而言,我们需要去理解很多链在 Dapp 环境里能够给用户什么功能,那么我要去管理这些东西。不仅是 Dapp 里点击这个入口,包括你去扫码的时候,其实现在很多 Dapp 的话,他会可能是说你去扫一个码,然后跳进一个 Dapp  里面去做一个事情。对于钱包,我们去实现这个事情的时候,就要处理复杂度,处理识别地址 —— 我扫了这个二维码,里面它表示的是一个什么链上的一个 Dapp。 我要找找到这个链,然后弹出来告诉你要去选择某个钱包,然后你再能够继续去用这个 Dapp。

我相信区块链这个事情其实开启了一个大门,让每个人能通过智能合约去做一些金融工程的事情。比如说去 CDP 上借贷,比如说在 CDP 借贷出来之后,再去 Compoud 上把这个钱再抵进去,然后再借更多出来。 这其实就是普通人参与的金融工程。但是现在这方面的用户体验不太好。

另外一点,从开发者角度去看,其实现在有很多的 Dapp 生态,都是在一个支持智能合约的平台上面,但是现在的智能合约有很多种。像在以太坊上你需要用 Solidity,如果像刚刚 Aidan 提到的例子,他需要去做一些改造的话,他必须去改 Solidity 的 opcode(操作码),那么这时写出来的合约是不一样的。 还有很多基于 Vyper 的链,比如说像 TRON、量子还有很多联盟链,他们也会基于 Vyper ,他们实际上要用到的 Solidity 其实不是同一个分类,像 EOS 上你就要用 C++。所以对于一个 Dapp 开发者来说的话,他要去关心很多事情,这是一个蛮大的负担。

那么当 Dapp 的生态更复杂的时候,因为每个链上有不同用户,我做一个 Dapp 或者说一个项目,我就要在不同的链上开发,我就得理解这么这么多东西。

前面提到过 WebAssembly,这个在 Polkadot 上是非常重要的一环,对于用户和开发者而言都是很重要。因为只有当你有了一个简单方便的开发环境,开发者才能够去实现一个好用的Dapp。而且不同平台之间的差异,可能会让开发者很容易写出一些安全性有问题的代码,这在区块链上后果很严重,用户很可能会损失一大笔资产。WebAssembly 很重要的地方在于,它能够让开发者能够用熟悉的语言去写东西,写完还能在很多个不同的平台上去用。然后像 Polkadot 它这一层 WebAssembly 的实践这一层,它能够做到你只要在生态里面做的东西,都可以用一套语言、一套运行池去跑,这个对开发者来说是非常友好的。

总结一下跨链对 Dapp的影响。当实现了跨链后,对 Dapp 用户而言,他不再需要在点开每个 Dapp 的时候去选不同链的钱包、资产;Dapp 开发者实现起来也不再那么复杂,能够用同一个东西去构建业务,反过来让用户也能享受到一些更新更好的东西。

跨链 DEX

然后最后讲的就是 DEX。我们 imToken 现在的版本,在五一前已经上线了一个用以太坊去兑换 Cosmos 的功能,后面又上线了用以太坊兑换 EOS 的功能,也就是说我们现在 DEX 是能够跨越去做的。但是我们做得很痛苦 —— 我们整一个系统现在这么去做,你会有很多不同的东西。因为我们对以太坊最熟悉,所以我们这东西其实是在以太坊上架构出来的。

那么痛苦的地方在于,我们做的跨链不是真的跨链。我们跨链的时候,其实是每一个,比如说你要去兑一个 EOS 、Cosmos 或 Atom,那么我需要在以太网上发行一个对应的(你看不到的) token 叫 shadow token,再用这个 shadow token 去把你兑换的这个事情,在以太网上已经有了合约,有了运行平台上面去实现这个事情。

我们在跨链上用到的是 “公证人” 技术,这个技术是 Vitalik 在 16 年的一篇论文里面讲到,我们在以太网上观察每个用户在跨链交易的合约,如果以太坊或其他一些资产进去的话,那么我们会观察到事件,然后我们在另外一条链,比如说 EOS 上去发行对应的币给他。

其实这对我们来说是比较麻烦的,因为大家都知道不同链的共识是不一样的,造成一个很明显的表现,就是用户他能感受到不同链的资产到账时间是不一样的:有些链到账很快,有些链到账很慢,那么你要去做一个没有安全风险的兑换的话,就需要去平衡好时间。也就是虽然不同链上的时间不一样,但最终你需要做到是一个原子兑换。对用户来说,他只要发出去以太,另外的 token 总是能够回来,这个是让我们工作量增大的一个事情。

所以我们希望在以后,当像 RelayChain(波卡中继链)或是 Cosmos Hub 存在后,在跨链时我们不需要去做像那个比较麻烦的公证人形式,而是可以就直接在这个链上写一个合约,或者说甚至是说做一条平行链,这对于用户和开发者而言才是真真正正的跨链兑换。

今天就讲这些。


更多波卡中国行干货文章:

W3F - 波卡和 Web 3 生态

Edgeware - Polkadot 智能合约平台

Chainsafe - 从侧链转换到平行链

更多干货会陆续在 PolkaWorld 独家首发,敬请期待。

关注 PolkaWorld 公众号,回复 “2” 可以获得波卡中国行上海站完整 PPT ⬇️