譯者 | 陳峻
審校 | 孫淑娟
目前,我們正處于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