编写区块链:钱包签名请求消息

如果您对区块链空间中的设计问题感到好奇,本文适合您。如果您的团队中没有作家,或者您正在寻求改进区块链产品的入门用户体验。如果你正在考虑让你的产品比现有的,技术娴熟的区块链社区更多的挑战。或者以上所有。

我是瑞安,铅UX内容设计师为 Rimble 设计系统团队在上 ConsenSys 。我想帮助团队编写更好的区块链应用程序,任何人都可以理解。Rimble的目标是创造:

适用的指南和组件系统,以支持dApp(去中心化应用程序)用户体验设计的最佳实践。作为一个开源项目,Web 3设计系统可以帮助团队快速构建人类将使用的产品。

我想开始这个“为区块链写作”系列来支持Rimble及其使命。我希望本系列能够提供有关区块链特有的一些交互的内容设计视角。这个空间是疯狂的,一切都基本上是一个实验。事情已经建立得如此迅速,并不总是受益于设计视角。而且由于事情发展得如此之快,用户体验(和内容)往往不被考虑,或者只是在最后应用了粘性石膏。在我发表这篇文章时,我的建议很可能已经过时了。但这就是让空间如此令人兴奋的原因,所以这里什么都没有……

注意:如果您已经熟悉内容设计和区块链或以太坊的基础知识。在您看到Bufficorn之前,请随意跳过接下来的几节。不知道其中一个是什么?当你看到它时,你会知道它。

在我们开始之前,什么是内容设计?

在开始之前,内容设计师是多学科产品团队的一员。我们的使命是确保产品具有帮助用户完成任务所需的内容。在最基本的层面上,它会在正确的时间将正确的内容放在正确的位置。虽然期望产品设计师设计体验并创建漂亮的用户界面,但内容设计者需要通过内容镜头设计体验。在计算出所需的内容之后,他们需要确保它的流畅和可访问性。这涉及与研究密切合作以了解您需要说什么,然后与产品设计密切合作,以确保流程和屏幕支持所需的内容。这是一个旋风般的解释,但如果你很好奇,我已经写了很多关于这个问题。 这篇文章 的大小…(注意:我可以互换使用UX编写器和内容设计器)。区块链的问题在于空间中的设计师很少,而产品团队中的内容设计师或作者则更少。所以我希望这个系列证明是一个很好的资源来改善所有产品的内容和可用性 – 特别是如果你没有专业作家。首先,我想谈谈区块链…钱包签名请求消息完全独特的内容。

但首先是区块链

在我们真正了解钱包签名请求的细节之前,我只需要列出一些区块链基础知识和一些术语。区块链应用程序通常称为dApp,代表去中心化的应用程序。他们是去中心化的,因为他们使用称为智能合约的东西来减少或消除对中间人或中央当局的需求。智能合约本质上是编码协议:“ 如果你这样做,我会这样做 ”,保证因为它们被写入区块链。一个例子可能是 Airswap,一个交易数字代币的平台。如果您想购买狗狗币,您可以用以太币付款。没有中间人或 Dogecorp 需要因为代码说如果你付x Ether,你会得到Y Dogecoin。并且该代码无法被驳斥。但是我已经被带走了…这篇文章不是解释区块链 – 而且也是因为我没有足够的资格来做到这一点。让我们回到正轨。

电子钱包签名请求消息

警告#1:我将在登录或访问以太坊区块链上的dApp的环境中讨论签名请求消息,而不是在它们用于验证智能合约交易时(稍后会出现)。

电子钱包签名请求是您在使用dApp时首先遇到的一些问题。它们是去中心化的“登录”过程的关键部分。对于一些dApp,您只需要一个钱包来访问它。没有帐户,没有用户名,没有密码,dApp根本没有存储个人数据很多时候,您可以通过以后添加数据来增强体验,但这不是访问的先决条件。

你的钱包是区块链派对的门票。它允许您访问网站的区块链功能。例如,如果您前往 The Bounties Network 你可以马上浏览赏金(人们愿意用密码支付的任务)。但是为了外包或实现赏金,你需要连接到区块链,因为它们是通过没有中间人的智能合约来实现的。要连接到区块链,您只需使用钱包登录即可。这就是我们登录dApp时收到签名请求消息的原因。它们本质上是一种安全预防措施,有点像您在网上支付费用时有时会获得的银行验证模式。在去中心化的世界中,我们不需要银行。您可以使用钱包验证自己。因此,dApps要求您在钱包中签名,以证明您有权访问,并且不是某人以欺诈手段与其他人的钱包/资金进行交易。

作为旁注,我不确定签名是否是最佳类比。这听起来很合约,很可怕,并且在传统的笔墨意义上没有签名,但区块链的隐喻肯定是另一个时代的文章。

无论你是否同意这个比喻,这个验证步骤的重要性是毫无疑问的。然而,这个信息通常是完全的胡言乱语,导致不必要的摩擦和混乱。

这通常是登录的最后一步(障碍?),因此这是至关重要的。我认为现在是时候开始关注它所说的内容了。

签名请求消息的内容

警告#1:从技术上讲,本文暂时只关注MetaMask。MetaMask是一个扩展程序,允许您在Chrome,Firefox,Brave或Opera浏览器中拥有钱包。我无法保证我提供的建议与其他技术兼容。

警告#2:有些dApp比其他dApp更去中心化。如果有些人允许您通过钱包单独访问,其他dApp会要求您将钱包链接到中心化帐户。虽然我的主要关注点是前者,但我的建议也更广泛地适用于后者。

在我使用区块链工作的第一个月里,我花了很多时间使用我的钱包登录dApps。理论上,您只需安装MetaMask并创建一次钱包。从那里你可以使用你的钱包登录到很多dApps。这实际上是快速登录体验的好机会。您需要做的就是签署一条数据以通过钱包获取访问权限。然而,即使在一个月后,这仍然有问题。我以前从未“签署过数据”。我需要一些背景,我迫切需要一些“为什么”或至少“为什么?”。好消息是,没有理由你不能提供这种背景。

技术位

在引擎盖下,签名请求是dApp将一小段数据发送到钱包并要求用户进入钱包并签名以表明他们已收到它。此数据可能如下所示: d458fa15-dcab-4d85-a477-004d6febca12

合理?

一些侦探(和感谢后, 本教程 ),我意识到,这一块数据可以被转换成的东西, 可以 让感,并提供更好的用户体验。万岁

Personal_sign 是一种签名类型( 请参阅操作 – 您需要安装MetaMask),它允许您自定义呈现给您的用户的消息。在代码中它看起来有点像这样……

handleSignMessage = ({ publicAddress, nonce }) => {
    return new Promise((resolve, reject) =>
      web3.personal.sign(
        web3.fromUtf8(`I am signing my one-time nonce: ${nonce}`),
        publicAddress,
        (err, signature) => {
          if (err) return reject(err);
          return resolve({ publicAddress, signature });
        }
      )
    );
  };

我已经大胆地显示了您自定义消息的位置。

这会将字母和数字的随机组合转换为人类可以阅读的内容。现在你只需要弄清楚要说些什么。

内容位

我相信正确地获取此消息可以真正改善新用户和回访用户的登录体验 – 所有这些都以非常便宜的方式进行。这是我的内容设计建议……

不要只是在你的应用程序中预先解释 您可能在想,我们的dApp中有一个屏幕。但内容属于最具背景相关性的地方。这就是为什么你应该花时间编写你的MetaMask消息 – 这就是你的用户正在完成签名操作的地方。如果MetaMask通知自动弹出(有时会弹出),您的用户甚至可能无法读取您的dApp屏幕。实际上,即使MetaMask没有自动弹出,它们也可能无法读取,特别是如果没有相关的按钮或操作要做。当我们认为可以时,我们都喜欢跳过内容。但是,绝对要在dApp中预先解释消息签名的概念。由于空间如此新颖且概念如此不同,过度解释可能是一个好主意。当您要求用户签署消息时,请确保将用户引导至MetaMask – 它并不总是弹出。

是人,对行话采取零容忍政策 Nonce对普通用户没有任何意义。并且意味着 英国完全不同的东西 ?。为什么不说“嗨”?即使他们与MetaMask进行交互,这仍然是您的品牌和产品的一个空间。

透明:解释为什么 签署消息时我遇到的最大障碍是试图找出我在做什么以及为什么要这样做。在这个领域有很多假设的知识。请记住,没有人会放弃你的dApp,因为你告诉他们他们已经知道的东西。但想想有多少人正在下跌,因为当他们想要做的就是登录时,他们遇到了可怕的加密货币哈希或谈论nonces。

他们为什么需要签名: 证明他们拥有钱包。请记住,在现实世界中“签约”具有财务和法律内涵 – 这有点令人生畏。我认为它更像签署交付而不是合约。这是我在要求用户签署邮件时在dApp中提出的一点。

直接 邀请他们签署消息。这是你希望他们采取的行动,所以请他们签名。在您的消息和“签名”按钮之间创建一个链接,因此很清楚签名将做什么。

签约会做什么: 证明他们有权访问并__登录

让您的用户知道它是免费的 在区块链世界中,每个链上事件(与区块链交互的交易)都需要处理费。签名请求是脱链的,所以没有。用户可能一开始并不理解这一点,因此无法连接到您的dApp。明确指出,这不会给用户带来任何损失。

安全 仍然建议以原始形式包含部分数据。这样,如果攻击者知道先前的签名结果,他们就不能只重用它。所以保持${nonce} 。只要确保你解释为什么你要包含一个随机数据 – 保持他们的钱包安全并阻止黑客。

有创意 这是一个炫耀你的品牌风格或语调的好机会。看看CrytpoKitties,看看我的意思。

这个建议是什么样的?

一个好的,但通用的消息可能看起来像:

你好{dApp name}签署此消息以证明您可以访问此钱包,我们会让您登录。这将不会花费您任何以太。为了阻止黑客使用您的钱包,这里是他们无法猜测的唯一消息ID:d458fa15-dcab- 4d85-a477-004d6febca12

这条消息的作用:

  • 地址用户
  • 使用人类语言,没有行话
  • 重申信息的来源
  • 要求他们签名并解释他们签署的内容
  • 根据目标设定期望和框架消息:“通过这样做,您将登录”
  • 解释原因
  • 说清楚它不是财务上的
  • 包含用于安全目的的随机数或换句话说……当面对此消息时, 您的用户了解他们需要做什么,他们为什么需要这样做以及接下来会发生什么 。所有这些只是短暂的内容。我希望你这样做 – 我希望下次签署时能看到更多信息,有用和人性化的信息。

非常感谢@danfinlay在MetaMask回答我的所有问题。并向我的Rimble和ConsenSys团队成员提供有关本文早期草稿的反馈

原文:https://kauri.io/article/e46374ec0fbd4403ae9ea351580caa4d/v3/writing-for-blockchain:-wallet-signature-request-messages

提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢