新一代區(qū)塊鏈技術(shù)開發(fā)的點(diǎn)集網(wǎng)絡(luò)(PointSet)介紹
掃描二維碼
隨時(shí)隨地手機(jī)看文章
PointSet(點(diǎn)集網(wǎng)絡(luò))是一個(gè)以多層激勵(lì)機(jī)制為核心的新一代高性能公鏈。以分布式技術(shù)為基礎(chǔ),構(gòu)建一個(gè)去中心化網(wǎng)絡(luò)體系。PointSet Chian應(yīng)用最新一代區(qū)塊鏈技術(shù)開發(fā),以點(diǎn)集鏈為出發(fā)點(diǎn),主打數(shù)字身份、版權(quán)保護(hù)、去中心化社交以及分布式內(nèi)容平臺(tái),后期會(huì)拓展到去中心化資產(chǎn)服務(wù)、去中心化交易等方面。主要應(yīng)用于媒體,版權(quán)領(lǐng)域。Point PAXOS共識(shí)算法。
PointSet 技術(shù)介紹
點(diǎn)集(PointSet)作為一個(gè)底層網(wǎng)絡(luò),以分布式技術(shù)為基礎(chǔ),構(gòu)建一個(gè)去中心化網(wǎng)絡(luò)體系。從底層數(shù)據(jù)多渠道獲取和高性能存儲(chǔ),到中間層數(shù)據(jù)的處理和鏈上記錄,再到應(yīng)用層提供 api 和 sdk,為開發(fā)者和用戶構(gòu)建底層數(shù)據(jù)與上層應(yīng)用的橋梁,在信息交換和價(jià)值轉(zhuǎn)移上發(fā)揮著重要的作用。通證經(jīng)濟(jì)模型下的 SET 作為整個(gè)生態(tài)的價(jià)值轉(zhuǎn)移媒介,多層挖礦機(jī)制能夠保證整個(gè)生態(tài)的良性循環(huán)。
1.SETChain
PointSet 鏈應(yīng)用最新一代技術(shù)開發(fā),為普通用戶、開發(fā)者、網(wǎng)站、第三方伙伴、平臺(tái)、組織等多元渠道提供面面俱到的鏈上數(shù)據(jù)記錄(身份認(rèn)證、版權(quán)保護(hù)、激勵(lì)機(jī)制等)。
PointSet 鏈上每個(gè)數(shù)據(jù)都是一個(gè) Point,無(wú)數(shù)個(gè) Point 構(gòu)成了一個(gè)Set。鏈上包含智能合約,開發(fā)者能快速搭建自己的 DAPP;也可以通過(guò)點(diǎn)集網(wǎng)絡(luò)上層的 PointDock 快速集成。
除了現(xiàn)有的主鏈技術(shù)外,PointSet 還自創(chuàng)改進(jìn)了包括 PointCheck、PointDock、PointPaxos 在內(nèi)的一系列基礎(chǔ)設(shè)施,為生態(tài)數(shù)據(jù)的安全保駕護(hù)航。
2.區(qū)塊
SET 塊的構(gòu)成大量借鑒了優(yōu)秀主鏈的構(gòu)造,包含以下部分內(nèi)容:
a) ParentHash 父區(qū)塊的哈希
b) stateRoot: 當(dāng)前已定稿區(qū)塊的交易組成的狀態(tài)數(shù)根節(jié)點(diǎn)的哈希
c) transactionRoot: 交易樹根節(jié)點(diǎn)的哈希
d) receiptRoot:收據(jù)樹根節(jié)點(diǎn)的哈希
e) logsBoom:所有交易收據(jù)中的可索引信息組成的布隆過(guò)濾器
f) difficulty:打包當(dāng)前區(qū)塊的難度純量值
g) number:區(qū)塊的祖先的數(shù)量
h) TImestamp:區(qū)塊初始化的時(shí)間戳
i) extraData:對(duì)當(dāng)前區(qū)塊的備注
j) mixHash:256 位哈希
k) nonce:64 位值(和 mixHash 共同證明計(jì)算量的承載是否足夠)
其中交易樹和收據(jù)樹都是 Merkle 樹,默克爾樹:
Merkle Tree 可以看做 Hash List 的泛化(Hash List 可以看作一種特殊的 Merkle Tree,即樹高為 2 的多叉 Merkle Tree)。
在最底層,和哈希列表一樣,我們把數(shù)據(jù)分成小的數(shù)據(jù)塊,有相應(yīng)地哈希和它對(duì)應(yīng)。但是往上走,并不是直接去運(yùn)算根哈希,而是把相鄰的兩個(gè)哈希合并成一個(gè)字符串,然后運(yùn)算這個(gè)字符串的哈希,這樣每?jī)蓚€(gè)哈希就結(jié)婚生子,得到了一個(gè)”子哈?!?。如果最底層的哈??倲?shù)是單數(shù),那到最后必然出現(xiàn)一個(gè)單身哈希,這種情況就直接對(duì)它進(jìn)行哈希運(yùn)算,所以也能得到它的子哈希。于是往上推,依然是一樣的方式,可以得到數(shù)目更少的新一級(jí)哈希,最終必然形成一棵倒掛的樹,到了樹根的這個(gè)位置,這一代就剩下一個(gè)根哈希了,我們把它叫做 Merkle Root。
在 p2p 網(wǎng)絡(luò)下載網(wǎng)絡(luò)之前,先從可信的源獲得文件的 Merkle Tree樹根。一旦獲得了樹根,就可以從其他從不可信的源獲取 Merkle tree。通過(guò)可信的樹根來(lái)檢查接受到的 Merkle Tree。如果 MerkleTree 是損壞的或者虛假的,就從其他源獲得另一個(gè) Merkle Tree,直到獲得一個(gè)與可信樹根匹配的 Merkle Tree。
Merkle Tree 和 Hash List 的主要區(qū)別是,可以直接下載并立即驗(yàn)證 Merkle Tree 的一個(gè)分支。因?yàn)榭梢詫⑽募蟹殖尚〉臄?shù)據(jù)塊,這樣如果有一塊數(shù)據(jù)損壞,僅僅重新下載這個(gè)數(shù)據(jù)塊就行了。如果文件非常大,那么 Merkle tree 和 Hash list 都很到,但是 Merkletree 可以一次下載一個(gè)分支,然后立即驗(yàn)證這個(gè)分支,如果分支驗(yàn)
證通過(guò),就可以下載數(shù)據(jù)了。而 Hash list 只有下載整個(gè) hash list才能驗(yàn)證。
默克爾樹能快速的定位樹葉的改變,大量節(jié)省查詢耗時(shí)。而交易狀態(tài)樹是默克爾帕特里夏樹(MPT):
MPT(Merkle Patricia Tree)顧名思義,MPT 就是默克爾樹和葩特里夏樹的混合體:
在 SET 鏈中,我們使用一種十六進(jìn)制的前綴編碼,字母表中存在 16個(gè)字符,其中已一個(gè)字符為 nibble
MPT 樹中的節(jié)點(diǎn)包括空節(jié)點(diǎn)、葉子節(jié)點(diǎn)、擴(kuò)展節(jié)點(diǎn)和分支節(jié)點(diǎn):空節(jié)點(diǎn),簡(jiǎn)單的表示空,在代碼中是一個(gè)空串。
葉子節(jié)點(diǎn)(leaf),表示為[key,value]的一個(gè)鍵值對(duì),其中 key 是key 的一種特殊十六進(jìn)制編碼,value 是 value 的 RLP 編碼。
擴(kuò)展節(jié)點(diǎn)(extension),也是[key,value]的一個(gè)鍵值對(duì),但是這里的 value 是其他節(jié)點(diǎn)的 hash 值,這個(gè) hash 可以被用來(lái)查詢數(shù)據(jù)庫(kù)中的節(jié)點(diǎn)。也就是說(shuō)通過(guò) hash 鏈接到其他節(jié)點(diǎn)。
分支節(jié)點(diǎn)(branch),因?yàn)?MPT 樹中的 key 被編碼成一種特殊的16 進(jìn)制的表示,再加上最后的 value,所以分支節(jié)點(diǎn)是一個(gè)長(zhǎng)度為17 的 list,前 16 個(gè)元素對(duì)應(yīng)著 key 中的 16 個(gè)可能的十六進(jìn)制字符,如果有一個(gè)[key,value]對(duì)在這個(gè)分支節(jié)點(diǎn)終止,最后一個(gè)元素代表一個(gè)值,即分支節(jié)點(diǎn)既可以搜索路徑的終止也可以是路徑的中間節(jié)點(diǎn)。
MPT 樹中另外一個(gè)重要的概念是一個(gè)特殊的十六進(jìn)制前綴(hexprefix,HP)編碼,用來(lái)對(duì) key 進(jìn)行編碼。因?yàn)樽帜副硎?16 進(jìn)制的,所以每個(gè)節(jié)點(diǎn)可能有 16 個(gè)孩子。因?yàn)橛袃煞N[key,value]節(jié)點(diǎn)(葉節(jié)點(diǎn)和擴(kuò)展節(jié)點(diǎn)),引進(jìn)一種特殊的終止符標(biāo)識(shí)來(lái)標(biāo)識(shí) key 所對(duì)應(yīng)的是值是真實(shí)的值,還是其他節(jié)點(diǎn)的 hash。如果終止符標(biāo)記被打開,那么 key 對(duì)應(yīng)的是葉節(jié)點(diǎn),對(duì)應(yīng)的值是真實(shí)的 value。如果終止符標(biāo)記被關(guān)閉,那么值就是用于在數(shù)據(jù)塊中查詢對(duì)應(yīng)的節(jié)點(diǎn)的 hash。無(wú)論 key 奇數(shù)長(zhǎng)度還是偶數(shù)長(zhǎng)度,HP 都可以對(duì)其進(jìn)行編碼。最后我們注意到一個(gè)單獨(dú)的 hex 字符或者 4bit 二進(jìn)制數(shù)字,即一個(gè)nibble。
HP 編碼很簡(jiǎn)單:一個(gè) nibble 被加到 key 前(下圖中的 prefix),對(duì)終止符的狀態(tài)和奇偶性進(jìn)行編碼。最低位表示奇偶性,第二低位編碼終止符狀態(tài)。如果 key 是偶數(shù)長(zhǎng)度,那么加上另外一個(gè) nibble,值為 0 來(lái)保持整體的偶特性。
如圖所示:
總共有 2 個(gè)擴(kuò)展節(jié)點(diǎn),2 個(gè)分支節(jié)點(diǎn),4 個(gè)葉子節(jié)點(diǎn)。
其中葉子結(jié)點(diǎn)的鍵值情況為:
節(jié)點(diǎn)的前綴:
交易樹、狀態(tài)樹、收據(jù)樹記錄了區(qū)塊上最重要的信息,也是防止區(qū)塊不被篡改和方便驗(yàn)證的核心所在。
在本區(qū)塊記錄父區(qū)塊的哈希是連接整個(gè)鏈完整的必要條件。
3.SET 激勵(lì)
無(wú)論是 pos 或者 dpos 的共識(shí)機(jī)制,我們都需要激勵(lì)機(jī)制維護(hù)整個(gè)主鏈的正常運(yùn)行,我們?cè)O(shè)計(jì)了一種一致同意的轉(zhuǎn)一家之方法,PointSet 主鏈尾了解決這個(gè)問(wèn)題,設(shè)計(jì)了一種內(nèi)置的貨幣—SET,運(yùn)行在 set 主鏈上的所有貨幣都以 point 為最小單位計(jì)算。
a) Token 的最小單位是 point,1SET = 10^18point
b) 第二個(gè)單位是 line,1SET = 10^15 line
c) 然后是 flat,1SET = 10^12 flat
d) 最大的單位為 SET
4.PointCheck
a) PointSet 具有版權(quán)校驗(yàn)、內(nèi)容記錄等功能,數(shù)據(jù)源來(lái)自 PGC、UGC 、媒體等多種渠道。在 SimHash 和 SimHash 的基礎(chǔ)上調(diào)整為 PointCheck,通過(guò)判斷用戶提交的版權(quán)內(nèi)容的相似性,計(jì)算其權(quán)重得出結(jié)論(是否儲(chǔ)存合法以及判斷對(duì)應(yīng)的獎(jiǎng)勵(lì))。
b) SimHash 通過(guò)以下流程計(jì)算出兩個(gè)文檔之間的相似性:
1)分詞
將文檔分詞,然后為每個(gè)詞分配權(quán)重(比如可以用 tf-idf 算法計(jì)算權(quán)重,但這里需要變換一下算法,將 tf-idf 值以單調(diào)遞增函數(shù)映射到一個(gè)整數(shù)值)
2)計(jì)算 Hash
3)加權(quán)
將詞乘以對(duì)應(yīng)的權(quán)值,0 用-1 代替乘以對(duì)應(yīng)權(quán)值
4)合并
把單詞序列從前到后按位累加
5)降維
把合并的結(jié)果變?yōu)?0-1 串,方法是大于 0 的—》1,小于 0 的-》0,這樣每篇文檔會(huì)得到一個(gè) ID
6)比較海明距離
將降維后得到的結(jié)果與已有的每一篇文檔的 ID 做異或運(yùn)算,然后求運(yùn)算結(jié)果中 1 的個(gè)數(shù),得到海明距離。
SimHash 算法高效,適用于分布式當(dāng)中,消耗空間小,但是長(zhǎng)短文檔同時(shí)存在時(shí),會(huì)有誤判的情況。
MinHash 在前期的處理上和 SimHash 很相似,但是在 binary data 的判斷效率上明顯超過(guò) SimHash
PointCheck 從兩種 hash 相似判斷的基礎(chǔ)上優(yōu)中取優(yōu),在進(jìn)行binary 判斷上使用 MinHash,其它的使用 SimHash,在提高效率的同時(shí),高度提高了判別的準(zhǔn)確性。
5.PointDock
Point Dock 是一整套接入系統(tǒng)。點(diǎn)集網(wǎng)絡(luò)不僅可以對(duì)接項(xiàng)目方、媒體平臺(tái),還會(huì)接入自媒體甚至普通用戶。
Point Dock 有如下體系:
a)積分系統(tǒng),即便是普通用戶都可以接入 PointSet,在經(jīng)過(guò)身份綁定之后,用戶或者平臺(tái)隨時(shí)可以將文檔儲(chǔ)存到 PointSet 上,經(jīng)過(guò)PointCheck 校驗(yàn)之后,得出對(duì)應(yīng)的結(jié)果,返還你對(duì)應(yīng)的積分。
b)自媒體接入,PointSet 將打通微信公眾號(hào)、頭條號(hào)等媒體。在進(jìn)行過(guò)身份綁定之后,可以進(jìn)行版權(quán)校驗(yàn)保護(hù)、積分贈(zèng)送等其它操作。
c)低成本 WEB 搭建,為了方便第三方接入者更專注于運(yùn)營(yíng)等方面的業(yè)務(wù),我們匯集成一整套網(wǎng)站模板,其中將包含 PointSet 完備的激勵(lì)系統(tǒng)、身份認(rèn)證系統(tǒng)、版權(quán)保護(hù)系統(tǒng),而使用 PointSet 身份認(rèn)證系統(tǒng)的普通用戶也將減少注冊(cè)成本、數(shù)據(jù)打通,實(shí)現(xiàn)從 Point 到Set 的完美集合。
d)普通開發(fā)者,普通開發(fā)者可以接入可定制度更高的 API,開發(fā)者可以僅僅使用身份系統(tǒng),零成本獲取 PointSet 用戶,更可以選擇性的接入點(diǎn)集網(wǎng)絡(luò)的積分系統(tǒng)、版權(quán)系統(tǒng)等其他模塊。
e)深入合作開發(fā)者,PointSet 將開放更多權(quán)限給深入合作開發(fā)者,共同探討區(qū)塊鏈?zhǔn)澜?,?chuàng)造更大的社會(huì)價(jià)值。
6.SET 共識(shí)機(jī)制
由于 pow 共識(shí)機(jī)制一直存在浪費(fèi)資源、效率低下、TPS 不高的問(wèn)題,所以我們采用更加快速、安全且能源消耗比較小的 dpos 算法。
DPOS 即委托股權(quán)證明——它是權(quán)益證明(以太坊的 PoS)的一種變體,以限制網(wǎng)絡(luò)上驗(yàn)證者的數(shù)量為代價(jià),提供高級(jí)別的可擴(kuò)展性。
根據(jù)這種算法,pointset 全網(wǎng)持有代幣的人可以通過(guò)投票系統(tǒng)來(lái)選擇區(qū)塊生產(chǎn)者,一旦當(dāng)選任何人都可以參與區(qū)塊的生產(chǎn)。有點(diǎn)像“人民代表大會(huì)制度”,由所有加入 pointset 網(wǎng)絡(luò)的節(jié)點(diǎn)中選取 10個(gè)超級(jí)節(jié)點(diǎn),再由這些超級(jí)節(jié)點(diǎn)之間進(jìn)行 pointset 區(qū)塊鏈的共識(shí),也正因超級(jí)節(jié)點(diǎn)的存在大大提高了 pointset 鏈的 TPS。
在 POW 或者其他的 POS 共識(shí)里,節(jié)點(diǎn)不限、隨機(jī)出塊順序的問(wèn)題,任何加入 pointset 網(wǎng)絡(luò)的節(jié)點(diǎn)都有成為超級(jí)節(jié)點(diǎn)的存在,而超級(jí)節(jié)點(diǎn)需要其他所有普通節(jié)點(diǎn)進(jìn)行投票選舉的,當(dāng)然超級(jí)節(jié)點(diǎn)也具有一定的職責(zé):
1.提供一臺(tái)服務(wù)器節(jié)點(diǎn),保證節(jié)點(diǎn)的正常運(yùn)行;
2.節(jié)點(diǎn)服務(wù)器收集網(wǎng)絡(luò)里的交易;
3.節(jié)點(diǎn)驗(yàn)證交易,把交易打包到區(qū)塊;
4.節(jié)點(diǎn)廣播區(qū)塊,其他節(jié)點(diǎn)驗(yàn)證后把區(qū)塊添加到自己的數(shù)據(jù)庫(kù);
5.帶領(lǐng)并促進(jìn)區(qū)塊鏈項(xiàng)目的發(fā)展;
如果超級(jí)節(jié)點(diǎn)不能按時(shí)履行自己的職責(zé),就會(huì)立馬被換掉,由其他正在競(jìng)爭(zhēng)的投票數(shù)高的節(jié)點(diǎn)競(jìng)選上去,以此高效維護(hù) pointset 區(qū)塊鏈平臺(tái)的正常運(yùn)轉(zhuǎn)。
DPOS 解決的拜占庭容錯(cuò)從兩個(gè)維度降低了難度:
1、節(jié)點(diǎn)數(shù)量固定只有 21 個(gè)。并且節(jié)點(diǎn)信息透明。
2、固定出塊順序。每個(gè)節(jié)點(diǎn)跟接力棒一樣,一個(gè)個(gè)往下接力出塊。
每個(gè)節(jié)點(diǎn)不能還沒(méi)輪到它出塊的時(shí)候,就出塊。都是必須輪到再出塊。如果出現(xiàn)出塊故障,會(huì)跳過(guò)這個(gè)節(jié)點(diǎn)。
DPOS 共識(shí)過(guò)程:只要能獲得 token 持有者的投票,任何人都可以參與區(qū)塊的生產(chǎn)過(guò)程,也有機(jī)會(huì)獨(dú)立的生產(chǎn)區(qū)塊。pointset 區(qū)塊鏈上預(yù)計(jì)每 1.5 秒生產(chǎn)一個(gè)區(qū)塊。任何時(shí)刻,只有一個(gè)生產(chǎn)者被授權(quán)產(chǎn)生區(qū)塊。如果在某個(gè)時(shí)間內(nèi)沒(méi)有成功出塊,則跳過(guò)該塊。
使用 Pointset 客戶端軟件全節(jié)點(diǎn)模式,區(qū)塊以 100 個(gè)區(qū)塊為一輪(每個(gè)生產(chǎn)者可以生產(chǎn) 10 個(gè),有 10 個(gè)生產(chǎn)者,二者相乘)。在每十輪的開始,10 個(gè)區(qū)塊生產(chǎn)者通過(guò) token 持有者的投票被選中。選中的生產(chǎn)者依據(jù)商定好的順序生產(chǎn)區(qū)塊,這個(gè)順序由 10 個(gè)或者更多的生產(chǎn)者商定。
pointset 架構(gòu)中區(qū)塊產(chǎn)生是以 10 個(gè)區(qū)塊為一個(gè)周期。在每十個(gè)出塊周期開始之前,10 個(gè)區(qū)塊生產(chǎn)者會(huì)被投票選出。前 9 名出塊者首選自動(dòng)選出,第 10 個(gè)出塊者按所得投票數(shù)目對(duì)應(yīng)概率選出。所選擇的生產(chǎn)者會(huì)根據(jù)從塊時(shí)間導(dǎo)出的偽隨機(jī)數(shù)進(jìn)行混合。以便保證出塊者之間的連接盡量平衡。
如果出塊者錯(cuò)過(guò)了一個(gè)塊,并且在最近 3 小時(shí)內(nèi)沒(méi)有產(chǎn)生任何塊,則這個(gè)出塊者將被刪除。通過(guò)不安排那些不夠可靠的節(jié)點(diǎn),盡可能的減少錯(cuò)過(guò)區(qū)塊創(chuàng)建,來(lái)讓整個(gè)網(wǎng)絡(luò)運(yùn)行得更平穩(wěn)。
在正常情況下,DPOS 塊鏈不會(huì)經(jīng)歷任何叉,因?yàn)閴K生產(chǎn)者合作生產(chǎn)區(qū)塊而不是競(jìng)爭(zhēng)。如果有區(qū)塊分叉,共識(shí)將自動(dòng)切換到最長(zhǎng)的鏈條。具有更多生產(chǎn)者的區(qū)塊鏈長(zhǎng)度將比具有較少生產(chǎn)者的區(qū)塊鏈增長(zhǎng)速度更快。此外,沒(méi)有塊生產(chǎn)者應(yīng)該同時(shí)在兩個(gè)區(qū)塊鏈分叉上生產(chǎn)塊。如果一個(gè)塊生產(chǎn)者發(fā)現(xiàn)這么做了,就可能被投票出局。
交易確認(rèn)
由 DPOS 共識(shí)算法維護(hù)的區(qū)塊鏈一般出塊者都是 100%在線的。這就是說(shuō)一個(gè)交易平均 0.5 秒后,會(huì)被寫入?yún)^(qū)塊鏈中,同時(shí)被所有出塊節(jié)點(diǎn)知曉這筆交易。這就意味著只需要 0.5 秒,一筆交易可以認(rèn)定為 99.9%被區(qū)塊鏈接收了。
在常規(guī)的情況下,DPOS 區(qū)塊鏈不太可能會(huì)產(chǎn)生分叉,因?yàn)閰^(qū)塊的生產(chǎn)過(guò)程是一個(gè)合作的過(guò)程而不是一個(gè)相互競(jìng)爭(zhēng)的過(guò)程。如果產(chǎn)生的分叉,共識(shí)將會(huì)自動(dòng)轉(zhuǎn)向最長(zhǎng)的鏈。這一機(jī)制有效是因?yàn)橐粋€(gè)區(qū)塊被加入到區(qū)塊鏈的速率與區(qū)塊生產(chǎn)者的數(shù)量直接相關(guān),而這些生產(chǎn)者都對(duì)這個(gè)最長(zhǎng)鏈條達(dá)成共識(shí)。換句話說(shuō),一個(gè)分叉的區(qū)塊鏈,如果有更多的生產(chǎn)者,長(zhǎng)度將會(huì)比更少的生產(chǎn)者更快,因?yàn)楦嗌a(chǎn)者的那條鏈上錯(cuò)過(guò)創(chuàng)建的區(qū)塊數(shù)要少很多。
有一些非常情況下例如,軟件 bug,Internet 擁塞或惡意出塊者出現(xiàn),區(qū)塊鏈可能出現(xiàn)分叉。為了確保一個(gè)交易是不可逆轉(zhuǎn)的,可以等待 10 個(gè)區(qū)塊確認(rèn)。根據(jù) pointset 鏈的配置,在正常情況下 10個(gè)區(qū)塊確認(rèn)平均需要 15 秒。
在分叉產(chǎn)生的 9 秒鐘內(nèi),出塊節(jié)點(diǎn)就可能發(fā)現(xiàn)這個(gè)分叉可能并警告用戶。一個(gè)節(jié)點(diǎn)觀察網(wǎng)絡(luò)的時(shí)候如果發(fā)現(xiàn)連續(xù) 2 次的丟塊事件,這意味著改節(jié)點(diǎn)由 95%可能性在區(qū)塊鏈的分叉分支上。有出現(xiàn) 3 個(gè)連續(xù)的丟塊以后,該節(jié)點(diǎn)有 99%的可能性在一條分叉出來(lái)的區(qū)塊鏈上??梢陨梢粋€(gè)預(yù)測(cè)模型,它將利用節(jié)點(diǎn)丟失的信息,最近的參與率以及其他因素來(lái)快速地警告用戶出現(xiàn)什么問(wèn)題。
對(duì)這種警告的反應(yīng)完全取決于業(yè)務(wù)交易的性質(zhì),但最簡(jiǎn)單的反應(yīng)是等待 7/10 確認(rèn),直到警告停止。
交易證明(TaPoS)
pointset 要求每個(gè)交易都包括最近的區(qū)塊頭的哈希。 這個(gè)哈希有兩個(gè)目的:
1.防止分叉區(qū)塊鏈上出現(xiàn)大量交易記錄;
2.使得系統(tǒng)能感知到用戶是否在分叉出來(lái)的區(qū)塊鏈上
隨著時(shí)間的推移,所有用戶最終直接確認(rèn)塊鏈,這使得難以偽造假冒鏈,因?yàn)榧倜皩o(wú)法從合法鏈路遷移交易。
DPOS 共識(shí)的最基本原則:
a) 用戶會(huì)根據(jù)自己手里的具有可投票權(quán)的幣持有量做出帶有權(quán)重的投票,根據(jù)投票結(jié)果,按照一定的規(guī)則選擇出當(dāng)前的超級(jí)節(jié)點(diǎn)生成區(qū)塊;
b) 同時(shí),競(jìng)選超級(jí)節(jié)點(diǎn)而落選的節(jié)點(diǎn)、投票給中選者的用戶、投票給落選者的用戶均可能獲得一定量的補(bǔ)償,以激勵(lì)他們持續(xù)參與之后的競(jìng)選流程;
c) 超級(jí)節(jié)點(diǎn)會(huì)按照一定的分配規(guī)則依次進(jìn)行區(qū)塊的打包并獲得最大份額的獎(jiǎng)勵(lì);
d) 超級(jí)節(jié)點(diǎn)中的多數(shù)會(huì)根據(jù)投票結(jié)果進(jìn)行選擇,剩下的會(huì)按照一定的算法保證在余下的其他節(jié)點(diǎn)中,所有節(jié)點(diǎn)都有可能被選中。
7.智能合約
智能合約全部由代碼組成,而典型的合同則是一份有著法律意義的文本,它最大的特點(diǎn)就是無(wú)法更改和自動(dòng)執(zhí)行,這構(gòu)成了智能合約實(shí)現(xiàn)“匿名信用”的基礎(chǔ)。
智能合約主要有四個(gè)目的:存儲(chǔ)和維護(hù)數(shù)據(jù)、管理不可信用戶之間的合約/關(guān)系、作為軟件庫(kù)為其他合約提供函、支持復(fù)雜權(quán)限管理。大家看其實(shí)很通用,并沒(méi)有針對(duì)某些特定的應(yīng)用做優(yōu)化,并且以上特性可以組合使用。這是 pointset 一直堅(jiān)持的,做一個(gè)最基本、對(duì)代碼執(zhí)行機(jī)制的支持。
區(qū)塊鏈智能合約有三個(gè)技術(shù)特性:
1. 數(shù)據(jù)透明
區(qū)塊鏈上所有的數(shù)據(jù)都是公開透明的,因此智能合約的數(shù)據(jù)處理也是公開透明的,運(yùn)行時(shí)任何一方都可以查看其代碼和數(shù)據(jù)。
2. 不可篡改
區(qū)塊鏈本身的所有數(shù)據(jù)不可篡改,因此部署在區(qū)塊鏈上的智能合約代碼以及運(yùn)行產(chǎn)生的數(shù)據(jù)輸出也是不可篡改的,運(yùn)行智能合約的節(jié)點(diǎn)不必?fù)?dān)心其他節(jié)點(diǎn)惡意修改代碼與數(shù)據(jù)。
3. 永久運(yùn)行
支撐區(qū)塊鏈網(wǎng)絡(luò)的節(jié)點(diǎn)往往達(dá)到數(shù)百甚至上千,部分節(jié)點(diǎn)的失效并不會(huì)導(dǎo)致智能合約的停止,其可靠性理論上接近于永久運(yùn)行,這樣就保證了智能合約能像紙質(zhì)合同一樣每時(shí)每刻都有效。
智能合約的工作原理智能合約模塊,pointset 將會(huì)實(shí)現(xiàn)自己的以 Web Assembly 為基礎(chǔ)的虛擬機(jī) pvm,用戶可以用各種主流語(yǔ)言 c、c++、python、java 等來(lái)開發(fā)自己的智能合約,從而定制化的滿足用戶需求。智能合約最終運(yùn)行在虛擬機(jī)上,開發(fā)者們便可以實(shí)現(xiàn)復(fù)雜多樣的功能,滿足定制化需求。
開發(fā)人員會(huì)為智能合約撰寫代碼。智能合約可用于交易和(或)兩方/多方之間的任何交換行為。該代碼包含一些會(huì)觸發(fā)合約自動(dòng)執(zhí)行的條件。
一旦編碼完成,智能合約就會(huì)被上傳到區(qū)塊鏈網(wǎng)絡(luò)上,即它們被發(fā)送到所有連接到網(wǎng)絡(luò)的設(shè)備上。從另一種區(qū)塊鏈應(yīng)用——比特幣——的情況來(lái)說(shuō),這就好像把關(guān)于比特幣交易的網(wǎng)絡(luò)更新上傳到區(qū)塊鏈上。
一旦將數(shù)據(jù)上傳到所有設(shè)備上,用戶就可以與執(zhí)行程序代碼的結(jié)果達(dá)成協(xié)議。然后更新數(shù)據(jù)庫(kù)以記錄合約的執(zhí)行情況,并監(jiān)督合約的條款以檢查合規(guī)性。
這樣一來(lái),單獨(dú)一方就無(wú)法操縱合約,因?yàn)閷?duì)智能合約執(zhí)行的控制權(quán)不在任何單獨(dú)一方的手中。
與傳統(tǒng)合約相比,智能合約有很多優(yōu)勢(shì):
i. 智能合約與傳統(tǒng)合約相比,最大的特點(diǎn)和優(yōu)勢(shì)就是其解決了“信用”的問(wèn)題。傳統(tǒng)合約達(dá)成前,參與者先要了解各方的信用背景以選擇合適的對(duì)象,合約達(dá)成后的階段,也要依賴于各方的誠(chéng)實(shí)信用,或者引入第三方(如支付寶)來(lái)?yè)?dān)保合約履行。
ii. 智能合約因?yàn)殒溕系馁Y源是真實(shí)透明的,合約的內(nèi)容確定后就無(wú)法更改,執(zhí)行更是不用依賴任何額外操作。最終,“匿名信用”成為現(xiàn)實(shí),合約締結(jié)前無(wú)需進(jìn)行信用調(diào)查,締結(jié)后也不用第三方進(jìn)行擔(dān)保履行,從而實(shí)現(xiàn)交易成本大大降低,交易效率則大幅提高。
iii. 智能合約的數(shù)據(jù)無(wú)法刪除、修改,只能新增,而智能合約的歷史可追溯,同時(shí)篡改合約或違約的成本將很高,因?yàn)槠渥鲪盒袨閷⒈挥肋h(yuǎn)記錄并廣為人知。
iv. 去中心化的智能合約,不依賴第三方執(zhí)行合約。因此,智能合約的潛在好處包括降低簽訂合約、執(zhí)行和監(jiān)管方面的成本;因此,對(duì)很多低價(jià)值交易相關(guān)的合約來(lái)說(shuō),這是極大降低人力成本。合約驗(yàn)證和執(zhí)行的整個(gè)過(guò)程隨著用戶間的直接交易而變得快速。
v. 智能合約不容易出現(xiàn)斷電、節(jié)點(diǎn)故障、水災(zāi)火災(zāi)等問(wèn)題。智能合約保存在區(qū)塊鏈分布式賬本上時(shí),不存在放錯(cuò)或丟失的風(fēng)險(xiǎn)。這意味著連接到網(wǎng)絡(luò)的每個(gè)設(shè)備都有一份合約副本,并且數(shù)據(jù)會(huì)永遠(yuǎn)保存在網(wǎng)絡(luò)上。
8.CD(Controller-Data)模式
從業(yè)務(wù)視角來(lái)看,智能合約只需要做兩件事,其一是如何定義數(shù)據(jù)的結(jié)構(gòu)和讀寫方式,其二是如何處理數(shù)據(jù)并對(duì)外提供服務(wù)接口。
為了更好的做好模塊抽象和合約結(jié)構(gòu)分層,將這兩件事分開,既是將業(yè)務(wù)控制邏輯和數(shù)據(jù)從合約代碼層面就做好分離,這樣的處理在復(fù)雜業(yè)務(wù)邏輯場(chǎng)景中經(jīng)過(guò)實(shí)踐是當(dāng)前被認(rèn)為最佳的模式。
這個(gè)模式簡(jiǎn)稱為 CD(Controller-Data)模式。將合約分為兩類:控制器合約(Controller Contract)與數(shù)據(jù)合約(Data Contract)。
控制器合約通過(guò)訪問(wèn)數(shù)據(jù)合約獲得數(shù)據(jù),并對(duì)數(shù)據(jù)做邏輯處理,然后寫回?cái)?shù)據(jù)合約,它專注于對(duì)數(shù)據(jù)的邏輯處理和對(duì)外提供服務(wù)。
根據(jù)處理邏輯的不同,常見(jiàn)的有命名空間控制器合約、代理控制器合約、業(yè)務(wù)控制器合約、工廠控制器合約等。一般情況下,控制器合約不需要存儲(chǔ)任何數(shù)據(jù),它完全依賴外部的輸入來(lái)決定對(duì)數(shù)據(jù)合約的訪問(wèn)。特殊情況下,控制器合約可以存儲(chǔ)某個(gè)固定的數(shù)據(jù)合約的地址或者命名空間(通過(guò)命名空間在運(yùn)行時(shí)獲得合約地址)。
數(shù)據(jù)合約專注于數(shù)據(jù)結(jié)構(gòu)定義與所存儲(chǔ)數(shù)據(jù)的讀寫裸接口。為了達(dá)到數(shù)據(jù)統(tǒng)一訪問(wèn)管理和數(shù)據(jù)訪問(wèn)權(quán)限控制的目的,最好是將數(shù)據(jù)讀寫接口只暴露給對(duì)應(yīng)的控制器合約。禁止其他方式的讀寫訪問(wèn)?;谶@個(gè)模式,遵循從上至下的分析方式,從對(duì)外提供的服務(wù)接口開始設(shè)計(jì)各類控制器合約,再逐步過(guò)渡到服務(wù)接口所需要的數(shù)據(jù)模型和存儲(chǔ)方式,進(jìn)而設(shè)計(jì)各類數(shù)據(jù)合約,可以較為快速的完成合約架構(gòu)的設(shè)計(jì)。
9.SETRLP
RLP (遞歸長(zhǎng)度前綴)提供了一種適用于任意二進(jìn)制數(shù)據(jù)數(shù)組的編碼,RLP 是 SET 主鏈中對(duì)對(duì)象進(jìn)行序列化的主要編碼方式。 RLP 的唯一目標(biāo)就是解決結(jié)構(gòu)體的編碼問(wèn)題;對(duì)原子數(shù)據(jù)類型(比如,字符串,整數(shù)型,浮點(diǎn)型)的編碼則交給更高層的協(xié)議;我們規(guī)定 SET 中數(shù)字必須是一個(gè)大端字節(jié)序的、沒(méi)有零占位的存儲(chǔ)的格式(也就是說(shuō),一個(gè)整數(shù) 0 和一個(gè)空數(shù)組是等同的)。對(duì)于在 RLP 格式中對(duì)一個(gè)字典數(shù)據(jù)的編碼問(wèn)題,有兩種建議的方式,一種是通過(guò)二維數(shù)組表達(dá)鍵值對(duì),比如[[k1,v1],[k2,v2]。..],并且對(duì)鍵進(jìn)行字典序排序。
10.SET 網(wǎng)絡(luò)協(xié)議
區(qū)塊鏈技術(shù)的去中心依賴于底層組網(wǎng)技術(shù),PointSet 的底層實(shí)現(xiàn)了p2pServer,大約可以分為這樣三層。
a) 底層路由表。封裝了 kad 路由,節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)以及計(jì)算記錄,節(jié)點(diǎn)搜索,驗(yàn)證等功能。
b) 中層 peer 抽象,message 開放發(fā)送接口,server 對(duì)外提供peer 檢測(cè),初始化,事件訂閱,peer 狀態(tài)查詢,啟動(dòng),停止等功能。
c) PointSet 最上層 peer,peerset 再封裝,通過(guò)協(xié)議的 Run 函數(shù),在中層啟動(dòng) peer 時(shí),獲取 peer,最終通過(guò)一個(gè)循環(huán)截取穩(wěn)定peer,包裝在 peerset 中使用。
底層路由表這里簡(jiǎn)化問(wèn)題僅討論 Node Discovery Protocol。 這一層維護(hù)了一個(gè) buckets 桶,總共有 17 個(gè)桶,每個(gè)桶有 16 個(gè)節(jié)點(diǎn)和 10 個(gè)替換節(jié)點(diǎn)。 Node 放入時(shí)先要計(jì)算 hash 和 localNode 的距離。再按距離選擇一個(gè)桶放進(jìn)去,取的時(shí)候逐個(gè)計(jì)算 target 和每個(gè)桶中對(duì)象的舉例,詳細(xì)參考 closest 函數(shù),后面會(huì)貼出來(lái)。
距離公式滿足:f(x,y)=256-8*n-map(x[n+1]^y[n+1]) 注:n 為相同節(jié)點(diǎn)數(shù)量 map 為一個(gè)負(fù)相關(guān)的映射關(guān)系。
簡(jiǎn)單來(lái)說(shuō)就是相似越多,值越小。
其中最重要的就是 table 對(duì)象,table 公共方法有:
a) newTable 實(shí)例創(chuàng)建
b) Self local 節(jié)點(diǎn)獲取
c) ReadRandomNodes 隨機(jī)讀取幾個(gè)節(jié)點(diǎn)
d) Close 關(guān)閉
e) Resolve 在周邊查找某個(gè)節(jié)點(diǎn)
f) Lookup 查找某個(gè)節(jié)點(diǎn)的鄰近節(jié)點(diǎn)
11.SETRPC
RPC 規(guī)定在網(wǎng)絡(luò)傳輸中參數(shù)和返回值均被序列化為二進(jìn)制數(shù)據(jù),這個(gè)過(guò)程被稱為序列化(Serialize)或編組(marshal)。通過(guò)尋址和傳輸將序列化的二進(jìn)制發(fā)送給另一臺(tái)服務(wù)器。另一臺(tái)服務(wù)器收到二進(jìn)制數(shù)據(jù)以后會(huì)反序列化,恢復(fù)為內(nèi)存中的表達(dá)方式,然后找到對(duì)應(yīng)方法調(diào)用將返回值仍舊以二進(jìn)制形式返回給第一臺(tái)服務(wù)器,然后再反序列化讀取返回值。
點(diǎn)集網(wǎng)絡(luò)(PointSet) 應(yīng)用場(chǎng)景1. 數(shù)字身份
互聯(lián)網(wǎng)時(shí)代的個(gè)人信息在隱私性、安全性和易用性等方面不夠合理。在點(diǎn)集網(wǎng)絡(luò)中個(gè)人可以創(chuàng)建自己的身份,完全掌控并保證該身份的真實(shí)性和安全性。個(gè)人數(shù)字身份就是一個(gè)打開區(qū)塊鏈?zhǔn)澜绲蔫€匙,有了這把鑰匙,用戶可以用來(lái)進(jìn)行簽署協(xié)議、保護(hù)版權(quán)、參與投票、交易資產(chǎn)等活動(dòng)。
2. 版權(quán)保護(hù)
互聯(lián)網(wǎng)的出現(xiàn)大大加速了信息傳播速度,但是也帶來(lái)了一些副作用。當(dāng)前互聯(lián)網(wǎng)經(jīng)濟(jì)模式下,版權(quán)保護(hù)一直是互聯(lián)網(wǎng)時(shí)代的重點(diǎn),版權(quán)保護(hù)的缺失造成了版權(quán)保護(hù)難、版權(quán)舉證難、版權(quán)維權(quán)難。
利用點(diǎn)集鏈以及點(diǎn)集身份系統(tǒng),點(diǎn)集網(wǎng)絡(luò)提供了一套安全、便捷、低成本的版權(quán)保護(hù)系統(tǒng)。在點(diǎn)集網(wǎng)絡(luò)中,內(nèi)容生產(chǎn)者可以通過(guò)身份系統(tǒng)建立自己的唯一數(shù)字簽名,作品綁定數(shù)字簽名后,這些不可篡改的記錄在去中心化底層網(wǎng)絡(luò)中存儲(chǔ),使得內(nèi)容生產(chǎn)者的版權(quán)得到區(qū)塊鏈認(rèn)可,方便于版權(quán)舉證、維權(quán)。
3. 分布式社交網(wǎng)絡(luò)
在點(diǎn)集的去中心化社交網(wǎng)絡(luò)里,用戶可以自己控制自己的數(shù)據(jù),利用數(shù)字身份系統(tǒng),用戶可以自行運(yùn)行節(jié)點(diǎn)接入網(wǎng)絡(luò),節(jié)點(diǎn)之間實(shí)時(shí)鏈接,用戶信息端對(duì)端加密存儲(chǔ)在公鏈上,社交信息在公鏈上是冗余存儲(chǔ),該信息只有私鑰持人自身能查看。點(diǎn)集分布式社交網(wǎng)絡(luò)把用戶信息控制權(quán)歸還給用戶,保障用戶隱私。
代幣的激勵(lì)機(jī)制可以激勵(lì)用戶創(chuàng)造更多的價(jià)值,點(diǎn)集網(wǎng)絡(luò)作為一個(gè)數(shù)據(jù)平臺(tái),可以實(shí)現(xiàn)用戶跟用戶之間點(diǎn)對(duì)點(diǎn)交流,沒(méi)有第三方介入。用戶可以選擇好友之間的正常通訊交流,也可以選擇匿名聊天,還可以在平臺(tái)上創(chuàng)建社群,完全取決于掌控私鑰的用戶自己。
4、分布式內(nèi)容平臺(tái)
傳統(tǒng)媒體經(jīng)濟(jì)模型由用戶、作者、平臺(tái)、廣告商多方組成,每一方需求都是不統(tǒng)一的。用戶可以使用平臺(tái)功能滿足信息、關(guān)系等需求,但是用戶對(duì)于平臺(tái)沒(méi)有控制權(quán)和收益權(quán),在整個(gè)經(jīng)濟(jì)體系中,用戶始終處于一個(gè)被動(dòng)狀態(tài)。
點(diǎn)集網(wǎng)絡(luò)弱化了各方參與者的角色概念,在符合參與者利益最大化的前提下,角色身份可以互相轉(zhuǎn)化。除了為開發(fā)者提供 api 等接口外,用 token 激勵(lì)機(jī)制提出一個(gè)全新的概念——用戶即所有。用戶既是生產(chǎn)者也是消費(fèi)者,同時(shí)又是廣告方。參與底層開發(fā)建設(shè)的用戶也可以是平臺(tái)方,符合區(qū)塊鏈人人參與的去中心化精神。
利用點(diǎn)集可以構(gòu)建一個(gè)去中心化內(nèi)容生產(chǎn)和激勵(lì)生態(tài)的網(wǎng)絡(luò),使得內(nèi)容生產(chǎn)者、內(nèi)容消費(fèi)者、內(nèi)容平臺(tái)方以及廣告方各方面資源合理分配,獲得合理的回報(bào)。點(diǎn)集網(wǎng)絡(luò)在版權(quán)保護(hù)、用戶需求、廣告投放等方向都有著非常廣闊的前景。
5、其他應(yīng)用場(chǎng)景
去中心化資產(chǎn)服務(wù)
去中心化交易
去中心化保險(xiǎn)
資產(chǎn)鏈上流動(dòng)
商品溯源
公益慈善
PointSet 一個(gè)多層挖礦機(jī)制下的公鏈,以點(diǎn)集鏈為出發(fā)點(diǎn),主打應(yīng)用是數(shù)字身份、版權(quán)保護(hù)、去中心化社交以及分布式內(nèi)容平臺(tái),之后會(huì)拓展到去中心化資產(chǎn)服務(wù)、去中心化交易等方面。未來(lái)點(diǎn)集網(wǎng)絡(luò)將融合跨鏈存儲(chǔ)功能,將給整個(gè)系統(tǒng)帶來(lái)質(zhì)的飛躍。
通證激勵(lì)1. PointSet 代幣 SET
點(diǎn)集網(wǎng)絡(luò)的生態(tài)建立離不開代幣激勵(lì)機(jī)制。SET 是點(diǎn)集網(wǎng)絡(luò)中的代幣,總 量:21000000000 永不增發(fā)。
30%的 SET 用來(lái)構(gòu)建生態(tài)挖礦池。生態(tài)是點(diǎn)集網(wǎng)絡(luò)的根本,點(diǎn)集網(wǎng)絡(luò)采用獨(dú)創(chuàng)動(dòng)態(tài)算法 SET Method(結(jié)合 Delphi Method+ahp method)開發(fā)者生態(tài)貢獻(xiàn)值,按照權(quán)重分配挖礦收益,以此運(yùn)行點(diǎn)集網(wǎng)絡(luò)的雙層挖礦機(jī)制和代幣銷毀機(jī)制。每年解鎖生態(tài)挖礦池剩余額度的 10%,即第一年解鎖 6.3 億,第二年解鎖 5.67 億,第三年解鎖 5.1 億……
20%的 SET 用來(lái)團(tuán)隊(duì)激勵(lì)。PointSet 是一個(gè)長(zhǎng)期規(guī)劃的項(xiàng)目,基金會(huì)定制了一個(gè)為期十年的團(tuán)隊(duì)份額解凍計(jì)劃:第一年解凍 0,第二年起每年團(tuán)隊(duì)份額的解凍 10%,即每年解凍 4.2 億。
基金會(huì)份額 20%用于商業(yè)合作、生態(tài)發(fā)展等途徑。剩余 30%用于代幣兌換以及糖果發(fā)放。
SET 所兌換 ETH 全部用于項(xiàng)目建設(shè)。包括開發(fā)團(tuán)隊(duì)人才引進(jìn)、市場(chǎng)拓展、社區(qū)運(yùn)營(yíng)等方面。
2. 銷毀機(jī)制
SET 設(shè)計(jì)初衷是一個(gè)小幅度通縮的激勵(lì)代幣,在永不增發(fā)的前提下,將對(duì) PointSet 生態(tài)內(nèi) dapp 的所獲收益,收取一定比例的傭金,這部分傭金也按照比例進(jìn)行銷毀,以此來(lái)保證系統(tǒng)的通縮屬性。