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