V神在谈及近十年加密支付的经验时表示,简单强大的用户界面比花哨时髦的要更好;钱包开发者应该开始更明确地考虑隐私问题;做好用户体验要关注并解决最坏的情况。
来源|VitalikButerin
编译|宋宋
—1—
经验与教训
2013 年,我去了旧金山互联网档案馆旁边的一家寿司店,因为我听说那里可以接受比特币支付,我想尝试一下。到了付账的时候,我要求用比特币支付。我扫描了二维码后点击“发送”。令我惊讶的是,这笔交易并没有成功。尽管交易似乎已发出,但餐厅却没有收到。我又试了一次,仍旧无果。我很快就发现问题所在,当时我的移动互联网运行得不太好。我不得不走了 50 多米,来到附近的互联网档案馆,连接上 wifi 后,终于可以将交易发送出去了。
教训:互联网不是百分百可靠的,消费者互联网不如商业互联网可靠。如果想要最好传播方式的话,我们需要现场支付系统具备一些功能(如 NFC、客户二维码展示功能等),允许客户直接将他们的交易数据传输给商家。
2021 年,我在阿根廷的一家咖啡店为自己和朋友买茶。据他们所言,这家店并不是有意接受加密货币支付,店主只是认出了我,并向我展示了他在一家加密货币交易所有一个账户,所以我建议用 ETH 支付(使用加密货币交易所账户作为钱包是拉丁美洲现场支付的标准方式)。不幸的是,我的第一笔 0.003 ETH 的交易没有被接受,可能是因为它低于交易所设置的 0.01 ETH 的最低存款。于是我又发送了0.007 ETH。很快,我们都得到了确认。我并不介意多付三倍的钱,我把它当作小费。
2022 年,我在另一个地方买茶,第一次交易失败了,因为我手机钱包的默认交易只发送了 21000 gas,而接收账户是一个需要额外 gas 来处理转账的合约。我在尝试发送第二笔交易后又失败了,因为我的手机钱包的 UI (用户界面)故障使我无法向下滚动并编辑包含 gas 限制的字段。
教训:简单而强大的 UI 比花哨而时髦的要更好。与此同时,大多数用户甚至不知道 gas 限制是什么,所以我们真的需要更好的默认设置。
很多次,从我的交易在链上被接收,到服务承认交易,即便是“未确认的”,这些过程的延迟时间都漫长的令人震惊。有时,我很担心他们那边的支付系统出了问题。
很多时候,从发送一个交易到该交易在一个区块中被接受,这中间也会有一个令人震惊、漫长而不可预测的时间延迟。有时,一个交易可以在几秒钟内被接受,但其他时候,可能需要几分钟甚至几小时。最近,EIP-1559 显著地改善了这一点,确保大多数交易被下一个区块接受,甚至最近的 Merge 通过稳定区块时间进一步改善了这一点。
然而,异常值仍然存在。如果你在许多人发送交易的同时也发送了一笔交易,随着基础费用的飙升,那么你就有可能面临基础费用过高同时交易不被接受。更糟糕的是,钱包 UI 不显示这一点。它们没有红色闪烁警报,也很少有明确的指示你应该做什么来解决这个问题。即使是专家,并且他们知道在这种情况下应该通过发布一个具有相同数据但具有更高最大基础费用(max-basefee)的新交易来“加速”交易,但他们也不清楚这样做的按钮在哪里。
教训:围绕交易包含的 UX (用户体验)需要改进,尽管目前有一些修复,但仍相对简单。我要感谢 Brave 钱包团队认真地考虑了我在这个问题上的建议,他们将最大基本费用的限度从 12.5% 提高到 33%,并且最近在探索如何在 UI 中更明显地显示卡住的交易。
2019 年,我测试了一个最早的社交恢复钱包(social recovery wallet)。与我喜欢的基于智能合约的方法不同,他们的方法是使用 Shamir 的秘密共享将账户的私钥分割成五个部分,而以这种方式,任何三个部分都可以用来恢复私钥。用户需要选择 5 个朋友(现代术语是“guardians”),说服他们下载一个单独的移动应用程序,并提供一个确认码,用于通过 Firebase 创建从用户钱包到朋友应用程序的加密连接,并将密钥共享发送给他们。
这种方法很快就给我带来了问题。几个月后,我的钱包出了点问题,我需要使用恢复程序来恢复它。我让我的朋友们通过他们的应用程序和我一起完成恢复过程,但事情并没有按计划进行。其中两人丢失了私钥碎片,因为他们换了手机,忘记移动恢复应用程序。第三个人的 Firebase 连接机制在很长一段时间内都不响应。但最终我们还是找到了解决问题的方法,并恢复了密钥。然而几个月后,钱包再次不行了。这一次,常规的软件更新不小心重置了应用程序的存储并删除了钱包密钥。但是我没有添加足够的助力恢复的伙伴,因为 Firebase 连接机制太差了,让我很难做到这一点。我最终损失了少量的 BTC 和 ETH。
教训:基于秘密分享的链下社会性恢复真的很脆弱,除非没有其他选择,否则这真的不是个好主意。帮助你恢复的 guardians 不应该下载单独的应用程序,因为如果你的应用程序只用于恢复这样的特殊情况,那么你会很容易忘记并丢失它。此外,依赖于独立、中心化的通信渠道也会带来各种各样的问题。作为代替,添加 guardians 的方式应该是提供他们的 ETH 地址,并使用 ERC-4337 账户抽象钱包通过智能合约进行恢复。这样,他们只要不丢失自己的以太坊钱包即可。
2021 年,我试图通过使用“自中继(self-relay)”选项来节省使用 Tornado Cash 的费用。Tornado Cash 使用“中继(relay)”机制,第三方将交易推到链上,因为当你提现时,你的提现地址通常还没有代币,你不想用你的存款地址支付交易,因为这会在两个地址之间创建一个公共链接,这是 Tornado Cash 试图防止的一个问题:即中继机制通常很昂贵,收取一定比例的费用,这可能远远高于交易的实际 gas 费。
为了节约成本,有一次我用中继进行了第一次小额提款,收取的费用较低,然后我使用 Tornado Cash 中的“自中继”功能,在不使用中继的情况下,发送了第二次较大规模的提款。但我搞砸了,在登录我的存款地址时不小心失误了,导致存款地址代替提现地址支付了费用。我在两者之间创建了一个公共链接。
教训:钱包开发者应该开始更明确地考虑隐私问题。此外,我们需要更好的帐户抽象形式,以消除对中心化甚至对“联盟中继”的需求,并使中继角色商品化。
—2—
其他问题
1. 许多应用程序仍然不能与 Brave 钱包或 Status 浏览器兼容;这可能是因为他们没有正确地做功课,而依赖于 Metamask 特定的 API。即使是 Gnosis Safe 在很长一段时间内也不能与这些钱包一起运行,这导致我不得不编写自己的迷你 Javascript dApp 来进行确认。幸运的是,最新的 UI 已经修复了这个问题。
2. ERC20 在Etherscan 上的传输页面,如https://etherscan.io/address/0xd8da6bf26964af9d7eed9e03e53415d37aa96045#tokentxns,很容易被伪造。任何人都可以依据逻辑创建一个新的 ERC20 代币,并发布一个日志,声称我或任何其他特定的人给其他人发送了代币。这有时被用来进行欺诈,认为我支持一些骗局代币,而我实际上从未听说过它们。
3. Uniswap 曾提供了非常方便的功能,可以交换代币并将输出发送到不同的地址。当我必须向某人支付 USDC,但我本身又没有时,这一点真的很方便。现在,这个界面不提供这个功能,所以我必须转换,然后发送一个单独的交易,这不仅不方便,还会浪费更多的 gas。我后来了解到,Cowswap 和 Paraswap 提供这个功能,虽然 Paraswap 目前似乎不能与 Brave 钱包一起工作。
4. 使用以太坊登录很棒。但如果你试图在多个设备上登录,它依旧很难用,而且你的以太坊钱包只在一个设备上可用。
—3—
结论
好的用户体验不是做到一般,而是要关注并解决最坏的情况。一个干净时髦的 UI,但有 0.723% 的时间都会出现一些奇怪的、无法解释的事情,将会导致大问题,这比向用户暴露更多细节的UI更糟糕,至少后者让用户更容易理解发生了什么,并解决任何出现的问题。
除了由于规模尚未完全解决而产生的高交易费用这一最重要的问题外,用户体验是许多以太坊用户(尤其是在南半球用户)经常选择中心化解决方案而不是链上去中心化替代方案的关键原因,而链上去中心化替代方案将权力掌握在用户及其朋友、家人或当地社区的手中。多年来,用户体验已经取得了巨大的进步——特别是从 EIP-1559 之前的平均交易需要几分钟完成,到现在 EIP-1559 和 Merge 之后的平均交易仅需几秒钟即可,使用以太坊的愉快程度发生了巨大的变化。但仍有更多工作等着我们去做。