XDAG項目是C語言實現的,因此看起來給人格外的輕鬆親切。Dagger這個項目可以說比較神奇,或者說是雜亂。前期的名字是cheatcoin,後面整體換名字Dagger,代幣名字是XDAG。
今天來看看XDAG的白皮書解析,瞭解一個項目的發展,首先從白皮書入手瞭解。
Dagger (XDAG) 加密貨幣協議
1、名詞解釋
區塊地址 - 區塊散列(截取過)的base64編碼。
金額 - XDAG的數量,以cheato為單位。
區塊 - Dagger的基本結構。每個區塊固定長度為512字節。
鏈 - 一系列的區塊形成鏈。
Cheato - 一個XDAG包括22^32(2的32次方)個cheato。
區塊難度 - (2^128 - 1)/(hash_little/2^160)。其中hash_little是區塊的散列值的小端表示,256比特。
鏈難度 - 鏈上區塊的難度和。
散列 - 區塊散列。計算公式是:sha256(sha256(區塊內容))。
i-引用 – 如果區塊A的第i個域連接到區塊C,並且區塊C引用區塊B,則稱區塊B是區塊A的i-引用。
連接 - 如果區塊A包括類型2或者3的域,並且這些域是區塊B的散列,則稱區塊A和區塊B連接。
主塊 - 主鏈上的塊。
主鏈 - 具有最大難度的間隔鏈。
引用 - 如果從區塊A到區塊B是一段連續的區塊組成,則稱區塊B被區塊A引用。
間隔鏈 - 鏈上的區塊屬於不同的時間片。
最短鏈 - 一個從區塊A到區塊B的鏈,每個區塊都是i-引用B。i越小,鏈越短。
時間片 - 每64秒是一個時間片,時間片從Dagger創世紀開始。
區塊時間 - 區塊時間記錄在區塊頭信息裡,從1970年1月1號開始,單位是1/1024秒。
交易 - 等同區塊。
截取散列 – 散列的小端表示的最低24個字節。
2、區塊
一個區塊有16個域,每個域32個字節,每個域包括類型0到15.一般區塊,第0個域必須是類型1。傳輸用的偽塊,第0個域必須是類型0。
3、算法
每個區塊就是一個交易。一個交易可能包括多個輸入,多個輸出,輸入/輸出簽名,以及交易費用。合法的區塊滿足以下條件:
- 交易時間不小於Dagger創世紀時間。
- 交易的輸入/輸出時間不小於區塊本身時間。
- 每個輸入或者輸出必須是合法的區塊。
- 輸入金額總和必須小於2^64。
- 輸入總金額必須大於輸出總金額加上交易費用。
- 一個區塊的輸入和一個區塊的輸出連接的話,則該輸入以及輸出簽名必須一致。
- 輸出簽名個數必須是偶數,輸入簽名個數可能是奇數。輸入簽名的最後一個可以被看成任意數據。這個簽名的修改並不需要重建任意的其他簽名。
主鏈上的區塊稱為主塊,每個主塊隸屬於不同的時間片。也就是說,在一個時間片,最多隻有一塊主塊。每個主塊會被獎勵,第一個2^21個主區塊,獎勵1024個XDAG。第二個2^21個主區塊,獎勵512個XDAG。之後每2^21個主區塊,獎勵減半。
4、加密以及安全
標準ECDSA算法被用作簽名。採用的橢圓算法是Secp256k1。私鑰是32個字節,公鑰也是32個字節。簽名是64個字節,由兩個域組成,這兩個域分別是ECDSA簽名算法中的r和s。
私鑰存在wallet.dat文件中,這個文件和xdag程序在同一目錄,每個私鑰32個字節。公鑰並不保存,因為它們可以從私鑰導出。當用戶第一次啟動xdag程序時,要求用戶提供一串隨機字符。這些字符會作為隨機生成器的種子,這些字符存在dnet_key.dat文件中。每次xdag啟動時,這些字符會參與隨機數生成,所有的私鑰用這些字符生成。
閱讀更多 xdag交流社區 的文章