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