Flow 的账户模型为用户提供了真正的所有权
福洛链 Flow Official
2023-03-07 14:02
订阅此专栏
收藏此文章

原文链接:https://flow.com/post/flow-blockchain-news-analysis-ownership-account-model

本文由 Flow 大使 Lanford 翻译整理。

本文包含 Ramtin Mehdizadeh SerajLayne Lafrance的 贡献。


真正的所有权是一个承诺,即个人可以通过广泛的服务提供商随时随地访问他们认为有价值的东西。这个承诺的价值首先得到了比特币的验证,又在以太坊上得到了验证——两者都提供了一个顺畅访问价值的机会。但不幸的是,我们现在知道它们都无法充分履行承诺,因为这需要在 15 年后才能实现。


比特币的所有权受限于账本上所记录的内容(UTXO 模型),这意味着它可以将你的密钥与价值联系起来,并且只有你的密钥才能提交更改该价值的交易,但如果你失去了密钥,你就会失去对该价值的所有权。


基于 EVM 的区块链(如以太坊)采用了一种不同的方法,即合约模型,它允许开发者使用区块链来管理更复杂的用户价值关系,这些关系严格地记录在账本上。这提高了真正所有权承诺的价值,因为它扩展了用户可用的价值;较小市值的加密货币(例如那些在臭名昭著的 2017 年 ICO 期间发行的加密货币)能够代表和捕获一小群人的具体需求和想法,并确保即使网络更庞大的代币(例如这些示例中的 ETH 或 BTC)的接受度急剧下降,这个小群体的人仍能够互相强制兑现。这是一个巨大的改进!


然而,合约模型存在一个主要缺陷——它重新创建了一种加密货币原本旨在避免的经济体系——一小部分人决定了你的价值的命运。智能合约为开发者提供了许多自由度,既可以为客户提供服务,也可以从客户那里窃取价值,不幸的是这就是合约模型的本质。在以太坊上,与你价值相关的交互需要核心合约批准,这些合约为你持有价值,你的所有权由这些开发者定义的规则和对他们核心智能合约的引用来决定,而不是由真正的密码学控制。


数字领域的真正所有权取决于某个物品在未经你明确同意的情况下,你对其的所有权的不可撤销性。换句话说,这是你无需经过另一方(例如你使用的应用程序)的批准,访问你所拥有的物品的权利、自由和能力。这种不可撤销性由一个独立于任何单个政府或机构运作的系统正式保证——公共区块链往往填补了这个空缺。Flow 就是这样一个系统,它是一个公共区块链(即平台),支持、实施和实现对数字物品的不可撤销的访问。Flow 相对其他链的改进中,有一点就在于确保对这些物品的访问最终完全在用户的管控和权利之内,而不是任何为他们提供服务的应用程序。Flow 的目标是为所有参与者提供真正的所有权——对(数字)物品的不可撤销的自主访问——本文将解释 Flow 是如何实现这一目标的。但是,如果你需要一份


要点总结

账户模型是一种定义所有权和访问权限的方式,使用户始终可以访问价值,在系统中受到最安全的保护。开发者也可以安全地访问用户账户以提供服务,但在提供产品或服务的过程中,他们不能未经用户明确许可就从用户账户中移除价值。Flow 的账户模型建立在合约模型的思想基础之上,仍然主要围绕着智能合约,但有一些重要的区别!我们将详细说明让 Flow 重新考虑行业标准的观察和动机,并详细说明以太坊的基于 EVM 的合约模型和 Flow 的基于 FVM 的账户模型之间的区别。



1. 访问管理

相对于目前基于 EVM 的区块链 (例如以太坊、Polygon、Avalanche)的账户,Flow 账户的好处之一在于其强大的访问管理功能。这些原生支持的账户管理功能通过设计解决了许多问题,并确保开发者和用户默认情况下具有最佳实践的安全访问。以下是一些属性的列举:


■ 支持单账户多密钥

每个 Flow 账户可以由多个公钥控制。附加到账户的每个公钥都分配了一个用于交易的唯一的紧凑 ID(账户地址和密钥索引的组合)。这允许在不同的账户上重复使用相同的公钥。使用有效密钥的 Flow 账户,用户可以随时添加 / 撤销密钥。这使得用户可以轮替其密钥并撤销存在潜在风险的私钥。


基于 EVM 的账户仅允许单个公钥控制账户,该公钥在账户初始化时设置,无法轮替或更改。如果密钥存在潜在风险,用户必须设置一个新账户并将所有资产转移到新账户上,这是一个非常昂贵和耗时的过程。


支持每个账户多个密钥的另一个好处是可以从多个位置控制一个账户。目前,从多个设备控制 EVM 账户的唯一方法是从设备中提取私钥种子并将其传输到其他设备。这会引入不必要的风险,并且对于现代设备上的签名硬件模块(如安全隔离区)来说,导出种子可能不是理想的选择。与将密钥从笔记本电脑复制到手机(这会使它们暴露于许多形式的恶意软件)不同,使用 Flow 账户,你可以在笔记本电脑和手机等每个设备上都生成私钥,这些私钥永远不需要离开设备。


■ 原生支持密钥权重

Flow 账户原生支持使用各种加密签名算法(例如 ECDSA、EdDSA 等)和不同的设置(例如不同的曲线)进行授权。


正如你可能已经注意到的那样,大多数区块链的最先进的安全性要求购买用于密钥管理的定制硬件设备(Ledger 是最知名的例子)。


也许由于历史原因,比特币和其他区块链选择使用较不常见的密钥签名设置(secp256k1 曲线),这使得它们的密钥与今天广泛使用的签名算法(P-256 曲线)不兼容。自比特币推出以来的几年中,安全研究人员已经得出结论,"加密货币世界流行"曲线和"行业标准"曲线都是安全的。Flow 决定让用户决定他们喜欢哪个。


因此,Flow 与 Ledger 和其他加密专用硬件设备一样可以很好地配合使用,但它同样可以与你已经拥有的硬件加密设备(如智能手机甚至许多现代笔记本电脑中包含的硬件安全隔离区)一起使用。使用你已经拥有的设备,享受完整的军用级硬件安全保护。


EVM 缺乏对各种设置的原生支持,限制了用户和开发者只能在链上实现签名验证,这非常昂贵,有时甚至在单笔交易中都不可能完成,因为它可能导致高达一百万的 Gas 消耗,而交易的最大 Gas 限制要小得多。


以太坊社区也正在朝着这些功能的方向发展,这些功能被统称为“账户抽象”,并计划通过智能合约引入它们。我们期待着看到这个提案最终得到采纳,以便以太坊用户可以使用这些功能,尽管在智能合约层面实现这些功能所带来的额外 Gas 成本仍不清楚。



2. 地址分配

如前所述,Flow 账户允许每个账户拥有多个密钥,与基于 EVM 的账户地址不同,Flow 地址不是从公钥派生的,每个 Flow 账户在创建账户时会被分配一个唯一的紧凑且可验证的地址。这提供了下列好处。


■ 唯一、紧凑且可验证

Flow 地址被设计了一种强大的方法来验证地址正确性。每个地址由 16 位十六进制字符(不区分大小写)组成(包含校验值),以防在输入帐户时出现意外错误。由于网络统一分配这些唯一的地址,因此不需要非常长的地址。


相比之下,EVM 地址是从公钥派生出来的,为了防止账户地址的潜在冲突,它必须表示为一个长达 40 位的十六进制字符串。虽然有一种账户地址的校验和方法,但它需要以正确的大小写发送地址,开发者、用户或签署交易的平台往往不知道这点或只接受小写版本。这可能导致资产被转移到一个没有任何人持有密钥的错误地址上。检查这个以太坊账户,你就会意识到,有许多人会因为错误地将目标地址留空而意外向这个账户发送资产。许多资产已经进入了该账户,使其成为一个大型的彩票,当有人成功生成一个可以拥有该公共地址的私钥时,他们可能会赢得这个彩票。在 Flow 上这是不可能的,因为不是每个十六进制字母的组合都是一个有效的地址,如果用户意外尝试将资产发送到无效的地址,交易将优雅地失败,资产不会被锁定或丢失。


■ 网络专属的地址分配

Flow 地址的另一个好处是它是网络专属的,即在 Flow 的 Mainnet 网络上有效的地址,在 Flow 的 Testnet 上是无效的。请注意,这并不意味着你不能在多个网络上使用相同的公钥,你仍然可以将相同的密钥附加到多个网络上的多个帐户,但它通过设计增加了 Flow 账户的安全性,同时保持了灵活性。


如前所述,EVM 地址是从公钥派生的,如果公钥在多个网络上使用,则会产生相同的地址。我们经常看到开发者或用户意外将交易发送到以太坊主网而不是测试网,导致不幸的资金损失。


■ 减轻虚假账户创建

许多区块链应用程序及其开发者每天都不得不处理假账户。无论是通过代币空投以表达对应用程序早期用户的赞赏,还是通过多样化代币分配来保护 DAO,都假定账户不是虚假的。但不幸的是,对于任何人来说,生成公钥 / 私钥对都是没有成本的,因此任何愿意使用这些账户做些事情的人都可以构建大量的账户。因此,许多账户仅为了从代币空投中获益而被创建,这引发了针对去中心化应用的女巫攻击。


Flow 的存储模型已经解决了这个问题——Flow 账户的地址是在账户创建时分配的,前提是新创建的账户已经存入了最低限度的 FLOW(Flow 网络的原生代币)。该存款与账户使用的存储相关,但有一个最低存款要求,这缓解了之前提到的大量账户创建和相应攻击的问题。



合约存储

Flow 的合约存储模型在实用性、安全性和可组合性方面极大地推动了智能合约的发展。以下是一些特点:


■ 单个账户存储多个合约

每个 Flow 账户都可以承载任意数量的合约。每个合约存储在账户下的唯一名称下。这使得对绑定到可信账户(如 NBATopShot)的智能合约进行可信度检查更加容易。相比于 EVM 模型,Flow 的合约存储模型更加自然和灵活,因为在 EVM 世界中,每个账户只能是以下类型之一:外部拥有的账户(无法承载任何合约),或合约账户(只能承载单个合约)。如果需要部署多个合约,则必须创建多个合约账户。


■ 开源的智能合约

Flow 上的每个合约都以 Cadence 源代码形式存储,并对任何人公开。将源代码存储在链上而不是编译后的字节码,使得开发者和用户更容易审查合约内容,防止恶意活动。它还为可组合性开辟了空间。在以太坊等基于 EVM 的区块链上,合约代码不会存储在链上。只有合约编译后的程序存储在链上,这需要外部应用程序接受来自社区的源代码,并将其与存储在链上的字节码进行交叉验证。这有时会隐藏实际的代码,为恶意活动打开门户。有人可能会认为这可以为程序提供隐私,但根据我们的经验,几乎每个字节码都可以进行分析和反编译,但需要更多的努力和复杂性,超出了对于“公共、开放的区块链”的期望。


■ 可升级性

修复漏洞和提供补丁以解决漏洞是维护任何软件和 Web3 应用程序安全性和活力的必要措施,Flow 为智能合约提供了安全的升级方式,同时保护用户资产。智能合约是代码(其函数)和数据(其状态)的集合。在 Flow 上,数据直接存储在用户账户下,而不是存储在合约内部,这使得更新代码成为可能,同时也保护了数据。代码更新必须遵循特定的规则,以防止意外失误和恶意行为。随着去中心化应用程序基础设施随着时间的推移变得更加强大和无漏洞,并且项目社区不断增长,合约所有者可以选择锁定合约,使其不再更新。


在以太坊虚拟机世界中,每个合约都是永久不可变的,无法升级。唯一可能对合约进行的更改是通过调用“selfdestruct”来删除合约,这可能会导致用户资产的损失,它似乎造成的伤害大于好处。



未完待续…

这些设计决策还涉及账户存储数据的更多方面(例如代码和数据的分离、存储路径、能力(capability)等),以及交易如何构造(付款人与授权人的分离、支持多个授权人、过期等),这将在一系列后续文章中进行介绍。

 关注 Flow 

什么是 Flow 福洛链?


Flow 福洛链是一个快速,去中心化,且对开发者友好的区块链,旨在为新一代游戏、娱乐应用程序提供动力的数字资产的基础。Flow 是唯一一个由始至终为消费者提供出色体验的 Layer-1 区块链团队。其团队创造的 dApp 包括:CryptoKittiesDapper WalletsNBA Top shot


CrytoKitties 于 2017 年推出时便快速成为加密市场最受欢迎的 dApp,因其成功而导致以太坊堵塞。在 Flow 上运营的 NBA Top shot 也已成为增长最快的 dApp,在公开发布后的 6 个月创造了 7 亿美金销量。正因为 Flow 公链的可扩展性和消费者友好的体验,让这一切成为可能。目前有 1000 多个项目正在 Flow 链上筹备中,我们期待看到一个伟大的生态系统蓬勃发展。


关于 Dapper Labs

Dapper Labs 是一家位于加拿大的全球顶尖区块链服务商,在 2017 年年底通过 CryptoKitties 收藏游戏成功进入⽤户视野,并且因为加密猫的爆⽕导致以太坊拥堵,从而推出 Flow 公链以及全新的开发语言—— Cadence,旨在吸引更多的开发者在 Flow 上开发应⽤。 


Flow 的合作伙伴们:

我们欢迎越来越多的小伙伴加入 Flow 星球,为星球增添色彩!


Flow 官网:https://zh.onflow.org/

Flow 论坛: https://forum.onflow.org/

Flow Discord:

https://discord.com/invite/flow

Flow CN Telegram: https://t.me/flow_zh

Flow B 站:https://space.bilibili.com/1002168058

Flow 微博: 

https://weibo.com/7610419699

Flow CSDN:

https://blog.csdn.net/weixin_57551966?spm=1010.2135.3001.5343


【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

相关Wiki
福洛链 Flow Official
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开