在上一章節中最後說到了要實現p2p網路,那麼在這一章節中就主要說一下p2p網路,實現的方式是什麼,以及為什麼要實現p2p網路。
首先先簡單的介紹一下什麼是p2p網路?p2p網路技術又稱為對等網路技術,是一種網路的新技術,依賴網路中參與者的計算能力和頻寬,而不是把依賴都聚集在較少的幾台伺服器上。舉個位元幣網路中的例子,之所以能夠在位元幣網路中實現資料的去中心化以及不可篡改,除了依賴於區塊鏈技術,更因為其內在的激勵機制。現在位元幣的**大家都是有目共睹的,但是如何保證這個**,所有的挖礦者都認為整個位元幣網路可能被攻擊者給惡意攻擊,所以它們必須提供自己的算力,來不斷保證鏈上的資料是最長的且沒有經過篡改。
做過後台管理系統的同學們都知道,給乙個企業做後台管理系統,都需要部署其tomcat、資料庫等等,將其部署在自己的私有機器或者阿里雲上,大多數企業都非常重視其資料,所以一般對於生產資料都是需要其相應管理許可權的人員才可以檢視,這就導致了下面的幾個問題。
1、資料的不透明:只針對於內部員工展現資料。
2、資料的不聯通:不同企業之間的資料無法關聯,如果需要關聯必須通過介面進行定製化的開發。
3、資料的不共享:每個企業的資料都只在自己的伺服器上,無法通過大資料分析統計出整個行業的趨勢。
而在區塊鏈中最重要的特性就是去中心化、不可篡改、可追蹤。針對上述問題的解決方案為:
2、資料溯源:在鏈上記錄下所有資料,打通資料孤島,產生乙個可追蹤的資料交易平台。
3、資料鏈:適合多方參與、資訊互動的場景,將分散的資料庫連線起來,又可以保護其參與各方的隱私。
所以為了實現資料確權,打通資料孤島,讓所有分布在各個節點上的資料因為其業務處理關係而聯絡在一起,我採用了socket方式,讓所有節點之間的資料可以進行通訊。
先簡單的介紹兩種socket程式設計
一、乙個服務端和乙個客戶端之間的通訊
socketserver類
public
class socketserver
}catch (exception e) finally}}
socketclient類
public
class socketclient catch (exception e) }}
二、乙個服務端和多個客戶端之間的通訊
server類 啟用多個執行緒來接受客服端資訊
public
class server extends serversocket
}catch (ioexception e) finally
}//執行緒類
class createserverthread extends thread
public
void run()
printwriter.println("bye, client(" + getname() +")!");
system.out.println("client(" + getname() +") exit!");
printwriter.close();
bufferedreader.close();
client.close();
}catch (ioexception e) }}
public
static
void main(string args)throws ioexception
}socketclient類
public
class socketclient
printwriter.close();
bufferedreader.close();
socket.close();
}catch (exception e) }}
因為涉及到專案中的資料,所以我這裡不能夠把一些核心的**給公布出來,但是核心的邏輯,就是通過服務端與客服端之間的一些訊息的通訊,讓所有資料資訊導儲存在乙個鏈條上。
建立我的第乙個區塊鏈002
package main import crypto sha256 fmt 0 定義結構 建立前雜湊值 建立當前雜湊值 和資料 type block struct 建立乙個區塊 func newblock data string,prevblockhash byte block 當前的先預設為空的 ...
Fabric1 4 三 建立第乙個區塊鏈
以下內容記錄了基於fabric 架構,利用docker容器建立乙個簡單的區塊鏈案例 helloworld 並實現第乙個智慧型合約 鏈碼 詳細配置可以參考fabric sample first network 配置gopath環境變數,以mac系統為例,開啟 bash profile 新增下面內容 g...
建立你的第乙個Gem
by pilipala published 2011 11 15 你在ruby世界看到到處都是gem。他們幾乎是所有的ruby應用程式的核心。我承認當我試著建立第乙個gem的時候,我有點戰戰兢兢。但我很快就發現了,這玩意簡單得要死。在這個部落格系列中,我將涵蓋從頭開始建立乙個gem的基礎,然後轉移到...