基于以太坊go-ethereum的DPOS實(shí)現(xiàn)(三)創(chuàng)世塊

源碼

GitHub地址 https://github.com/TTCECO/gttc

目錄

基于以太坊go-ethereum的DPOS實(shí)現(xiàn)(一)源碼及測(cè)試運(yùn)行
基于以太坊go-ethereum的DPOS實(shí)現(xiàn)(二)簡(jiǎn)要說(shuō)明
基于以太坊go-ethereum的DPOS實(shí)現(xiàn)(三)創(chuàng)世塊
基于以太坊go-ethereum的DPOS實(shí)現(xiàn)(四)共識(shí)接口
基于以太坊go-ethereum的DPOS實(shí)現(xiàn)(五)定時(shí)出塊
基于以太坊go-ethereum的DPOS實(shí)現(xiàn)(六)代表選擇

創(chuàng)世文件

我們將這個(gè)DPOS共識(shí)命名為alien虹钮,所以大家在文中或代碼中看到??,莫慌攀隔。

DPOS共識(shí)的創(chuàng)世文件形如如下genesis.json

{
  "config": {
    "chainId": 8434,
    "homesteadBlock": 1,
    "eip150Block": 2,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 3,
    "eip158Block": 3,
    "byzantiumBlock": 4,
    "alien": {
      "period": 2,
      "epoch": 300,
      "maxSignersCount": 5,
      "minVoterBalance": 100000000000000000000,
      "genesisTimestamp": 1536136198,
      "signers": [
            "0x393faea80893ba357db03c03ee73ad3e31257469",
            "0x30d342865deef24ac6b3ec2f3f8dba5109351571",
            "0xd410f95ede1d2da66b1870ac671cc18b66a97778",
      ]
    }
  },
  "nonce": "0x0",
  "timestamp": "0x5b8f92c2",
  "extraData": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x1",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {
    "cbfc29c31a31c869f9eb59a084d9019965978a7e": {
      "balance": "0x31d450f18af132720000000"
    },

    "393faea80893ba357db03c03ee73ad3e31257469": {
      "balance": "0xd3c21bcecceda1000000"
    },
    "30d342865deef24ac6b3ec2f3f8dba5109351571": {
      "balance": "0xd3c21bcecceda1000000"
    },
    "d410f95ede1d2da66b1870ac671cc18b66a97778": {
      "balance": "0xd3c21bcecceda1000000"
    },
    "a25dc63609ea7ea999033e062f2ace42231c0b69": {
      "balance": "0xd3c21bcecceda1000000"
    },

  },
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

AlienConfig

配置文件中郭膛,alien字段內(nèi)相關(guān)內(nèi)容為DPOS機(jī)制單獨(dú)相關(guān)的創(chuàng)世塊配置豆茫,其余部分同以太坊的創(chuàng)世塊配置。

    "alien": {
      "period": 2,
      "epoch": 300,
      "maxSignersCount": 5,
      "minVoterBalance": 100000000000000000000,
      "genesisTimestamp": 1536136198,
      "signers": [
            "0x393faea80893ba357db03c03ee73ad3e31257469",
            "0x30d342865deef24ac6b3ec2f3f8dba5109351571",
            "0xd410f95ede1d2da66b1870ac671cc18b66a97778",
      ]
    }

當(dāng)gttc啟動(dòng)的時(shí)候,會(huì)從創(chuàng)世文件中讀取相關(guān)配置借浊,如果發(fā)現(xiàn)alien层玲,則會(huì)認(rèn)為這個(gè)主鏈?zhǔn)前凑誅POS共識(shí)機(jī)制來(lái)運(yùn)行的号醉,類似如果找到clique則會(huì)認(rèn)為是POA,如果均未找到則按照POW處理辛块。

"period": 2, 

period為出塊的間隔畔派,單位秒。在DPOS共識(shí)中润绵,見(jiàn)證人按照特定的順序及時(shí)間出塊父虑,如果間隔設(shè)置為2秒,假設(shè)一輪的出塊從0秒開(kāi)始授药,則本輪排序第一的見(jiàn)證人必須在[0,2)內(nèi)出塊才會(huì)被其他見(jiàn)證人認(rèn)為有效士嚎,排序第二的見(jiàn)證人必須在[2,4)秒內(nèi)出塊才會(huì)被其他見(jiàn)證人認(rèn)為有效......
在同一個(gè)內(nèi)網(wǎng)的測(cè)試網(wǎng)絡(luò)中呜魄,這個(gè)間隔時(shí)間可以設(shè)置為1,而在全球部署的線上環(huán)境中莱衩,出塊的間隔應(yīng)該適當(dāng)?shù)姆糯缶粜幔詼p少由于網(wǎng)絡(luò)原因造成的廢塊或不公正懲罰計(jì)算。

"epoch": 300,

為一個(gè)計(jì)算周期笨蚁,用于計(jì)算一些事件的過(guò)期時(shí)間睹晒,此參數(shù)并非與DPOS直接相關(guān)。

"maxSignersCount": 5,

表示這個(gè)主鏈在每輪出塊過(guò)程中最多有5個(gè)見(jiàn)證人順序出塊括细。當(dāng)被投票的見(jiàn)證人數(shù)量多于5個(gè)的時(shí)候伪很,可以按照自定義的規(guī)則(最簡(jiǎn)單就是票數(shù)最多的)選出5個(gè)見(jiàn)證人來(lái)參與本輪的出塊。當(dāng)見(jiàn)證人數(shù)量少于5個(gè)的時(shí)候奋单,比如剛啟動(dòng)時(shí)只有一個(gè)節(jié)點(diǎn)啟動(dòng)了锉试,或者所有的人都把票投給一個(gè)地址的情況。則每輪依舊是5個(gè)览濒,但有的地址可以出現(xiàn)多次呆盖。

"minVoterBalance": 100000000000000000000,

表示給見(jiàn)證人投票的時(shí)最小的balance額度,單位是1e-18贷笛。上面的配置表示应又,當(dāng)用戶投票時(shí),如果用戶的balance小于100代幣乏苦,則會(huì)認(rèn)為這張票無(wú)效株扛。這個(gè)設(shè)計(jì)的主要考慮是因?yàn)橥镀边@個(gè)行為會(huì)給主鏈帶來(lái)不少的計(jì)算量,希望對(duì)于投票這個(gè)行為設(shè)定一些門檻汇荐。當(dāng)然席里,這個(gè)值也可以為0。

"genesisTimestamp": 1536136198,

因?yàn)?strong>DPOS共識(shí)中拢驾,每個(gè)見(jiàn)證人節(jié)點(diǎn)都只能在特定的時(shí)間點(diǎn)出塊奖磁,且需要能夠被其他節(jié)點(diǎn)做驗(yàn)證。所以需要一個(gè)統(tǒng)一的開(kāi)始時(shí)間繁疤,genesisTimestamp相當(dāng)于第一輪出塊的本輪開(kāi)始時(shí)間咖为。

當(dāng)然,我們可以采用以太坊創(chuàng)世文件中原本的timestamp來(lái)替代稠腊,單獨(dú)設(shè)置的原因只是因?yàn)樵谡{(diào)試過(guò)程中躁染,10進(jìn)制的時(shí)間戳更方便使用而已。

"signers": [
            "0x393faea80893ba357db03c03ee73ad3e31257469",
            "0x30d342865deef24ac6b3ec2f3f8dba5109351571",
            "0xd410f95ede1d2da66b1870ac671cc18b66a97778",
]

signers里面是創(chuàng)世文件所指定的見(jiàn)證人架忌,需要注意的是這些見(jiàn)證人的指定方式是他們自己給自己在第0個(gè)塊完成了投票吞彤,所以創(chuàng)世塊需要在創(chuàng)世文件中給這些地址分配一些代幣,而且要大于minVoterBalance指定的金額,否則投票不會(huì)生效饰恕。

下一節(jié) 基于以太坊go-ethereum的DPOS實(shí)現(xiàn)(四)共識(shí)接口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挠羔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子埋嵌,更是在濱河造成了極大的恐慌破加,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雹嗦,死亡現(xiàn)場(chǎng)離奇詭異范舀,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)了罪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門锭环,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人泊藕,你說(shuō)我怎么就攤上這事辅辩。” “怎么了吱七?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鹤竭。 經(jīng)常有香客問(wèn)我踊餐,道長(zhǎng),這世上最難降的妖魔是什么臀稚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任吝岭,我火速辦了婚禮,結(jié)果婚禮上吧寺,老公的妹妹穿的比我還像新娘窜管。我一直安慰自己,他們只是感情好稚机,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布幕帆。 她就那樣靜靜地躺著,像睡著了一般赖条。 火紅的嫁衣襯著肌膚如雪失乾。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天纬乍,我揣著相機(jī)與錄音碱茁,去河邊找鬼。 笑死仿贬,一個(gè)胖子當(dāng)著我的面吹牛纽竣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蜓氨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼聋袋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起语盈,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舱馅,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后刀荒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體代嗤,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年缠借,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了干毅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泼返,死狀恐怖硝逢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绅喉,我是刑警寧澤渠鸽,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站柴罐,受9級(jí)特大地震影響徽缚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜革屠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一凿试、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧似芝,春花似錦那婉、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至寞奸,卻和暖如春痕寓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝇闭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工呻率, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呻引。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓礼仗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子元践,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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