用户登录Web3很困难:如何通过账户抽象和流量让它变得更好

译文
区块链
如果开发人员正在开发Web3应用程序,就会知道让用户登录Web3是很困难的。开发人员需要了解如何通过账户抽象和流量创造出更好的方法。

译者 | 李睿

审校 | 重楼

51CTO读者成长计划社群招募,咨询小助手(微信号:CTOjishuzhan)

对于开发Web3应用程序的开发者来说,通常知道让用户登录Web3很困难。即使承诺用户真正拥有自己的数据,进行近乎免费的全球支付,并使用无审查的系统,创建和使用数字钱包的过程还是非常困难。

幸运的是,还有更好的方法。帐户抽象(Account Abstraction)承诺简化流程,使用户登录更加无缝和简单。流量(Flow)是一个去中心化的、公共的、第一层区块链,旨在为用户构建Web3体验而设计,它使用帐户抽象将混合托管模型与无数字钱包登录相结合,从而创建了一个像传统应用程序一样简单和直接的登录。

以下深入了解一下混合托管和无钱包登录是如何协同工作的,例如在架构、代码,以及可以期待的进展等方面。

一、为什么登录Web3如此困难

数字钱包带来了Web3的所有好处,包括保证没有人可以控制你的资产。没有中间人,例如银行从用户的钱中抽取一定比例的费用,也没有第三方规定用户能做什么。然而,因为大多数钱包都是“自我托管”的(只有用户自己可以访问),用户需要管理自己的密钥。如果出错,不会得到其他人的帮助和支持。

这意味着用户必须安全地保存密钥。不要将它们以明文形式存储在自己的电脑上,它们可能会被黑客窃取。也不要把密钥写在别人能看到的地方。Web3没有重置密码,如果丢失它们,可能会失去一切。因此可以看到Web3登录问题所在。

除了面临自我托管的挑战之外,用户还需要了解代币和支付。例如,如何支付交易费用?需要什么代币?如何从法定货币转向代币?一旦有了代币,将如何转移它们?如果在发送代币的时候出错,那么它们可能永远消失了。因此,可以再次了解这一切有多困难。

考虑到所有这些障碍,因此很容易理解为什么许多用户没有完成登录Web3应用程序的第一步。

二、托管钱包出色的用户体验,但缺乏所有权

开发人员试图用托管数字钱包来解决这个问题。这些钱包为用户管理密钥,有很多好处。

注册很容易。用户可以像使用传统服务一样使用电子邮件和密码,其余的由数字钱包提供商负责。如果用户丢失了登录凭证,其密钥仍然可以在提供商的服务器上访问,用户也可以简单地请求重置密码。由于钱包软件运行在他们的服务器上,供应商甚至可以支付交易费用。用户不需要理解代币、资金和转账。

但正如Web3所说:“不是你的密钥,就不是你的钱!”虽然托管数字钱包解决了许多登录问题,但钱包提供商最终拥有密钥。而现在回到了想要摆脱的问题:一个中心化的实体可以阻止用户使用自己的代币,可以随心所欲地关闭用户的账户,或者取走用户的资金。

如果你能两全其美,那不是很好吗?

三、拯救账户抽象

帐户抽象解决了区块链网络的一个基本问题:外部拥有的帐户和合同帐户之间的区别。

外部拥有的帐户(EOA)是由用户使用私钥控制的帐户,这些是在上面谈到的传统的Web3钱包。外部拥有的帐户(EOA)有一个公共地址,并通过区块链发起交易(例如发送代币)。

合约账户(也只是一个智能合约)是一个部署在链上并由网络节点执行的程序。合同账户不会启动交易。与其相反,它们用自己的动作响应交易。它们没有私钥,由自己的代码控制。这种类型的账户可以说是拥有应用程序托管。

帐户抽象将应用程序托管和自我托管结合到一个新的用户体验(UX)中,为用户提供两者的好处:控制他们的钱包,同时抽象钱包(区块链)。

在流量上,帐户抽象是使用混合托管的无钱包登录的基础。

四、混合托管让你两全其美

无钱包登录允许开发人员为用户创造近乎无缝的登录体验。

图片

混合托管模型使用帐户抽象来允许帐户委托,其中子帐户通过Capability将控制权委托给父帐户,在本质上允许一个帐户控制另一个帐户。

现在,自我托管帐户可以是父帐户,为应用程序帐户授予权限,而应用程序帐户现在是子帐户。有了这样的设置,应用程序帐户可以协同工作,应用程序可以这样工作:

应用程序为用户创建钱包。这里没有登录的障碍——没有密钥管理,没有签名交易,也不了解区块链。用户可以使用应用程序购买和出售资产,而无需了解或关心技术细节。用户的应用程序甚至可以补贴交易费用,或者让他们用美元等法定货币为账户提供资金。这一切对用户来说都是不可见的。

一旦用户带着自己的钱包管理账户回来,其应用程序可以授权访问用户的账户。一旦链接,用户就拥有了混合托管权力——他们的钱包管理着他们的主账户(现在是“父账户”),这个主账户维护着对应用程序创建的账户(现在是“子账户”)的访问。

由于用户的主账户现在可以访问应用程序创建的账户,他们可以将应用程序资产带到钱包管理的账户所在的任何地方。他们可以在市场上交易应用资产,或者与朋友分享。然而,与此同时,由于应用程序也可以访问帐户,它仍然可以为代表他们的行为提供无缝的用户体验。

使用这种混合托管模型,用户可以立即体验应用程序,障碍最小,并且没有风险。在此之后,如果他们愿意,可以自己控制自我托管账户,享受它带来的所有真正的所有权和自我主权。

五、混合保管和账户抽象的技术细节

1.创建账户

这一切是如何运作的呢?

在以太坊和许多其他区块链网络上,EOA是从公钥创建的。该密钥被散列,该散列的前160位成为该密钥控制的帐户的地址。这使得帐户创建独立于网络,但不可撤销地将帐户与该密钥绑定在一起。

流量使用一个特定的链上函数来创建帐户地址。然后,用户可以向流量帐户添加任意数量的密钥,并根据每个密钥的保管人添加和删除访问权限。这意味着需要一个交易来创建一个新地址。所以用户不能离线创建账户,但这也使流量帐户的所有权更加灵活。

用户可以在GitHub上看到一个完整的帐户创建示例,先看看这里的关键部分:

JavaScript

1 userPrivateKey := examples.RandomPrivateKey()
2 userPublicKey := flow.NewAccountKey().
3  FromPrivateKey(userPrivateKey).
4  SetHashAlgo(crypto.SHA3_256).
5 SetWeight(flow.AccountKeyWeightThreshold)
6
7 serviceAccountAddress, serviceAccountKey, serviceSigner :=
8  examples.ServiceAccount(flowClient)
9
10 createAccountTx, _ := templates.CreateAccount(
11  []*flow.AccountKey{userPublicKey},
12  nil,
13  serviceAccountAddress
14 )
15
16 createAccountTx.SetProposalKey(
17  serviceAccountAddress,
18  serviceAccountKey.Index,
19  serviceAccountKey.SequenceNumber
20 )
21
22 createAccountTx.SetReferenceBlockID(
23  examples.GetReferenceBlockId(flowClient)
24 )
25
26 createAccountTx.SetPayer(serviceAccountAddress)
27
28_ = createAccountTx.SignEnvelope(
29  serviceAccountAddress,
30  serviceAccountKey.Index,
31  serviceSigner
32 )
33_ = flowClient.SendTransaction(ctx, *createAccountTx)

首先,用户创建一个密钥对。这是很基本的事项。

因为在流量上,用户通过发送帐户创建交易来创建帐户,所以需要一个现有帐户来发送这一交易。这是ServiceAccount的工作。

createAccountTx接收用户的公钥,以便稍后控制新帐户,但是ServiceAccount(为交易签名并付款)处理其余的工作。在用户的应用程序中,将拥有这个服务帐户,这样就可以代表用户签署帐户创建交易,也为帐户创建提供资金。

2.混合托管

回到混合托管模式。应用程序可以为用户创建应用程序帐户,并将它们链接到其应用程序控制的公钥。然后,应用程序可以处理用户的交易和资产,甚至赞助他们的交易费用,就像任何托管账户一样。

稍后,当用户决定深入Web3生态系统并获得自己的钱包时,可以创建并保存指向应用程序托管帐户的AuthAccount Capability的链接,并将控制权委托给用户的钱包管理帐户。

用户可以在无钱包登录示例中看到这样的示例,其中应用程序执行多重签名交易,将用户的帐户链接到无钱包的登录,dapp托管的帐户到签名用户的钱包管理帐户。

六、结语

需要强调的是,在应用程序创建的帐户上授权访问是通过帐户上的链接Capability完成的,然后将其提供给用户。对于区块链帐户来说,这种帐户委托机制是全新的,它之所以成为可能,是因为多年来流量原生的帐户抽象。这种语言API账户链接功能对于流量上的账户来说是一个巨大的优势,此外还有许多其他功能——m-of-n多重签名、账户密钥更新等等,这些功能现在才开始在其他链上实现,它们都是新生的、非本地的账户抽象实现。

帐户抽象是一个强大的特性。在流量上,它支持混合托管模型,允许用户在注册时享受托管帐户的好处,同时允许他们随时将帐户纳入自我托管。这是一种全新的显著改进的用户体验,有望为Web3带来数百万用户。

原文链接:https://dzone.com/articles/solving-web3-onboarding-with-account-abstraction-a

责任编辑:武晓燕 来源: 51CTO技术栈
相关推荐

2013-09-27 09:39:07

BYOD部署BYOD

2011-08-02 15:07:43

组策略群集用户账户

2023-08-07 09:10:18

2022-08-18 15:21:42

区块链DevOps

2020-06-10 08:20:18

机器学习技术工具

2023-06-29 14:34:49

2022-05-29 22:43:18

Web3谷歌云

2022-10-26 10:24:21

2023-02-10 13:55:25

2016-06-12 09:48:40

2014-05-07 09:41:21

UbuntuTrusty Tahr

2017-08-31 17:00:20

2016-05-03 09:48:58

2023-02-25 16:02:48

2021-03-15 10:29:50

人工智能

2023-06-08 11:57:48

2023-02-15 10:22:14

2021-02-11 09:03:48

Web3技术Web 3.0

2022-07-28 21:17:46

福布斯数字化Web3

2022-04-29 08:00:36

web3区块链比特币
点赞
收藏

51CTO技术栈公众号