Youtube網(wǎng)紅老師帶你看懂區(qū)塊鏈的作用
Youtube 的科技網(wǎng)紅Siraj以風(fēng)趣幽默的方式講解科技熱點(diǎn)而備受追捧,在這期內(nèi)容中他講到了近年來(lái)大熱的區(qū)塊鏈。
附有中文字幕的視頻:
大家好,我是Siraj。這期我們講講不太一樣的內(nèi)容,那就是區(qū)塊鏈,以及如何利用它來(lái)提升AI。
Internet Protocol Suite
萬(wàn)維網(wǎng)只誕生了幾十年,而且發(fā)展了好幾個(gè)數(shù)量級(jí)。我們共同定義了當(dāng)中溝通的標(biāo)準(zhǔn),稱為互聯(lián)網(wǎng)協(xié)議族(Internet Protocol Suite)。
最低層的鏈路層把數(shù)據(jù)放到線上,然后互聯(lián)網(wǎng)層發(fā)送數(shù)據(jù),接著傳輸層保持?jǐn)?shù)據(jù),之后應(yīng)用層進(jìn)行抽象,以我們所熟知并喜愛的APP的形式。對(duì)機(jī)器這運(yùn)行得很好,但是當(dāng)中缺失了一層。
那么有哪種協(xié)議能讓這一過(guò)程不僅僅是交換數(shù)據(jù),而且還交換價(jià)值呢?
當(dāng)下的主流方法在前因特網(wǎng)時(shí)代就已經(jīng)發(fā)明了,需要使用到集中式的清算所。有時(shí)機(jī)器需要等很多天,才能實(shí)現(xiàn)款項(xiàng)的轉(zhuǎn)移。但是在其他方面,它們相互間以難以置信的速度進(jìn)行交流。如果它們能夠相互發(fā)送微支付,就像電力、存儲(chǔ)空間和計(jì)算,這些都無(wú)需中間人的介入。
比特幣和其他加密貨幣能夠解決這個(gè)問題,它們將作為用于值轉(zhuǎn)移的第五個(gè)協(xié)議層,其背后使用的區(qū)塊鏈技術(shù)使這一切都成為可能。區(qū)塊鏈?zhǔn)状巫寵C(jī)器同意進(jìn)行值轉(zhuǎn)移,而無(wú)需中央機(jī)構(gòu)介入。
在現(xiàn)實(shí)世界中,如果我創(chuàng)作了一幅畫,只有我自己擁有這幅畫。但在互聯(lián)網(wǎng)上,如果我創(chuàng)建了一幅數(shù)字繪畫,你可以復(fù)制它,然后我們倆都擁有這幅畫。如果不通過(guò)記錄這幅畫擁有權(quán)的中央服務(wù)器,我們沒有辦法證明誰(shuí)擁有它。我們必須信任服務(wù)器,即中間人。
但區(qū)塊鏈讓我們以分散的方式達(dá)成共識(shí),從而避免壞人錯(cuò)誤地宣稱所有權(quán)。不僅僅用于繪畫,還可以適用于任何資產(chǎn),比如:比特幣。
如何用來(lái)改善AI
但怎么用它來(lái)改善AI呢?
一個(gè)用例是給數(shù)據(jù)集和機(jī)器學(xué)習(xí)模型賦予名聲,如何知道你使用的數(shù)據(jù)和預(yù)先訓(xùn)練的模型是好的,并且沒有被被篡改呢?你要相信唯一的來(lái)源,除非使用區(qū)塊鏈。
DeepMind使用區(qū)塊鏈為醫(yī)療數(shù)據(jù)創(chuàng)建了一個(gè)公開可驗(yàn)證的審計(jì)系統(tǒng),當(dāng)中記錄了他們對(duì)患者數(shù)據(jù)的處理,因此患者能夠知道他們的數(shù)據(jù)是否被使用以及當(dāng)中的原因。一旦添加了數(shù)據(jù)被使用的記錄就無(wú)法刪除,這意味著患者可以驗(yàn)證是否有人篡改過(guò)任何條目。
另一個(gè)用于訓(xùn)練模型的P2P網(wǎng)絡(luò),除開使用AWS和谷歌云等服務(wù)訓(xùn)練AI。想象下一個(gè)系統(tǒng),人們可以出租多余的計(jì)算能力幫助他人訓(xùn)練模型,以獲得TensorCoin作為報(bào)酬,或者是完全由AI運(yùn)行的公司。
區(qū)塊鏈讓數(shù)據(jù)庫(kù)分散化,如果AI存在區(qū)塊鏈中沒有人能夠控制它。那么它能在網(wǎng)絡(luò)上作為獨(dú)立實(shí)體存在。支付它所需要的服務(wù),尋求最初的一系列規(guī)則。
一個(gè)例子就是自動(dòng)駕駛汽車網(wǎng)絡(luò),完全由AI運(yùn)行和維護(hù)。
讓我們用Python構(gòu)建簡(jiǎn)單的區(qū)塊鏈,以便了解這個(gè)出色的數(shù)據(jù)結(jié)構(gòu)的原理。
區(qū)塊是什么?
首先讓我們定義下區(qū)塊是什么。為了簡(jiǎn)單易懂,可以說(shuō)每個(gè)區(qū)塊代表一個(gè)簡(jiǎn)單的交易,兩臺(tái)機(jī)器之間值的轉(zhuǎn)換。根據(jù)一些重要的屬性,對(duì)區(qū)塊在其類別中進(jìn)行定義。
指數(shù)代表了其在一系列區(qū)塊中的位置,時(shí)間戳表明其創(chuàng)建的時(shí)間。還儲(chǔ)存了發(fā)送者定義的數(shù)據(jù),以及兩個(gè)哈希值:一個(gè)是前一個(gè)區(qū)塊的哈希值,另一個(gè)是自己的哈希值。區(qū)塊的哈希值具有雙重目的。這是其唯一的ID,并驗(yàn)證數(shù)據(jù)的完整性。
這里我們使用了流行的加密哈希算法SHA256,為每個(gè)區(qū)塊生成一個(gè)256位的簽名。
如何生成區(qū)塊?
那么區(qū)塊是如何生成的呢?
用戶在交易中提供一些數(shù)據(jù),所以我們將其作為生成函數(shù)中的唯一參數(shù)。由于每個(gè)區(qū)塊都是有順序的,我們必須提取上一個(gè)區(qū)塊,找到這個(gè)區(qū)塊的指數(shù)和哈希值。也給它一個(gè)時(shí)間戳,因此我們知道它是何時(shí)產(chǎn)生的。
因此每個(gè)生成的區(qū)塊通過(guò)儲(chǔ)存其哈希值指向前一個(gè)區(qū)塊,這是一連串的區(qū)塊,區(qū)塊鏈。
第一生成的塊稱為創(chuàng)世區(qū)塊,我們通過(guò)編寫硬代碼在其函數(shù)中定義屬性。我們就用它來(lái)對(duì)區(qū)塊鏈初始化,并將其存儲(chǔ)為內(nèi)存列表。
還記得我曾說(shuō)過(guò),區(qū)塊的哈希值既作為身份有能夠驗(yàn)證其完整性。我們可以用哈希值來(lái)確定新產(chǎn)生的區(qū)塊是否有效。
給出一個(gè)新區(qū)塊,以及上一個(gè)區(qū)塊。首先我們可以通過(guò)其指數(shù)檢查順序,然后可以檢查其上一個(gè)哈希值,是否與已經(jīng)驗(yàn)證的前一個(gè)區(qū)塊相符。最后計(jì)算新區(qū)塊的哈希值,確保符合它存儲(chǔ)的哈希值。如果通過(guò)檢測(cè),那就被驗(yàn)證了。
假設(shè)所有節(jié)點(diǎn)都存儲(chǔ)了區(qū)塊鏈的副本,我們需要有辦法選擇應(yīng)使用哪個(gè)區(qū)塊,以防它們間存在矛盾。假設(shè)兩個(gè)節(jié)點(diǎn)生成了同一個(gè)區(qū)塊數(shù)字,我們的解決方法是選擇區(qū)塊最多的區(qū)塊鏈。因?yàn)樗嬖诘臅r(shí)間更長(zhǎng),則更有可能是真實(shí)的區(qū)塊鏈。
對(duì)于新的區(qū)塊,我們會(huì)檢查它在編碼的方式上是否有效。如果它有更多的區(qū)塊,則用新的代替我們的區(qū)塊鏈,否則我們將認(rèn)為其無(wú)效并拒絕。因?yàn)槊總€(gè)節(jié)點(diǎn)均存儲(chǔ)區(qū)塊鏈的副本,而且當(dāng)發(fā)生交易時(shí)會(huì)不斷生成區(qū)塊。我們需要某種方法保持每個(gè)節(jié)點(diǎn)的同步,為此當(dāng)生成新的區(qū)塊時(shí)每個(gè)節(jié)點(diǎn)會(huì)將該信息傳播給其他節(jié)點(diǎn)。
當(dāng)一個(gè)節(jié)點(diǎn)連接到新的節(jié)點(diǎn),它會(huì)查詢其最新的區(qū)塊。當(dāng)遇到比現(xiàn)有區(qū)塊指數(shù)更大的區(qū)塊時(shí),它會(huì)將區(qū)塊添加到現(xiàn)有的區(qū)塊鏈上,或者查詢其整個(gè)區(qū)塊鏈。
我們可以對(duì)節(jié)點(diǎn)進(jìn)行封裝,從而用戶和其他節(jié)點(diǎn)能夠進(jìn)行查詢,這是通過(guò)創(chuàng)建HTTP服務(wù)器。
我們能夠?qū)σ恍┎僮鲃?chuàng)建端點(diǎn):
- 一種是在現(xiàn)有的區(qū)塊鏈中列出所有的區(qū)塊;
- 另一種是將用戶提供的數(shù)據(jù)作為參數(shù),創(chuàng)建新的區(qū)塊;
- 還有一種是通過(guò)列出網(wǎng)絡(luò)中所有其他節(jié)點(diǎn),或者添加新的。
因此用戶可以通過(guò)HTTP請(qǐng)求控制節(jié)點(diǎn),然后它將通過(guò)P2P WebSockets與其它節(jié)點(diǎn)進(jìn)行交流。
這就是我們簡(jiǎn)單的區(qū)塊鏈,它很小,并不包括比特幣區(qū)塊鏈的所有功能。但它是一個(gè)例子。
Sybil 攻擊
然而有一個(gè)我沒講到的關(guān)鍵特征,即工作量證明算法。面對(duì)Sybil攻擊我們的區(qū)塊鏈很脆弱,這是當(dāng)不懷好意的人創(chuàng)建許多節(jié)點(diǎn),在網(wǎng)絡(luò)上獲得不成比例的巨大影響。一旦他控制了51%的網(wǎng)絡(luò),他可以驗(yàn)證自己的交易,他可以對(duì)同一筆錢進(jìn)行多次使用。
為了防止這種情況,比特幣的挖礦節(jié)點(diǎn)進(jìn)行大量的計(jì)算,審批每一筆交易,并獲得比特幣作為計(jì)算工作的報(bào)酬。
為了讓新生成的區(qū)塊被網(wǎng)絡(luò)所接受,礦工必須完成工作量證明,當(dāng)中包括區(qū)塊中的所有數(shù)據(jù),至少51%的節(jié)點(diǎn)必須達(dá)成共識(shí),從而說(shuō)明這個(gè)新的區(qū)塊是有效的,能夠被加入到區(qū)塊鏈中。
那么壞人必須有比網(wǎng)絡(luò)中半數(shù)更多的計(jì)算能力,對(duì)于比特幣來(lái)說(shuō),這相當(dāng)于更多的計(jì)算能力,要超過(guò)世界上500臺(tái)最快的超級(jí)計(jì)算機(jī)的總和。沒有人有那么多的計(jì)算能力,連馬克·扎克伯格也沒有。
這就是為什么比特幣的網(wǎng)絡(luò)仍然是安全的,即使達(dá)到50十億美元市值,每周都會(huì)產(chǎn)生新的區(qū)塊鏈用于不同的情況。
結(jié)語(yǔ)
當(dāng)談到區(qū)塊鏈,要說(shuō)的實(shí)在太多了。我們才剛剛開始探索,當(dāng)我們用區(qū)塊鏈作為改善AI的方式時(shí)會(huì)發(fā)生什么?
它可以幫助我們檢測(cè)數(shù)據(jù)和模型的質(zhì)量,當(dāng)對(duì)其相互進(jìn)行訓(xùn)練時(shí)能夠創(chuàng)建P2P交換,創(chuàng)建之前不可能時(shí)間的業(yè)務(wù),或者將AI發(fā)展的不同方面套現(xiàn),甚至開發(fā)完全由AI運(yùn)行的獨(dú)立組織機(jī)構(gòu)。
本文由 @CDA數(shù)據(jù)分析師 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自網(wǎng)絡(luò)
難懂
??晦澀