入门必读

简介

Flow是开放世界的区块链

Flow 是一个快速的、分散的、对开发者友好的blockchain、旨在为新一代游戏、应用和数字资产赋能。它基于独特的多角色架构,设计为无需分片即可扩展,从而在速度和吞吐量方面得到了巨大的改善,同时保留了一个对开发者友好的、符合ACID标准的环境。

Flow 使开发人员能够建立蓬勃发展的加密和可加密的业务。在 Flow 中的应用可以让消费者控制自己的数据;创建可在世界任何地方访问的开放市场上交易的新型数字资产;并建立由用户拥有的开放经济,帮助用户实现价值。

智能合约上Flow 可以像乐高积木一样组装起来,为服务数十亿人的应用提供动力,从篮球迷到有关键任务要求的企业。
在现有的区块链中,
有四个支柱使得Flow 独一无二。

  • 多角色架构:福洛链的设计十分独特,允许网络在不分片且不降低共识去中心化程度的前提下进行扩展,以服务数十亿用户。
  • 面向资源的编程: 福洛链上的智能合约是用Cadence编写的,对加密资产和应用而言,Cadence是更为便捷安全的编程语言。
  • 开发者人体工学:从可升级的智能合约到内置日志记录支持到福洛模拟器,福洛的网络设计是由结果驱动的。
  • 消费者入门: 福洛链专为主流消费者设计,其支付Onramps提供一个法币兑换代币的安全、低摩擦平台。

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

多节点体系架构

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

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

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

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

分片带来的问题

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

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

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

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

分离共识和计算

The core insight that led to architecture of Flow is that we can separate non-deterministic processes from deterministic ones and assign each to different types of nodes based on their technical capabilities to dramatically increase the blockchain throughput and solve several  user- and developer experience problems with existing networks at the same time. Our realization was that tasks within a blockchain can be divided into two types: 

  • 非确定性(或“主观性”)任务,如确定区块链中交易的存在和排序
  • 确定性(或“客观性”)任务,如确定交易排序后计算交易结果

Non-deterministic tasks require a coordinated consensus process (like Proof of Work or Proof of Stake). Deterministic tasks, on the other hand, always have a single, objectively-correct outcome. The critical insight behind Flow’s architecture was that the single biggest bottleneck to blockchain performance is the deterministic task of executing transactions after they’ve already been included into a block, and not the subjective process that requires consensus, i.e. the formation of the block itself. This insight is outlined in our first technical paper: Separating Consensus and Compute.

福洛的多角色架构

福洛将区块链矿工或验证人的工作以流水线的形式分配给4个不同的角色,这些角色都要求质押:分离关注点从而极大地减少了重复劳动

  • 共识节点决定交易是否存在及其在区块链上的顺序
  • 验证节点负责监督执行节点
  • 执行节点执行与每笔交易相关的计算
  • 收集节点增强Dapp的网络连接和数据可用性

在 Flow 的设计中,即使是一个诚实的节点,任何角色,都可以惩罚和触发恢复由不诚实的收集或执行节点引入的无效数据。

共识节点和验证节点是Flow 网络中安全的基础,并利用加密经济激励机制对网络中的其他节点进行问责。 这些验证者可以优化安全和去中心化:共识和验证的难度被简化,以允许更多的参与,甚至是由拥有在家庭互联网连接上运行的消费级硬件的个人。共识节点运行HotStuff的变体,HotStuff是最成熟的权益证明算法之一。


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

加密知识专有证明(SPoCKs)

Specialized Proofs of Confidential Knowledge (SPoCKs) are a new cryptographic technique developed by the Flow team and formally defined in our Technical Papers. SPoCKs allow any number of provers to demonstrate to a third-party observer that they each have access to the same confidential knowledge. These proofs are non-interactive and don't reveal the confidential knowledge. Each prover’s SPoCK is specialized to them, and can’t be copied or forged by any other prover. 

开发者优先的体验

我们开发诸如加密猫和Dapper智能合约钱包等区块链应用的经验使得我们在福洛链的协议层直接加入了一系列提升开发者体验的改进。以下列出几点:

Cadence

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

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

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

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

面向资源的编程是一种新范式,旨在保证安全性和易于使用。开发人员有史以来第一次可以创建独一无二的耐用数字资产,所有权由语言本身追踪,从而开发新一类功能强大的应用。

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

开源工具

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

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

Flow JavaScript SDK对于前端开发者,我们的JavaScript SDK将使您轻松集成福洛并与之交互。在不使用ABI的情况下,构建可组合的互操作性,并创建使用户满意的Dapp。您一定会爱上我们的JavaScript SDK。

Visual Studio Code插件:与福洛交互,并使用Visual Studio Code本地的Cadence语言。静态测试Cadence代码是否有误,并测试您的智能合约,无需放弃行业领先的IDE。

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

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

可升级智能合约

区块链平台做出的最重要承诺之一就是用户可以信任智能合约代码,而非合约作者。区块链的这一属性解锁了许多我们才刚刚开始探索的使用场景,其中最重要的或许就是开放服务和可组合性的概念。

最初的区块链平台设计为,合约代码一经发布即不得修改。这是实现上述目标最直截了当的方法:如果即使合约作者也不得修改代码,毫无疑问代码发布后,用户便无需信任作者。

然而,软件很难一开始就完美无缺。有大量智能合约的例子-即使是实力非常雄厚的团队和高度成熟的社区-依然出现了一些问题,并导致大量的资金损失。

许多开发人员均表达过想要在合约部署后对其进行修改或升级的愿望,其中不乏一些人花费大量时间和精力,在自己的智能合约中添加某种内置机制,以便未来升级或迁移。但是让每个开发者自行加入可升级机制增添了合约的复杂性,并使得这些智能合约难以信任。

在福洛链上,我们允许将智能合约以“测试状态”部署至主网,并允许作者对其逐步升级。用户会收到警示,告知代码尚未完成,并可选择等待代码终局再信任它。一旦作者确信自己的代码是安全的,他们就可以放弃对合约的控制,该决定不可撤销,自此之后,代码将完全不可篡改。

这一设计平衡了用户对代码知情权的需求-也即某一应用或智能合约是否真正无需信任-同时给予开发人员足够的灵活性,在发布后的一段时间里,对代码进行调整。

快速、决定完整性

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

在福洛链上,确定性的终局性可在几秒内实现:一旦共识节点决定某个交易将被打包进某个区块,则在绝大多数情况下,用户代理可在本地执行交易并几乎实时将结果反馈给用户。如果执行结果受到网络中其它交易的影响,用户可以选择信任某个执行节点,并使用现代API在几秒内获得结果反馈,或是等待交易结果及相关执行和验证的证明均已上链。这一区块上链和正式结果反馈的过程需等待约10个区块:这在网络上线初期耗时约10秒。

内置日志记录支持

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

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

消费者友好型入门

除了可用于主流应用的支付on-ramps(其它加密货币和法币兑换福洛代币)外,福洛也使得开发受欢迎的应用程序变得容易:

人类可读的安全性

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

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

智能用户帐户:无需助记词且密钥不再丢失

福洛的设计以灵活为初衷。在过去一年里,Dapper Labs首创多个以太坊账户模型的使用增强功能,作为Dapper 智能合约钱包的一部分。这些增强功能是福洛本地账户的一部分。

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

Community

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

技术架构只是福洛保证协议层的包容性和普遍参与的一个例子:我们在社区传播和治理方面的努力同样,甚至更重要。

节点费用与收益

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

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

开发者生态系

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

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

  • Developer Alpha Program: over the coming months, the Flow team will begin demonstrating the capabilities of the network to interested blockchain developers for technical feedback. Whether you’re an independent hobbyist or a venture-backed powerhouse, the Flow team wants to hear from you.

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

内容伙伴

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

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

加入社区开启福洛之旅

福洛将与社区一道,为数十亿消费者提供一个开放、值得信赖的互联网。我们正在寻找开发人员、企业和宣传大使,一道实现这个数字世界。这些团队和个人将与我们的团队密切合作,并获得指导,以便基于福洛开发产品和服务,打造业务和社区。如果您对在福洛上构建未来感兴趣,请 联系我们

谢谢!信息提交成功!
糟糕!表格提交出错!