成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么函數式編程非常適合開發區塊鏈?

區塊鏈
現在有很多區塊鏈,但只有少數幾個獨立的實施方案存在。Tezos是其中之一,作為該鏈的早期架構師,我有機會從一開始就參與了它的創建和開發。早期一個偶然的決定是遵循函數式編程范式,使用OCaml編程語言來構建該鏈。在這段經歷中,我發現函數式編程和區塊鏈是非常合適的。讓我們來試試,看看為什么!

現在有很多區塊鏈,但只有少數幾個獨立的實施方案存在。Tezos是其中之一,作為該鏈的早期架構師,我有機會從一開始就參與了它的創建和開發。早期一個偶然的決定是遵循函數式編程范式,使用OCaml編程語言來構建該鏈。在這段經歷中,我發現函數式編程和區塊鏈是非常合適的。讓我們來試試,看看為什么!

安全性

從一開始,很明顯,安全應該是技術設計選擇的中心。區塊鏈和加密貨幣為bug提供了一個幾乎最壞的環境。

關鍵bug不能被公開討論,因為它們會影響到實時系統,但它們需要在許多參與者中同時部署,而不使用可信的第三方。除了隱蔽的錯誤修復外,這使得解決這些問題的選擇非常少。

對于犯罪黑客來說,發現這些系統中的漏洞有很大的、直接的經濟激勵,因為它們能確保真正的經濟價值。

雖然安全是至關重要的,但不幸的是,沒有萬無一失的方法來確保安全。即使是最嚴格的方法,如形式化驗證,仍然是昂貴的,并且受制于規范本身的漏洞。然而,一些技術上的選擇可以幫助我們。

選擇OCaml作為編程語言的一個主要原因是,它可以幫助消除大類錯誤。作為一種內存管理語言,不需要擔心緩沖區溢出等問題,但這只是表面現象。Tezos利用OCaml非常強大的靜態類型系統來執行隔離和權限。管理交易的代碼不能訪問賬本的底層存儲;它甚至不能構建它需要寫到存儲的類型。相反,類型系統限制它寫到一個更高的抽象中,這個抽象可以檢查和凈化每一個動作。當然,封裝并不是函數式編程所獨有的,但OCaml的模塊簽名機制使得審查和完善權限變得非常簡單。

Tezos協議為Michelson嵌入了一個解釋器,Michelson是Tezos智能合約背后的虛擬機,它本身是靜態類型和功能的。該解釋器利用OCaml的GADT系統來確保錯誤輸入的Michelson合約甚至不能被構建。這是我們從語言本身繼承的另一個不錯的安全屬性。

一句老話聲稱,如果一個程序是用函數式編程語言編寫的,那么它就能工作。這句話當然是輕描淡寫的,盡管我確實記得,經過幾個月的開發,Tezos的第一個編譯版本確實在第一次嘗試中運行,并且能夠處理交易。

這些屬性都不能保證安全,但它們能解決更明顯的缺陷,使程序員和安全研究人員能夠專注于更高層次的問題。

如果黃金標準是形式驗證,那么OCaml的地位就非常好。Coq是一個領先的交互式定理檢驗器和證明檢驗器,它是用OCaml寫的,可以自然地輸出OCaml。此外,Coq-of-OCaml可以做相反的事情,從現有的OCaml代碼中準備Coq代碼。

區塊鏈看起來像一個函數式編程問題

隨著Tezos開始成形,我意識到,在實現區塊鏈時需要解決的許多問題與函數式程序員非常熟悉的問題類型類似。就其核心而言,區塊鏈是一種使用僅附加的數據結構來表示可改變狀態的方式。當你用一個累加器持有區塊時,你得到的就是這個狀態。這就是我們在函數式世界中處理數據及其不可變性的典型方式。

函數式編程非常適用的一個問題是處理鏈式重組,當已經應用于狀態的塊需要回滾時,因為不同的分支最終被共識所選擇。當數據被存儲為功能樹時,網絡參與者可以有效地撤銷這些塊對狀態的影響。然后,隨著鏈的進展,你需要用垃圾收集器來清理它并釋放內存,這又是函數式編程世界中非常熟悉的事情。

此外,如果你正在構建智能合約,那么你需要一個智能合約語言,這意味著你需要一個編譯器,編譯器往往在函數式編程中處理得非常好,特別是OCaml。從源語言編譯到目標語言時有很多步驟:對文本進行詞法解析以創建單個標記,將這些標記組裝成一個抽象的語法樹,并對該樹的各個部分進行轉換,直到我們到達目標語言,有時要經過一些中間表示,其中類型系統對轉換進行約束。所有這些步驟的代碼在用OCaml編寫時可以非常優雅和高效。

編譯后的智能合約,也得益于用函數式寫法。每個合約都有自己的不可變的數據與之相關,所以你不能讓它成為一個純函數。然而,我們可以做的是將該存儲和合約加載到一個孤立的虛擬機中執行。這是最接近純函數的東西,是確定性的,不受外部值的影響。

為什么是OCaml?

OCaml不是一個明顯的選擇。作為一種編程語言,它仍然有些小眾。然而,它是一種成熟的語言,提供了強類型函數式編程語言的安全性,同時又不影響性能。它扎根于法國學術界,并被Facebook、Jane Street Capital和Docker等公司用于安全敏感項目。它也是一種用于編寫編譯器的流行語言。你可以用OCaml寫出非常可讀、可靠和高效的代碼,雖然它不能防止直接的編程錯誤,但強大的類型系統和函數式編程帶來的無副作用有助于讓你對代碼的正確性有很高的信心。

Haskell是一種比較流行的函數式編程語言,它提供了一種基于懶惰評估的非常純粹的范式,但要寫出性能和成語兼備的Haskell代碼是比較困難的。

一個常見的反對意見是,使用像OCaml這樣的不常見的編程語言會使招聘程序員更加困難。這種說法對于試圖招募成千上萬的開發人員的公司來說可能有一定的分量,但很顯然,早期的核心協議開發團隊的最有效規模要比這小得多。此外,我發現對構建這些類型的系統有訣竅的開發人員在幾個月內學會這門語言并不困難。

WhatsApp能夠通過一個小型的、專注的Erlang開發者團隊擴展到數以億計的用戶,這在早期給了我很大的啟發,我想說,這種啟發經得起時間的考驗。

雖然OCaml被用于Tezos的基礎,但圍繞它構建工具和應用程序的開發者社區通常用各種流行語言來做。同樣,對于編寫智能合約,有一些高級語言可以給你帶來類似Python或JavaScript的體驗,這只是一些例子。

結論

總之,區塊鏈和函數式編程之間存在著非常自然的契合,如果不使用正確的工具來完成正確的工作,那將是一種恥辱! 有許多問題有待解決,各地的開發者有機會應用他們的技能,為這個新生(但蓬勃發展)的類別建立更好的工具、應用程序和基礎設施。

責任編輯:華軒 來源: 今日頭條
相關推薦

2018-06-14 10:32:25

2021-08-06 23:10:07

區塊鏈開發實業

2021-11-01 22:33:45

區塊鏈智慧城市元宇宙

2022-06-01 23:27:38

區塊鏈加密貨幣數字資產

2020-05-14 20:42:09

區塊鏈區塊鏈技術供應鏈

2018-08-21 21:55:53

2022-07-13 17:26:13

區塊鏈汽油物流

2021-09-29 16:53:53

區塊鏈數據技術

2015-12-21 13:28:41

LinuxLinux基金會團隊

2021-11-17 22:12:18

區塊鏈供應鏈技術

2019-09-03 09:56:51

2021-02-03 16:54:39

區塊鏈比特幣技術

2021-09-30 22:59:19

區塊鏈加密貨幣數字貨幣

2013-07-09 09:43:04

函數式思維函數式編程編程

2021-11-04 23:16:41

區塊鏈互聯網技術

2022-09-15 15:23:30

通信400-MHz

2022-10-26 08:42:28

2018-05-08 06:51:02

2022-02-15 17:05:29

Web3區塊鏈互聯網

2018-08-01 13:59:44

區塊鏈協議應用層
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人免费网站 | 中文字幕一页二页 | 午夜精品久久久 | 精品在线一区二区 | 久久免费小视频 | 亚洲毛片| 久久天堂 | 欧美在线一区二区三区 | 国产精品高潮呻吟久久 | 男女羞羞视频大全 | 亚洲人成人一区二区在线观看 | 成人中文网 | 手机在线一区二区三区 | 凹凸日日摸日日碰夜夜 | 日韩色综合 | 国产成人免费视频 | 成人精品一区二区 | 无码国模国产在线观看 | 日韩精品一区二区在线观看 | 成人在线免费观看 | 久久久久国产精品一区二区 | 韩日在线视频 | 亚洲伊人久久综合 | 日韩欧美理论片 | 国产精品免费大片 | 久久久久欧美 | 国产精品久久久久影院色老大 | av一区二区三区四区 | www.国产.com | 日韩免费激情视频 | 国产精品一区在线 | 亚洲精品日韩综合观看成人91 | 精品欧美视频 | 国产精品久久久久久二区 | 欧美一区二区三区在线观看视频 | 日韩成人av在线播放 | 精品国产一区二区三区久久狼黑人 | 国产91丝袜在线播放 | 精品久久1 | 亚洲精品2 | 国产一区二 |