Neo+Rust語言=?|Neo專欄

火幣網(huobi.com)最新可用網址(點擊下圖直達註冊!)


火必交易所,曾经的火币交易所!

欧易OKX三大交易所,稳定好用!

币安全球第一大交易所!安全!




Rust



2014年的時候有一個新的編程語言發佈瞭,這個編程語言號稱可以兼顧內存安全和高性能。他是一種可靠的高級編程語言,可以像Python這種語言一樣用簡潔的代碼實現邏輯,但卻可以以接近C/C++語言的速度運行。它就是Rust語言。

Rust自發佈以來就一直受到廣大開發者的青睞,這樣說大概還是太抽象,具體來說:

Rust已經連續五年(2016,2017,2018,2019,2020)在Stack Overflow開發者調查的“最受喜愛編程語言”評選項目中摘取桂冠。

而在區塊鏈領域,Rust則更是一股泥石流,勢不可擋。比如Facebook的Libra,火幣的Nervos,還有目前大熱的波卡Polkadot等等。其實Rust和區塊鏈幾乎是天作之合,目前區塊鏈面臨的幾大問題裡:一是性能,幾乎所有的區塊鏈項目都在不停的迭代,想方設法去提升項目的交易處理速度,而Rust則是可以在兼顧開發效率的同時保證程序的執行效率,並行效率;二是安全性,安全問題茲事體大,可以說是整個區塊鏈項目的生死線。不知道大傢還記不記得當年EOS主網剛剛上線就被爆出安全漏洞。而合約裡的整型溢出問題更是層出不窮,比如教育概念的EDU,直接因為一個溢出漏洞被擼到歸零。

Neo



Neo本身是基於C#語言的,而C#這個語言雖然用來開發很舒服,但是其執行效率跟C/C++是沒辦法相比,畢竟C#執行起來相比於C/C++中間多瞭一層虛擬機。在Neo2.0的時代,平均每15秒出一個區塊,而且每個區塊裡需要打包的交易量不大,因此C#帶來的限制還並不明顯,但是在可預見的未來,Neo將會不停的迭代,不停的優化去提升交易吞吐,隨著Neo技術團隊突破掉所有的性能瓶頸做到最大的性能提升,那麼C#終有一天會成為Neo繼續發展的掣肘。而同樣的道理也是新晉區塊鏈公鏈項目直接選擇更高效的語言的重要原因之一。

SDK



由於我本人除瞭研究區塊鏈,也研究可信執行環境。於是我在2020年疫情隔離期間其實是計劃做出一個可以在Intel的安全處理器裡執行的Neo的SDK出來,這就需要我有一個基於C++的SDK。由於缺少調研,我就直接照著Neo的官方core照貓畫虎去寫C++的版本,結果工作量忒大不說,剛把虛擬機寫出來,我又實在因為同期的另一個科研項目對C++恨之入骨。C++可以說是一門非常簡單的語言,特別好入門,但是C++又是一門很難的語言,開發效率極低。進而失去瞭繼續往下寫的興趣。

但是這段寫C++SDK的經歷也成瞭我研究Rust的SDK的一個觸發點。前文提到,Rust作為一個非常有前景的編程語言,有著非常好的內存安全特性,既高效又安全當然也受到研究系統安全的人青睞。所以我在2015年的時候就對Rust有所耳聞,之後更是多次嘗試學習。不幸的是,Rust雖然是一個開發效率很高的執行效率很高的語言,但是學習的曲線實在是太陡,之前幾乎每次嘗試學習都被勸退,每每學習,打開書是Rust,合上書是Last。

Rust又是如此重要。於是我決定我應該找一個項目來去做,不再用先學習再使用的方法,而是直接用項目裡的一個個需求倒逼自己去學習。而Rust的Neo-SDK則自然而然成瞭首選。

項目



開發Rust我用的是PyCharm+Rust插件,也用VSCode+Rust插件,畢竟都不是Rust專屬的編譯器,兩個插件搭配起來才能實現一個完整的編譯器工作。項目命名為neo-rs,參考別的項目命名習慣。

為瞭更快的實現最基礎的任務,讓SDK有可以跑起來的功能,我在最開始的時候使用瞭大量的第三方密碼庫,但是在功能驗證成功之後就需要開發自己的密碼學庫,而不再以添加依賴的方式導入。這樣做的原因是為瞭讓整個項目的核心密碼庫變得可控,保證這部分代碼不是由包管理器從網絡獲取。主要的困難的地方是不同的密碼庫也會依賴於不同的別的項目,甚至相同項目的不同版本。因此就需要在剝離依賴的同時也要在不同的版本之間做權衡,有時候甚至需要直接動手從頭開始寫以使其符合項目需求。但是由於rust的語言特性,幾乎任何項目都有一大堆的依賴,完全梳理並剝離依賴工作量實在巨大,但是索性後面的任務過程中也會不斷更新升級這個密碼學庫。目前已經導入的庫有 aes,base58, ecdsa, hex, ripemd160, sha2。

目前項目已經完成的工作是私鑰,公鑰,地址,WIF的生成以及轉換,以及對NEP-2協議完整的支持。基本實現瞭錢包的功能。

運行效果

Neo+Rust語言=?|Neo專欄

後續工作

後續會繼續支持NEP-6協議,完善錢包的導入導出,增加對SGX的支持,增加網絡模塊,增加合約交易等等。

項目地址

https://github.com/Liaojinghui/neo-rs


作者:Jinghui Liao,來源:Neo智能經濟



返回列表页>>> 比特幣最新新聞