XDAG技術詳解4-塊類型

在xdag網(wǎng)絡協(xié)議中政己,block分類兩種大的類型,普通塊和偽塊燕垃。

偽塊是一種command類型的塊俏橘,主要目的是用來在xdag網(wǎng)絡各個節(jié)點間傳遞一些統(tǒng)計信息允华,比如a節(jié)點向b節(jié)點請求拉取某個時間范圍內(nèi)的block。

普通塊是xdag塊的核心寥掐,xdag中所有與交易相關的塊都是普通塊靴寂。本章重點介紹普通塊,偽塊只做簡略的說明召耘。同時重點介紹邏輯設計部分百炬,協(xié)議細節(jié)不做深入說明,后面會有專門的章節(jié)描述污它。

block格式

在介紹不同類型塊之前剖踊,先簡要看下普通塊的格式庶弃,偽塊的格式比較簡單,這里不詳細說明德澈。

根據(jù)定義歇攻,每個block為定長512個字節(jié),其中包含16個field梆造,每個field也定長為32字節(jié)缴守。其中field有以下類型:

  1. header

    頭字段,其中包含所有field的type信息澳窑、block時間戳斧散、交易手續(xù)費、和傳輸標記摊聋。這個字段會因為不同類型的block內(nèi)容填充方式略有不同,在后面介紹詳細格式的時候會明確說明栈暇。

  2. input

    包含輸入block的地址和要輸入的金額麻裁,可以有多個。

  3. output

    這個類型的field被用做兩種不同的方式源祈。

    1. 轉賬輸出目標:包含輸出block的地址和要輸出的金額煎源。
    2. 單純?yōu)榱藰嬙霥AG圖做的引用:比如當前時間片的主塊引用前一個時間片的主塊,這時候金額沒什么意義香缺,設為0手销。

    可以有多個。

  4. input signature (half)

    用輸入賬戶的prikey做的簽名图张。

    half:因為這個算法的簽名結果是64個字節(jié)锋拖,一個field放不下,所以會放在連續(xù)兩個field中祸轮,每個field就只有一半兽埃。

    這個sign結果可能會有多個,但是數(shù)量并不等于input field的數(shù)量适袜,而是看所有input field對應的源block到底有是由多少個key簽出來的(被哪個key簽名的block就是屬于這個key)柄错,因為有可能不同源block屬于相同的key,所以苦酱,input sign的個數(shù)小于等于input field個數(shù)售貌。

    能用input 的 prikey做簽名,意味著當前創(chuàng)建block的人持有了input block 的 prikey疫萤,也就意味著颂跨,input block是當前創(chuàng)建者自己的block。因為只有歸屬自己的block给僵,才有權限轉出資金毫捣,才能作為input的角色存在详拙。但從邏輯上說,這種input的簽名過程蔓同,可以歸屬不同人饶辙,也就是說允許多個不同人的資金做輸入,只是當前的實現(xiàn)上沒有這么做斑粱。

  5. output signature (half)

    用創(chuàng)建當前block的人的prikey簽名出來的結果弃揽。

    注意這個output的字面意思與實際的用處并不一樣,與轉出block無關则北,而是當前交易block創(chuàng)建者的prikey簽名矿微。

    根據(jù)定義,如果一個block的signout字段能被自己的pubkey驗簽通過尚揣,則這個block屬于自己涌矢,因為這說明這個signout字段是用自己的prikey簽名的。這個signout字段快骗,更像是對當前block中余額的一把鎖娜庇,這個后面會詳細講。

    每個block一旦創(chuàng)建方篮,就會用自己的prikey做簽出一個signout字段名秀,這個signout字段只能被自己的pubkey驗簽通過,這個block從此歸屬自己藕溅。但是out field指向的block卻可以不是自己的block匕得,所以這個output signature的命名是有誤導性的,容易被理解為與out field有關巾表,其實無關汁掠。

    in/out sign的簽名和驗簽過程比較復雜,后面會專門講這個過程攒发,當前只有個基本概念即可调塌。

  6. public key,偶數(shù)類型惠猿。

    block創(chuàng)建后羔砾,會帶上sign結果相關的pubkey,以便后續(xù)接受者直接驗簽偶妖。

    因為這個算法的pubkey結果有奇偶兩種類型姜凄,這里字段也分了兩種類型。

  7. public key趾访,奇數(shù)類型态秧。

    解釋見6。

普通塊

  1. 交易塊

    普通的轉賬交易扼鞋,包含的field有:

    1. header field
    2. 多個input field
    3. 多個output field
    4. 多個pubkey field
    5. 多個input signature
    6. 一個output signature申鱼,注意目前只能有一個output signature field愤诱。
  2. 主塊

    根據(jù)定義,主鏈上的塊被判定為主塊捐友,會被增加挖礦獎勵金額到主塊賬戶上淫半,比如1024。

    在實際中匣砖,主塊通常是pool創(chuàng)建的科吭,是每個時間片中最后一個塊,用來鏈接所有當前時間片中pool中的交易快和所有其他類型的塊猴鲫。

image-20191020194425475.png

比如圖中t5塊对人,作為主塊,主要的目的就是打包當前時間片中的所有交易拂共,通過這種方式牺弄,可以加大交易tps,允許不同節(jié)點處理不同的交易匣缘,最后用主塊鏈接一次即可猖闪。

主塊通常包含field有

  1. 一個header field
  2. 一個output field,指向前一個周期的主塊肌厨。
  3. 若干個output field,指向孤塊豁陆。
  4. 一個output signature柑爸。
  5. 最后一個field是input signature類型,這里是個特殊情況盒音,內(nèi)容并不是sign表鳍,而是挖礦的隨機值,這個在后面挖礦章節(jié)詳細描述祥诽。

注意譬圣,主塊中不包含input field,所以也就不包含pubkey和input sign雄坪,但是必須有output sign厘熟。

  1. 鏈接塊

    鏈接塊的目的,是為了讓圖盡量收斂维哈,方便最后主塊去打包。我們還是用上圖中的t5舉例阔挠。

image-20191020194959993.png

t5的目的是打包交易跪削,只有被t5鏈接到的交易才會變?yōu)橛行Вū淮_認)。但每個block的field是有限的碾盐,如果當前周期的交易block都要由主塊直接鏈接的話廓旬,顯然能鏈接的個數(shù)不可能超過16,這還沒有考慮pubkey和sign字段涩盾,這樣每個周期內(nèi)能被確認的交易就有很少了励背,哪怕未來field數(shù)量可以變大叶眉,也是有上限的。這就類似比特幣的包大小莲趣,陷入tps瓶頸饱溢,違背了xdag設計的初衷绩郎。鏈接塊的目的正是來解決這個問題的。

當一個周期內(nèi)交易塊非常多的時候肋杖,系統(tǒng)會自動生成一些鏈接塊状植,作為中間block浅萧,負責收斂頂部孤塊的數(shù)量。

image-20191020205834321.png

如圖所示吩案,假如當前有30個交易快徘郭,顯然,一個主塊是沒法一次鏈接完所有交易快的胧后,這時候抱环,系統(tǒng)生成三個鏈接塊,提前收斂一次眶痰,各自鏈接10個竖伯,那么主塊只需要鏈接三個鏈接塊即可因宇,根據(jù)“主塊直接或間接引用的塊都有效”規(guī)則,30個交易也就自然被引用了打厘。

鏈接塊通常包含field有

  1. 一個header field
  2. 若干個output field婚惫,指向孤塊魂爪。
  3. 一個output signature滓侍。

與主塊類似撩笆,鏈接塊也不包含input field和input sign夕冲。

  1. 地址塊

    在一個錢包剛創(chuàng)建的時候裂逐,為了給自己創(chuàng)建一個賬戶地址,需要先創(chuàng)建一個地址塊弥姻,這個塊的唯一目的就是作為賬戶地址存在庭敦,所以叫地址塊。

    地址塊不包含交易伞广,不需要鏈接其他交易快疼电,也不需要鏈接鏈接塊,地址塊只在創(chuàng)建的時候鏈接歸屬自己的其他地址塊灾票。

    地址塊包含的field有

    1. 一個header field
    2. 若干個output field茫虽,指向歸屬自己的其他地址塊濒析。
    3. 一個output signature。

偽塊

偽塊實際上代表在結點間的command請求和響應婴氮,大小也是固定為一個block(512字節(jié))主经,按類型分為:

  1. 批量block請求

    一個結點發(fā)現(xiàn)自己有部分時間片的block不存在庭惜,會向其他結點發(fā)起拉取block的請求护赊。

  2. 批量block請求的響應

    上一個請求的響應消息骏啰,注意這個響應block只包含一些統(tǒng)計信息,和block數(shù)量透绩,實際的block是通過異步方式從連接上發(fā)過來的渺贤。

  3. sums請求

    sums是一個時間段內(nèi)所有block的摘要志鞍,方便兩個結點做一致性對比。

    一個結點為了對比自己跟其他結點之間的存儲是否一致统翩,會先按照時間段請求對方的sums厂汗,對比過sums后才會決定是否要拉block娶桦。

  4. sums請求的響應

    上一個消息的響應衷畦,包含響應方的sums內(nèi)容祈争。

  5. 單個block請求

    想對方請求指定的block角寸。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沮峡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子帖烘,更是在濱河造成了極大的恐慌,老刑警劉巖式矫,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異故慈,居然都是意外死亡,警方通過查閱死者的電腦和手機干签,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門容劳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闸度,你說我怎么就攤上這事竭贩。” “怎么了莺禁?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵留量,是天一觀的道長。 經(jīng)常有香客問我哟冬,道長楼熄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任柒傻,我火速辦了婚禮孝赫,結果婚禮上,老公的妹妹穿的比我還像新娘红符。我一直安慰自己青柄,他們只是感情好致开,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著塘辅,像睡著了一般哲银。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天郁竟,我揣著相機與錄音虏杰,去河邊找鬼瘸彤。 笑死玻靡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播黎炉,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼菌赖,長吁一口氣:“原來是場噩夢啊……” “哼堕绩!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤专执,失蹤者是張志新(化名)和其女友劉穎已艰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡翔始,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年飒箭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片削饵。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡叙凡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出追城,到底是詐尸還是另有隱情,我是刑警寧澤物舒,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布冠胯,位于F島的核電站置蜀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏航缀。R本人自食惡果不足惜揽涮,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一嵌牺、第九天 我趴在偏房一處隱蔽的房頂上張望打洼。 院中可真熱鬧,春花似錦髓梅、人聲如沸拟蜻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酝锅。三九已至,卻和暖如春奢方,著一層夾襖步出監(jiān)牢的瞬間搔扁,已是汗流浹背爸舒。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留稿蹲,地道東北人扭勉。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像苛聘,于是被迫代替她去往敵國和親涂炎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容