Nxt區塊鏈2.0 – 主鏈和子鏈
Nxt區塊鏈2.0已經在討論和計畫實施中了,其核心思路就是要通過主鏈(Main Chain)和子鏈(Child Chain)的這種架構來增加Nxt區塊鏈的可擴展性和可刪減性,從而解決長期存在的區塊鏈膨脹等問題; 主鏈只有維護網路安全的功能,其中的代幣稱之為fNXT(Forging NXT),只有發送轉帳基本功能和鍛造功能(維護網路安全);子鏈則擁有所有目前NXT的功能,所有子鏈的交易都用自己子鏈的代幣,但最終的交易需要使用主鏈的代幣fNXT來廣播至網路並被節點確認;因此目前的NXT區塊鏈也將成為一條子鏈,同時會創建新的主鏈。 具體增加的內容如下: 創建一條主鏈,其中的代幣只有鍛造維護網路功能,代幣稱之為“forgingNXT”。目前的NXT生態系統則變為一條子鏈,保留除了鍛造以外的所有功能和屬性。在硬分叉區塊,每一個NXT的持有者將會按照1:1的比例獲得主鏈的fNXT和目前子鏈的NXT,所有的其它功能和屬性都將遷移至NXT子鏈; 可以隨時按照市場價格將NXT交易為fNXT; 所有子鏈運行的程式是一樣的,但是每一條子鏈可以根據自己的需要來選擇設置功能。目前的NXT子鏈將擁有所有的交易類型和功能; 每一條子鏈都將使用自己的代幣,所有的支付交易、資產交易、數位商品交易市場等等都將使用子鏈內部的代幣,子鏈的交易費要使用自己的代幣; 所有子鏈的交易都需要由所有節點來處理。所有的節點至少保留所有子鏈的最新的1440個區塊的交易資料。備份節點可以選擇將子鏈的交易資料存儲時間延長,或一直保存這些交易資料; 如果節點沒有進行特別備份設置的話,所有子鏈的交易將會在1440個區塊後全部刪除。重新下載區塊鏈的新節點需要價值:鍛造者和所有運行區塊鏈的節點批准了這些當時未刪減的交易,在那個時間點它們也必須是有效的,儘管要驗證它們的資料已經不存在了。 必須要能夠驗證鍛造者的fNXT餘額。這就是為什麼主鏈(鍛造鏈)上與fNXT餘額變化的相關的交易不能刪除的原因,主鏈必須要保留一些必要的交易類型; 子鏈上的區塊將會是可刪減的單個(每一條鏈每一個區塊中的每一個交易)交易。任何人都可以創建子鏈區塊交易。然而,需要由在主鏈上創建區塊的鍛造者來決定是否將這個子鏈區塊交易寫入到主鏈區塊中。與其它所有節點一樣,鍛造者會驗證子鏈區塊中的所有子鏈交易,前提是這些資料還沒有被刪除。 如果子鏈中沒有交易,就沒必要創建子鏈區塊交易,這與主鏈不同,在主鏈中我們需要持續的創建時間為60秒的區塊,無論區塊中是否有交易。我們可以考慮縮短主鏈的區塊時間來讓讓更多的子鏈區塊出現; 鍛造者只接受fNXT類型的交易費,最小交易費是由軟體自己來計算的; 當鍛造者將一個子鏈區塊交易寫入到主鏈中時,子鏈區塊交易的創建者需要給鍛造者支付一定費用的fNXT。這個交易費是由子鏈區塊創建者決定的,但是一定要大於軟體協定所設定的最小費用。同時,子鏈區塊創建者也會獲得交易費,這些交易費則是以子鏈中的代幣,是由資料交易的發送者支付的; 子鏈代幣和fNXT的兌換比率將由市場決定。如果沒有人願意將子鏈交易寫入子鏈區塊,這意味著支付的子鏈交易費沒有達到所需的最小fNXT費用,這樣的話將以將不會得到確認。如果子鏈的代幣價格跌為0,沒有人願意創建子鏈區塊的話,這條子鏈上的交易將會停止; 子鏈將會互相競爭來希望被寫入到主區塊中,因為最終鍛造者將會查看 費用/交易大小 比,希望最大化它們的鍛造收益,當然這些交易大小受制于主區塊鏈的區塊大小和交易數目限制; 在刪減之前,每一個節點不僅要驗證子區塊交易雜湊是否匹配,還要驗證子鏈上的所有交易都是有效的,例如,沒有雙重支付,以及其它所有的驗證。這樣的話節點才能知道某個子鏈上所有帳戶的當前餘額。為了能夠刪減,我們需要快照交易,快照只記錄當前子鏈的狀態,不會記錄之前的歷史記錄。然後,在交易被寫入主區塊中720個確認後,我們就認為該交易是有效的,就會刪減掉快照之前的所有歷史交易記錄和之前的快照; 子鏈的快照交易是由當前區塊的鍛造者按照以一定的時間間隔來創建的,例如1440個區塊。它只包含快照的雜湊值,並不包含快照的所有資料內容; 當創建快照交易時,快照資料本身並不不需要廣播至網路。每一個更新的節點都已經有子鏈快照時的狀態了,因此它們就能夠自己生產快照。只需要驗證鍛造者的快照雜湊與自己的快照雜湊相匹配即可; 只有重新開始下載區塊鏈的節點才需要下載最新的所有快照,這就是為什麼每一個節點都必須生成並保留這個快照的另外一個原因,從而可以提供給這些重新下載區塊鏈的新節點。快照的下載是torrent模式的,即從不同的節點下載不同的碎片; 因為每一個更新的節點仍然需要驗證所有當前的交易,儘管我們已經極大地減少了區塊鏈長期膨脹的問題,這些問題包括佔用大量的磁碟空間、區塊鏈下載時間,但是仍然存在CPU處理所有子鏈資料的瓶頸、接受和處理所有子鏈當前交易的頻寬問題。但是因為節點無需驗資子鏈之前已經刪減的交易資料,因此整體上下載區塊鏈資料的速度會大大提高,CPU的佔用也會大幅降低; 主鏈(鍛造鏈)用於保證安全,即使很多子鏈沒有使用者和交易,或者偶爾有交易。同樣,這樣以來所有子鏈都可以進行刪減。子鏈不再需要保留它們之前所有的從創世塊開始的舊資料了,因為它們不參與鍛造,與網路安全無關; 首先,我們會只有主鏈和目前的NXT一條子鏈,或者再加一條測試子鏈。一旦測試沒完成,我們就開始實施動態創建新子鏈的功能,以及為創建的子鏈設置和編輯功能屬性。