譯者 | 陳峻
審校 | 孫淑娟
目前,我們正處于Web3的技術(shù)爆發(fā)期。作為一名Solidity開發(fā)人員,如果您希望在比以太坊(Ethereum)更快、更安全、且更具可擴(kuò)展性的區(qū)塊鏈上進(jìn)行構(gòu)建的話,那么Flow將是您不可錯(cuò)過(guò)的選擇。本文將和您詳細(xì)討論Flow區(qū)塊鏈、其智能合約語(yǔ)言Cadence,并闡述為何以太坊開發(fā)人員應(yīng)當(dāng)?shù)紽low上進(jìn)行構(gòu)建。
什么是Flow?
2017年,加拿大公司??Dapper Labs??開發(fā)了一款新的以太坊收藏品游戲--CryptoKitties。不過(guò),在只有10,000名用戶的情況下,它導(dǎo)致以太坊網(wǎng)絡(luò)出現(xiàn)了大規(guī)模的擁塞,并直接沖上了新聞?lì)^條。Dapper Labs的開發(fā)人員很快意識(shí)到,以太坊網(wǎng)絡(luò)并未針對(duì)游戲的運(yùn)營(yíng)和擴(kuò)展進(jìn)行優(yōu)化,因此他們開始研究替代性的方案。
Dapper Labs的努力成果便是Flow區(qū)塊鏈。作為一種分散且對(duì)開發(fā)人員友好的區(qū)塊鏈,它無(wú)需??分片??(sharding)即可實(shí)現(xiàn)擴(kuò)展。同時(shí),F(xiàn)low針對(duì)NFT等數(shù)字資產(chǎn)的創(chuàng)建和管理,進(jìn)行了高度優(yōu)化。
Flow的四大支柱
Flow區(qū)塊鏈的基礎(chǔ)由四個(gè)關(guān)鍵支柱組成:
- 多角色架構(gòu)
- 面向資源的編程
- 開發(fā)人員的工程學(xué)
- 消費(fèi)者的登錄
這四大支柱不但讓Flow與眾不同,而且有助于解決其他區(qū)塊鏈所面臨的常見挑戰(zhàn)。下面,讓我們來(lái)逐一進(jìn)行討論:
多角色架構(gòu)
Flow采用了允許網(wǎng)絡(luò)擴(kuò)展的多角色架構(gòu)。該獨(dú)特的設(shè)計(jì)是通過(guò)一個(gè)驗(yàn)證節(jié)點(diǎn)來(lái)實(shí)現(xiàn)的。此節(jié)點(diǎn)可被分為四個(gè)不同的角色:收集、共識(shí)、執(zhí)行和驗(yàn)證。簡(jiǎn)單來(lái)說(shuō),其中的采集節(jié)點(diǎn)負(fù)責(zé)批量處理,共識(shí)節(jié)點(diǎn)負(fù)責(zé)保護(hù),執(zhí)行節(jié)點(diǎn)負(fù)責(zé)完成,而驗(yàn)證節(jié)點(diǎn)負(fù)責(zé)檢查工作。當(dāng)然,每個(gè)節(jié)點(diǎn)雖然各自會(huì)專注于流程的不同階段,但是它們也會(huì)參與到驗(yàn)證交易之中,并能有效地提高交易的吞吐量。
面向資源的編程
Flow的第二個(gè)支柱是面向資源的編程。作為一種面向資源的編程語(yǔ)言,Cadence可被用于在Flow區(qū)塊鏈上開發(fā)智能合約。此類已優(yōu)化的智能合約語(yǔ)言通過(guò)使用強(qiáng)大的靜態(tài)類型系統(tǒng),來(lái)最大限度地減少各類錯(cuò)誤。同時(shí),由于該語(yǔ)言允許使用各種前置和后置條件,因此開發(fā)人員可以強(qiáng)制執(zhí)行各種預(yù)期的行為。我們將在下一節(jié)中詳細(xì)介紹Cadence。
開發(fā)人員的工程學(xué)
從一開始,F(xiàn)low的創(chuàng)建者就專注于支持開發(fā)人員,并讓他們的工作更輕松。
- 如前文所述,Cadence智能合約語(yǔ)言是從頭開始構(gòu)建的,其旨在使得各種創(chuàng)建和管理資產(chǎn)的過(guò)程,變得更加高效、且不易出錯(cuò)。
- 通過(guò)開源工具—??Flow JavaScript SDK???、??Flow Go SDK???和??Flow Playground GUI??,來(lái)使得Flow的入門過(guò)程變得更加順暢。
- 各種可升級(jí)的智能合約將有助于最大程度地減少代碼中的錯(cuò)誤,進(jìn)而在整體上創(chuàng)建一個(gè)更安全的生態(tài)系統(tǒng)(下文將進(jìn)一步討論關(guān)于合約恒定性的內(nèi)容)。
- 其內(nèi)置的日志支持,為開發(fā)人員提供了一種跟蹤程序行為的方法。這是許多區(qū)塊鏈生態(tài)系統(tǒng)所無(wú)法提供的、卻又廣受歡迎的功能。
消費(fèi)者的登錄
可視的安全性往往能夠確保用戶在運(yùn)行事務(wù)時(shí),做出明智的決定。由Flow提供的可讀(Human-readable)式交易,則能夠確保一定程度的透明度,清楚地展示用戶可能被授予的權(quán)限,進(jìn)而避免了僅簽署那些散列的、混淆了數(shù)字與字母的交易。
??Flow錢包??具有內(nèi)置的、可選的、且模塊化的智能合約功能,可實(shí)現(xiàn)更復(fù)雜的授權(quán)控制、以及自動(dòng)化的流程。這些功能不但可以確保用戶不會(huì)丟失其資產(chǎn),而且提供了在丟失密鑰的情況下,恢復(fù)帳戶的選項(xiàng),從而造就了更好的體驗(yàn)。此外,它通過(guò)提供多重簽名的支持,來(lái)允許用戶定期循環(huán)使用舊的密鑰,并為錢包增加安全性。
什么是Cadence?
除了提供更快且可擴(kuò)展的區(qū)塊鏈,F(xiàn)low的開發(fā)團(tuán)隊(duì)還創(chuàng)建了一種新的智能合約語(yǔ)言-- ??Cadence??。它旨在優(yōu)化數(shù)字資產(chǎn)在區(qū)塊鏈上的創(chuàng)建和管理過(guò)程。
Cadence的語(yǔ)法是從Swift、Kotlin和Rust等其他現(xiàn)代編程語(yǔ)言中汲取的靈感。它是首個(gè)高級(jí)的、面向資源(resource-oriented)的編程語(yǔ)言,并且利用了強(qiáng)大的靜態(tài)類型系統(tǒng)。據(jù)此,它能夠有效地有助于減少運(yùn)行時(shí)(runtime)的錯(cuò)誤,并確保各種預(yù)期行為的實(shí)現(xiàn)。
說(shuō)到面向資源,在Cadence中,有一種被稱為資源的特殊數(shù)據(jù)類型。它基于線性數(shù)據(jù)類型,代表著Flow上資產(chǎn)的數(shù)字所有權(quán)。諸如NFT之類的資源,可以直接被存儲(chǔ)在用戶的賬戶中,而不是作為記錄被反映到公共數(shù)字分類賬上。同時(shí),它們一次只能被存放到一個(gè)地方。這就意味著,F(xiàn)low上數(shù)字資產(chǎn)的所有權(quán),是直接用語(yǔ)言本身所定義的,因此有效地消除了將余額存儲(chǔ)到中心化的數(shù)字分類賬上,所涉及到的風(fēng)險(xiǎn)。
此外,Cadence通過(guò)執(zhí)行嚴(yán)格的操作規(guī)則,來(lái)改進(jìn)對(duì)于資產(chǎn)的管理。在明確是要移動(dòng)、存儲(chǔ)、還是銷毀資源之前,開發(fā)人員必須使用“@”符號(hào),來(lái)定義資源的類型。這種對(duì)于資產(chǎn)的強(qiáng)制管理,消除了由于代碼錯(cuò)誤,而丟失或意外刪除資產(chǎn)的可能性,并減少了各種人為錯(cuò)誤。
與Flow類似,Cadence也是建立在如下五個(gè)支柱之上的:
- 安全和保障——Cadence使用強(qiáng)大的靜態(tài)類型系統(tǒng)、基于線性類型的內(nèi)置所有權(quán)原語(yǔ)、以及對(duì)于資產(chǎn)管理的基本關(guān)注,來(lái)確保代碼的預(yù)期行為,并最大限度地減少黑客的攻擊向量。
- 清晰性——Cadence的聲明性確保了開發(fā)人員能夠明確其意圖,并使得代碼更易于閱讀、編寫和審核。
- 可接近性——Cadence的語(yǔ)法和語(yǔ)義受到了Swift和Rust等語(yǔ)言的啟發(fā)。其全面的文檔、高效的工具、熟悉的環(huán)境,都讓開發(fā)人員??非常容易上手??。
- 開發(fā)人員的體驗(yàn)——Flow生態(tài)系統(tǒng)通過(guò)??各種資源??對(duì)整個(gè)開發(fā)生命周期提供支持。
- 直觀的資源所有權(quán)——資產(chǎn)所有權(quán)的相關(guān)概念,被通過(guò)資源的使用,而不是中央分類帳,內(nèi)置到Cadence語(yǔ)言之中。據(jù)此,資產(chǎn)可以直接與賬戶的存儲(chǔ)相綁定,而無(wú)需智能合約,即可自由轉(zhuǎn)移。
開發(fā)人員為何應(yīng)該在Flow上進(jìn)行構(gòu)建?
隨著Flow的持續(xù)改進(jìn)和引入各種協(xié)議,以太坊開發(fā)人員或Web3新手可以通過(guò)廣泛的??架構(gòu)指南???,透徹地了解Flow優(yōu)化的解決方案,并通過(guò)使用其各種??工具套件??,來(lái)提高區(qū)塊鏈生命周期的開發(fā)效率。
其中,??Flow Client Library(FCL)JS???包通過(guò)強(qiáng)大的SDK提供了快速、安全地創(chuàng)建Dapps所需的各種工具,進(jìn)而簡(jiǎn)化了錢包的集成。而??Flowser??(Flow Browser)是一種創(chuàng)新的區(qū)塊鏈開發(fā)工具。您不僅可以用它來(lái)檢查Flow的主網(wǎng)、測(cè)試網(wǎng)、以及模擬器的狀態(tài),而且可以通過(guò)其GUI來(lái)管理自定義的模擬器和錢包。
此外,F(xiàn)low區(qū)塊鏈也能夠排定環(huán)境影響的??優(yōu)先級(jí)??。歸功于其共識(shí)機(jī)制和前文提到的多角色架構(gòu),它比其他區(qū)塊鏈在工作量證明方面使用的能源更少。例如,從能源使用角度來(lái)看,我們執(zhí)行一次Google搜索的能源成本,可以用它來(lái)創(chuàng)建12個(gè)Flow NFT。Flow可謂最為環(huán)保的區(qū)塊鏈。
Flow和以太坊的比較
我們將從如下重要方面與差異性,來(lái)全面比較Flow與以太坊:
交易費(fèi)用和速度
當(dāng)網(wǎng)絡(luò)需求量較高時(shí),以太坊會(huì)因交易成本的高昂而提高費(fèi)用。這往往是區(qū)塊鏈網(wǎng)絡(luò)用來(lái)將交易量保持在可管理水平的一種機(jī)制。也就是說(shuō),當(dāng)區(qū)塊空間需求很高時(shí),費(fèi)用就會(huì)上漲,以阻止人們進(jìn)行部署。此外,以太坊上的區(qū)塊需要每12到14秒確認(rèn)一次,最終確認(rèn)發(fā)生在6個(gè)區(qū)塊內(nèi),而且會(huì)超過(guò)1分鐘。這便限制了其最大事務(wù)吞吐量約為每秒15個(gè)事務(wù)。為了滿足數(shù)百萬(wàn)用戶的需求,此方面有待改進(jìn)。
而Flow在被創(chuàng)建過(guò)程中,充分考慮到此類挑戰(zhàn)。上文提到的多角色架構(gòu)會(huì)使得區(qū)塊大約每2.5秒發(fā)生一次最終確認(rèn),即每秒大約100個(gè)事務(wù)。它在主網(wǎng)上的部署和交易的費(fèi)用只是以太坊主網(wǎng)上的一個(gè)零頭。
合約恒定性
總的說(shuō)來(lái),以太坊智能合約在部署上的恒定性是有利有弊的。一方面,由于智能合約在部署后無(wú)法被編輯,即:與您交互的代碼一旦上線后就無(wú)法被更改或重用,因此可信度能夠得以保證。另一方面,即使是由非常熟練的編碼人員操刀,也很少能一次性以完美的形式部署,因此任何小的缺陷都可能導(dǎo)致大規(guī)模的違規(guī)行為,進(jìn)而造成重大的損失。對(duì)此,為了修復(fù)有缺陷的智能合約,開發(fā)人員必須部署一個(gè)全新的合約,來(lái)確保其用戶群使用該合約。此時(shí),恒定性就凸顯出了弊端。
而Flow已考慮到了上述場(chǎng)景與其智能合約的恒定性。當(dāng)合約被部署到Flow區(qū)塊鏈時(shí),默認(rèn)情況下它們是可變的。這就意味著,如果實(shí)時(shí)合約出現(xiàn)任何復(fù)雜的情況,開發(fā)人員都可以輕松地予以更改。當(dāng)然,這并不意味著智能合約完全跳過(guò)了測(cè)試階段。開發(fā)合約的團(tuán)隊(duì)通常會(huì)使用軟件開發(fā)的優(yōu)秀實(shí)踐,在測(cè)試網(wǎng)中去測(cè)試和迭代各種合約,然后最終部署到主網(wǎng)中。
在主網(wǎng)上運(yùn)行了一段時(shí)間后,智能合約完成了各種最終測(cè)試或安全性檢查。此時(shí),開發(fā)人員便可以選擇撤銷持有智能合約的賬戶密鑰。該操作可以阻止任何進(jìn)一步的更改,從而有效地保證了智能合約的恒定性??梢?,智能合約開發(fā)人員可以隨時(shí)對(duì)任何合約啟用恒定性,這便是Flow相對(duì)于以太坊、以及其他區(qū)塊鏈網(wǎng)絡(luò)的優(yōu)勢(shì)所在。
不斷增長(zhǎng)的生態(tài)系統(tǒng)
除了技術(shù)優(yōu)勢(shì)之外,F(xiàn)low的社區(qū)也在快速地發(fā)展中。作為一個(gè)強(qiáng)大的開發(fā)者生態(tài)系統(tǒng),合作伙伴在其網(wǎng)絡(luò)中的參與度和對(duì)內(nèi)容的貢獻(xiàn),都有助于穩(wěn)步提升Flow上的交易量。值得一提的是,2022年6月是Flow創(chuàng)紀(jì)錄的一個(gè)月,其交易量已接近3400萬(wàn)筆。
大多數(shù)人一聽到Flow區(qū)塊鏈就會(huì)想到NBA TopShot的非同質(zhì)化代幣。其實(shí),F(xiàn)low在DeFi和游戲領(lǐng)域也有廣泛涉獵。其中,基于Flow區(qū)塊鏈聚合器--??Flowverse???的??Chainmonsters???和??Zeedz???都是引領(lǐng)游戲領(lǐng)域的高銷量產(chǎn)品。而在DeFi領(lǐng)域,Blocto構(gòu)建了去中心化的交易所--??BloctoSwap???和??IncrementFi??。您可以通過(guò)鏈接--https://www.flowverse.co/projects,查看更多基于Flow構(gòu)建的項(xiàng)目。
此外,??Flow生態(tài)系統(tǒng)??還從Flow生態(tài)系統(tǒng)基金處獲得了7.25億美元,用于幫助那些在Flow上構(gòu)建的開發(fā)人員??梢灶A(yù)測(cè),隨著Flow技術(shù)的提升、普及度的擴(kuò)展、以及資金的積累,開發(fā)人員對(duì)于Flow和Cadence的需求、以及在Flow上構(gòu)建的項(xiàng)目都會(huì)持續(xù)攀升。
小結(jié)
隨著CryptoKitties的成功,Dapper Labs團(tuán)隊(duì)很快意識(shí)到以太坊已無(wú)法支持大規(guī)模的區(qū)塊鏈游戲。為了優(yōu)化數(shù)字資產(chǎn)的創(chuàng)建和管理,他們創(chuàng)建了Flow區(qū)塊鏈和Cadence智能合約語(yǔ)言。
對(duì)于以太坊和Solidity開發(fā)人員來(lái)說(shuō),目前正是開始構(gòu)建更快、更安全、更具可擴(kuò)展性的區(qū)塊鏈的最佳時(shí)機(jī)。如果您想進(jìn)一步了解有關(guān)在Flow上進(jìn)行開發(fā)、以及如何使用Cadence的更多信息,請(qǐng)?jiān)L問(wèn)https://developers.flow.com/。
譯者介紹
陳峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對(duì)內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專注傳播網(wǎng)絡(luò)與信息安全知識(shí)與經(jīng)驗(yàn)。
原文標(biāo)題:??From Ethereum To Flow – An Introduction To The Flow Blockchain??,作者:John Vester