<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Neo+Rust語(yǔ)言=?|Neo專(zhuān)欄

          共 2065字,需瀏覽 5分鐘

           ·

          2021-03-12 16:40


          Rust


          2014年的時(shí)候有一個(gè)新的編程語(yǔ)言發(fā)布了,這個(gè)編程語(yǔ)言號(hào)稱(chēng)可以兼顧內(nèi)存安全和高性能。他是一種可靠的高級(jí)編程語(yǔ)言,可以像Python這種語(yǔ)言一樣用簡(jiǎn)潔的代碼實(shí)現(xiàn)邏輯,但卻可以以接近C/C++語(yǔ)言的速度運(yùn)行。它就是Rust語(yǔ)言。

          Rust自發(fā)布以來(lái)就一直受到廣大開(kāi)發(fā)者的青睞,這樣說(shuō)大概還是太抽象,具體來(lái)說(shuō):

          Rust已經(jīng)連續(xù)五年(2016,2017,2018,2019,2020)在Stack Overflow開(kāi)發(fā)者調(diào)查的“最受喜愛(ài)編程語(yǔ)言”評(píng)選項(xiàng)目中摘取桂冠。

          而在區(qū)塊鏈領(lǐng)域,Rust則更是一股泥石流,勢(shì)不可擋。比如Facebook的Libra,火幣的Nervos,還有目前大熱的波卡Polkadot等等。其實(shí)Rust和區(qū)塊鏈幾乎是天作之合,目前區(qū)塊鏈面臨的幾大問(wèn)題里:一是性能,幾乎所有的區(qū)塊鏈項(xiàng)目都在不停的迭代,想方設(shè)法去提升項(xiàng)目的交易處理速度,而Rust則是可以在兼顧開(kāi)發(fā)效率的同時(shí)保證程序的執(zhí)行效率,并行效率;二是安全性,安全問(wèn)題茲事體大,可以說(shuō)是整個(gè)區(qū)塊鏈項(xiàng)目的生死線。不知道大家還記不記得當(dāng)年EOS主網(wǎng)剛剛上線就被爆出安全漏洞。而合約里的整型溢出問(wèn)題更是層出不窮,比如教育概念的EDU,直接因?yàn)橐粋€(gè)溢出漏洞被擼到歸零。

          Neo


          Neo本身是基于C#語(yǔ)言的,而C#這個(gè)語(yǔ)言雖然用來(lái)開(kāi)發(fā)很舒服,但是其執(zhí)行效率跟C/C++是沒(méi)辦法相比,畢竟C#執(zhí)行起來(lái)相比于C/C++中間多了一層虛擬機(jī)。在Neo2.0的時(shí)代,平均每15秒出一個(gè)區(qū)塊,而且每個(gè)區(qū)塊里需要打包的交易量不大,因此C#帶來(lái)的限制還并不明顯,但是在可預(yù)見(jiàn)的未來(lái),Neo將會(huì)不停的迭代,不停的優(yōu)化去提升交易吞吐,隨著Neo技術(shù)團(tuán)隊(duì)突破掉所有的性能瓶頸做到最大的性能提升,那么C#終有一天會(huì)成為Neo繼續(xù)發(fā)展的掣肘。而同樣的道理也是新晉區(qū)塊鏈公鏈項(xiàng)目直接選擇更高效的語(yǔ)言的重要原因之一。

          SDK


          由于我本人除了研究區(qū)塊鏈,也研究可信執(zhí)行環(huán)境。于是我在2020年疫情隔離期間其實(shí)是計(jì)劃做出一個(gè)可以在Intel的安全處理器里執(zhí)行的Neo的SDK出來(lái),這就需要我有一個(gè)基于C++的SDK。由于缺少調(diào)研,我就直接照著Neo的官方core照貓畫(huà)虎去寫(xiě)C++的版本,結(jié)果工作量忒大不說(shuō),剛把虛擬機(jī)寫(xiě)出來(lái),我又實(shí)在因?yàn)橥诘牧硪粋€(gè)科研項(xiàng)目對(duì)C++恨之入骨。C++可以說(shuō)是一門(mén)非常簡(jiǎn)單的語(yǔ)言,特別好入門(mén),但是C++又是一門(mén)很難的語(yǔ)言,開(kāi)發(fā)效率極低。進(jìn)而失去了繼續(xù)往下寫(xiě)的興趣。

          但是這段寫(xiě)C++SDK的經(jīng)歷也成了我研究Rust的SDK的一個(gè)觸發(fā)點(diǎn)。前文提到,Rust作為一個(gè)非常有前景的編程語(yǔ)言,有著非常好的內(nèi)存安全特性,既高效又安全當(dāng)然也受到研究系統(tǒng)安全的人青睞。所以我在2015年的時(shí)候就對(duì)Rust有所耳聞,之后更是多次嘗試學(xué)習(xí)。不幸的是,Rust雖然是一個(gè)開(kāi)發(fā)效率很高的執(zhí)行效率很高的語(yǔ)言,但是學(xué)習(xí)的曲線實(shí)在是太陡,之前幾乎每次嘗試學(xué)習(xí)都被勸退,每每學(xué)習(xí),打開(kāi)書(shū)是Rust,合上書(shū)是Last。

          Rust又是如此重要。于是我決定我應(yīng)該找一個(gè)項(xiàng)目來(lái)去做,不再用先學(xué)習(xí)再使用的方法,而是直接用項(xiàng)目里的一個(gè)個(gè)需求倒逼自己去學(xué)習(xí)。而Rust的Neo-SDK則自然而然成了首選。

          項(xiàng)目


          開(kāi)發(fā)Rust我用的是PyCharm+Rust插件,也用VSCode+Rust插件,畢竟都不是Rust專(zhuān)屬的編譯器,兩個(gè)插件搭配起來(lái)才能實(shí)現(xiàn)一個(gè)完整的編譯器工作。項(xiàng)目命名為neo-rs,參考別的項(xiàng)目命名習(xí)慣。

          為了更快的實(shí)現(xiàn)最基礎(chǔ)的任務(wù),讓SDK有可以跑起來(lái)的功能,我在最開(kāi)始的時(shí)候使用了大量的第三方密碼庫(kù),但是在功能驗(yàn)證成功之后就需要開(kāi)發(fā)自己的密碼學(xué)庫(kù),而不再以添加依賴(lài)的方式導(dǎo)入。這樣做的原因是為了讓整個(gè)項(xiàng)目的核心密碼庫(kù)變得可控,保證這部分代碼不是由包管理器從網(wǎng)絡(luò)獲取。主要的困難的地方是不同的密碼庫(kù)也會(huì)依賴(lài)于不同的別的項(xiàng)目,甚至相同項(xiàng)目的不同版本。因此就需要在剝離依賴(lài)的同時(shí)也要在不同的版本之間做權(quán)衡,有時(shí)候甚至需要直接動(dòng)手從頭開(kāi)始寫(xiě)以使其符合項(xiàng)目需求。但是由于rust的語(yǔ)言特性,幾乎任何項(xiàng)目都有一大堆的依賴(lài),完全梳理并剝離依賴(lài)工作量實(shí)在巨大,但是索性后面的任務(wù)過(guò)程中也會(huì)不斷更新升級(jí)這個(gè)密碼學(xué)庫(kù)。目前已經(jīng)導(dǎo)入的庫(kù)有 aes,base58, ecdsa, hex, ripemd160, sha2。

          目前項(xiàng)目已經(jīng)完成的工作是私鑰,公鑰,地址,WIF的生成以及轉(zhuǎn)換,以及對(duì)NEP-2協(xié)議完整的支持?;緦?shí)現(xiàn)了錢(qián)包的功能。

           運(yùn)行效果 

           后續(xù)工作 

          后續(xù)會(huì)繼續(xù)支持NEP-6協(xié)議,完善錢(qián)包的導(dǎo)入導(dǎo)出,增加對(duì)SGX的支持,增加網(wǎng)絡(luò)模塊,增加合約交易等等。

          項(xiàng)目地址

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

          瀏覽 57
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产寡妇淫乱高清视频 | WWW.精品天堂网一区二区三区 | 中文无码视频直接看 | 久久夜色精品国产免费观看 | 五月丁香六月婷婷网 |