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