译者 | 陈峻
审校 | 孙淑娟
目前,我们正处于Web3的技术爆发期。作为一名Solidity开发人员,如果您希望在比以太坊(Ethereum)更快、更安全、且更具可扩展性的区块链上进行构建的话,那么Flow将是您不可错过的选择。本文将和您详细讨论Flow区块链、其智能合约语言Cadence,并阐述为何以太坊开发人员应当到Flow上进行构建。
什么是Flow?
2017年,加拿大公司Dapper Labs开发了一款新的以太坊收藏品游戏--CryptoKitties。不过,在只有10,000名用户的情况下,它导致以太坊网络出现了大规模的拥塞,并直接冲上了新闻头条。Dapper Labs的开发人员很快意识到,以太坊网络并未针对游戏的运营和扩展进行优化,因此他们开始研究替代性的方案。
Dapper Labs的努力成果便是Flow区块链。作为一种分散且对开发人员友好的区块链,它无需分片(sharding)即可实现扩展。同时,Flow针对NFT等数字资产的创建和管理,进行了高度优化。
Flow的四大支柱
Flow区块链的基础由四个关键支柱组成:
- 多角色架构
- 面向资源的编程
- 开发人员的工程学
- 消费者的登录
这四大支柱不但让Flow与众不同,而且有助于解决其他区块链所面临的常见挑战。下面,让我们来逐一进行讨论:
多角色架构
Flow采用了允许网络扩展的多角色架构。该独特的设计是通过一个验证节点来实现的。此节点可被分为四个不同的角色:收集、共识、执行和验证。简单来说,其中的采集节点负责批量处理,共识节点负责保护,执行节点负责完成,而验证节点负责检查工作。当然,每个节点虽然各自会专注于流程的不同阶段,但是它们也会参与到验证交易之中,并能有效地提高交易的吞吐量。
面向资源的编程
Flow的第二个支柱是面向资源的编程。作为一种面向资源的编程语言,Cadence可被用于在Flow区块链上开发智能合约。此类已优化的智能合约语言通过使用强大的静态类型系统,来最大限度地减少各类错误。同时,由于该语言允许使用各种前置和后置条件,因此开发人员可以强制执行各种预期的行为。我们将在下一节中详细介绍Cadence。
开发人员的工程学
从一开始,Flow的创建者就专注于支持开发人员,并让他们的工作更轻松。
- 如前文所述,Cadence智能合约语言是从头开始构建的,其旨在使得各种创建和管理资产的过程,变得更加高效、且不易出错。
- 通过开源工具—Flow JavaScript SDK、Flow Go SDK和Flow Playground GUI,来使得Flow的入门过程变得更加顺畅。
- 各种可升级的智能合约将有助于最大程度地减少代码中的错误,进而在整体上创建一个更安全的生态系统(下文将进一步讨论关于合约恒定性的内容)。
- 其内置的日志支持,为开发人员提供了一种跟踪程序行为的方法。这是许多区块链生态系统所无法提供的、却又广受欢迎的功能。
消费者的登录
可视的安全性往往能够确保用户在运行事务时,做出明智的决定。由Flow提供的可读(Human-readable)式交易,则能够确保一定程度的透明度,清楚地展示用户可能被授予的权限,进而避免了仅签署那些散列的、混淆了数字与字母的交易。
Flow钱包具有内置的、可选的、且模块化的智能合约功能,可实现更复杂的授权控制、以及自动化的流程。这些功能不但可以确保用户不会丢失其资产,而且提供了在丢失密钥的情况下,恢复帐户的选项,从而造就了更好的体验。此外,它通过提供多重签名的支持,来允许用户定期循环使用旧的密钥,并为钱包增加安全性。
什么是Cadence?
除了提供更快且可扩展的区块链,Flow的开发团队还创建了一种新的智能合约语言-- Cadence。它旨在优化数字资产在区块链上的创建和管理过程。
Cadence的语法是从Swift、Kotlin和Rust等其他现代编程语言中汲取的灵感。它是首个高级的、面向资源(resource-oriented)的编程语言,并且利用了强大的静态类型系统。据此,它能够有效地有助于减少运行时(runtime)的错误,并确保各种预期行为的实现。
说到面向资源,在Cadence中,有一种被称为资源的特殊数据类型。它基于线性数据类型,代表着Flow上资产的数字所有权。诸如NFT之类的资源,可以直接被存储在用户的账户中,而不是作为记录被反映到公共数字分类账上。同时,它们一次只能被存放到一个地方。这就意味着,Flow上数字资产的所有权,是直接用语言本身所定义的,因此有效地消除了将余额存储到中心化的数字分类账上,所涉及到的风险。
此外,Cadence通过执行严格的操作规则,来改进对于资产的管理。在明确是要移动、存储、还是销毁资源之前,开发人员必须使用“@”符号,来定义资源的类型。这种对于资产的强制管理,消除了由于代码错误,而丢失或意外删除资产的可能性,并减少了各种人为错误。
与Flow类似,Cadence也是建立在如下五个支柱之上的:
- 安全和保障——Cadence使用强大的静态类型系统、基于线性类型的内置所有权原语、以及对于资产管理的基本关注,来确保代码的预期行为,并最大限度地减少黑客的攻击向量。
- 清晰性——Cadence的声明性确保了开发人员能够明确其意图,并使得代码更易于阅读、编写和审核。
- 可接近性——Cadence的语法和语义受到了Swift和Rust等语言的启发。其全面的文档、高效的工具、熟悉的环境,都让开发人员非常容易上手。
- 开发人员的体验——Flow生态系统通过各种资源对整个开发生命周期提供支持。
- 直观的资源所有权——资产所有权的相关概念,被通过资源的使用,而不是中央分类帐,内置到Cadence语言之中。据此,资产可以直接与账户的存储相绑定,而无需智能合约,即可自由转移。
开发人员为何应该在Flow上进行构建?
随着Flow的持续改进和引入各种协议,以太坊开发人员或Web3新手可以通过广泛的架构指南,透彻地了解Flow优化的解决方案,并通过使用其各种工具套件,来提高区块链生命周期的开发效率。
其中,Flow Client Library(FCL)JS包通过强大的SDK提供了快速、安全地创建Dapps所需的各种工具,进而简化了钱包的集成。而Flowser(Flow Browser)是一种创新的区块链开发工具。您不仅可以用它来检查Flow的主网、测试网、以及模拟器的状态,而且可以通过其GUI来管理自定义的模拟器和钱包。
此外,Flow区块链也能够排定环境影响的优先级。归功于其共识机制和前文提到的多角色架构,它比其他区块链在工作量证明方面使用的能源更少。例如,从能源使用角度来看,我们执行一次Google搜索的能源成本,可以用它来创建12个Flow NFT。Flow可谓最为环保的区块链。
Flow和以太坊的比较
我们将从如下重要方面与差异性,来全面比较Flow与以太坊:
交易费用和速度
当网络需求量较高时,以太坊会因交易成本的高昂而提高费用。这往往是区块链网络用来将交易量保持在可管理水平的一种机制。也就是说,当区块空间需求很高时,费用就会上涨,以阻止人们进行部署。此外,以太坊上的区块需要每12到14秒确认一次,最终确认发生在6个区块内,而且会超过1分钟。这便限制了其最大事务吞吐量约为每秒15个事务。为了满足数百万用户的需求,此方面有待改进。
而Flow在被创建过程中,充分考虑到此类挑战。上文提到的多角色架构会使得区块大约每2.5秒发生一次最终确认,即每秒大约100个事务。它在主网上的部署和交易的费用只是以太坊主网上的一个零头。
合约恒定性
总的说来,以太坊智能合约在部署上的恒定性是有利有弊的。一方面,由于智能合约在部署后无法被编辑,即:与您交互的代码一旦上线后就无法被更改或重用,因此可信度能够得以保证。另一方面,即使是由非常熟练的编码人员操刀,也很少能一次性以完美的形式部署,因此任何小的缺陷都可能导致大规模的违规行为,进而造成重大的损失。对此,为了修复有缺陷的智能合约,开发人员必须部署一个全新的合约,来确保其用户群使用该合约。此时,恒定性就凸显出了弊端。
而Flow已考虑到了上述场景与其智能合约的恒定性。当合约被部署到Flow区块链时,默认情况下它们是可变的。这就意味着,如果实时合约出现任何复杂的情况,开发人员都可以轻松地予以更改。当然,这并不意味着智能合约完全跳过了测试阶段。开发合约的团队通常会使用软件开发的优秀实践,在测试网中去测试和迭代各种合约,然后最终部署到主网中。
在主网上运行了一段时间后,智能合约完成了各种最终测试或安全性检查。此时,开发人员便可以选择撤销持有智能合约的账户密钥。该操作可以阻止任何进一步的更改,从而有效地保证了智能合约的恒定性。可见,智能合约开发人员可以随时对任何合约启用恒定性,这便是Flow相对于以太坊、以及其他区块链网络的优势所在。
不断增长的生态系统
除了技术优势之外,Flow的社区也在快速地发展中。作为一个强大的开发者生态系统,合作伙伴在其网络中的参与度和对内容的贡献,都有助于稳步提升Flow上的交易量。值得一提的是,2022年6月是Flow创纪录的一个月,其交易量已接近3400万笔。
大多数人一听到Flow区块链就会想到NBA TopShot的非同质化代币。其实,Flow在DeFi和游戏领域也有广泛涉猎。其中,基于Flow区块链聚合器--Flowverse的Chainmonsters和Zeedz都是引领游戏领域的高销量产品。而在DeFi领域,Blocto构建了去中心化的交易所--BloctoSwap和IncrementFi。您可以通过链接--https://www.flowverse.co/projects,查看更多基于Flow构建的项目。
此外,Flow生态系统还从Flow生态系统基金处获得了7.25亿美元,用于帮助那些在Flow上构建的开发人员。可以预测,随着Flow技术的提升、普及度的扩展、以及资金的积累,开发人员对于Flow和Cadence的需求、以及在Flow上构建的项目都会持续攀升。
小结
随着CryptoKitties的成功,Dapper Labs团队很快意识到以太坊已无法支持大规模的区块链游戏。为了优化数字资产的创建和管理,他们创建了Flow区块链和Cadence智能合约语言。
对于以太坊和Solidity开发人员来说,目前正是开始构建更快、更安全、更具可扩展性的区块链的最佳时机。如果您想进一步了解有关在Flow上进行开发、以及如何使用Cadence的更多信息,请访问https://developers.flow.com/。
译者介绍
陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。
原文标题:From Ethereum To Flow – An Introduction To The Flow Blockchain,作者:John Vester