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