当前位置:首页 > 知识 >

以太坊登录对Web3的重要性何在

为什么「使用以太坊登录」具有革命性?

撰文:Rocco

用户不再需要与一些大型中间商妥协,现在他们可以使用控制区块链账户的相同私钥直接登录(不需要通过中间商)。通过SIWE,我们开辟了另一条道路,大公司不再剥夺用户访问服务的能力,也不再监控他们的行为。

SIWE是通过和完全公开的认证标准dapp、app、公开讨论钱包、安全公司等社区成员。你可以在网站上login.xyz在上面找到所有的会议记录和笔记。这种方法与科技巨头或政府供应商的专有身份系统的封闭式开发非常不同。(被隐私和数字权力倡导者抗议)。

相比之下,Sign-In with Ethereum (EIP-4361)为以太坊账户定义了一种开放的知识共享(CC)签名格式安全验证任何基于网络的服务。SIWE以太坊基金会和由社区建设ENS直接支持,Spruce从去年年底开始负责这个项目。我很高兴在这里讨论「使用以太坊登录」的意义,以及Web3如何超越所有建筑商的?「连接钱包」的。

连接钱包 vs. 用以太坊登录

「连接钱包」这个按钮现在是dapp的主要功能。点击此按钮,用户开始使用Web3与区块链互动的旅程。

通过连接钱包,应用程序可以知道你使用哪个账户;然而,仅此而已。你的钱包更容易知道你想用哪个账户与智能合同互动,发送加密货币,甚至通过dapp签名信息。连接钱包的功能非常简单-dapp对你「毫无记忆」,为简单的交互搭建平台。

当应用程序想要与用户进行更丰富的情境交互时(contextual interactions)在加载用户偏好或隐私聊天信息时,我们首先需要确保我们与账户背后的实际私钥持有人交谈,而不是假装控制账户的人。「连接钱包」不是的。换句话说,我们需要验证用户的身份,以便与他们建立session,然后安全地读写他们的数据。为了说明两者的区别,我举了以下两个例子-连接钱包Carl和建立session的Sam:

(译者注:Session是一种解决方案,用于在客户端和服务器端之间保持状态。其基本思路是:客户端第一次访问时,服务器端生成session id回到客户端,当然服务器端也会把这个session id在内存中,客户端得到这个session id之后,这个将在后续的每个请求中使用session id传回服务器,让服务器查询自己的内存,知道客户端已经访问过了。Session可用于实现用户登录认证。由服务器端生成session id传回客户端后,通常会保存在cookie中,所以Session-based认证也叫Cookie-Based认证。

Carl使用dapp并且有很好的体验。他可以在Uniswap交易,Aave借钱,甚至OpenSea上购买NFT。这些操作只需要连接他的钱包。Carl的操作一直很顺利,直到有一天,他遇到了这样的问题:他希望dapp能记住他的一些情况,以便在他第三次、第四次和第五次使用这些dapp能给他更好的体验。

如果Uniswap可以自动导入他的优先清算权,Aave能够记住他最喜欢的借贷市场,甚至OpenSea能记住他的名字而不是0x2Fe1a3...这样的账户,他的经历会好很多。每次连接他的钱包,Carl都要从头开始。

Sam不会有这样的问题。Dapp已认证并建立session之后,将保存相关信息。即使Sam断开连接,

连接钱包后的第一步是为用户提供人类可读信息,以便他们能够理解他们进行了什么交互。在许多情况下,用户看到「LOGIN」(登录)单词,或者一些让你登录的单词,有时甚至只是任何数字(在这里,签随机疯狂的字母和数字集合)。相反,我们可以根据现有的实践确定一组必要的字段,设置许多良好的安全措施,以及在人类可读性和安全运行之间平衡的严格语法。此外,钱包不需要改变它们现有的界面和实践,至少可以继续为用户提供这些信息。

首先,我们可以接受所有这些混乱的「SIWE」信息,并以可接受的一般方式向用户提交请求:

共享信息-共享界面

在签名信息格式达成一致后,应用程序现在可以说与钱包相同的语言。当应用程序向用户提交签名请求时,钱包可以检查请求是否与相同EIP-4361(SIWE)信息一致,让用户知道他们在登录一个网站。

在这一点上,钱包可以呈现一个友好的程式化的界面,让用户体验更佳,并且不对用户将要采取的行动产生任何怀疑。而不是给用户一个任意的文本块来签名。用户现在只需点击一个确认对话框来「登录」,因为钱包可以「理解」签名请求。完全透明,EIP-4361规范声明所有信息和字段仍必须在其他子界面(如详细视图)中使用。

从EIP-4361在信息中,我们可以得到一个更清晰的界面:

该规范还为钱包引入了额外的安全要求,如引入域绑定,以防止钓鱼攻

猜你喜欢

关注我们

微信二维码

微信