TERA 是一個(gè)去中心化應(yīng)用的平臺(tái)。這類似于一個(gè)‘’操作系統(tǒng)。TERA 由一個(gè)集成到互聯(lián)網(wǎng)的程序和數(shù)據(jù)存儲(chǔ)庫(kù)構(gòu)成。在該平臺(tái)上發(fā)布程序和數(shù)據(jù)的機(jī)制不受審查,加密貨幣是通證經(jīng)濟(jì)的血液,而區(qū)塊鏈則使其流淌。
考慮以下幾層:
硬件》軟件》UI》數(shù)據(jù)庫(kù)》中心化網(wǎng)絡(luò)》去中心化網(wǎng)絡(luò)
在 21 世紀(jì),每個(gè)人都有一個(gè)計(jì)算設(shè)備,比如一臺(tái)電腦,一臺(tái)筆記本,一部智能手機(jī),一塊智能手表等等。就其本身而言,這樣的設(shè)備對(duì)一個(gè)人來(lái)說(shuō)是沒(méi)有意義的,所以它總是運(yùn)行一個(gè)程序并且執(zhí)行一些有用的東西。程序的結(jié)果顯示在用戶界面中。通常,結(jié)果持久地存儲(chǔ)在設(shè)備的數(shù)據(jù)層中,以便能夠再次訪問(wèn)。更大的用處是允許其他用戶通過(guò)網(wǎng)絡(luò)訪問(wèn)這些數(shù)據(jù)。因此,來(lái)達(dá)到為用戶增加每一個(gè)連續(xù)實(shí)用性的目的。
為了相互通信,由設(shè)備組合而成的每一個(gè)節(jié)點(diǎn)構(gòu)成了一個(gè)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。將節(jié)點(diǎn)組合成網(wǎng)絡(luò)的最簡(jiǎn)單方法是使用單個(gè)協(xié)調(diào)服務(wù)器。,但由于單點(diǎn)故障導(dǎo)致相應(yīng)的不可靠性也表明這樣的解決方案是中心化的。
還有一些其他的解決方案,所有的設(shè)備都是平等的,具有相同的等級(jí)和優(yōu)先級(jí),我們叫它去中心化網(wǎng)絡(luò)。。重要的是要理解去中心化網(wǎng)絡(luò)的整體工作原理;節(jié)點(diǎn)之間作為一種協(xié)調(diào)良好的機(jī)制在整個(gè)網(wǎng)絡(luò)中進(jìn)行通信。為了實(shí)現(xiàn)這一點(diǎn),有一些特殊的算法用于節(jié)點(diǎn)之間的交互,我們將其稱為共識(shí)。可以是:時(shí)間共識(shí)、傳輸共識(shí)或數(shù)據(jù)鏈共識(shí)。
理論角度
一個(gè)快速的路由網(wǎng)絡(luò)
傳統(tǒng)的區(qū)塊鏈不使用節(jié)點(diǎn)之間的順序。整個(gè)網(wǎng)絡(luò)看起來(lái)是隨機(jī)的,就像這樣:
這種隨機(jī)的鏈接組織并不能保證在所有節(jié)點(diǎn)之間的快速傳遞。
而在 TERA 中,節(jié)點(diǎn)自發(fā)組織成有序的通信方式:
區(qū)塊鏈將數(shù)據(jù)從第一個(gè)節(jié)點(diǎn)傳遞到最后一個(gè)節(jié)點(diǎn)的時(shí)間不超過(guò) 3 秒。
為了實(shí)現(xiàn)這一點(diǎn),基于節(jié)點(diǎn)地址之間的相似性,節(jié)點(diǎn)之間通過(guò)特殊的連接方式進(jìn)行連接。節(jié)點(diǎn)地址是隨機(jī)值(32 字節(jié)),在節(jié)點(diǎn)操作期間不會(huì)更改。與其他節(jié)點(diǎn)的連接數(shù)與網(wǎng)絡(luò)中節(jié)點(diǎn)的數(shù)量呈對(duì)數(shù)關(guān)系,從而實(shí)現(xiàn)相對(duì)恒定的交易傳輸時(shí)間。
因此,如果網(wǎng)絡(luò)由 10 億個(gè)節(jié)點(diǎn)組成,節(jié)點(diǎn)之間的傳輸時(shí)間仍然不超過(guò) 100 毫秒(ms),因此最大時(shí)間將是 30*100 ms = 3 秒。節(jié)點(diǎn)之間傳輸交易的延遲時(shí)間 100ms 是上限,但在實(shí)踐中,它小于 100 ms,因?yàn)檠舆t較小的節(jié)點(diǎn)間具有連接優(yōu)先級(jí)。
為了使成功的連接更加持久,每個(gè)節(jié)點(diǎn)會(huì)統(tǒng)計(jì)不同區(qū)塊內(nèi)容之間成功交換的信息。此統(tǒng)計(jì)的信息會(huì)影響連接優(yōu)先級(jí)。
網(wǎng)絡(luò)協(xié)議
交易由用戶發(fā)送到 N 個(gè)相鄰節(jié)點(diǎn)(其中 N 是從 5 到 16)。交易被添加到新生成的區(qū)塊中(當(dāng)前第二個(gè)塊)。當(dāng)交換階段到來(lái)時(shí),交易開(kāi)始從一個(gè)節(jié)點(diǎn)移動(dòng)到另一個(gè)節(jié)點(diǎn),并在區(qū)塊中積累。如果一個(gè)塊包含的交易多于它的容量,那么需要大量工作量證明的交易會(huì)被留下——這就是 DDOS 保護(hù)的實(shí)現(xiàn)方式。在區(qū)塊生成階段結(jié)束時(shí),執(zhí)行簽名階段和 PoW 區(qū)塊計(jì)算(1 秒),然后開(kāi)始為期 3s 的具有最大工作量證明的區(qū)塊搜索。這樣的區(qū)塊被添加到區(qū)塊鏈中。
區(qū)塊傳輸處理
區(qū)塊鏈:每秒形成塊的次數(shù),但區(qū)塊的確認(rèn)時(shí)間(即區(qū)塊鏈中區(qū)塊的接通持續(xù)時(shí)間)為 8 秒。為了使創(chuàng)建區(qū)塊的速度比確認(rèn)時(shí)間快 8 倍,使用了區(qū)塊的流水線處理。這可以被認(rèn)為是 8 個(gè)獨(dú)立的區(qū)塊鏈,形成周期為 8 秒。每一個(gè)這樣的區(qū)塊鏈相對(duì)于其他都會(huì)相對(duì)移動(dòng)一秒鐘。因此,我們?cè)谝幻雰?nèi)創(chuàng)建第一個(gè)區(qū)塊鏈的區(qū)塊,在第二秒內(nèi)創(chuàng)建第二個(gè)區(qū)塊鏈的區(qū)塊,以此類推,直到第 8 個(gè)區(qū)塊鏈。為了將這些區(qū)塊鏈連接成一個(gè)區(qū)塊鏈,它們被粘在一起。在傳統(tǒng)的區(qū)塊鏈中,前一個(gè)塊的哈希包含在每個(gè)單鏈的區(qū)塊頭中。在 TERA 區(qū)塊鏈中,為了達(dá)到這些目的,前一個(gè)區(qū)塊的哈希值是基于 8 個(gè)區(qū)塊鏈中每個(gè)的前幾個(gè)區(qū)塊計(jì)算出來(lái)的。在這個(gè)階段,我們將 8 條鏈的邏輯綁定成一條。
幾個(gè)塊并行處理,處理順序取決于當(dāng)前時(shí)間(當(dāng)前塊):
區(qū)塊上傳以及上傳到網(wǎng)絡(luò)
時(shí)間點(diǎn):
1. 新(當(dāng)前)區(qū)塊,從 MemPool 加載交易,計(jì)時(shí)器激活
2. 同步單元(分布式單元)的開(kāi)始
3. 同步結(jié)束
4. 將數(shù)據(jù)塊與前面的區(qū)塊捆綁在一起,POW 運(yùn)算
5. 最大 PoW 網(wǎng)絡(luò)搜索開(kāi)始
6. 最大工作量證明搜索結(jié)束
7. 檢查該單位的有效性,考慮到由于下載新的區(qū)塊鏈與大的完整的工作量證明而可能改變的之前區(qū)塊。
從圖中您可以看到,該區(qū)塊引用前面的區(qū)塊,但是增量為 8 個(gè)區(qū)塊。一旦確定有效并存儲(chǔ)在數(shù)據(jù)庫(kù)中,來(lái)自第 8 個(gè)節(jié)點(diǎn)的塊就會(huì)參與到其他節(jié)點(diǎn)的卸載中(類似地,它們也可以從其他節(jié)點(diǎn)加載)。
這是在 TERA 區(qū)塊瀏覽器頁(yè)面中的區(qū)塊:
數(shù)據(jù)傳輸與驗(yàn)證分離
網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都相等。節(jié)點(diǎn)的數(shù)量是無(wú)限制的。節(jié)點(diǎn)之間的通信通過(guò)組織單個(gè)數(shù)據(jù)鏈來(lái)實(shí)現(xiàn),其中的信息以命令(交易)的形式記錄下來(lái)。通常這樣的鏈稱為區(qū)塊鏈,但是在這個(gè)平臺(tái)中,它的應(yīng)用程序被擴(kuò)展。傳統(tǒng)區(qū)塊鏈中,交易被寫(xiě)到區(qū)塊中。在這種情況下,不允許寫(xiě)入交易塊,這是無(wú)效的(例如,數(shù)字簽名不正確、賬戶資金不足、雙花等)。在 TERA 平臺(tái)中,區(qū)塊鏈作為一種傳輸工具,可以將任意的信息寫(xiě)入?yún)^(qū)塊中(以后我們稱之為交易)。對(duì)信息正確性的解釋取決于更高層次的應(yīng)用。區(qū)塊鏈有一個(gè)共識(shí)機(jī)制來(lái)確定哪個(gè)數(shù)據(jù)鏈為真,但是這個(gè)共識(shí)不會(huì)解釋區(qū)塊內(nèi)交易的規(guī)則。區(qū)塊數(shù)據(jù)是一個(gè)黑匣子——所有操作都是用一組字節(jié)執(zhí)行的。PoW 算法用于抵御 DDOS 攻擊。交易的長(zhǎng)度越長(zhǎng),PoW 的值就必須越大。在將交易發(fā)送到網(wǎng)絡(luò)之前,客戶端計(jì)算 PoW 值。
數(shù)據(jù)河
TERA 平臺(tái)可以抽象地表示為一個(gè)水道,它保證了集裝箱船舶通過(guò)的連續(xù)性和數(shù)理順序。航道不對(duì)船舶和貨物負(fù)責(zé)管轄。船舶的效用包括港口、漁場(chǎng)、倉(cāng)庫(kù)等,它們?yōu)榇把b載提供有用的工作。
它是如何使用的?
假設(shè)你需要把貨物送到 B 港,而 A 港已經(jīng)把貨物裝進(jìn)集裝箱并送到了港口。在B 港,檢查所有的集裝箱是否有正確的內(nèi)容,當(dāng)你找到貨物時(shí)就去提貨。該通道僅用 8 秒就能將船只運(yùn)送到目的地的所有港口。
這里的一個(gè)重要方面是數(shù)理順序。區(qū)塊鏈的目的是確保每個(gè)設(shè)備有一個(gè)區(qū)塊的單一順序和組成。如果提供了這種方法,那么讀取它們的程序?qū)⒃谑澜缟纤械挠?jì)算機(jī)上生成相同的結(jié)果——所以數(shù)據(jù)是相同的。因此,即使這些區(qū)塊包含不正確的交易、雙花等等,用戶端的程序也會(huì)看到它并拒絕執(zhí)行。這稱為交易驗(yàn)證過(guò)程。為了加快整個(gè)系統(tǒng)的速度,我們將其從區(qū)塊傳輸過(guò)程中分離出來(lái)。因此,我們可以在另一個(gè)時(shí)間和另一個(gè)進(jìn)程中執(zhí)行驗(yàn)證,而不影響區(qū)塊鏈,由于大量檢查,我們可以更快地執(zhí)行驗(yàn)證——由于較少的數(shù)據(jù)庫(kù)訪問(wèn),我們可以對(duì)操作進(jìn)行分組并加快工作速度。
自定義區(qū)塊鏈數(shù)據(jù)庫(kù)大小
對(duì)于在 1000 tps 時(shí)不可避免地會(huì)出現(xiàn)的大量數(shù)據(jù),新用戶應(yīng)該能夠快速下載區(qū)塊鏈來(lái)驗(yàn)證它并開(kāi)始使用它。因此,下載順序發(fā)生了變化——如果以前是從鏈的開(kāi)頭下載的,現(xiàn)在將從鏈的末尾下載。
加載信息將取決于用戶的設(shè)置——取決于他為區(qū)塊鏈分配的磁盤(pán)內(nèi)存大小。根據(jù)大小的不同,下一個(gè)下載優(yōu)先級(jí)將是:
1. 賬戶圖表
2. 區(qū)塊頭
3. 區(qū)塊或者交易的內(nèi)容
它將怎樣工作:
1. 對(duì)于超輕量級(jí)客戶端:只加載頭文件的一部分和發(fā)票表的一部分。
2. 對(duì)于普通用戶:整個(gè)帳戶和標(biāo)題表,以及部分塊的內(nèi)容
3. 對(duì)于全節(jié)點(diǎn)客戶端-所有數(shù)據(jù)(如現(xiàn)在所做的)
例子:
用戶為磁盤(pán)上的區(qū)塊鏈分配空間,例如 12GB。這個(gè)磁盤(pán)空間會(huì)被分為三個(gè)部分:
?常規(guī)區(qū)塊結(jié)構(gòu)(從末尾開(kāi)始),例如 5GB
?其他不包含在常規(guī)結(jié)構(gòu)中但需要存儲(chǔ)在節(jié)點(diǎn)上的區(qū)塊(由 DHT 原則決定,即,節(jié)點(diǎn)地址的相似度),例如 5GB
?最后一個(gè)常用的區(qū)塊,例如 2 GB
安全
雙花
TERA 區(qū)塊鏈?zhǔn)褂?PoW 共識(shí)機(jī)制。所有的交易都會(huì)按照一定順序安排執(zhí)行。
從賬戶中提現(xiàn)時(shí),要核對(duì)必要的數(shù)量。在記錄時(shí),計(jì)數(shù)器“OperationID”會(huì)遞增。每個(gè)后續(xù)的支付交易必須有下一個(gè)“OperationID”號(hào)來(lái)防止同一交易被多次花費(fèi)。
計(jì)算區(qū)塊確認(rèn)數(shù)
在比特幣網(wǎng)絡(luò)中,為了防止用戶雙花,至少需要等待 10 分鐘,有時(shí)甚至一小時(shí)。在 TERA 網(wǎng)絡(luò)中,每秒鐘都會(huì)創(chuàng)建一個(gè)區(qū)塊,但是如果你想要具有和比特幣網(wǎng)絡(luò)一樣的可靠性的話——你需要等待同樣的時(shí)間。你等待的時(shí)間與可靠性的程度相關(guān)。這不存在魔法;在任何 PoW 算法中,您都要用時(shí)間來(lái)?yè)Q取一定的可靠性。在 TERA 中,我們做出了更靈活的選擇。您可以等待 8 秒、1 分鐘或 1 小時(shí)(例如,如果,轉(zhuǎn)移價(jià)值數(shù)百萬(wàn)美元的資金)。
礦工經(jīng)濟(jì)激勵(lì)
礦工平臺(tái)為區(qū)塊執(zhí)行復(fù)雜的哈希計(jì)算,以保證區(qū)塊鏈的不變性。對(duì)找到的哈希塊的獎(jiǎng)勵(lì)為礦工提供了經(jīng)濟(jì)激勵(lì)。這個(gè)獎(jiǎng)勵(lì)的計(jì)算方法如下:剩余未分配貨幣余額的十億分之一(0.000000001)乘以全網(wǎng)算力對(duì)數(shù)的平方的百分之一。
最初,未分配的總額等于 10 億枚硬幣(tera 的總發(fā)行量),所以隨著時(shí)間的推移,獎(jiǎng)勵(lì)將下降,但這將由實(shí)際交易率上得到補(bǔ)償,以及反向補(bǔ)給由于支付交易的未分配代幣余額:
?10 TERA -為限制隊(duì)列之外的用戶創(chuàng)建一個(gè)新賬戶
?100 TERA-創(chuàng)建一個(gè)智能合約/DApp
?10000 TERA -創(chuàng)建智能通證(即發(fā)行代幣)
付款進(jìn)入賬戶 0(即回到未分配的挖礦余額)。通過(guò) DAO 投票機(jī)制,交易費(fèi)率將繼續(xù)發(fā)生變化。
抵御 DDOS 攻擊
每個(gè)區(qū)塊的大小限制為 130kb;平均交易大小為 130 字節(jié),因此平均每個(gè)區(qū)塊可以承載 1000 個(gè)交易。每個(gè)交易必須有一個(gè)工作量證明字段,它記錄哈希計(jì)算所做的工作。此字段用于確定該交易是否包含在該區(qū)塊中。它必須至少有一個(gè)確定的值,并且必須足以與其他交易競(jìng)爭(zhēng)。只有前(大約)1000 個(gè)工作量證明值最高的交易包含在區(qū)塊中。
計(jì)算:
區(qū)塊鏈的大容量,以及在發(fā)送的每個(gè)交易中強(qiáng)制執(zhí)行 PoW 的要求,使您可以有效地組織 DDOS 防御,但有以下限制:
?攻擊者的處理能力為普通用戶的 1000 倍以內(nèi)。
?平均網(wǎng)絡(luò)負(fù)載為 50%,即每秒 500 個(gè)交易。
在這種情況下,攻擊者每秒可以發(fā)送 1000 個(gè)交易。當(dāng)您第一次在網(wǎng)絡(luò)中發(fā)送時(shí),將有 1000 個(gè)交易,并攻擊 500 個(gè)常規(guī)用戶,只有 1500 個(gè)交易。區(qū)塊鏈只接受1000 個(gè)交易,因此將舍棄 500 個(gè)交易(普通用戶和攻擊者將各自丟失三分之一的交易)。但與此同時(shí),PoW 交易的平均算力將會(huì)增加,因此,在下一個(gè)塊中,普通用戶將花費(fèi)更多的計(jì)算時(shí)間來(lái)發(fā)送交易(即兩倍的時(shí)間)。與此同時(shí),攻擊者將無(wú)法增加 PoW 交易計(jì)算的能力,因?yàn)樗畛豕ぷ髟谌萘康臉O限(100%)。因此,一個(gè)普通用戶的 PoW 交易的平均算力將增加一倍,并且在普通交易之間的區(qū)塊中所占的比例也將增加一倍。攻擊者的攻擊將會(huì) 500 筆 500 筆的出現(xiàn)。也就是說(shuō),所有用戶交易都將被接受。
從這些參數(shù)可以看出,區(qū)塊鏈的工作負(fù)載越小,應(yīng)用 DDOS 攻擊就越困難。一旦區(qū)塊鏈的平均負(fù)載超過(guò) 50%,我們就會(huì)增加交易的上限閾值。目前,每個(gè)礦工的節(jié)點(diǎn)實(shí)際上只使用一個(gè)線程支持交易處理??紤]到目前多核處理器是標(biāo)準(zhǔn)的,因此將每個(gè)節(jié)點(diǎn)的交易處理性能相乘并不困難。
實(shí)踐角度
規(guī)范
共識(shí)機(jī)制:POW
算法:TERAhash (sha3 +優(yōu)化 RAM hashing)
總供應(yīng)量:10 億
區(qū)塊獎(jiǎng)勵(lì): 剩余未分配代幣余額的十億分之一(0.000000001)乘以全網(wǎng)算力對(duì)數(shù)的平方的百分之一
區(qū)塊大?。?30KB
預(yù)挖: 5%
發(fā)展基金:1%挖礦所得
區(qū)塊生成時(shí)間:1 秒
區(qū)塊確認(rèn)時(shí)間:8 秒
速度:每秒 1000 個(gè)交易
礦工費(fèi):免費(fèi)
密碼學(xué)應(yīng)用:sha3 secp256k1
防止 DDoS: PoW(哈希運(yùn)算)
平臺(tái):node 。 js
處理器線程的組成
TERA 中區(qū)塊鏈的一個(gè)重要特點(diǎn)是網(wǎng)絡(luò)的連續(xù)運(yùn)行。該網(wǎng)絡(luò)是通過(guò)創(chuàng)建一個(gè)具有動(dòng)態(tài)結(jié)構(gòu)支持的多維網(wǎng)格拓?fù)浣Y(jié)構(gòu)而形成。每秒鐘進(jìn)行一次交換。節(jié)點(diǎn)必須不斷地與其鄰居交換關(guān)于新區(qū)塊的信息(此任務(wù)稱為傳輸)。即使節(jié)點(diǎn)處于區(qū)塊鏈加載模式(即不同步),也應(yīng)該執(zhí)行這種交換。
當(dāng)您啟動(dòng)一個(gè)全節(jié)點(diǎn)時(shí),將創(chuàng)建以下進(jìn)程(節(jié)點(diǎn)):
1. MAIN -程序的主線程+傳輸。向數(shù)據(jù)庫(kù)寫(xiě)入新塊。不同步時(shí)加載歷史。
2. 靜態(tài)——向其他節(jié)點(diǎn)(頭、區(qū)塊、狀態(tài))提供靜態(tài)信息
3. TX-執(zhí)行交易(更改狀態(tài)表)。
4. Web-通過(guò) HTTP 檢索 WEB 數(shù)據(jù),以便與 WEB 完全集成
5. POW-挖礦進(jìn)程。哈希運(yùn)算使得內(nèi)存占用提升并且快速搜索給定匹配。
評(píng)論
查看更多