www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 物聯(lián)網(wǎng) > 區(qū)塊鏈
[導(dǎo)讀] 區(qū)塊鏈?zhǔn)嵌皇兰o(jì)最具革命性的技術(shù)之一,它正在不斷成熟,它的諸多潛力正在逐步實(shí)現(xiàn)中。本質(zhì)上來(lái)看,區(qū)塊鏈只不過(guò)是一個(gè)分布式的數(shù)據(jù)庫(kù)。之所以區(qū)塊鏈獨(dú)特,是因?yàn)樗⒉皇且粋€(gè)私有數(shù)據(jù)庫(kù),而是一個(gè)公開的數(shù)

區(qū)塊鏈?zhǔn)嵌皇兰o(jì)最具革命性的技術(shù)之一,它正在不斷成熟,它的諸多潛力正在逐步實(shí)現(xiàn)中。本質(zhì)上來(lái)看,區(qū)塊鏈只不過(guò)是一個(gè)分布式的數(shù)據(jù)庫(kù)。之所以區(qū)塊鏈獨(dú)特,是因?yàn)樗⒉皇且粋€(gè)私有數(shù)據(jù)庫(kù),而是一個(gè)公開的數(shù)據(jù)庫(kù),即,每一個(gè)使用它的人擁有這個(gè)數(shù)據(jù)庫(kù)的全部或者至少一部分。任何一個(gè)新的數(shù)據(jù)記錄,只能在多數(shù)數(shù)據(jù)庫(kù)持有者(維護(hù)者)的多數(shù)同意之后被加入數(shù)據(jù)庫(kù)。正因如此,區(qū)塊鏈?zhǔn)沟眉用茇泿乓约爸悄芎霞s成為可能。
?

在這個(gè)系列文章中,我們將打造一個(gè)簡(jiǎn)化版本的加密貨幣,它將基于一個(gè)簡(jiǎn)化版本的區(qū)塊鏈實(shí)現(xiàn)。

區(qū)塊(Block)

讓我們先從區(qū)塊開始。在區(qū)塊鏈里,價(jià)值信息存儲(chǔ)在區(qū)塊之中。比如,比特幣的區(qū)塊存儲(chǔ)交易記錄,而交易記錄是任何加密貨幣的核心。除此之外,區(qū)塊里還包含有技術(shù)信息,比如它的版本號(hào),當(dāng)前的時(shí)間戳,以及上一個(gè)區(qū)塊的哈希(Hash)。

在這篇文章中,我們所實(shí)現(xiàn)的并不是像比特幣那樣完整的區(qū)塊鏈,而是一個(gè)簡(jiǎn)化版本的區(qū)塊鏈,它只含有最基本的核心信息。差不多是這樣:

type Block struct {

Timestamp int64

Data []byte

PrevBlockHash []byte

Hash []byte}

TImestamp 是當(dāng)前的時(shí)間戳(即,區(qū)塊被創(chuàng)建的時(shí)間),Data 是區(qū)塊中包含的價(jià)值信息,PrevBlockHash 存儲(chǔ)的是上一個(gè)區(qū)塊的哈希,而Hash 保存的是當(dāng)前區(qū)塊的哈希。在比特幣的標(biāo)配中,TImestamp、PrevBlockHash、Hash是區(qū)塊的頭部數(shù)據(jù)(Block headers),構(gòu)成一個(gè)單獨(dú)的數(shù)據(jù)結(jié)構(gòu);而交易記錄(TransacTIons,在我們這個(gè)版本中就是 Data),是另外一個(gè)單獨(dú)的數(shù)據(jù)結(jié)構(gòu)。而我們?cè)谶@里為了簡(jiǎn)化,把數(shù)據(jù)結(jié)構(gòu)混在了一起。

那我們?nèi)绾斡?jì)算哈希呢?計(jì)算哈希的方式是區(qū)塊鏈的重要特征之一,也正是這個(gè)特性使得區(qū)塊鏈如此安全。關(guān)鍵在于,計(jì)算哈希是一個(gè)計(jì)算起來(lái)很困難的工作,它需要時(shí)間,哪怕是在很快的計(jì)算機(jī)上(這就是為什么人們要買比 CPU 計(jì)算能力更強(qiáng)悍 GPU 甚至專門的 ASIC 芯片做礦機(jī)的 原因)。這是故意如此設(shè)計(jì)的,這么做的結(jié)果是,往區(qū)塊鏈(數(shù)據(jù)庫(kù))里添加新的區(qū)塊(數(shù)據(jù))有一定的困難,以此保證一旦新的數(shù)據(jù)被加入,往后很難篡改。以后的文章里會(huì)進(jìn)一步討論并實(shí)現(xiàn)這個(gè)機(jī)制。

現(xiàn)在呢,我們只需要罷區(qū)塊里的各個(gè)字段關(guān)聯(lián)起來(lái),并在此基礎(chǔ)上計(jì)算出一個(gè) SHA-256 哈希。讓我們調(diào)用一下 SetHash這個(gè)方法:

func (b *Block) SetHash() {

TImestamp := []byte(strconv.FormatInt(b.Timestamp, 10))

headers := bytes.Join([][]byte{b.PrevBlockHash, b.Data, timestamp}, []byte{})

hash := sha256.Sum256(headers)

b.Hash = hash[:]

}

接下來(lái),依據(jù) Golang 的常用方式,我們將實(shí)現(xiàn)一個(gè)函數(shù),以便更簡(jiǎn)單地創(chuàng)建區(qū)塊:

func NewBlock(data string, prevBlockHash []byte) *Block {

block := &Block{time.Now().Unix(), []byte(data), prevBlockHash, []byte{}}

block.SetHash() return block

}

就這么簡(jiǎn)單。

區(qū)塊鏈(Blockchain)

現(xiàn)在,讓我們來(lái)實(shí)現(xiàn)區(qū)塊鏈。本質(zhì)上來(lái)看,區(qū)塊鏈只不過(guò)是一個(gè)特定結(jié)構(gòu)的數(shù)據(jù)庫(kù),它是一個(gè)有序的,反向鏈接的列表(back-linked list)。這就意味著說(shuō),區(qū)塊是按照插入的順序排列的,每個(gè)區(qū)塊都鏈接到上一個(gè)區(qū)塊。這樣的結(jié)構(gòu),使得使用者可以很快地在區(qū)塊鏈中獲得最新的區(qū)塊,也可以很有效率地通過(guò)區(qū)塊的哈希獲得某個(gè)區(qū)塊。

在 Golang 中,這種結(jié)構(gòu)可以用數(shù)組(Array)與數(shù)圖(Map) 實(shí)現(xiàn):數(shù)組用來(lái)維護(hù)有序哈希(在 Go 語(yǔ)言中,數(shù)組是有序的);數(shù)圖(Map) 用來(lái)維護(hù) hash → block 對(duì)。不過(guò),在我們的區(qū)塊鏈原型中,我們只需要數(shù)組就可以了,因?yàn)槲覀儠簳r(shí)不需要通過(guò)哈希獲取區(qū)塊。

type Blockchain struct {

blocks []*Block

}

這就是我們的第一個(gè)區(qū)塊鏈!我從來(lái)沒(méi)想到竟然會(huì)這么簡(jiǎn)單!

現(xiàn)在,我們要想辦法往區(qū)塊鏈里添加區(qū)塊了:

func (bc *Blockchain) AddBlock(data string) {

prevBlock := bc.blocks[len(bc.blocks)-1]

newBlock := NewBlock(data, prevBlock.Hash)

bc.blocks = append(bc.blocks, newBlock)

}

這就完事兒了?或者……?

為了添加新的區(qū)塊,我們需要一個(gè)已經(jīng)存在的區(qū)塊,可現(xiàn)在我們的區(qū)塊鏈里面沒(méi)有任何區(qū)塊!于是,在任何區(qū)塊鏈中,應(yīng)該至少有一個(gè)區(qū)塊,這第一個(gè)區(qū)塊,被稱為“創(chuàng)始?jí)K”(Genesis Block)。來(lái),讓我們實(shí)現(xiàn)一個(gè)方法去創(chuàng)建這個(gè)“創(chuàng)始?jí)K”:

func NewGenesisBlock() *Block { return NewBlock(“Genesis Block”, []byte{})

}

現(xiàn)在我們就可以創(chuàng)建一個(gè)函數(shù),用來(lái)創(chuàng)建一個(gè)已含有“創(chuàng)始?jí)K”的區(qū)塊鏈了:

func NewBlockchain() *Blockchain { return &Blockchain{[]*Block{NewGenesisBlock()}}

}

讓我們來(lái)看看這區(qū)塊鏈?zhǔn)欠衲苡茫?/p>

func main() {

bc := NewBlockchain()

bc.AddBlock(“Send 1 BTC to Ivan”)

bc.AddBlock(“Send 2 more BTC to Ivan”) for _, block := range bc.blocks {

fmt.Printf(“Prev. hash: %x ”, block.PrevBlockHash)

fmt.Printf(“Data: %s ”, block.Data)

fmt.Printf(“Hash: %x ”, block.Hash)

fmt.Println()

}

}

輸出結(jié)果是:

Prev. hash:

Data: Genesis Block

Hash: aff955a50dc6cd2abfe81b8849eab15f99ed1dc333d38487024223b5fe0f1168

Prev. hash: aff955a50dc6cd2abfe81b8849eab15f99ed1dc333d38487024223b5fe0f1168

Data: Send 1 BTC to Ivan

Hash: d75ce22a840abb9b4e8fc3b60767c4ba3f46a0432d3ea15b71aef9fde6a314e1

Prev. hash: d75ce22a840abb9b4e8fc3b60767c4ba3f46a0432d3ea15b71aef9fde6a314e1

Data: Send 2 more BTC to Ivan

Hash: 561237522bb7fcfbccbc6fe0e98bbbde7427ffe01c6fb223f7562288ca2295d1

(竟然)完工!

結(jié)論

我們創(chuàng)建了一個(gè)極簡(jiǎn)的區(qū)塊鏈原型:它只不過(guò)是一個(gè)由區(qū)塊構(gòu)成的數(shù)組,每個(gè)區(qū)快鏈接指向上一個(gè)區(qū)塊。當(dāng)然,真正的區(qū)塊鏈遠(yuǎn)比這個(gè)復(fù)雜的多。在我們的區(qū)塊鏈里,添加一個(gè)新區(qū)塊非???,非常容易;但是在真正的區(qū)塊鏈中添加一個(gè)新的區(qū)塊需要更多的工作:在獲得添加區(qū)塊的允許之前要做很繁重的計(jì)算才行(這個(gè)過(guò)程被稱為工“作證明機(jī)制”,即,“Proof-of-Work”,POW)。并且,區(qū)塊鏈?zhǔn)且粋€(gè)沒(méi)有主權(quán)的分布式的數(shù)據(jù)庫(kù)。因此,任何一個(gè)新的區(qū)塊在被加入之前,必須經(jīng)過(guò)網(wǎng)絡(luò)中其它參與者的確認(rèn)與允許(這個(gè)機(jī)制被稱為“共識(shí)機(jī)制”,“Consensus”)…… 還有,我們的區(qū)塊鏈里,還沒(méi)有任何交易記錄呢!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉