為什么區(qū)塊鏈編寫都用GO語言衣洁?CX將是一次革新!

轉(zhuǎn)載:https://mp.weixin.qq.com/s/wG2uQJxzP5uZLHM8r9Ac_w
所有鏈圈的朋友都該有的常識:Go語言現(xiàn)被用來做去中心化系統(tǒng)(decentralised system)谜叹。

當(dāng)然,其他類型的公司也都把Go用在產(chǎn)品的核心模塊中搬葬,并且它在網(wǎng)站開發(fā)中也占據(jù)了一席之地荷腊。

長期項(xiàng)目中的易維護(hù)代碼

Go語言很簡單。并且每次你中途休息(cessation)之后回到代碼中時(shí)踩萎,它沒有那么多詭異的錯誤(quirk)來浪費(fèi)你的時(shí)間停局。再加上,它所需要的學(xué)習(xí)量很少香府,因?yàn)樗恼Z法比較大眾,開發(fā)者的學(xué)習(xí)曲線很平緩码倦,這樣的特性本身就很吸引開發(fā)者企孩。這也導(dǎo)致(facilitate)出現(xiàn)Bug的幾率很低。所以整個開發(fā)過程顯得如此簡單快速袁稽。

一般來講勿璃,代碼量越多,項(xiàng)目越難維護(hù)。而一個區(qū)塊鏈系統(tǒng)需要的代碼可達(dá)幾千行补疑,所以我們需要一門語言歧沪,來讓維護(hù)變得輕松。

速度與效率

不似Python, Go不是一種解釋型語言——它是編譯型的莲组。這大大地(drastically)減少了在運(yùn)行中突然出現(xiàn)的Bug诊胞。這一點(diǎn)有點(diǎn)像C語言,代碼先被編譯锹杈,錯誤會在編譯時(shí)出現(xiàn)并得到處理撵孤,然后才能運(yùn)行;但是竭望,它比C更高級邪码,比JavaScript和Python更具生產(chǎn)力。

一個區(qū)塊鏈非常需要高效性咬清,鑒于其使用的是加密(cryptographic)算法闭专,鑒于它把大量數(shù)據(jù)傳輸(propagate)于網(wǎng)絡(luò),并存儲于網(wǎng)絡(luò)旧烧。


為分布式系統(tǒng)而生

這一點(diǎn)喻圃,在那些用Golang打造的工具和軟件中顯而易見。Docker粪滤,作為一種微服務(wù)的容器斧拍,也是用Golang打造。

我們能用Golang打造的微服務(wù)輕松駕馭百萬數(shù)量的請求杖小。

Go語言在處理線程方面與Java的不同之處:

在Java中肆汹,對象(object)在工作單元間共享,其中某一單元為了訪問到這個數(shù)據(jù)予权,必須先得到它的對象鎖昂勉。在Golang中,工作單元間共享一種被稱為信道(channel)的東西扫腺,一個信道基本上就是一個先入先出通道(FIFO pipe)——工作單元可以向信道發(fā)起數(shù)據(jù)讀寫岗照。

Go語言遵循著它的準(zhǔn)則——“不要通過內(nèi)存共享進(jìn)行通訊,應(yīng)當(dāng)通過通訊來共享內(nèi)存”(not to communicate by sharing memory, instead share memory by communicating)笆环。

并行操作對于區(qū)塊鏈?zhǔn)怯兄厥庖饬x的攒至。同時(shí)跑大量函數(shù)——這一巧妙而天然的特性使得Go程序靈活地運(yùn)行于分布式系統(tǒng),這正是區(qū)塊鏈的主要需求躁劣。不過這一特性早已被發(fā)掘迫吐,有Docker,MongoDB账忘,Netflix志膀,Uber等等等熙宇,他們的產(chǎn)品功能也都主要依賴于高并發(fā)。


區(qū)塊鏈領(lǐng)域的所有人都用它

很多基于穩(wěn)定區(qū)塊鏈的DApps和tools都是用的Go語言溉浙。你所需要的某個功能烫止,很輕松就能找到一個相對應(yīng)的庫。

Go是編譯型的戳稽,所以直接由操作系統(tǒng)執(zhí)行馆蠕。這讓我們可以更自如地實(shí)現(xiàn)像以太坊沙盒(EVM (Ethereum Virtual Machine))一樣的技術(shù)。而如果是Java广鳍,因?yàn)樗旧淼倪\(yùn)行載體JVM就是一個虛擬機(jī)荆几,要再在上面做一個沙盒,實(shí)質(zhì)是更高一層的抽象赊时,這完全沒有必要吨铸,會浪費(fèi)計(jì)算機(jī)資源。

當(dāng)然祖秒,Go的使用體驗(yàn)像是腳本語言诞吱,學(xué)習(xí)成本很低,所以非常適合小型項(xiàng)目竭缝。而在QPS(The Queries per second)上房维,比起Java好太多,所以又適合用來構(gòu)建高請求量的服務(wù)抬纸。


一些美妙的Go代碼片段

1咙俩, 這個是輕易地從一個函數(shù)返回一個指針到局部變量:

Go 沒有class,而是松耦合的類型湿故、方法對接口的實(shí)現(xiàn)阿趁。

GO 語言最重要的三個方面分別是:封裝,繼承和多態(tài)坛猪,在 Go 中它們是怎樣表現(xiàn)的呢脖阵?

封裝(數(shù)據(jù)隱藏):和別的?OO 語言有 4 個或更多的訪問層次相比,Go 把它簡化為了 2 層:

1)包范圍內(nèi)的:通過標(biāo)識符首字母小寫墅茉,對象 只在它所在的包內(nèi)可見

2)可導(dǎo)出的:通過標(biāo)識符首字母大寫命黔,對象 對所在包以外也可見

類型只擁有自己所在包中定義的方法。

繼承:用組合實(shí)現(xiàn):內(nèi)嵌一個(或多個)包含想要的行為(字段和方法)的類型就斤;多重繼承可以通過內(nèi)嵌多個類型實(shí)現(xiàn)

多態(tài):用接口實(shí)現(xiàn):某個類型的實(shí)例可以賦給它所實(shí)現(xiàn)的任意接口類型的變量悍募。類型和接口是松耦合的,并且多重繼承可以通過實(shí)現(xiàn)多個接口實(shí)現(xiàn)战转。Go 接口不是 Java ?接口的變體搜立,而且:接口間是不相關(guān)的,并且是大規(guī)模編程和可適應(yīng)的演進(jìn)型設(shè)計(jì)的關(guān)鍵槐秧。

綜上所述啄踊,GO的優(yōu)點(diǎn)極多,而且非常適用于區(qū)塊鏈行業(yè)刁标!

Skycoin的CX語言就是基于Go語言颠通,獨(dú)家定制的區(qū)塊鏈專用語言!

CX語言的優(yōu)勢

因此目前沒有一個電腦程序是具有確定性的膀懈。如果是在為飛機(jī)顿锰、導(dǎo)彈和衛(wèi)星編程,這個問題就顯得更嚴(yán)重了启搂。設(shè)想一下硼控,將衛(wèi)星發(fā)射到太空,然后程序發(fā)生錯誤胳赌,數(shù)以萬計(jì)的衛(wèi)星無法運(yùn)行牢撼,為此付出的代價(jià)就很高。

對于區(qū)塊鏈來說疑苫,這也是一個大問題熏版。就如以太坊智能合約,每周有資產(chǎn)被盜捍掺,讓人擔(dān)憂撼短。這種情況已經(jīng)持續(xù)多年了,一直沒有人能解決挺勿。


為解決這些問題曲横,Skycoin決定開發(fā)一種安全、快速且具有確定性的區(qū)塊鏈編程語言——CX語言不瓶。

CX語言將字節(jié)序列化禾嫉,可將其發(fā)送到另一臺電腦,然后恢復(fù)執(zhí)行湃番,這一功能目前各類編程語言都無法實(shí)現(xiàn)夭织。CX語言具有確定性,每個任務(wù)都有一個標(biāo)準(zhǔn)的序列化方式吠撮,序列化后可將其發(fā)送到整個網(wǎng)絡(luò)中尊惰,這對于區(qū)塊鏈編程是非常重要的。

而且CX語言簡單易學(xué)泥兰,它看起來和Golang非常像弄屡,在主循環(huán)中它也有結(jié)構(gòu)、函數(shù)以及數(shù)據(jù)包鞋诗。任何Golang膀捷、C#或者Java開發(fā)者可以在10或20分鐘的時(shí)間內(nèi)用CX語言開始編寫區(qū)塊鏈應(yīng)用程序。

另外削彬,CX語言具有可見性全庸。CX的可見性使你能夠指定哪些函數(shù)可調(diào)用秀仲、誰可調(diào)用,這對于安全性的影響十分重大壶笼。

例如我有一個智能合約函數(shù)神僵,不希望所有人調(diào)用這個函數(shù),我可以限制只有某個人或者符合某個條件才能調(diào)用覆劈,甚至設(shè)定沒有人能調(diào)用這個函數(shù)保礼。CX語言具有可見性,使“誰能調(diào)用什么”的問題形式化责语。但在DAO和以太坊區(qū)塊鏈上炮障,人們把資產(chǎn)放到智能合約里,然后有人調(diào)用程序偷走了資產(chǎn)坤候。

利用CX語言的可見性可更新合約胁赢。假如一家公司在區(qū)塊鏈上運(yùn)營,其合約有漏洞铐拐,但沒有辦法修復(fù)徘键,因?yàn)橐坏┙⒘酥悄芎霞s就無法進(jìn)行更新。

但有了可見性遍蟋,我們可以指定誰能修改智能合約吹害,因此有人能夠修復(fù)這個漏洞。以太坊的主要問題也表現(xiàn)在這里虚青,一旦建立了智能合約它呀,沒有人能更改它。


CX也可以用于人工智能和機(jī)器學(xué)習(xí)棒厘。舉個簡單的例子纵穿,假設(shè)你有一串點(diǎn),你希望電腦能幫你設(shè)計(jì)一個函數(shù)來覆蓋這些點(diǎn)奢人,你現(xiàn)在不需要告訴電腦怎么做谓媒,只需告訴電腦你想要解決的問題,然后電腦開始隨機(jī)嘗試何乎,利用可見性找到最終的解決方法句惯。

CX數(shù)據(jù)包可以自動帶入不同的解決方案并選擇解決問題的最佳方案,這是其他語言無法做到的支救。事實(shí)上抢野,在不斷開發(fā)新的解決方案,在人工智能各墨、生物學(xué)以及機(jī)器學(xué)習(xí)等領(lǐng)域指孤,CX語言的這些特性都非常有用。

一般的編程語言在運(yùn)行程序時(shí)無法看到運(yùn)行過程贬堵,也無法得知下一步恃轩。而CX語言除了看到運(yùn)行過程结洼,還可以查看對象和數(shù)據(jù),查看一共有多少對象详恼、占用了多少內(nèi)存补君。

對使用者來說引几,可以看到程序當(dāng)下的進(jìn)程昧互,幫助排錯;對于區(qū)塊鏈應(yīng)用程序用戶來說伟桅,他們可以知道每個應(yīng)用消耗了多少內(nèi)存敞掘,有多少任務(wù)并檢查程序的運(yùn)行狀態(tài)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末楣铁,一起剝皮案震驚了整個濱河市玖雁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盖腕,老刑警劉巖赫冬,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異溃列,居然都是意外死亡劲厌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門听隐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來补鼻,“玉大人,你說我怎么就攤上這事雅任》绶叮” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵沪么,是天一觀的道長硼婿。 經(jīng)常有香客問我,道長禽车,這世上最難降的妖魔是什么寇漫? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮哭当,結(jié)果婚禮上猪腕,老公的妹妹穿的比我還像新娘。我一直安慰自己钦勘,他們只是感情好陋葡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著彻采,像睡著了一般腐缤。 火紅的嫁衣襯著肌膚如雪捌归。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天岭粤,我揣著相機(jī)與錄音惜索,去河邊找鬼。 笑死剃浇,一個胖子當(dāng)著我的面吹牛巾兆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虎囚,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼角塑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淘讥?” 一聲冷哼從身側(cè)響起圃伶,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蒲列,沒想到半個月后窒朋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝗岖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年侥猩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剪侮。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拭宁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瓣俯,到底是詐尸還是另有隱情杰标,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布彩匕,位于F島的核電站腔剂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏驼仪。R本人自食惡果不足惜掸犬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绪爸。 院中可真熱鬧湾碎,春花似錦、人聲如沸奠货。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柔滔,卻和暖如春溢陪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睛廊。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工形真, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人超全。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓咆霜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卵迂。 傳聞我的和親對象是個殘疾皇子裕便,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容