像MetaMask这样的钱包 需要对用户变得更加友好
随着加密货币采用的增加,大多数钱包感觉它们是为开发人员创建的,这在实用性和安全性方面都成为一个更大的问题。
在以太坊期待已久的合并之后,现在是思考如何改进智能合约的理想时机。本质上是在区块链上运行的应用程序,智能合约是我们 Web3 应用程序的重要组成部分。但与他们互动仍然非常危险,尤其是对于非开发人员而言。许多用户丢失加密资产的事件都是由错误或恶意的智能合约引起的。
作为一名 Web3 应用程序开发人员,这是我经常想到的一个挑战,尤其是当新用户不断涌入各种区块链应用程序时。为了完全信任智能合约,消费者需要确切地知道他们在进行交易时会做什么——因为与 Web2 世界不同,如果出现问题,没有客户支持热线可以拨打和追回资金。但目前,几乎不可能知道智能合约是否安全或值得信赖。
一种解决方案是让钱包本身更智能。例如,如果钱包可以告诉我们智能合约是否可以安全交互怎么办?可能不可能 100% 确定地知道这一点,但钱包至少可以汇总并显示开发人员已经在寻找的大量信号。这将使该过程更简单、更安全,尤其是对于非开发人员而言。
这里更深入地了解智能合约的优缺点,为什么它们现在看起来像狂野西部,以及我们如何改进使用它们的用户体验。
智能合约的承诺和危险
对于开发人员而言,使用智能合约作为其应用程序的后端具有巨大的潜力。它还增加了漏洞和漏洞利用的可能性。开发人员可以在不征求任何人许可的情况下创建智能合约,这很好,但这也可能使用户面临相当大的风险。我们现在的应用程序交易数亿美元,却没有安全保证。就目前而言,我们只需要相信这些应用程序没有错误并履行他们的承诺。
许多非开发人员甚至没有意识到所涉及的安全问题,并且在与基于区块链的应用程序交互时没有采取适当的预防措施。普通用户可能会签署一笔交易,以为它会做一件事,却发现智能合约完全做了另一件事。这就是为什么恶意智能合约是不良行为者的主要攻击媒介的原因。
为什么智能合约是狂野西部?
当 Web3 应用程序发出智能合约调用时,在您实际执行之前,您并不确切知道交易会做什么。它会铸造你的非同质化代币(NFT),还是会将你的钱和令牌发送给黑客?这种不可预测性适用于任何在线应用程序,当然不仅仅是 Web3 应用程序;预测代码会做什么是非常困难的。但在 Web3 世界中这是一个更大的问题,因为这些应用程序中的大多数本质上都是高风险的(它们是为处理你的钱而构建的),而且对消费者的保护如此之少。
由于 Apple 的审核流程,App Store 基本上是安全的,但在 Web3 中不存在。如果 iOS 应用程序开始窃取用户的资金,Apple 将立即下架以减轻损失并撤销其创建者的帐户。
另一方面,恶意智能合约不能被任何人删除。也没有办法追回被盗资产。如果恶意合同耗尽了你的钱包,你不能简单地与信用卡公司就交易提出异议。如果开发人员是匿名的,就像恶意合同的情况一样,通常甚至没有采取法律行动的选择。
从开发人员的角度来看,如果智能合约的代码是开源的,那就更好了。流行的智能合约通常会发布其源代码——这是对 Web2 应用程序的巨大改进。但即便如此,也很容易错过真正发生的事情。预测代码在所有场景中的运行方式也可能非常困难。(考虑一下这个由一位经验丰富的开发人员撰写的冗长、可怕的 Twitter帖子,即使在阅读了所涉及的合同之后,他也几乎陷入了复杂的网络钓鱼诈骗。只有在仔细检查后,他才注意到这个漏洞。)
使这些问题更加复杂的是,人们在与智能合约交互时常常被迫迅速采取行动。考虑一下有影响力的人推动的 NFT 下降:消费者会担心收藏品会很快售罄,因此他们经常会尝试尽可能快地进行交易,而忽略在此过程中可能遇到的任何危险信号。
简而言之,使智能合约对开发人员强大的相同功能——例如无许可发布和可编程货币——使它们对消费者来说非常危险。
我不认为这个系统存在根本性缺陷。但是对于像我这样的 Web3 开发人员来说,今天有很多机会可以为使用钱包和智能合约的消费者提供更好的保护。
当今钱包和智能合约的用户体验
在许多方面,像 MetaMask 这样的钱包感觉就像是为开发人员创建的。它们展示了许多在构建应用程序时有用的深层技术细节和区块链细节。
问题在于非开发人员也使用 MetaMask——不了解所有内容的含义。没有人预料到 Web3 会如此迅速地成为主流,而且钱包还没有完全满足新用户群的需求。
MetaMask 已经在将“助记词”更名为“秘密词组”方面做得很好,以防止消费者在不知情的情况下将其分享给黑客。但是,还有很多改进的空间。
让我们看一下 MetaMask 的用户界面 (UI),然后是我创建的几个模型,概述了一些可以引导消费者进入“成功陷阱”的潜在改进。(顺便说一下,这里的 MetaMask 作为参考,因为它在 Web3 世界中被大量使用,但这些 UI 想法也应该适用于几乎所有钱包应用程序。)其中一些设计调整可以在今天构建,而其他可能需要技术智能合约方面的进步。
下图显示了当前 MetaMask 智能合约交易窗口的样子。
我们会看到我们正在与之交互的智能合约的地址、发起交易的网站,然后是我们发送给合约的资金的许多详细信息。但是,没有迹象表明这个合约调用做了什么,也没有任何迹象表明它可以安全地进行交互。
改进智能合约的潜在解决方案
我们真正希望在这里看到的是帮助我们作为最终用户确定我们是否信任这个智能合约交易的信号。打个比方,想想现代网络浏览器地址栏中的绿色或红色小锁,它指示连接是否加密。这个颜色编码的指示器有助于引导没有经验的用户远离潜在的危险,而高级用户如果愿意的话可以很容易地忽略它。
作为一个视觉示例,这里有两个 MetaMask 交易的快速用户体验 (UX) 设计模型——一个可能是安全的,另一个不太确定。
以下是我的模型中的一些信号:
合约源代码是否公开?开源合约通常更值得信赖,因为任何开发人员都可以阅读它们以发现错误和恶意代码。MetaMask 已经包含到 Etherscan 的各种链接,所以这将是一个简单方便的添加信号。
审核分数,第三方审计是另一个可以确定可信度的信号。 这里的主要实现问题是如何确定这个分数。是否已经有任何公认的标准?如果没有,一个简单的方法是使用支持上传审计的 Etherscan。在此示例中,MetaMask 还可以维护自己的审核员列表,或依赖第三方列表。(据我所知,MetaMask 已经为 NFT API 和令牌检测做到了这一点。)在未来,很容易想象一个去中心化的自治组织以更加去中心化的方式确定审计分数。
这笔交易能做什么?它可以调用外部合约吗?如果可以,是哪些?这将很难完美地确定,但我想知道开源合约的简单版本是否可行。已经有很多自动化的智能合约漏洞扫描器。如果这对 Solidity 来说是不可能的,我想知道我们是否可以设计一种允许这种级别的静态分析的智能合约编程语言。也许个别函数可以声明他们需要的权限,编译器可以保证一致性。
安全提示和教育,如果智能合约没有很多可信度信号(参见右侧上方的模型),UI 可以建议采取适当的预防措施,例如检查合约地址是否正确并使用不同的帐户。这些是橙色文本中提出的建议,而不是红色文本,因为缺少信号不一定是危险的;在这里,我们只是建议用户选择对接下来的步骤更加谨慎。
与 MetaMask 中的许多现有功能一样,这些建议的功能可以在设置中关闭。
迈向更安全的未来
未来,可能会有许多基于区块链提供的原始组件构建的以安全为中心的工具。例如,我们很可能会看到保护用户免受错误智能合约影响的保险协议变得司空见惯。(这些已经存在,但它们仍然相当小众。)
然而,即使在早期,消费者已经在使用 Web3 应用程序,所以我希望看到开发社区现在为他们添加更多保护。对钱包的一些简单改进可能会有很长的路要走。上述一些想法将有助于保护没有经验的用户,同时简化 Web3 老手的交易流程。
从我的角度来看,除了在 Coinbase(或其他大公司)上交易加密资产之外的任何事情对普通消费者来说风险都太大了。当朋友和家人询问有关设置一个自我托管的加密钱包以使用 Web3 应用程序时(让我们面对现实——通常是为了购买 NFT),总是首先警告他们风险。这吓跑了他们中的一些人,但更坚定的人无论如何都想使用它们。当我们的钱包变得更智能时,我们将能够更好地引导下一波新用户加入 Web3。
Devin Abbott ( @dvnabbott ) 是被 Airbnb 收购的初创公司Deco的创始人。他专注于设计和开发工具、React 和 Web3 应用程序,最近在 The Graph 工作。
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場