LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > Flow | 详解「加密猫 」团队 Dapper Labs 开发 Flow 公链背后逻辑

Flow | 详解「加密猫 」团队 Dapper Labs 开发 Flow 公链背后逻辑

2020-08-31 FLOW福洛链 来源:区块链网络

你知道多重角色架构(Multi-role architecture)、资源导向(resource-oriented)设计吗?别急!让我们先从「加密猫 」团队 Dapper Labs 的背景开始说起。

「加密猫 」证明了金融与炒币的另一个实际用途 ─ NFT 的可行性

当我们谈论起以太坊,相信不少人会跟你说起加密猫(CryptoKitties)。 2017 年底,此款DApp 游戏在全球引发了病毒式传播,吸引无数玩家收集、交易和繁殖这些加密猫,不仅让以太坊塞车了,更揭开了DApp 的应用想像空间以及让大家一窥非同质化代币(NFT) 的魅力。

在「加密猫」(CryptoKitties) 这款游戏上,每一只加密猫都有自己的DNA 数据,孵育不同的小猫需要根据团队设定的规则,如果你成功培育出独特的加密猫,甚至能让你在市场上贩卖到好价钱,帮你赚到一些ETH。加密猫之所以能够成功,不仅仅是 Dapper Labs 团队独一无二的设计风格,实际上更验证了 NFT 概念的可行性。

「ERC-721是一种 NFT 标准,我们的 CTO Dieter Shirley 在开始做加密猫(CryptoKitties)之前就提出了这一标准。」Dapper Labs CEO Roham Gharegozlou 说到。

非同质化代币(NFT) 是一种特殊类型的加密代币,它具有「通证」性质,但基于其不可分割、不可取代的特性,特别适合用来作为资产证明。非同质化代币(NFT) 通常会应用在游戏宝物、活动门票、域名,甚至是实物资产──如房地产的所有权记录。

Dapper Labs 当初在制作加密猫(CryptoKitties)的目的其实是为了对NFT 进行论证,期望证明区块链可以在去中心化金融领域之外做应用:「我们相信DeFi 的未来,但我们也想要向世人证明除了炒币和金融外,加密货币还有更多的用途,而结果证明我们是对的。」区块链为人类带来的价值包含了:真正属于你的资产、数字资产的稀缺性以及全球流通的交易市场。

Dapper Labs 超过 100 名全职员工,致力于区块链基础设施与杀手级应用 ─ Flow 的诞生

加密猫(CryptoKitties)和 NFT 的成功「实验」在加密货币社群以及主流游戏、音乐和艺术社群都产生了极大的影响。但事实上,以太坊的基础建设在 2017 年底还没有为主流用户市场做好准备,用户体验成为 Dapper Labs 当时的阻碍。因此, Dapper Labs 在加密猫(CryptoKitties) 游戏推出后,决定把团队未来的心力都放在开发区块链基础建设和杀手级应用上。

Dapper Labs 现有将近 100 名全职员工,在某些国家可能算是小公司,但在世界上已是最专注在研究区块链开发和制作高品质 DApp 的独立团队之一。 Dapper Labs 在加密猫(CryptoKitties) 后又推出了一款精致的 DApp 游戏 Cheeze Wizards,并开始了 Flow 公链的技术开发工作,Flow 的诞生即是为了解决以太坊扩容以及速度等基础建设问题。

Flow 公链是什么?其背后逻辑为何?

Flow 旨在成为下一代游戏、应用程式和数字资产开发人员主要开发的区块公链, Flow 的协议旨在使用多重角色架构(multi-role architecture) 而不是使用分片(sharding)进行扩容,此架构能同时保障开发的安全性又能提高速度和交易吞吐量。

Flow 公链有 6 项关键重点

1.多重角色架构(Multi-role architecture)

Flow 的共识流程与计算过程是分开的,Flow 划分了四种类型的访问节点,这些节点的工作流程包含收集(Collection)、共识(Consensus)、执行(Execution)和验证(Verification)。 Flow 的多重角色架构使更多人能参与网路,将节点分成 4 种类型也意味着参与运行所需的效能更少,与其他 PoS 网路相比,参与成本也相对更低。此外,划分四种类型的节点可以达到专业分工的效果,产生更快的交易速度和生产量。

2. 资源导向程式设计(Resource-oriented programming)

Flow 的智能合约使用 Cadence 撰写,Cadence 是一种为了安全性和易用性而设计的语言。它比其他用于智能合约和数字资产的程式语言更容易撰写,也更安全。而 Cadence 的创立目标就是期望能比其他语言更易于学习和审核。在Flow Playground 上目前已创建了2,000 多个项目,这是目前你能着手进行区块链开发最简易的地方,欢迎一同来这里动手做开发。

Flow 所推出的 Cadence 和 Facebook Libra 所推出的 Move 是两个首度采用资源导向(resource-oriented)设计的程式语言。最近 Flow 也宣布与 Libra 官方合作,未来将有机会让两边开源专案与社群互通,创造资源导向(resource-oriented)程式设计更大的共同生态系。

关于Cadence 作为资源导向程式设计(Resource-oriented programming)的介绍,你可以观看Dapper Labs CTO Dieter Shirley 的详细 YouTube 影片介绍,并参考 Cadence 官方文件,也可以参考这篇 Medium 文章,除了详细解说何为资源导向程式,也用实际范例解释了为什么资源导向程式设计(Resource-oriented programming) 会比以往的程式设计模型更好。

3. 高度符合区块链开发人员的程式需求

Flow 结合了多种新颖功能,可提高工作效率、便利性和实用性,举例来说:

可升级的智能合约:为了使开发人员有机会调整和修改其程式码,开发者可以将智能合约的「测试版」状态先部署到主网,让用户知道程式码尚未完成。
在Flow Cadence 的架构中,有内建Multisig 私钥的机制,权限控管不再像是Ethereum 上面,使用在合约上纪录一个白名单的方式达成,而是藉由每个授权帐户中的资源达成,开发者可以部署合约到自己的帐户、程式码可以自己更新。当开发者确定完成程式码后,他们便可再放弃对合约的控制,此时就不能再对其进行更改。

Flow 模拟器:Flow 提供轻量级开发模拟器,使开发人员无需运行在节点或在测试网、主网上进行部署即可构建和测试自己开发的应用程式。

4.极佳使用者入门体验

Flow 的体验设计着强调「非技术」使用者也能轻松进入区块链世界。 Flow 提供的模组化智能合约功能可帮助开发者实现自动化流程和解决复杂的授权控制,而 Flow 上的应用程式和钱包可以向使用者提供清晰的资讯,告知每一笔交易将产生什么影响。 Flow 上交易的撰写方式可让使用者知道执行交易前与执行后的状态为何,以确保使用者在提交交易时,能确认自己了解交易的环节。

5.便宜且可预测的区块链交易手续费

在 Flow 上的交易手续费便宜且可预测,并会确保 DApp 及其用户保持资讯一致性。在 Flow 上,会对链上的任何交易收取基本费用,该费用将足以支付大多数交易手续费。而计算方式则会根据执行交易时的变量去计算。

6. 容量抵押金

在建立Flow 帐户时需要以Flow 令牌作为押金,以支付帐户中存储资产的容量费用, 这笔抵押金将能永久保留该帐户的10kb 容量,以确保用户状态永远不会被系统删除(许多网路系统为了解决空间用量持续扩大问题,会让部分空间遭受被删除的命运)。

多角色架构(Multi-role architecture)和四种节点类型

Flow 使用四种不同类型的参与节点,是与轻量型客户端类比的方式──又称为访问节点。 Flow 的节点分类是以非确定性(「主观」)任务与确定性(「客观」)任务作为区分,非确定性流程指的是例如确认区块链中交易的存在性和顺序; 而确定性流程则是例如已知的交易结果。非确定性任务需要协调,而确定性任务只有一个客观正确的结果。

非确定性任务的节点

收集节点(Collection Nodes)将通过协议被放置在合作集群(Cluster)中,共同管理交易池并收集有效交易以提议给共识节点(Consensus Nodes)。共识节点(Consensus Nodes)使用 HotStuff 共识演算法形成并提议区块,以创建全局一致的区块链。它们具有最小的频宽和计算要求,这使任何人都更容易参与。

确定性任务的节点

执行节点(Execution Nodes)主要在执行交易并维护执行状态,执行状态是指一个有所有使用者帐户和智能合约状态的加密验证数据资料库。
执行节点还能做执行状态有关的查询,这项工作通常在网路上最消耗资源,而这也是 Flow 无需分片(Sharding) 即可提高其规模和效率的关键原因。由于运行执行节点的硬体要求很高,因此它们是参与网路验者中数量相对最少的节点。但是,在执行节点相对较少的情况下,每个节点的收益就有望提高。验证节点(Verification Nodes)确认执行节点完成的工作是正确的。
尽管每个单独的验证节点仅检查少量的网路总计算,但总体说,所有节点已并行分配多次检查整个网路上的每笔计算。

为了使这种方法有效,Flow 使用了一种新的加密技术,称为专用机密知识证明(SPoCK),以解决验证者的难题。

在不泄露任何机密资讯的情况下,SPoCK 允许证明者证明他们有权访问相同的资讯。每个证明者都有自己的专用 SPoCK,不能复制或伪造。 Flow 要求每个证明者都有一个 SPoCK,可确保每个节点进行自我检查,而不是复制其他节点的结果或盲目跟随其结果。




Flow 具体是如何运作的?

Flow 上的交易将提交给收集节点(Collection Node),成为集群(Cluster)的一部分。群集(Cluster)中的绝大多数节点都必须对收集(Collection)进行签名,才能向共识节点(Consensus Nodes)发送收集保证。这里指的保证包括从交易内容、群集(Cluster) ID、群集(Cluster) 交易数和签名得出的哈希值。交易资料会存储在收集节点(Collection Nodes)上,而收集节点必须回应来自执行节点(Execution Nodes)的资料查询。链上的奖励则仅由有在收集(Colection)签名的节点接收。

共识节点(Consensus Nodes) 在确认多数节点签名的收集(Collection)后,会建构包含收集保证(Collection Guarantees)的区块。一旦区块位于链上,执行节点(Execution Nodes)会联系收集节点(Collector Nodes)以获取收集(Collection)的全部内容。

收到交易后,执行节点(Execution Nodes)将运行它们并发出执行收据(Execution Receipt)。至此,节点已经完成了必要的计算工作,以确定链的新状态。

这些收据也会被共识节点(Consensus Nodes)包到新区块中。当完成新区块时,验证节点(Verification Nodes)将开始工作,以确认该区块中所有独立执行的工作都是正确的。

为了验证工作,该区块上的资讯会被分块,分块会被分配给一组验证节点(Verification Nodes),这些节点会与执行节点(Execution Nodes)联系以获取与其块所相对应的数据。如果验证节点(Verification Nodes)确认该块的计算正确,则将结果发布给共识节点(Consensus nodes) 。如果有错误,则会发出错误的计算质询。

一旦共识节点(Consensus nodes)从块上获得足够的结果批准与执行收据(Execution Receipt),共识节点(Consensus Node)会在下一个新区块中包入收据的结果印章。

至少要有 1/3 个验证节点(Verification Nodes) 有结果批准书才能包入结果印章。如果一个或多个块未收到结果印章,则共识节点(Consensus Node)将触发这些块的完全检查模式(Full Check Mode),所有验证节点(Verification Nodes)都将检查有问题的块,而所有验证节点的三分之二必须有结果批准书以密封结果。如果为同一块提供了两个或更多执行收据,则也可以使用完全检查模式。密封结果后,关联的交易将最终确定并不可更改。

详细流程可以参考本份文件。

Open World Builders ─ 免费线上区块链训练营

Flow 在 2020 年夏季提供了一个让你动手来参加的线上加密/区块链技术、智能合约和去中心化应用程式(DApps)的训练营机会!

由 CryptoKitties 和 NBA Top Shot 创始团队所主持的为期 8 周的线上教学计划,主要目标是教育学生和专业人士有关区块链技术和加密行业的未来潜力,以及提供开发人员多个新程式语言范例。

如果你对于相关的训练有兴趣,欢迎参考目前已释出的教学影片与文件,其中包含:15 分钟在 Flow 上完成一个full-stack DApp 线上工作坊、利用 Flow Client Library 与Blocto 行动钱包为加密用户解锁全新体验,Blocto 目前也释出相关的 SDK 教学。

在 Flow Playground 上目前已创建了2,000 多个项目,这是目前你能着手进行区块链开发最简易的地方,欢迎一同来这里动手做开发。

Flow 目前有多项开发者工具正式对社群开源,让所有有兴趣的开发者都可以动手试试看,其中包含 Cadence 智慧合约语言、Flow Go SDK、Flow JavaScript SDK、VS Code Cadence Extension、Flow Playground 网页 IDE ,另外还有 Fungible Token与 Non-Fungible Token 的标准合约提案。

—-

编译者/作者:FLOW福洛链

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...