Flow Community Rewards are here. Earn points for engaging in the ecosystem, spend points on prizes. Learn more.
技术愿景

入门必读

简介

Flow,开放世界的区块链

Flow 是一个快速的、去中心化的、对开发者友好的区块链、旨在为新一代游戏、应用和数字资产赋能。它基于独特的多角色节点架构,无需分片即可进行扩展,因而在速度和吞吐量方面获得了巨大的改善,同时也保留了一个对开发者友好的、符合ACID标准的运行环境。

Flow 让开发者能够建立起蓬勃发展的加密或加密赋能业务。 Flow 上的应用可以让消费者掌控自己的数据;创建可任意访问在开放市场上自由交易的新型数字资产;并建立由用户拥有的开放式经济系统,帮助他们实现价值。

Flow 上的智能合约可以像乐高积木一样组装起来,由它构建的应用可以为数十亿人服务,无论是篮球迷还是有特殊需求的企业。
在现有的公链之中,
有四大支柱使 Flow 成为了独一无二的存在。

  • 多角色节点架构:Flow 链的设计十分独特,允许网络在不分片且不降低共识去中心化程度的前提下进行扩展,以服务数十亿用户。
  • 面向资源的编程: Flow 链上的智能合约是用 Cadence 编写的,对加密资产和应用而言,Cadence 是更为便捷安全的编程语言。
  • 丝滑的开发体验:从可升级的智能合约到内置日志记录支持与 Flow 模拟器,Flow 网络是由结果导向驱动设计的。
  • 消费者轻松上手:Fow 链专为主流消费者设计,提供了安全、低摩擦的支付方式,包括法币与加密货币。

尽管 Flow 的设计初衷是为了满足我们自己的需求,但它很快就超越了原始的设计目的。无论是我们discord里,还是来自世界各地的数千位开发者,都不约而同地认可:Flow 是与众不同的。让我们携手共建未来!

多角色节点架构

在传统区块链中,每个节点都存储完整状态(账户余额、智能合约代码等),并执行所有与处理链上交易相关的工作。类似于让一个工人去造整辆车。

从生产制造到CPU设计,流水线作业是显著提高生产效率的通用技术。福洛链将流水线作业应用于区块链上,将验证节点的工作分配给4类不同的角色:收集、共识、执行和验证。节点间垂直分工(负责同一笔交易的不同验证阶段),而非水平分工(负责不同交易,如分片)。

换言之,每个验证节点仍会参与每笔交易的验证,但它们仅仅参与其中的某个阶段,因此它们可以专注于该特定阶段,从而极大地提升效率。

这使得 Flow 链既可以更低的成本扩展数千倍的吞吐量,也可为网络上的所有操作维持一个共享的执行环境。用数据库的术语来说:Flow 链上的智能合约及用户帐户始终在一个原子性、一致性、隔离性和持续性(ACID)的事务中交互,从而确保了良好的用户体验以及完整的可组合性,让开发者可以轻松地在彼此工作基础之上进行开发。

分片带来的问题

大多数扩容的方案都是通过将区块链分成相互连接的网络来提升其扩展性:常见的是分片,尽管侧链也存在相同的问题。这些方法消除了数据库中常见的序列化(“ACID”)保证。

ACID保证的缺失,使得开发需要在不同分片中获取数据的应用程序变得更困难,且容易出错。智能合约之间的交互变得非常复杂,由于时延和更高的交易失败率,即使是大型应用程序也不得不依靠复杂的机制以实现跨分片扩展,这极大地限制了网络上应用程序的数量及网络效应。分片实际上是把区块链扩容中最困难的部分转移给应用程序的开发者,而非在协议层级别解决这个问题。

一个简单的用户操作(如用TUSD这样的稳定币为加密猫买帽子),在分片的区块链上可能需要12笔交易和7个区块的确认。但在像 Flow 链这样一个不分片且符合ACID的环境中,同样的操作,以及更多更复杂的操作,都可以在单个区块上由一个原子事务来处理。

比额外耗时和成本更糟糕的,则是攻击面和复杂性的增加:在分片的区块链上很难设计、测试和优化智能合约代码。

分离共识和计算

Flow 架构中的核心理念是,将非确定性过程和确定性过程分开,并根据其技术能力将每个过程分配到不同类型的节点上,从而大幅提高区块链的吞吐量,同时解决现有网络的若干用户和开发体验问题。我们的认知是,区块链中的任务可以分为两类: 

  • 非确定性(或“主观性”)任务,如确定区块链中交易的打包和排序
  • 确定性(或“客观性”)任务,如对排序的交易进行计算执行并获取结果。

非确定性任务需要一个已协调的共识过程(如PoW或PoS);而另一方面,确定性任务总有一个单一的、客观正确的结果。 Flow 架构中核心思路是,区块链性能的最大瓶颈在于交易被纳入区块后执行计算的确定性任务,而不是需要共识的主观任务(如区块的生成)。我们在第一篇技术论文中概述了这一观点。分离共识与计算.

Flow 的多角色架构

Flow 将区块链验证人的工作以流水线的形式分配给了四个不同的角色,这些角色都要求质押;关注不同的重点从而极大地减少了冗余工作:

  • 共识节点负责决定链上交易的打包和排序
  • 验证节点负责确认执行节点的有效性
  • 执行节点负责每笔交易的计算执行
  • 收集节点负责确保网络连接和数据的可用性

Flow 的设计使得任何角色的任一诚实节点,都可以惩罚并触发由作恶的收集或执行节点带来的无效数据恢复。

共识节点和验证节点是 Flow 网络的安全基础,并通过代币经济激励机制对网络中的其他类型节点负责。 这两个类型的节点是可以提升安全性与去中心化程度的:共识节点和验证节点是可以通过精简优化以达到更高参与度的,他们甚至将可以运行在个人消费级硬件上。 而共识节点运行着 HotStuff 共识的变体,这也是被证明最成熟的PoS算法之一。

权益证明


另一方面,执行节点和收集节点负责的是完全确定性的工作:这使得它们不容易受到攻击。这些节点的工作也是由其它类型的节点验证并监督的。因此,这些节点可以针对安全性和可扩展性进行优化,以支持网络的扩容。这两类节点就需要在专业数据中心的专用服务器硬件上运行。

机密知识专有证明(SPoCKs)

机密知识专用证明(SPoCKs)是一种全新的由 Flow 团队开发,并在技术白皮书中提出的加密技术。SPoCKs 允许任何数量的证明者向第三方观察者证明他们每个人都获得了相同的机密内容。这些证明是非交互式的,不会泄露出机密内容。而每个证明者的 SPoCK 都是专门针对 它们独有的,任何其他证明者都无法复制或伪造。

丝滑的开发体验

我们开发诸如加密猫、Dapper 智能合约钱包等区块链应用的经验,让我们在 Flow 链的协议底层直接加入了一系列提升开发者体验的改进。以下就是几点。

Cadence

Cadence 是首个面向资源的、开发者友好的智能合约编程语言。

尽管现有的编程环境可以用于追踪资产所有权,但是它们往往用于反映而非直接定义所有权。公链的独特之处在于,它们设计的初衷就是为了管理具有稀缺性和完全访问控制的数字资产的所有权。公链上的数字资产如同现实资产:它们不可被复制或仿造,只能移动。

受到对智能合约语言的学术研究 启发,Flow 团队开始研究在区块链中使用线性类型。几乎同一时间,Libra 团队为 Move 定义了一套全新的编程模型,它是一种启发于线性类型的全新所有权模型:资源。资源是一种在编程语言中直接表达资产所有权和加密资产性质的新方法。以下是 Move 白皮书的介绍:
Move的关键特性在于其能自定义资源类型。资源类型可用于对富可编程性的安全数字资产进行编码。

我们被面向资源编程的力量所震惊,并将其设计为 Cadence 的关键特性之一,使它成为一门专为加密应用新范式而设计的编程语言。

面向资源的编程是一种全新范式,旨在保证安全性和易于使用。开发者有史以来第一次可以创建独特而长久的所有权由语言本身赋予的数字资产,从而赋能全新类型的强大应用。

作为首个高级面向资源的编程语言,Cadence 具备开发者友好的语法,非常易于阅读。它使用强大的静态类型系统来最大程度减少运行时错误,并允许方法、接口和事务都包含前置和后置条件检查,以强制执行预期行为。因此,Cadence容易学习,非常易于审计,并且比当前任何其它的区块链编程语言都更有效率。你可以前往 Flow Playground 学习Cadence语言: play.onflow.org

开源工具链

Flow 团队已经开源了一系列工具以帮助开发者:

Flow Go SDK: Go SDK 对于考虑可扩展性并寻求后端集成的开发者而言,是一个非常好的工具。如果最看重性能,则Go是最受欢迎的后端编程语言之一,它也一直是 Dapper Labs 的首选。

Flow JavaScript SDK:对于前端开发者,我们的 JavaScript SDK 将使您轻松集成 Flow 并与之交互。开发时无需 ABI,构建可组合的交互行为,并为你的用户打造满意的Dapp。您一定会爱上我们的 JavaScript SDK。

Visual Studio Code插件:在 Visual Studio Code 本地使用 Cadence语言并与 Flow 链交互。可静态检查 Cadence 代码是否有误,并对你的智能合约进行测试,无需放弃行业领先的IDE。

Flow Playground GUI: 虚拟主机、浏览器内的开发环境,用户无须任何配置即可学习和尝试Cadence智能合约语言。我们让每一个新的开发人员都可以轻松尝试这一强大的语言。

标准提案:FTs (同质化代币)NFTs (非同质化代币) 分别对应以太坊的 ERC-20 和 ERC-721 标准代币。

可升级的智能合约

智能合约平台最重要的承诺之一是,用户可以信任智能合约代码,而不是智能合约作者。区块链的这一特性开启了我们才刚刚开始探索的用例,其中最具影响力的可能是开放服务和可组合性的概念。

在智能合约平台的最初版本中,合约代码一旦发布就永远无法更改。不可更改性是向可公开运行的区块链代码的潜在用户证明其可信度的最直接方法;如果代码无法更改,即使是原作者也无法更改,那么你就可以明确知道运行的代码在被调用时会做什么。

不幸的是,软件很难第一次就做对。

许多开发者都表示希望在智能合约部署后对其进行修复或改进,开发者也花费了大量时间和精力,利用代理合约和类似模式建立了允许升级或迁移的机制。然而,让每个开发者都 "自己开发 "可升级机制会增加复杂性,并使这些智能合约更难以信任。

On Flow 合约默认是可变的,因此可以升级。这不仅方便了日常开发,节省了时间,还减少了管理已部署代码的运营开销。一旦开发人员准备好永久锁定合约,就可以通过删除包含合约的账户密钥来实现不变性。

快速达成完全确认

从终端用户的角度来看,区块链的速度实际上是由它们(或他们的客户端程序)可以确信自己发布的交易已经永久上链所需的时间来衡量的。这一过程通常被称为“Finality”。在比特币网络中,大部分人将 Finality 定义为六个区块的确认,耗时可能超过1小时。以太坊在此有所改进,只需约6分钟的时间,就可以实现 概率上的 Finality

在 Flow 链上,完全确认可以在几秒内实现:一旦共识节点决定某个交易将被打包进某个区块,在绝大多数情况下代理端几乎可以本地执行交易并立即将结果反馈给用户。在某些情况下执行结果可能受网络中其它交易的影响,那用户可以选择信任某个执行节点,并使用 API 在几秒内获得结果反馈,或是等待交易结果直到执行和验证的收据封装上链。这一区块封装过程并获得正式结果反馈的过程需等待约 10 个区块:即耗时约10秒。

内置日志支持

有时侯确保复杂软件能够按预期运行的唯一方法就是将其在很长一段时间内的行为详细记录。现有的智能合约平台并不包括日志记录功能,原因很简单,即存储整个区块链的完整日志是完全不可能的。数据太多!

Flow 意识到由于所有的智能合约交易都是完全确定性的,因此无需存储全网每一笔交易的日志。相反,Flow 只是标记哪些交易将产生哪些主题的日志信息。如果有人想要“检查”日志,可以查询区块链内带有特定主题标签的交易子集,然后在本地重新运行这些交易,以生成可供分析的日志。这一技术也大大提高了事件记录的效率。

消费者轻松上手

除了主流支付手段(支持法币和加密货币)外,Flow 也易于开发受欢迎的应用:

高可读性安全

在当前的区块链中,应用或钱包软件几乎不可能提供一条人类可读的消息,明确告知用户在授权一笔交易时,到底批准了哪些权限。而 Flow 的交易格式则确保明确交易中是否可以进行哪些内容对修改。这使得钱包能很容易地确保用户在授权时做出明智的决定。

而是否将该信息提供给用户,由钱包自行决定。但是通过对 Flow 的交易格式做静态分析,我们能为更透明的交易授权过程创造了可能性。

智能帐户模型:无需助记词也不会丢失密钥

Flow 链的设计以灵活为初衷。在过去,Dapper Labs通过 Dapper 智能合约钱包对以太坊账户模型进行了可用性增强。而这些增强的功能均为 Flow 原生账户的一部分。

  • 每个 Flow 钱包均内置可选的、模块化的智能合约功能
  • 它支持自动化流程或更复杂的授权控制,也带来了更好的用户体验。例如,借助安全账户恢复流程,Dapp可以轻松确保消费者永远不会丧失自己的资产-或无法访问自己的账户。
  • 可选的多重签名支持增加了安全性,可以定期清理旧的密钥以避免安全性漏洞

社区生态

Flow 致力于开放的生态系统:一个软件开发者、内容创造者和消费者都可以得到合适的激励,会因其对网络做出的贡献而获得奖励。

其技术架构只是 Flow 链保证协议层的包容与参与度的一个例子,我们在社区传播和治理方面的努力同样重要。

节点手续费与收益

在 Flow 链上,节点运行者会获得一部分交易手续费的奖励,数额与其所作工作和相关质押额成正比。与其它区块链的矿工或验证人不同,Flow 链上的节点一开始可以选择作为共识节点或验证节点参与,这样可以使用相对便宜的硬件,也保证了广泛、公平的参与度和去中心化程度。

早期当交易费用较低时,网络会为节点提供额外奖励,数额与其所作工作和相关质押额成正比。

开发者生态

一个健康而有活力的生态系统是一个区块链成功的最重要的长期决定因素。 这也是 Flow 与大量多样的利益相关者接触的基本要求。最重要的是,这不仅仅局限在投资者群体,也包括选择在 Flow 上进行构建的开发者和生态合作伙伴。

除了针对开发者体验和性能进行优化的技术设计外,Flow 团队还在采取额外的措施来确保生态系统的健康。

  • 开发者 Alpha 计划:在未来几个月内,Flow 团队将开始向对其感兴趣的区块链开发者展示能力,以获得技术反馈。无论你是独立的爱好者还是有风投支持的大公司,Flow 团队都希望能听到你的声音。

  • 生态系统发展: 将预留部分 Flow 代币用作生态发展,以促进采用并奖励早期的参与者。早期参与者的奖励将通过一系列不同的项目发出,包括竞赛、黑客松以及参与开源开发。除加快采用外,预留部分代币用作长期生态系统发展也保证了一条通往网络参与和治理多样化、去中心化之路,确保全球各地人士的广泛参与。

内容合作伙伴

区块链将允许品牌和意见领袖以新的方式直接与粉丝建立联系。数字资产的稀缺性和真正的所有权为游戏化的社交体验创造了空间。它超越了单个应用,并围绕每个独特IP打造收藏者经济。Flow 正在与知名人士以及一些世界领先的娱乐工作室、IP持有者和出版商合作,以确保我们的平台能满足他们的需求。

Flow 还将赞助成立一个由全球IP持有者、游戏发行商和娱乐行业高管以及文化意见领袖组成的娱乐行业理事会,以识别风险与机遇,消除影响消费者采用的摩擦点,并推动建立一个健康的全球娱乐生态体系。

加入社区开启 Flow 之旅

Flow 将与社区一起为数十亿消费者提供一个开放且值得信赖的互联网。我们正在寻找开发者、企业和宣传大使,共同将数字世界带进生活。团队和个人都可以与我们的团队密切合作并获得指导,以便在 Flow 上构建产品、服务、商业、社区。如果您对在 Flow 上构建未来感兴趣,请 联系我们