比特幣已經證明了點對點的(對等的)電子貨幣系統的可行性,并且可以在不需要信托或是中央印鈔廠(金融機構)的情況下完成支付過程。但是比特幣的一些缺點也使得其成為電子經濟的基礎變得困難。為了使得整個經濟系統能夠建立在對等的基礎上,必須要做到以下幾點:
1. 快速的處理數以千計的交易量
2. 提供一種產生收入的方法
3. 有可行的方法來增加新特征
4. 能夠在可移動設備上運行
而Nxt則滿足了以上所有要求,同時還消除了Bitcoin的POW機制所需要的算力設備軍備競賽。Nxt是基于100%的股權證明之上并且需要一種原始的分配方式。但是(很多人)對于這種創始區塊的具體分配方式充滿了疑惑,他們會問到“怎么解決由于Nxt對73個大股東的不公平分配而導致的騙局指控?BCNext這樣做出回應:”這個問題是沒辦法解決的。即使我們有一百萬個股東,剩下的70億人仍然會覺得這不公平,物欲橫流的世界永遠都不會公平(有錢的地方就會有不公平)?!?關于Nxt最根本的革新就是透明鍛造(Transparent Forging),這是Nxt最核心的改造(創新),使其每小時能處理上千次的交易量。
什么是NXT
NXT被認為是第二代的密碼幣。隨著一些山寨貨幣的出現,它們僅改變了哈希機理、區塊之間的時間、啟動難度等等,而Nxt則帶來了很多很多的變化,原因如下:
1. 它并不像litecoin、peercoin以及其他的一些山寨幣,這些山寨幣的代碼均基于bitcoin的源代碼。而Nxt且擁有自己的算法,是用全新代碼編寫的。
2. 它提供了內在的特征,比如去中心化的點對點對換、彩色幣、信息/聊天、去中心化的DNS(主機域名)以及即時交易等選項。我們會在以后的文章中講述這些特征。
3. 它是100%的股權證明(proof of stake),而其它絕大部分的幣種都是基于工作量機理證明(proof of work)的。相比其它幣種,這有效地去除了內在的安全風險,因為目前51%攻擊或者其它內在的脆弱性都會導致這些PoW幣種滅亡。而且另外要說的一點是,該協議對能源消耗是友好的,因此PoS不需要大量的哈希計算。
4. 發布于幾周之前(發表白皮書的時間點),不像其它幣種,發布之前已經運行了很多時間。73位參與者負責1,000,000,000個Nxt幣的分發,這些幣是通過向源塊中注入bitcoin(由他們自己捐助,共21個bitcoin幣)來產生的。這是該PoS系統運行的要求,目前分發工作已經在進行中。Nxt已經列在了coinmarketcap3) 上,大家可以通過論壇以及臨時(中心化的)的交易平臺dgex4)nxtchg5)peercover6)來進行交易。
比特幣存在的問題
比特幣存在以下一些問題,僅僅列出問題,具體和比特幣相關的信息請提前閱讀。
1. 數字列表項目區塊鏈大小膨脹過快,前4年的區塊鏈大小總計4GB,而一年后,這個數字已經是13GB了。
2. 比特幣的交易量峰值已經達到了上限的1/7了,交易量上升將會導致交易無法及時得到處理;
3. 交易確認時間平均8-13分鐘,確認時間過長;
4. 中心化疑慮加重,兩個最大的礦池占網絡總計算能力已經達到了60%,將會壟斷60%區塊的產生;
5. 工作量機制保證了交易的安全性的同時,也產生了資源浪費;每日在網絡上進行無意義的hash計算已經消耗了太多的資源
6. 生成區塊會造成比特幣的膨脹,按照算法和當前計算能力,2140年左右所有的比特幣才會生成完畢;
Nxt核心技術
股權證明(Proof of Stake)
POS指的是一種對貨幣所有權的證明;
在Nxt的POS模型里,安全性是由持幣者保證的。由POS帶來的好處不會產生在POW中的集權化趨勢,并且數據顯示,Nxt從誕生開始保持了非常好的分布式狀態。在網絡中貢獻block的獨立用戶數正在非??焖俚脑鲩L并且保持了一個較大的數字,前5名top持幣者貢獻了35%的blocks。
Nxt構建的系統,將每一枚錢幣(coin)都看做是一臺微小的挖礦機。賬戶中擁有的coin幣數量越多,那么它有越大的幾率獲得生成一個block的機會。創建block的收益就是在block內部的交易費用。創建block不會產生新的coin。Nxt的重新分配發生在創建block的交易費中。透明鍛造(term forging)替代了挖礦(mining)。
隨后的block生成基于前一個block的可證實的,獨立的,不可預測的信息。創建一系列的blocks,這些block都可以回溯到創世塊。block生成時間被設定為60s。但是可能結果的多樣性導致了block的平均產生時間為80s,偶爾也會發生非常長時間的間隔。
安全性一直是POS系統關心的問題,下面是POS算法的基本概念:
· 累計的難度值被作為一個參數存儲在每一個block中,下一個block的難度值會從前一個block中衍生出來;為了防止不一致的情況發生,網絡會選取整個block chain的最大的累計難度值。
· 為了防止一個人在不同的賬號間轉移股權以達到增加獲取block創造機會的行為發生,新轉入的幣(tokens)必須停留至少1440個塊的時間才允許參與block生成系統。達到這一標準的貨幣才能為賬號的有效股權,這個值會決定獲得鍛造的幾率;
· 為了防止攻擊者總是從創世模塊生成新的block chain,網絡僅允許chain重組從當前高度的前720塊開始。任何提交的block高度低于這個值的都會被拒絕;
· 由于被單一賬號控制blockchain的幾率及其低,一旦交易被一個block確認后又生成了至少10個block,此時交易被認為是安全確認的。
貨幣
Nxt的總貨幣數是10億個,每一個Nxt幣還被分成了108個小的貨幣(NQT),NQT作為Nxt幣的最小單位;
所有的貨幣都是在創世塊中直接產生的,而產生創世塊的賬號是,NXT-MRCC-2YLS-8M54-3CMAJ,這個賬號的余額也被設置成負10億個。在創世賬號中的負貨幣值也帶來幾個有趣的影響:
· 創世賬號無法發起任何交易,也無法支付交易費,因為賬號余額是負數,因此這個賬號的password也是對外公開的(注意,最后一個。也是密碼一部分):It was a bright cold day in April, and the clocks were striking thirteen。
· 任何送到這個賬號上的Nxt貨幣都會被消滅,因為這個賬號的負余額會使得轉入貨幣和余額之間相互抵消,因此而銷毀的Nxt貨幣已經達到了數千個;
· 轉移給這個賬號的Nxt資產也會被銷毀;
網絡節點
網絡節點是指在網絡上貢獻交易和區塊數據的任何設備;任何運行Nxt服務的設備都可以看做是一個節點;
網絡節點可以分為兩種,帶hallmark簽名的和普通節點;hallmark節點是指帶有一個加密簽名的節點,這個加密簽名是使用一個賬號的私鑰生成的。這個簽名可以被解碼分析出綁定到這個節點的賬號的id和余額等信息;帶有hallmark簽名的節點可以看做是賬號綁定的,因此這種節點會更安全;綁定到節點的余額越多,可信度就越高;可能一個攻擊者想通過綁定賬號的hallmark節點獲取信任實施攻擊,但是獲取信任的代價阻止了這種行為的發生;
Nxt網絡中的任何節點都有處理和廣播交易、區塊數據的能力。從其他節點接收的區塊信息會被校驗有效性;為了防止無效數據的傳播,生成無效數據的節點會被臨時拉黑一段時間;
為了預防DDOS攻擊,每個節點接收其他節點的請求被限制在30個每秒;
區塊
和其他的電子貨幣一樣,Nxt所有的交易賬目信息都保存在一系列的區塊中,被稱作區塊鏈(blockchain)。這個賬本提供了交易的永久記錄,以及交易發生的先后順序;在Nxt網絡中,區塊鏈存在于每一個節點內,任何一個節點上的解鎖賬號(提交過私鑰)在第一筆入賬交易發生后的第1440個區塊生成以后,就具有了生成區塊的能力。滿足這些條件的賬號也成為活躍賬號。
易信息,最前面有一個192個字節長度的頭信息,這個信息包含了辨識這個區塊的一些參數。每個交易最多由160個字節(舊的純coin交易,目前已經擴展了至少16個字節,如果有附件,交易長度會更長)組成。每個區塊的最大長度是32KB。所有區塊都包含下列信息:
· 區塊版本,區塊高度值,區塊的ID
· 區塊創建時間,單位是秒,距離創世塊創建到現在的秒數;
· 創建區塊的賬戶ID和賬戶的公鑰;
· 上一個區塊的ID和Hash值,本區塊含有的交易個數
· 交易產生的NXT幣的總數和費用總數;
· 區塊中所有交易的數據,包括交易ID
· 區塊有效數據長度和有效數據的hash值
· 區塊生成簽名
· 整個區塊的簽名
· base target值和累計難度值;
區塊生成
三個關鍵參數決定了哪個賬號有資格進行區塊生成,哪個賬號獲得了生成區塊的權利,哪個區塊被選中成為最終區塊以避免沖突: 基礎目標值,目標值和累計難度值;
基礎目標值(base target)
為了贏得鍛造(生成區塊)的權利,Nxt賬號通過生成一個比給定基礎目標值小的哈希值來完成這個工作。這個基礎目標值隨著區塊的生成差異化非常大,它從前一個區塊的基礎目標值乘以本區塊生成距離上一區塊的時間(秒)衍生而來。
目標值(target value)
每一個賬號都會根據賬號的有效股權來計算這個值,它的公式是:T=Tь x S x Bе
這里,
· T表示新的目標值
· Tь表示基礎目標值
· S是距離上一個區塊生成的時間(單位:秒)
· Be是賬戶的有效股權值
根據上面的公式,我們可以得出,目標值隨著時間的推移會越來越大。最大的目標值是:1.53722867 x 10, 最小值是上一個區塊的基礎目標值的一半;對于所有的賬戶來說,能夠影響目標值大小的只有用戶的有效股權。
累計難度值
累計難度值也是從基礎目標值衍生而來,利用公式:
鍛造算法
每個在區塊鏈上的區塊都包含生成簽名字段。要參加區塊生成進程,活躍賬號必須使用自己的公鑰對前一個區塊重新計算生成簽名。生成的64字節的簽名隨后使用SHA256算法再次進行計算,最后生成的hash值的前8個字節的數據作為這個賬號的hit值。
這個hit值將會與當前的目標值進行比較,如果hit《目標值,那么下一個區塊才可以被生成。按照上面的計算目標值的公式,目標值隨著時間的增加會越來越大。即使有很少的活躍賬戶在網絡上,那么隨著時間的增加目標值會變得非常巨大,因此最終會有一個賬戶進行區塊生成。這個必然結果導致了你可以通過計算任何賬號的目標值和hit值來估算它需要多久的時間才能生成區塊。
最后一點非常有意義。因為任何節點都可以查詢任何活躍賬戶的余額信息,所以循環計算所有賬戶的hit值是有可能的。這就意味著可以有根據的預測哪個賬號將成為下一個區塊的鍛造者。這引發了一個可能的無序攻擊,通過將余額轉入下一個生成者來達到攻擊目的,這也是為什余額轉入需要經歷1440次確認之后才能變成有效余額的原因。有趣的是,下一個區塊的基礎目標值是無法有根據的預測的,所以預測之后的區塊生成者的隨機性會變得異常大。
一旦一個賬戶贏得了區塊生成權,它最多綁定255個交易到區塊中,填充所有區塊必要信息生產區塊。這個區塊隨后廣播到p2p網絡中作為候選區塊;
網絡中接收區塊的節點會校驗這個區塊的有效載荷值,生成賬戶,區塊所有的簽名信息。在有多個區塊生成的情況下,節點會選取累計難度值最大的區塊作為最終區塊,因為區塊數據是在節點間共享的,因此通過檢查區塊的難度值,無效的分支將會被移除。
余額出租
由于賬戶的有效余額影響了賬戶的鍛造能力,出租賬戶的鍛造能力給其他賬戶,但是不失去對Nxt幣的控制權是可行的。發起一個賬戶控制類型的交易,賬戶出租者會暫時失去有效鍛造量,而接收出租能力的賬戶會在有效鍛造能力值上增加相應的大?。唤邮辗綍谧饧s到期時失去這些額外的鍛造余額,這些余額會被退還給之前的出租方。
擁有出租余額的賬戶會更容易鍛造區塊,從而賺取更多的費用。但是這些費用不會平均分配給每個出租者。系統允許不受系統信任的鍛造池的存在,這些鍛造池可以向參與者付出回報。
賬號
腦錢包(brain wallet)成為Nxt全新設計的一部分:所有賬號都在網絡上保存,每個賬號的賬號地址和私鑰都是由賬號的密碼通過SHA256和Curve25519的組合計算而來;
每個賬戶都可以通過一個64位的數字表示,這個數字通過里德-所羅門碼RS7)生成的賬戶地址最多可以探測到4個錯誤,自動更正最多兩個錯誤。這個特性可以組織因為錯誤拼寫了交易另一方的地址,導致Nxt貨幣,資產等損失的發生。賬戶地址都會增加NXT-的前綴,以便非常容易的和其他貨幣的地址區分開。
由私鑰決定的里德-所羅門編碼的賬戶地址生成的過程如下:
· 密碼通過SHA256算法生成的HASH值作為賬戶的私鑰;
· 私鑰通過Curve25519算法生成賬戶的公鑰;
· 公鑰通過SHA256算法來生成賬戶ID;
· 前64位的賬戶ID是可見的賬戶號碼;
· 里德所羅門編碼了這個可見賬戶號碼,再增加前綴NXT-最終生成了賬戶地址;
當賬戶通過密碼第一次訪問時,它的公鑰還是不安全的。當第一筆交易發生后,256位的公鑰信息將會被存儲到區塊中,這也確保了賬戶的安全。公鑰的地址空間2256大于賬戶號碼的地址空間264,所以賬戶號碼和密碼之間不存在一對一的關系,沖突也有可能發生。這些沖突通過下面的方式發現和解決:一個使用指定密碼登陸的賬戶已經被一個256位的公鑰鎖定,任何其他的公鑰/私鑰都不會被允許登錄到這個賬號。
賬戶余額財產
對于每一個NXT賬戶來說,有很多不同的余額資產。每一類都有不同的目的,部分還在交易確認和處理時被校驗。
· 有效賬戶余額被用來計算賬戶的鍛造能力。所謂的有效余額就是賬戶余額已經停留了超過1440個區塊,另外,賬戶租借允許賬戶將有效余額租借給其他的賬戶;
· 保障余額(guaranteed balance)是指賬戶中財產經過1440個區塊之后的額度,和有效余額不同的是,保障余額無法分配給其他賬戶;
· 基礎余額(basic balance)指至少被確認過一次的交易額;
· 鍛造余額展示的時成功鍛造區塊收到的獎勵費用總數;
· 未確認余額(unconfirmed balance)指的是賬戶中的余額減去尚未確認交易中的余額;
wallet.dat
比特幣和相關貨幣經常會用到一個加密的文件,這個文件被成為錢包(wallet),用來存儲用來接受比特幣的地址信息。Nxt的核心設計并未模仿這個做法,但也沒有排除這個特性。像OffSpring客戶端、在線錢包服務nxtblocks.info展示的那樣,通過客戶端對錢包系統的二次開發,Nxt賬戶的地址也可以存在一個加密的離線文件中。
交易
交易指的是Nxt賬戶修改狀態或變更余額。每個交易只能執行一個功能,一旦一筆交易被一個新增的區塊納入,那么這個交易便持久存儲在整個網絡中了。
交易費用
交易費用是Nxt貨幣回流到網絡的主要機制。任何一個交易都至少需要1Nxt貨幣的費用。唯一的例外是在資產交易所發行一種資產時,需要1000Nxt的手續費;當一個賬戶鍛造一個區塊時,區塊包含的所有的交易的總費用就作為鍛造回報發放給鍛造區塊的賬戶;
為了防止交易數量超過區塊的32KB的上限限制,鍛造賬戶會從高到低選擇交易放入區塊;交易費用高的會被優先選擇;
交易確認
所有未被有效網絡區塊納入的交易都處于未確認狀態;新創建的區塊被保存在P2P網絡中,而網絡節點上的賬戶創建了這些區塊。一旦一個交易被納入一個新區塊,那么這個交易就被認為確認了一次。隨著新的區塊在區塊鏈上的創建,每增加一個新的區塊,交易就被多確認了一次;
如果一個交易在截止日期前還未被任何區塊確認,那么它將被從交易池中移除;
交易截止日期
每個交易都包含一個截止日期參數,這個參數是距離這個交易被提交到網絡時的分鐘數;默認截止日期是1440(24小時)分鐘,已經被廣播到網絡但是還未被區塊納入的交易是未確認交易;
如果一直到過期時間交易都沒有被確認,這個交易將被移除;
交易可能被保持未確認狀態,比如交易無效,或交易格式錯誤,或由于有更高的交易費的交易被優先處理等原因。將來,采用多重簽名的交易可能會優于單一過期時間的交易;
交易類型
下列五種主要類型和子類型在Nxt系統中被支持:
· 支付(用戶發送Nxt貨幣)
· 普通支付
· 消息
· 彩色貨幣
· 數字貨物
· 賬戶管理
詳情參考NXT客戶端的交易創建;
交易創建流程
詳細的交易創建流程如下:
1. 發送方填寫交易的詳細信息;創建交易時必須選擇一種交易類型,還有其他幾個參數也是必填的:
· 發送方私鑰
· 指定的交易費用
· 交易截止日期
· 一個可選的相關交易
2. 所有輸入的交易參數都會被校驗;例如必填的參數不能為空,交易費至少是1Nxt;交易截止日期至少距離現在大于1分鐘;如果相關交易被指定,那么只有相關交易處理完畢后,此交易才能被處理;
3. 如果參數檢查都通過了:
a. 根據私鑰生成發送方賬戶的公鑰;
b.獲取創建的賬戶信息,交易參數也將被進一步的檢查:
· 發送方的余額不能為0;
· 發送方的未確認余額不能小于發送費用和發送貨幣的和;
4. 如果發送方賬戶資產充足:
a. 按照交易類型和子類型創建交易;所有指定的參數都包含在交易數據中,隨著交易對象的創建,一個唯一的交易主鍵ID也會被創建。
b.交易會被用發送方賬戶私鑰簽名;
c.編碼后的交易數據會被發送給賬戶連接的一些活躍節點處理;
d.交易會被廣播給所有的節點;
e.服務器會返回一個交易創建的結果:
· 如果創建成功,返回交易ID;
· 一旦任何參數檢查不通過則返回錯誤信息;
密碼圖譜基礎
Nxt的密鑰交換是基于Curve25519算法的,Curve25519通過使用非??焖?、高效、高安全性的橢圓曲線數字簽名:迪菲-赫爾曼函數8)實現私鑰生成。這個算法最初由Daniel J. Bernstein在2006年實現。
Nxt的消息簽名使用了EC-KCDSA9)(Elliptic-Curve Korean Certificate-based Digital Signature Algorithm)算法,這個算法在1998年成為IEEE P1363a的一部分。
這兩個算法被選中是考慮了它們生成一個32字節的密鑰的平均耗時和安全性;
加密算法
如果Alice要發送一個編碼消息給Bob,那么Alice需要:
備注:如果一部分的明文消息被猜中,如果Alice和Bob一直使用相同的密鑰對,后續的消息很可能也會被解碼。所以,建議每次交流的時候都生成不同的密鑰對以提高安全性;
股權攻擊
零成本攻擊(Nothing at Stake)
在一個零成本攻擊中,鍛造者試圖在block的每個分支上都繼續創建block,因為這個行為幾乎對攻擊者毫無成本;另外,忽略任何一個分支都可能會導致丟失區塊獎勵,一旦某一個分支因為最大的累計難度成為正式的區塊鏈;
現在這類攻擊只是在理論上可能發生,并不實際;Nxt網絡不會經歷長的block分支,低區塊收益也無法提供非常強的利益刺激;進一步講,為了很小的利益而影響網絡的安全和信任是得不償失的。
作為Nxt發展路線圖中的一部分,一個叫做“經濟集合”概念的特性可以針對這種攻擊提供保護,它通過強制要求交易創建時包含一個之前block的hash值以及分組節點到集群來探測網絡中非正常的行為并給予處罰(暫時失去鍛造能力)
歷史攻擊(History Attacks)
在一個歷史攻擊中,某個人獲得了一大筆貨幣,并出售,然后試圖從交易前創建一個成功的分支替換區塊鏈數據;如果失敗了,對攻擊者不會有任何損失,因為貨幣已經成功出售了;如果攻擊成功,那么攻擊者又拿回了他們已經出售的貨幣。這種攻擊的一個極端例子就是攻擊者需要獲取賬戶的私鑰,然后從創世塊開始構建一個成功分支;
在Nxt中,一般的歷史攻擊都會失敗,因為所有可以用來鍛造的股權都需要停留區塊達到1440個;另外,有效余額在賬戶生成每個區塊時都會是區塊校驗的一部分。極端攻擊形式也會失敗,因為Nxt的區塊鏈不允許超過720個高度的重組。這就限制了攻擊者,從時間框架上無法實現成功的攻擊;
評論
查看更多