View on GitHub
File Changes
a
+1/-0
+
This file makes sure that Github Pages doesn't process mdBook's output.
\ No newline at end of file
+
/*!
+
 *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
+
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+
 */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
+
<!DOCTYPE HTML>
+
<html lang="en" class="sidebar-visible no-js light">
+
    <head>
+
        <!-- Book generated using mdBook -->
+
        <meta charset="UTF-8">
+
        <title>Genesis block - Jormungandr</title>
+
        
+

                      
+
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
        <meta name="description" content="">
+
        <meta name="viewport" content="width=device-width, initial-scale=1">
+
        <meta name="theme-color" content="#ffffff" />
+

                      
+
        <link rel="shortcut icon" href="../favicon.png">
+
        <link rel="stylesheet" href="../css/variables.css">
+
        <link rel="stylesheet" href="../css/general.css">
+
        <link rel="stylesheet" href="../css/chrome.css">
+
        <link rel="stylesheet" href="../css/print.css" media="print">
+

                      
+
        <!-- Fonts -->
+
        <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
+
        <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
+
        <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
+

                      
+
        <!-- Highlight.js Stylesheets -->
+
        <link rel="stylesheet" href="../highlight.css">
+
        <link rel="stylesheet" href="../tomorrow-night.css">
+
        <link rel="stylesheet" href="../ayu-highlight.css">
+

                      
+
        <!-- Custom theme stylesheets -->
+
        
+

                      
+
        
+
        <!-- MathJax -->
+
        <script async type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
        
+
    </head>
+
    <body>
+
        <!-- Provide site root to javascript -->
+
        <script type="text/javascript">
+
            var path_to_root = "../";
+
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "light" : "light";
+
        </script>
+

                      
+
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
+
        <script type="text/javascript">
+
            try {
+
                var theme = localStorage.getItem('mdbook-theme');
+
                var sidebar = localStorage.getItem('mdbook-sidebar');
+

                      
+
                if (theme.startsWith('"') && theme.endsWith('"')) {
+
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
+
                }
+

                      
+
                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
+
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
+
                }
+
            } catch (e) { }
+
        </script>
+

                      
+
        <!-- Set the theme before any content is loaded, prevents flash -->
+
        <script type="text/javascript">
+
            var theme;
+
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
+
            if (theme === null || theme === undefined) { theme = default_theme; }
+
            var html = document.querySelector('html');
+
            html.classList.remove('no-js')
+
            html.classList.remove('light')
+
            html.classList.add(theme);
+
            html.classList.add('js');
+
        </script>
+

                      
+
        <!-- Hide / unhide sidebar before it is displayed -->
+
        <script type="text/javascript">
+
            var html = document.querySelector('html');
+
            var sidebar = 'hidden';
+
            if (document.body.clientWidth >= 1080) {
+
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
+
                sidebar = sidebar || 'visible';
+
            }
+
            html.classList.remove('sidebar-visible');
+
            html.classList.add("sidebar-" + sidebar);
+
        </script>
+

                      
+
        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
+
            <div id="sidebar-scrollbox" class="sidebar-scrollbox">
+
                <ol class="chapter"><li class="expanded affix "><a href="../introduction.html">Introduction</a></li><li class="expanded "><a href="../concepts/introduction.html"><strong aria-hidden="true">1.</strong> General Concepts</a></li><li><ol class="section"><li class="expanded "><a href="../concepts/blockchain.html"><strong aria-hidden="true">1.1.</strong> Blockchain concepts</a></li><li class="expanded "><a href="../concepts/stake.html"><strong aria-hidden="true">1.2.</strong> Stake</a></li><li class="expanded "><a href="../concepts/node.html"><strong aria-hidden="true">1.3.</strong> Node organisation</a></li><li class="expanded "><a href="../concepts/network.html"><strong aria-hidden="true">1.4.</strong> Network overview</a></li></ol></li><li class="expanded "><a href="../quickstart/introduction.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="expanded "><a href="../quickstart/01_command_line.html"><strong aria-hidden="true">2.1.</strong> Command lines tools</a></li><li class="expanded "><a href="../quickstart/02_passive_node.html"><strong aria-hidden="true">2.2.</strong> Starting a passive node</a></li><li class="expanded "><a href="../quickstart/03_rest_api.html"><strong aria-hidden="true">2.3.</strong> REST API</a></li><li class="expanded "><a href="../quickstart/04_explorer.html"><strong aria-hidden="true">2.4.</strong> Explorer API</a></li><li class="expanded "><a href="../quickstart/05_leader_candidate.html"><strong aria-hidden="true">2.5.</strong> Starting as a leader candidate</a></li></ol></li><li class="expanded "><a href="../configuration/introduction.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="expanded "><a href="../configuration/logging.html"><strong aria-hidden="true">3.1.</strong> Logging</a></li><li class="expanded "><a href="../configuration/network.html"><strong aria-hidden="true">3.2.</strong> Node network</a></li><li class="expanded "><a href="../configuration/mempool.html"><strong aria-hidden="true">3.3.</strong> Fragment Pool</a></li><li class="expanded "><a href="../configuration/leadership.html"><strong aria-hidden="true">3.4.</strong> Leader Events</a></li></ol></li><li class="expanded "><a href="../jcli/introduction.html"><strong aria-hidden="true">4.</strong> jcli</a></li><li><ol class="section"><li class="expanded "><a href="../jcli/key.html"><strong aria-hidden="true">4.1.</strong> Cryptographic keys</a></li><li class="expanded "><a href="../jcli/address.html"><strong aria-hidden="true">4.2.</strong> Address</a></li><li class="expanded "><a href="../jcli/transaction.html"><strong aria-hidden="true">4.3.</strong> Transaction</a></li><li class="expanded "><a href="../jcli/certificate.html"><strong aria-hidden="true">4.4.</strong> Certificate</a></li><li class="expanded "><a href="../jcli/genesis.html"><strong aria-hidden="true">4.5.</strong> Genesis</a></li><li class="expanded "><a href="../jcli/rest.html"><strong aria-hidden="true">4.6.</strong> REST</a></li></ol></li><li class="expanded "><a href="../stake_pool/introduction.html"><strong aria-hidden="true">5.</strong> staking and stake pool</a></li><li><ol class="section"><li class="expanded "><a href="../stake_pool/delegating_stake.html"><strong aria-hidden="true">5.1.</strong> delegating your stake</a></li><li class="expanded "><a href="../stake_pool/registering_stake_pool.html"><strong aria-hidden="true">5.2.</strong> registering stake pool</a></li></ol></li><li class="expanded "><a href="../advanced/introduction.html"><strong aria-hidden="true">6.</strong> Advanced</a></li><li><ol class="section"><li class="expanded "><a href="../advanced/01_the_genesis_block.html" class="active"><strong aria-hidden="true">6.1.</strong> Genesis block</a></li><li class="expanded "><a href="../advanced/02_starting_bft_blockchain.html"><strong aria-hidden="true">6.2.</strong> Starting a bft blockchain</a></li><li class="expanded "><a href="../advanced/03_starting_genesis_praos_blockchain.html"><strong aria-hidden="true">6.3.</strong> Starting a genesis blockchain</a></li></ol></li></ol>
+
            </div>
+
            <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
+
        </nav>
+

                      
+
        <div id="page-wrapper" class="page-wrapper">
+

                      
+
            <div class="page">
+
                
+
                <div id="menu-bar" class="menu-bar">
+
                    <div id="menu-bar-sticky-container">
+
                        <div class="left-buttons">
+
                            <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
+
                                <i class="fa fa-bars"></i>
+
                            </button>
+
                            <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
+
                                <i class="fa fa-paint-brush"></i>
+
                            </button>
+
                            <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
+
                                <li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
+
                            </ul>
+
                            
+
                            <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
+
                                <i class="fa fa-search"></i>
+
                            </button>
+
                            
+
                        </div>
+

                      
+
                        <h1 class="menu-title">Jormungandr</h1>
+

                      
+
                        <div class="right-buttons">
+
                            <a href="../print.html" title="Print this book" aria-label="Print this book">
+
                                <i id="print-button" class="fa fa-print"></i>
+
                            </a>
+
                            
+
                        </div>
+
                    </div>
+
                </div>
+

                      
+
                
+
                <div id="search-wrapper" class="hidden">
+
                    <form id="searchbar-outer" class="searchbar-outer">
+
                        <input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
+
                    </form>
+
                    <div id="searchresults-outer" class="searchresults-outer hidden">
+
                        <div id="searchresults-header" class="searchresults-header"></div>
+
                        <ul id="searchresults">
+
                        </ul>
+
                    </div>
+
                </div>
+
                
+

                      
+
                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
+
                <script type="text/javascript">
+
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
+
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
+
                    });
+
                </script>
+

                      
+
                <div id="content" class="content">
+
                    <main>
+
                        <h1><a class="header" href="#genesis-file" id="genesis-file">genesis file</a></h1>
+
<p>The genesis file is the file that allows you to create a new blockchain
+
from block 0. It lays out the different parameter of your blockchain:
+
the initial utxo, the start time, the slot duration time, etc...</p>
+
<p>Example of a BFT genesis file with an initial address UTxO and an account UTxO.
+
More info regarding <a href="./02_starting_bft_blockchain.html">starting a BFT blockchain here</a>
+
and <a href="../jcli/address.html">regarding addresses there</a>.
+
You could also find information regarding the <a href="../jcli/genesis.html">jcli genesis tooling</a>.</p>
+
<p>You can generate a documented pre-generated genesis file:</p>
+
<pre><code>jcli genesis init
+
</code></pre>
+
<p>For example your genesis file may look like:</p>
+
<pre><code class="language-yaml"># The Blockchain Configuration defines the settings of the blockchain.
+
blockchain_configuration:
+

                      
+
  # The block0-date defines the date the blockchain starts
+
  # expected value in seconds since UNIX_EPOCH
+
  #
+
  # By default the value will be the current date and time. Or you can
+
  # add a specific time by entering the number of seconds since UNIX
+
  # Epoch
+
  block0_date: {default_block0_date}
+

                      
+
  # This is the type of discrimination of the blockchain
+
  # of this blockchain is meant for production then
+
  # use 'production' instead.
+
  #
+
  # otherwise leave as this
+
  discrimination: {discrimination}
+

                      
+
  # The initial consensus version:
+
  #
+
  # * BFT consensus: bft
+
  # * Genesis Praos consensus: genesis
+
  block0_consensus: bft
+

                      
+
  # Number of slots in each epoch.
+
  #
+
  # default value is {default_slots_per_epoch}
+
  slots_per_epoch: {default_slots_per_epoch}
+

                      
+
  # The slot duration, in seconds, is the time between the creation
+
  # of 2 blocks
+
  #
+
  # default value is {default_slot_duration}
+
  slot_duration: {default_slot_duration}
+
<!DOCTYPE HTML>
+
<html lang="en" class="sidebar-visible no-js light">
+
    <head>
+
        <!-- Book generated using mdBook -->
+
        <meta charset="UTF-8">
+
        <title>Starting a bft blockchain - Jormungandr</title>
+
        
+

                      
+
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
        <meta name="description" content="">
+
        <meta name="viewport" content="width=device-width, initial-scale=1">
+
        <meta name="theme-color" content="#ffffff" />
+

                      
+
        <link rel="shortcut icon" href="../favicon.png">
+
        <link rel="stylesheet" href="../css/variables.css">
+
        <link rel="stylesheet" href="../css/general.css">
+
        <link rel="stylesheet" href="../css/chrome.css">
+
        <link rel="stylesheet" href="../css/print.css" media="print">
+

                      
+
        <!-- Fonts -->
+
        <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
+
        <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
+
        <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
+

                      
+
        <!-- Highlight.js Stylesheets -->
+
        <link rel="stylesheet" href="../highlight.css">
+
        <link rel="stylesheet" href="../tomorrow-night.css">
+
        <link rel="stylesheet" href="../ayu-highlight.css">
+

                      
+
        <!-- Custom theme stylesheets -->
+
        
+

                      
+
        
+
        <!-- MathJax -->
+
        <script async type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
        
+
    </head>
+
    <body>
+
        <!-- Provide site root to javascript -->
+
        <script type="text/javascript">
+
            var path_to_root = "../";
+
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "light" : "light";
+
        </script>
+

                      
+
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
+
        <script type="text/javascript">
+
            try {
+
                var theme = localStorage.getItem('mdbook-theme');
+
                var sidebar = localStorage.getItem('mdbook-sidebar');
+

                      
+
                if (theme.startsWith('"') && theme.endsWith('"')) {
+
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
+
                }
+

                      
+
                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
+
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
+
                }
+
            } catch (e) { }
+
        </script>
+

                      
+
        <!-- Set the theme before any content is loaded, prevents flash -->
+
        <script type="text/javascript">
+
            var theme;
+
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
+
            if (theme === null || theme === undefined) { theme = default_theme; }
+
            var html = document.querySelector('html');
+
            html.classList.remove('no-js')
+
            html.classList.remove('light')
+
            html.classList.add(theme);
+
            html.classList.add('js');
+
        </script>
+

                      
+
        <!-- Hide / unhide sidebar before it is displayed -->
+
        <script type="text/javascript">
+
            var html = document.querySelector('html');
+
            var sidebar = 'hidden';
+
            if (document.body.clientWidth >= 1080) {
+
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
+
                sidebar = sidebar || 'visible';
+
            }
+
            html.classList.remove('sidebar-visible');
+
            html.classList.add("sidebar-" + sidebar);
+
        </script>
+

                      
+
        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
+
            <div id="sidebar-scrollbox" class="sidebar-scrollbox">
+
                <ol class="chapter"><li class="expanded affix "><a href="../introduction.html">Introduction</a></li><li class="expanded "><a href="../concepts/introduction.html"><strong aria-hidden="true">1.</strong> General Concepts</a></li><li><ol class="section"><li class="expanded "><a href="../concepts/blockchain.html"><strong aria-hidden="true">1.1.</strong> Blockchain concepts</a></li><li class="expanded "><a href="../concepts/stake.html"><strong aria-hidden="true">1.2.</strong> Stake</a></li><li class="expanded "><a href="../concepts/node.html"><strong aria-hidden="true">1.3.</strong> Node organisation</a></li><li class="expanded "><a href="../concepts/network.html"><strong aria-hidden="true">1.4.</strong> Network overview</a></li></ol></li><li class="expanded "><a href="../quickstart/introduction.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="expanded "><a href="../quickstart/01_command_line.html"><strong aria-hidden="true">2.1.</strong> Command lines tools</a></li><li class="expanded "><a href="../quickstart/02_passive_node.html"><strong aria-hidden="true">2.2.</strong> Starting a passive node</a></li><li class="expanded "><a href="../quickstart/03_rest_api.html"><strong aria-hidden="true">2.3.</strong> REST API</a></li><li class="expanded "><a href="../quickstart/04_explorer.html"><strong aria-hidden="true">2.4.</strong> Explorer API</a></li><li class="expanded "><a href="../quickstart/05_leader_candidate.html"><strong aria-hidden="true">2.5.</strong> Starting as a leader candidate</a></li></ol></li><li class="expanded "><a href="../configuration/introduction.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="expanded "><a href="../configuration/logging.html"><strong aria-hidden="true">3.1.</strong> Logging</a></li><li class="expanded "><a href="../configuration/network.html"><strong aria-hidden="true">3.2.</strong> Node network</a></li><li class="expanded "><a href="../configuration/mempool.html"><strong aria-hidden="true">3.3.</strong> Fragment Pool</a></li><li class="expanded "><a href="../configuration/leadership.html"><strong aria-hidden="true">3.4.</strong> Leader Events</a></li></ol></li><li class="expanded "><a href="../jcli/introduction.html"><strong aria-hidden="true">4.</strong> jcli</a></li><li><ol class="section"><li class="expanded "><a href="../jcli/key.html"><strong aria-hidden="true">4.1.</strong> Cryptographic keys</a></li><li class="expanded "><a href="../jcli/address.html"><strong aria-hidden="true">4.2.</strong> Address</a></li><li class="expanded "><a href="../jcli/transaction.html"><strong aria-hidden="true">4.3.</strong> Transaction</a></li><li class="expanded "><a href="../jcli/certificate.html"><strong aria-hidden="true">4.4.</strong> Certificate</a></li><li class="expanded "><a href="../jcli/genesis.html"><strong aria-hidden="true">4.5.</strong> Genesis</a></li><li class="expanded "><a href="../jcli/rest.html"><strong aria-hidden="true">4.6.</strong> REST</a></li></ol></li><li class="expanded "><a href="../stake_pool/introduction.html"><strong aria-hidden="true">5.</strong> staking and stake pool</a></li><li><ol class="section"><li class="expanded "><a href="../stake_pool/delegating_stake.html"><strong aria-hidden="true">5.1.</strong> delegating your stake</a></li><li class="expanded "><a href="../stake_pool/registering_stake_pool.html"><strong aria-hidden="true">5.2.</strong> registering stake pool</a></li></ol></li><li class="expanded "><a href="../advanced/introduction.html"><strong aria-hidden="true">6.</strong> Advanced</a></li><li><ol class="section"><li class="expanded "><a href="../advanced/01_the_genesis_block.html"><strong aria-hidden="true">6.1.</strong> Genesis block</a></li><li class="expanded "><a href="../advanced/02_starting_bft_blockchain.html" class="active"><strong aria-hidden="true">6.2.</strong> Starting a bft blockchain</a></li><li class="expanded "><a href="../advanced/03_starting_genesis_praos_blockchain.html"><strong aria-hidden="true">6.3.</strong> Starting a genesis blockchain</a></li></ol></li></ol>
+
            </div>
+
            <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
+
        </nav>
+

                      
+
        <div id="page-wrapper" class="page-wrapper">
+

                      
+
            <div class="page">
+
                
+
                <div id="menu-bar" class="menu-bar">
+
                    <div id="menu-bar-sticky-container">
+
                        <div class="left-buttons">
+
                            <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
+
                                <i class="fa fa-bars"></i>
+
                            </button>
+
                            <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
+
                                <i class="fa fa-paint-brush"></i>
+
                            </button>
+
                            <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
+
                                <li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
+
                            </ul>
+
                            
+
                            <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
+
                                <i class="fa fa-search"></i>
+
                            </button>
+
                            
+
                        </div>
+

                      
+
                        <h1 class="menu-title">Jormungandr</h1>
+

                      
+
                        <div class="right-buttons">
+
                            <a href="../print.html" title="Print this book" aria-label="Print this book">
+
                                <i id="print-button" class="fa fa-print"></i>
+
                            </a>
+
                            
+
                        </div>
+
                    </div>
+
                </div>
+

                      
+
                
+
                <div id="search-wrapper" class="hidden">
+
                    <form id="searchbar-outer" class="searchbar-outer">
+
                        <input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
+
                    </form>
+
                    <div id="searchresults-outer" class="searchresults-outer hidden">
+
                        <div id="searchresults-header" class="searchresults-header"></div>
+
                        <ul id="searchresults">
+
                        </ul>
+
                    </div>
+
                </div>
+
                
+

                      
+
                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
+
                <script type="text/javascript">
+
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
+
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
+
                    });
+
                </script>
+

                      
+
                <div id="content" class="content">
+
                    <main>
+
                        <h1><a class="header" href="#starting-a-bft-node" id="starting-a-bft-node">starting a bft node</a></h1>
+
<p>BFT stands for the Byzantine Fault Tolerant
+
(<a href="https://iohk.io/research/papers/#L5IHCV53">read the paper</a>).</p>
+
<p>Jormungandr allows you to start a BFT blockchain fairly easily. The main
+
downside is that it is centralized, only a handful of nodes will ever have
+
the right to create blocks.</p>
+
<h2><a class="header" href="#how-does-it-work" id="how-does-it-work">How does it work</a></h2>
+
<p>It is fairly simple. A given number of Nodes (<code>N</code>) will generate
+
a key pairs of type <code>Ed25519</code> (see
+
<a href="./../jcli/key.html">JCLI's Keys</a>).</p>
+
<p>They all share the public key and add them in the genesis.yaml file.
+
It is the source of truth, the file that will generate the first block
+
of the blockchain: the <strong>Block 0</strong>.</p>
+
<p>Then, only by one after the other, each Node will be allowed to create a block.
+
Utilising a Round Robin algorithm.</p>
+
<h2><a class="header" href="#example-of-genesis-file" id="example-of-genesis-file">Example of genesis file</a></h2>
+
<pre><code class="language-yaml">blockchain_configuration:
+
  block0_date: 1550822014
+
  discrimination: test
+
  block0_consensus: bft
+
  slots_per_epoch: 5
+
  slot_duration: 15
+
  epoch_stability_depth: 10
+
  consensus_leader_ids:
+
    - ed25519e_pk1k3wjgdcdcn23k6dwr0cyh88ad7a4ayenyxaherfazwy363pyy8wqppn7j3
+
    - ed25519e_pk13talprd9grgaqzs42mkm0x2xek5wf9mdf0eefdy8a6dk5grka2gstrp3en
+
  consensus_genesis_praos_active_slot_coeff: 0.22
+
  linear_fees:
+
    constant: 2
+
    coefficient: 1
+
    certificate: 4
+
  kes_update_speed: 43200
+
initial:
+
  - fund:
+
      - address: ta1svy0mwwm7mdwcuj308aapjw6ra4c3e6cygd0f333nvtjzxg8ahdvxlswdf0
+
        value: 10000
+
  - cert: cert1qgqqqqqqqqqqqqqqqqqqq0p5avfqqmgurpe7s9k7933q0wj420jl5xqvx8lywcu5jcr7fwqa9qmdn93q4nm7c4fsay3mzeqgq3c0slnut9kns08yn2qn80famup7nvgtfuyszqzqrd4lxlt5ylplfu76p8f6ks0ggprzatp2c8rn6ev3hn9dgr38tzful4h0udlwa0536vyrrug7af9ujmrr869afs0yw9gj5x7z24l8sps3zzcmv
+
  - legacy_fund:
+
      - address: 48mDfYyQn21iyEPzCfkATEHTwZBcZJqXhRJezmswfvc6Ne89u1axXsiazmgd7SwT8VbafbVnCvyXhBSMhSkPiCezMkqHC4dmxRahRC86SknFu6JF6hwSg8
+
        value: 123
+
</code></pre>
+
<p>In order to start your blockchain in BFT mode you need to be sure that:</p>
+
<ul>
+
<li><code>consensus_leader_ids</code> is non empty;</li>
+
</ul>
+
<p>more information regarding the <a href="./01_the_genesis_block.html">genesis file here</a>.</p>
+
<!DOCTYPE HTML>
+
<html lang="en" class="sidebar-visible no-js light">
+
    <head>
+
        <!-- Book generated using mdBook -->
+
        <meta charset="UTF-8">
+
        <title>Starting a genesis blockchain - Jormungandr</title>
+
        
+

                      
+
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
        <meta name="description" content="">
+
        <meta name="viewport" content="width=device-width, initial-scale=1">
+
        <meta name="theme-color" content="#ffffff" />
+

                      
+
        <link rel="shortcut icon" href="../favicon.png">
+
        <link rel="stylesheet" href="../css/variables.css">
+
        <link rel="stylesheet" href="../css/general.css">
+
        <link rel="stylesheet" href="../css/chrome.css">
+
        <link rel="stylesheet" href="../css/print.css" media="print">
+

                      
+
        <!-- Fonts -->
+
        <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
+
        <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
+
        <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
+

                      
+
        <!-- Highlight.js Stylesheets -->
+
        <link rel="stylesheet" href="../highlight.css">
+
        <link rel="stylesheet" href="../tomorrow-night.css">
+
        <link rel="stylesheet" href="../ayu-highlight.css">
+

                      
+
        <!-- Custom theme stylesheets -->
+
        
+

                      
+
        
+
        <!-- MathJax -->
+
        <script async type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
        
+
    </head>
+
    <body>
+
        <!-- Provide site root to javascript -->
+
        <script type="text/javascript">
+
            var path_to_root = "../";
+
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "light" : "light";
+
        </script>
+

                      
+
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
+
        <script type="text/javascript">
+
            try {
+
                var theme = localStorage.getItem('mdbook-theme');
+
                var sidebar = localStorage.getItem('mdbook-sidebar');
+

                      
+
                if (theme.startsWith('"') && theme.endsWith('"')) {
+
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
+
                }
+

                      
+
                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
+
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
+
                }
+
            } catch (e) { }
+
        </script>
+

                      
+
        <!-- Set the theme before any content is loaded, prevents flash -->
+
        <script type="text/javascript">
+
            var theme;
+
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
+
            if (theme === null || theme === undefined) { theme = default_theme; }
+
            var html = document.querySelector('html');
+
            html.classList.remove('no-js')
+
            html.classList.remove('light')
+
            html.classList.add(theme);
+
            html.classList.add('js');
+
        </script>
+

                      
+
        <!-- Hide / unhide sidebar before it is displayed -->
+
        <script type="text/javascript">
+
            var html = document.querySelector('html');
+
            var sidebar = 'hidden';
+
            if (document.body.clientWidth >= 1080) {
+
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
+
                sidebar = sidebar || 'visible';
+
            }
+
            html.classList.remove('sidebar-visible');
+
            html.classList.add("sidebar-" + sidebar);
+
        </script>
+

                      
+
        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
+
            <div id="sidebar-scrollbox" class="sidebar-scrollbox">
+
                <ol class="chapter"><li class="expanded affix "><a href="../introduction.html">Introduction</a></li><li class="expanded "><a href="../concepts/introduction.html"><strong aria-hidden="true">1.</strong> General Concepts</a></li><li><ol class="section"><li class="expanded "><a href="../concepts/blockchain.html"><strong aria-hidden="true">1.1.</strong> Blockchain concepts</a></li><li class="expanded "><a href="../concepts/stake.html"><strong aria-hidden="true">1.2.</strong> Stake</a></li><li class="expanded "><a href="../concepts/node.html"><strong aria-hidden="true">1.3.</strong> Node organisation</a></li><li class="expanded "><a href="../concepts/network.html"><strong aria-hidden="true">1.4.</strong> Network overview</a></li></ol></li><li class="expanded "><a href="../quickstart/introduction.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="expanded "><a href="../quickstart/01_command_line.html"><strong aria-hidden="true">2.1.</strong> Command lines tools</a></li><li class="expanded "><a href="../quickstart/02_passive_node.html"><strong aria-hidden="true">2.2.</strong> Starting a passive node</a></li><li class="expanded "><a href="../quickstart/03_rest_api.html"><strong aria-hidden="true">2.3.</strong> REST API</a></li><li class="expanded "><a href="../quickstart/04_explorer.html"><strong aria-hidden="true">2.4.</strong> Explorer API</a></li><li class="expanded "><a href="../quickstart/05_leader_candidate.html"><strong aria-hidden="true">2.5.</strong> Starting as a leader candidate</a></li></ol></li><li class="expanded "><a href="../configuration/introduction.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="expanded "><a href="../configuration/logging.html"><strong aria-hidden="true">3.1.</strong> Logging</a></li><li class="expanded "><a href="../configuration/network.html"><strong aria-hidden="true">3.2.</strong> Node network</a></li><li class="expanded "><a href="../configuration/mempool.html"><strong aria-hidden="true">3.3.</strong> Fragment Pool</a></li><li class="expanded "><a href="../configuration/leadership.html"><strong aria-hidden="true">3.4.</strong> Leader Events</a></li></ol></li><li class="expanded "><a href="../jcli/introduction.html"><strong aria-hidden="true">4.</strong> jcli</a></li><li><ol class="section"><li class="expanded "><a href="../jcli/key.html"><strong aria-hidden="true">4.1.</strong> Cryptographic keys</a></li><li class="expanded "><a href="../jcli/address.html"><strong aria-hidden="true">4.2.</strong> Address</a></li><li class="expanded "><a href="../jcli/transaction.html"><strong aria-hidden="true">4.3.</strong> Transaction</a></li><li class="expanded "><a href="../jcli/certificate.html"><strong aria-hidden="true">4.4.</strong> Certificate</a></li><li class="expanded "><a href="../jcli/genesis.html"><strong aria-hidden="true">4.5.</strong> Genesis</a></li><li class="expanded "><a href="../jcli/rest.html"><strong aria-hidden="true">4.6.</strong> REST</a></li></ol></li><li class="expanded "><a href="../stake_pool/introduction.html"><strong aria-hidden="true">5.</strong> staking and stake pool</a></li><li><ol class="section"><li class="expanded "><a href="../stake_pool/delegating_stake.html"><strong aria-hidden="true">5.1.</strong> delegating your stake</a></li><li class="expanded "><a href="../stake_pool/registering_stake_pool.html"><strong aria-hidden="true">5.2.</strong> registering stake pool</a></li></ol></li><li class="expanded "><a href="../advanced/introduction.html"><strong aria-hidden="true">6.</strong> Advanced</a></li><li><ol class="section"><li class="expanded "><a href="../advanced/01_the_genesis_block.html"><strong aria-hidden="true">6.1.</strong> Genesis block</a></li><li class="expanded "><a href="../advanced/02_starting_bft_blockchain.html"><strong aria-hidden="true">6.2.</strong> Starting a bft blockchain</a></li><li class="expanded "><a href="../advanced/03_starting_genesis_praos_blockchain.html" class="active"><strong aria-hidden="true">6.3.</strong> Starting a genesis blockchain</a></li></ol></li></ol>
+
            </div>
+
            <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
+
        </nav>
+

                      
+
        <div id="page-wrapper" class="page-wrapper">
+

                      
+
            <div class="page">
+
                
+
                <div id="menu-bar" class="menu-bar">
+
                    <div id="menu-bar-sticky-container">
+
                        <div class="left-buttons">
+
                            <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
+
                                <i class="fa fa-bars"></i>
+
                            </button>
+
                            <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
+
                                <i class="fa fa-paint-brush"></i>
+
                            </button>
+
                            <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
+
                                <li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
+
                            </ul>
+
                            
+
                            <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
+
                                <i class="fa fa-search"></i>
+
                            </button>
+
                            
+
                        </div>
+

                      
+
                        <h1 class="menu-title">Jormungandr</h1>
+

                      
+
                        <div class="right-buttons">
+
                            <a href="../print.html" title="Print this book" aria-label="Print this book">
+
                                <i id="print-button" class="fa fa-print"></i>
+
                            </a>
+
                            
+
                        </div>
+
                    </div>
+
                </div>
+

                      
+
                
+
                <div id="search-wrapper" class="hidden">
+
                    <form id="searchbar-outer" class="searchbar-outer">
+
                        <input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
+
                    </form>
+
                    <div id="searchresults-outer" class="searchresults-outer hidden">
+
                        <div id="searchresults-header" class="searchresults-header"></div>
+
                        <ul id="searchresults">
+
                        </ul>
+
                    </div>
+
                </div>
+
                
+

                      
+
                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
+
                <script type="text/javascript">
+
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
+
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
+
                    });
+
                </script>
+

                      
+
                <div id="content" class="content">
+
                    <main>
+
                        <h1><a class="header" href="#starting-a-genesis-blockchain" id="starting-a-genesis-blockchain">starting a genesis blockchain</a></h1>
+
<p>When starting a genesis praos blockchain there is an element to take
+
into consideration while constructing the block 0: <em>the stake distribution</em>.</p>
+
<p>In the context of Genesis/Praos the network is fully decentralized and it is
+
necessary to think ahead about initial stake pools and to make sure there
+
is stake delegated to these stake pools.</p>
+
<p>In your genesis yaml file, make sure to set the following values to the appropriate
+
values/desired values:</p>
+
<pre><code class="language-yaml"># The Blockchain Configuration defines the settings of the blockchain.
+
blockchain_configuration:
+
  block0_consensus: genesis_praos
+
  consensus_genesis_praos_active_slot_coeff: 0.1
+
  kes_update_speed: 43200 # 12hours
+
</code></pre>
+
<p><code>block0_consensus</code> set to <code>genesis_praos</code> means you want to start a blockchain with
+
genesis praos as the consensus layer.</p>
+
<p><code>consensus_genesis_praos_active_slot_coeff</code> determines minimum stake required to
+
try becoming slot leader, must be in range 0 exclusive and 1 inclusive.</p>
+
<h2><a class="header" href="#the-initial-certificates" id="the-initial-certificates">The initial certificates</a></h2>
+
<p>In the <code>initial_certs</code> field you will set the initial certificate. This is important
+
to declare the stake pool and delegate stake to them. Otherwise no block will be ever
+
created.</p>
+
<p>Remember that in this array the <strong>order</strong> matters:</p>
+
<p>In order to delegate your stake, you need a stake pool to already exist, so the stake pool registration certificate should go first.</p>
+
<h3><a class="header" href="#stake-pool-registration" id="stake-pool-registration">Stake pool registration</a></h3>
+
<p>Now you can register a stake pool.
+
Follow the instruction in <a href="../stake_pool/registering_stake_pool.html">registering stake pool guide</a>.</p>
+
<p>The <em>owner key</em> (the key you sign the stake pool registration certificate) is the secret
+
key associated to a previously registered stake key.</p>
+
<h3><a class="header" href="#delegating-stake" id="delegating-stake">Delegating stake</a></h3>
+
<p>Now that there is both your stake key and there are stake pools available
+
in the block0 you need to delegate to one of the stake pool. Follow the instruction
+
in <a href="../stake_pool/delegating_stake.html">delegating stake</a>.</p>
+
<p>And in the initial funds start adding the addresses. To create an address with delegation
+
follow the instruction in <a href="../jcli/address.html">JCLI's address guide</a>. Utilise the stake key
+
registered previously as group address:</p>
+
<pre><code>jcli address single $(cat wallet_key.pub) $(cat stake_key.pub)
+
ta1sjx4j3jwel94g0cgwzq9au7h6m8f5q3qnyh0gfnryl3xan6qnmjse3k2uv062mzj34eacjnxthxqv8fvdcn6f4xhxwa7ms729ak3gsl4qrq2mm
+
</code></pre>
+
<p>You will notice that addresses with delegation are longer (about twice longer) than
+
address without delegation.</p>
+
<p>For example, the most minimal setting you may have is:</p>
+
<pre><code class="language-yaml">initial_certs:
+
  # register a stake pool (P), owner of the stake pool is the stake key (K)
+
  - cert1qsqqqqqqqqqqqqqqqqqqq0p5avfqp9tzusr26chayeddkkmdlap6tl23ceca8unsghc22tap8clhrzslkehdycufa4ywvqvs4u36zctw4ydtg7xagprfgz0vuujh3lgtxgfszqzqj4xk4sxxyg392p5nqz8s7ev5wna7eqz7ycsuas05mrupmdsfk0fqqudanew6c0nckf5tsp0lgnk8e8j0dpnxvjk2usn52vs8umr3qrccegxaz
+

                      
+
<!DOCTYPE HTML>
+
<html lang="en" class="sidebar-visible no-js light">
+
    <head>
+
        <!-- Book generated using mdBook -->
+
        <meta charset="UTF-8">
+
        <title>Advanced - Jormungandr</title>
+
        
+

                      
+
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
        <meta name="description" content="">
+
        <meta name="viewport" content="width=device-width, initial-scale=1">
+
        <meta name="theme-color" content="#ffffff" />
+

                      
+
        <link rel="shortcut icon" href="../favicon.png">
+
        <link rel="stylesheet" href="../css/variables.css">
+
        <link rel="stylesheet" href="../css/general.css">
+
        <link rel="stylesheet" href="../css/chrome.css">
+
        <link rel="stylesheet" href="../css/print.css" media="print">
+

                      
+
        <!-- Fonts -->
+
        <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
+
        <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
+
        <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
+

                      
+
        <!-- Highlight.js Stylesheets -->
+
        <link rel="stylesheet" href="../highlight.css">
+
        <link rel="stylesheet" href="../tomorrow-night.css">
+
        <link rel="stylesheet" href="../ayu-highlight.css">
+

                      
+
        <!-- Custom theme stylesheets -->
+
        
+

                      
+
        
+
        <!-- MathJax -->
+
        <script async type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
        
+
    </head>
+
    <body>
+
        <!-- Provide site root to javascript -->
+
        <script type="text/javascript">
+
            var path_to_root = "../";
+
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "light" : "light";
+
        </script>
+

                      
+
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
+
        <script type="text/javascript">
+
            try {
+
                var theme = localStorage.getItem('mdbook-theme');
+
                var sidebar = localStorage.getItem('mdbook-sidebar');
+

                      
+
                if (theme.startsWith('"') && theme.endsWith('"')) {
+
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
+
                }
+

                      
+
                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
+
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
+
                }
+
            } catch (e) { }
+
        </script>
+

                      
+
        <!-- Set the theme before any content is loaded, prevents flash -->
+
        <script type="text/javascript">
+
            var theme;
+
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
+
            if (theme === null || theme === undefined) { theme = default_theme; }
+
            var html = document.querySelector('html');
+
            html.classList.remove('no-js')
+
            html.classList.remove('light')
+
            html.classList.add(theme);
+
            html.classList.add('js');
+
        </script>
+

                      
+
        <!-- Hide / unhide sidebar before it is displayed -->
+
        <script type="text/javascript">
+
            var html = document.querySelector('html');
+
            var sidebar = 'hidden';
+
            if (document.body.clientWidth >= 1080) {
+
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
+
                sidebar = sidebar || 'visible';
+
            }
+
            html.classList.remove('sidebar-visible');
+
            html.classList.add("sidebar-" + sidebar);
+
        </script>
+

                      
+
        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
+
            <div id="sidebar-scrollbox" class="sidebar-scrollbox">
+
                <ol class="chapter"><li class="expanded affix "><a href="../introduction.html">Introduction</a></li><li class="expanded "><a href="../concepts/introduction.html"><strong aria-hidden="true">1.</strong> General Concepts</a></li><li><ol class="section"><li class="expanded "><a href="../concepts/blockchain.html"><strong aria-hidden="true">1.1.</strong> Blockchain concepts</a></li><li class="expanded "><a href="../concepts/stake.html"><strong aria-hidden="true">1.2.</strong> Stake</a></li><li class="expanded "><a href="../concepts/node.html"><strong aria-hidden="true">1.3.</strong> Node organisation</a></li><li class="expanded "><a href="../concepts/network.html"><strong aria-hidden="true">1.4.</strong> Network overview</a></li></ol></li><li class="expanded "><a href="../quickstart/introduction.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="expanded "><a href="../quickstart/01_command_line.html"><strong aria-hidden="true">2.1.</strong> Command lines tools</a></li><li class="expanded "><a href="../quickstart/02_passive_node.html"><strong aria-hidden="true">2.2.</strong> Starting a passive node</a></li><li class="expanded "><a href="../quickstart/03_rest_api.html"><strong aria-hidden="true">2.3.</strong> REST API</a></li><li class="expanded "><a href="../quickstart/04_explorer.html"><strong aria-hidden="true">2.4.</strong> Explorer API</a></li><li class="expanded "><a href="../quickstart/05_leader_candidate.html"><strong aria-hidden="true">2.5.</strong> Starting as a leader candidate</a></li></ol></li><li class="expanded "><a href="../configuration/introduction.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="expanded "><a href="../configuration/logging.html"><strong aria-hidden="true">3.1.</strong> Logging</a></li><li class="expanded "><a href="../configuration/network.html"><strong aria-hidden="true">3.2.</strong> Node network</a></li><li class="expanded "><a href="../configuration/mempool.html"><strong aria-hidden="true">3.3.</strong> Fragment Pool</a></li><li class="expanded "><a href="../configuration/leadership.html"><strong aria-hidden="true">3.4.</strong> Leader Events</a></li></ol></li><li class="expanded "><a href="../jcli/introduction.html"><strong aria-hidden="true">4.</strong> jcli</a></li><li><ol class="section"><li class="expanded "><a href="../jcli/key.html"><strong aria-hidden="true">4.1.</strong> Cryptographic keys</a></li><li class="expanded "><a href="../jcli/address.html"><strong aria-hidden="true">4.2.</strong> Address</a></li><li class="expanded "><a href="../jcli/transaction.html"><strong aria-hidden="true">4.3.</strong> Transaction</a></li><li class="expanded "><a href="../jcli/certificate.html"><strong aria-hidden="true">4.4.</strong> Certificate</a></li><li class="expanded "><a href="../jcli/genesis.html"><strong aria-hidden="true">4.5.</strong> Genesis</a></li><li class="expanded "><a href="../jcli/rest.html"><strong aria-hidden="true">4.6.</strong> REST</a></li></ol></li><li class="expanded "><a href="../stake_pool/introduction.html"><strong aria-hidden="true">5.</strong> staking and stake pool</a></li><li><ol class="section"><li class="expanded "><a href="../stake_pool/delegating_stake.html"><strong aria-hidden="true">5.1.</strong> delegating your stake</a></li><li class="expanded "><a href="../stake_pool/registering_stake_pool.html"><strong aria-hidden="true">5.2.</strong> registering stake pool</a></li></ol></li><li class="expanded "><a href="../advanced/introduction.html" class="active"><strong aria-hidden="true">6.</strong> Advanced</a></li><li><ol class="section"><li class="expanded "><a href="../advanced/01_the_genesis_block.html"><strong aria-hidden="true">6.1.</strong> Genesis block</a></li><li class="expanded "><a href="../advanced/02_starting_bft_blockchain.html"><strong aria-hidden="true">6.2.</strong> Starting a bft blockchain</a></li><li class="expanded "><a href="../advanced/03_starting_genesis_praos_blockchain.html"><strong aria-hidden="true">6.3.</strong> Starting a genesis blockchain</a></li></ol></li></ol>
+
            </div>
+
            <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
+
        </nav>
+

                      
+
        <div id="page-wrapper" class="page-wrapper">
+

                      
+
            <div class="page">
+
                
+
                <div id="menu-bar" class="menu-bar">
+
                    <div id="menu-bar-sticky-container">
+
                        <div class="left-buttons">
+
                            <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
+
                                <i class="fa fa-bars"></i>
+
                            </button>
+
                            <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
+
                                <i class="fa fa-paint-brush"></i>
+
                            </button>
+
                            <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
+
                                <li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
+
                            </ul>
+
                            
+
                            <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
+
                                <i class="fa fa-search"></i>
+
                            </button>
+
                            
+
                        </div>
+

                      
+
                        <h1 class="menu-title">Jormungandr</h1>
+

                      
+
                        <div class="right-buttons">
+
                            <a href="../print.html" title="Print this book" aria-label="Print this book">
+
                                <i id="print-button" class="fa fa-print"></i>
+
                            </a>
+
                            
+
                        </div>
+
                    </div>
+
                </div>
+

                      
+
                
+
                <div id="search-wrapper" class="hidden">
+
                    <form id="searchbar-outer" class="searchbar-outer">
+
                        <input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
+
                    </form>
+
                    <div id="searchresults-outer" class="searchresults-outer hidden">
+
                        <div id="searchresults-header" class="searchresults-header"></div>
+
                        <ul id="searchresults">
+
                        </ul>
+
                    </div>
+
                </div>
+
                
+

                      
+
                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
+
                <script type="text/javascript">
+
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
+
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
+
                    });
+
                </script>
+

                      
+
                <div id="content" class="content">
+
                    <main>
+
                        <h1><a class="header" href="#advanced" id="advanced">Advanced</a></h1>
+
<p>This section is meant for advanced users and developers of the node, or if
+
you to learn more about the node.</p>
+
<p>At the moment, it only covers details on how to create your own blockchain genesis
+
configuration, but in normal case, the blockchain configuration should be available
+
with the specific blockchain system.</p>
+

                      
+
                    </main>
+

                      
+
                    <nav class="nav-wrapper" aria-label="Page navigation">
+
                        <!-- Mobile navigation buttons -->
+
                        
+
                            <a rel="prev" href="../stake_pool/registering_stake_pool.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
+
                                <i class="fa fa-angle-left"></i>
+
                            </a>
+
                        
+

                      
+
                        
+
                            <a rel="next" href="../advanced/01_the_genesis_block.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
+
                                <i class="fa fa-angle-right"></i>
+
                            </a>
+
                        
+

                      
+
                        <div style="clear: both"></div>
+
                    </nav>
+
                </div>
+
            </div>
+

                      
+
            <nav class="nav-wide-wrapper" aria-label="Page navigation">
+
                
+
                    <a href="../stake_pool/registering_stake_pool.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
+
                        <i class="fa fa-angle-left"></i>
+
                    </a>
+
                
+

                      
+
                
+
                    <a href="../advanced/01_the_genesis_block.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
+
                        <i class="fa fa-angle-right"></i>
+
                    </a>
+
                
+
            </nav>
+

                      
+
        </div>
+

                      
+
        
+

                      
+
/*
+
Based off of the Ayu theme
+
Original by Dempfi (https://github.com/dempfi/ayu)
+
*/
+

                      
+
.hljs {
+
  display: block;
+
  overflow-x: auto;
+
  background: #191f26;
+
  color: #e6e1cf;
+
  padding: 0.5em;
+
}
+

                      
+
.hljs-comment,
+
.hljs-quote,
+
.hljs-meta {
+
  color: #5c6773;
+
  font-style: italic;
+
}
+

                      
+
.hljs-variable,
+
.hljs-template-variable,
+
.hljs-attribute,
+
.hljs-attr,
+
.hljs-regexp,
+
.hljs-link,
+
.hljs-selector-id,
+
.hljs-selector-class {
+
  color: #ff7733;
+
}
+

                      
+
.hljs-number,
+
.hljs-builtin-name,
+
.hljs-literal,
+
.hljs-type,
+
.hljs-params {
+
  color: #ffee99;
+
}
+

                      
+
.hljs-string,
+
.hljs-bullet {
+
  color: #b8cc52;
+
}
+

                      
+
.hljs-title,
+
.hljs-built_in,
+
.hljs-section {
+
  color: #ffb454;
+
}
+

                      
+
.hljs-keyword,
+
.hljs-selector-tag,
+
.hljs-symbol {
+
  color: #ff7733;
+
}
+

                      
+
.hljs-name {
+
    color: #36a3d9;
+
}
+

                      
+
.hljs-tag {
+
    color: #00568d;
+
}
+

                      
+
.hljs-emphasis {
+
  font-style: italic;
+
}
+

                      
+
.hljs-strong {
+
  font-weight: bold;
+
}
+

                      
+
.hljs-addition {
+
  color: #91b362;
+
}
+

                      
+
.hljs-deletion {
+
  color: #d96c75;
+
}
a
+605/-0
+
"use strict";
+

                      
+
// Fix back button cache problem
+
window.onunload = function () { };
+

                      
+
// Global variable, shared between modules
+
function playpen_text(playpen) {
+
    let code_block = playpen.querySelector("code");
+

                      
+
    if (window.ace && code_block.classList.contains("editable")) {
+
        let editor = window.ace.edit(code_block);
+
        return editor.getValue();
+
    } else {
+
        return code_block.textContent;
+
    }
+
}
+

                      
+
(function codeSnippets() {
+
    function fetch_with_timeout(url, options, timeout = 6000) {
+
        return Promise.race([
+
            fetch(url, options),
+
            new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), timeout))
+
        ]);
+
    }
+

                      
+
    var playpens = Array.from(document.querySelectorAll(".playpen"));
+
    if (playpens.length > 0) {
+
        fetch_with_timeout("https://play.rust-lang.org/meta/crates", {
+
            headers: {
+
                'Content-Type': "application/json",
+
            },
+
            method: 'POST',
+
            mode: 'cors',
+
        })
+
        .then(response => response.json())
+
        .then(response => {
+
            // get list of crates available in the rust playground
+
            let playground_crates = response.crates.map(item => item["id"]);
+
            playpens.forEach(block => handle_crate_list_update(block, playground_crates));
+
        });
+
    }
+

                      
+
    function handle_crate_list_update(playpen_block, playground_crates) {
+
        // update the play buttons after receiving the response
+
        update_play_button(playpen_block, playground_crates);
+

                      
+
        // and install on change listener to dynamically update ACE editors
+
        if (window.ace) {
+
            let code_block = playpen_block.querySelector("code");
+
            if (code_block.classList.contains("editable")) {
+
                let editor = window.ace.edit(code_block);
+
                editor.addEventListener("change", function (e) {
+
                    update_play_button(playpen_block, playground_crates);
+
                });
+
                // add Ctrl-Enter command to execute rust code
+
                editor.commands.addCommand({
+
                    name: "run",
+
                    bindKey: {
+
                        win: "Ctrl-Enter",
+
                        mac: "Ctrl-Enter"
+
                    },
+
                    exec: _editor => run_rust_code(playpen_block)
+
                });
+
            }
+
        }
+
    }
+

                      
+
    // updates the visibility of play button based on `no_run` class and
+
    // used crates vs ones available on http://play.rust-lang.org
+
    function update_play_button(pre_block, playground_crates) {
+
        var play_button = pre_block.querySelector(".play-button");
+

                      
+
        // skip if code is `no_run`
+
        if (pre_block.querySelector('code').classList.contains("no_run")) {
+
            play_button.classList.add("hidden");
+
            return;
+
        }
+

                      
+
        // get list of `extern crate`'s from snippet
+
        var txt = playpen_text(pre_block);
+
        var re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g;
+
        var snippet_crates = [];
+
        var item;
+
        while (item = re.exec(txt)) {
+
            snippet_crates.push(item[1]);
+
        }
+

                      
+
        // check if all used crates are available on play.rust-lang.org
+
        var all_available = snippet_crates.every(function (elem) {
+
            return playground_crates.indexOf(elem) > -1;
+
        });
+

                      
+
        if (all_available) {
+
            play_button.classList.remove("hidden");
+
        } else {
+
            play_button.classList.add("hidden");
+
        }
+
    }
+

                      
+
    function run_rust_code(code_block) {
+
        var result_block = code_block.querySelector(".result");
+
        if (!result_block) {
+
            result_block = document.createElement('code');
+
            result_block.className = 'result hljs language-bash';
+

                      
+
            code_block.append(result_block);
+
        }
+

                      
+
        let text = playpen_text(code_block);
+
        let classes = code_block.querySelector('code').classList;
+
        let has_2018 = classes.contains("edition2018");
+
        let edition = has_2018 ? "2018" : "2015";
+

                      
+
        var params = {
+
            version: "stable",
+
            optimize: "0",
+
            code: text,
+
            edition: edition
+
        };
+

                      
+
        if (text.indexOf("#![feature") !== -1) {
+
            params.version = "nightly";
+
        }
+

                      
+
        result_block.innerText = "Running...";
+

                      
+
        fetch_with_timeout("https://play.rust-lang.org/evaluate.json", {
+
            headers: {
+
                'Content-Type': "application/json",
+
            },
+
            method: 'POST',
+
            mode: 'cors',
+
            body: JSON.stringify(params)
+
        })
+
        .then(response => response.json())
+
        .then(response => result_block.innerText = response.result)
+
        .catch(error => result_block.innerText = "Playground Communication: " + error.message);
+
    }
+

                      
+
    // Syntax highlighting Configuration
+
    hljs.configure({
+
        tabReplace: '    ', // 4 spaces
+
        languages: [],      // Languages used for auto-detection
+
    });
+

                      
+
    if (window.ace) {
+
        // language-rust class needs to be removed for editable
+
        // blocks or highlightjs will capture events
+
        Array
+
            .from(document.querySelectorAll('code.editable'))
+
            .forEach(function (block) { block.classList.remove('language-rust'); });
+

                      
+
        Array
+
            .from(document.querySelectorAll('code:not(.editable)'))
+
            .forEach(function (block) { hljs.highlightBlock(block); });
+
    } else {
+
        Array
+
            .from(document.querySelectorAll('code'))
+
            .forEach(function (block) { hljs.highlightBlock(block); });
+
    }
+

                      
+
    // Adding the hljs class gives code blocks the color css
+
    // even if highlighting doesn't apply
+
    Array
+
        .from(document.querySelectorAll('code'))
+
        .forEach(function (block) { block.classList.add('hljs'); });
+

                      
+
    Array.from(document.querySelectorAll("code.language-rust")).forEach(function (block) {
+

                      
+
        var lines = Array.from(block.querySelectorAll('.boring'));
+
        // If no lines were hidden, return
+
        if (!lines.length) { return; }
+
        block.classList.add("hide-boring");
+

                      
+
        var buttons = document.createElement('div');
+
        buttons.className = 'buttons';
+
        buttons.innerHTML = "<button class=\"fa fa-expand\" title=\"Show hidden lines\" aria-label=\"Show hidden lines\"></button>";
+

                      
+
        // add expand button
+
        var pre_block = block.parentNode;
+
        pre_block.insertBefore(buttons, pre_block.firstChild);
+

                      
+
        pre_block.querySelector('.buttons').addEventListener('click', function (e) {
+
            if (e.target.classList.contains('fa-expand')) {
+
                e.target.classList.remove('fa-expand');
+
                e.target.classList.add('fa-compress');
+
                e.target.title = 'Hide lines';
+
                e.target.setAttribute('aria-label', e.target.title);
+

                      
+
                block.classList.remove('hide-boring');
+
            } else if (e.target.classList.contains('fa-compress')) {
+
                e.target.classList.remove('fa-compress');
+
                e.target.classList.add('fa-expand');
+
                e.target.title = 'Show hidden lines';
+
                e.target.setAttribute('aria-label', e.target.title);
+

                      
+
                block.classList.add('hide-boring');
+
            }
+
        });
+
/*!
+
 * clipboard.js v2.0.4
+
 * https://zenorocha.github.io/clipboard.js
+
 * 
+
 * Licensed MIT © Zeno Rocha
+
 */
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(n){var o={};function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}return r.m=n,r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=o(n(1)),c=o(n(3)),u=o(n(4));function o(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function o(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));return n.resolveOptions(e),n.listenClick(t),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,c.default),i(o,[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===r(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,u.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new a.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return s("action",t)}},{key:"defaultTarget",value:function(t){var e=s("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return s("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),o}();function s(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=l},function(t,e,n){"use strict";var o,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=n(2),c=(o=a)&&o.__esModule?o:{default:o};var u=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.resolveOptions(t),this.initSelection()}return i(e,[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,c.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,c.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),e}();t.exports=u},function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n},function(t,e,n){var d=n(5),h=n(6);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!d.string(e))throw new TypeError("Second argument must be a String");if(!d.fn(n))throw new TypeError("Third argument must be a Function");if(d.node(t))return s=e,f=n,(l=t).addEventListener(s,f),{destroy:function(){l.removeEventListener(s,f)}};if(d.nodeList(t))return a=t,c=e,u=n,Array.prototype.forEach.call(a,function(t){t.addEventListener(c,u)}),{destroy:function(){Array.prototype.forEach.call(a,function(t){t.removeEventListener(c,u)})}};if(d.string(t))return o=t,r=e,i=n,h(document.body,o,r,i);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,a,c,u,l,s,f}},function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e,n){var a=n(7);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},function(t,e){if("undefined"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}}])});
\ No newline at end of file
+
<!DOCTYPE HTML>
+
<html lang="en" class="sidebar-visible no-js light">
+
    <head>
+
        <!-- Book generated using mdBook -->
+
        <meta charset="UTF-8">
+
        <title>Blockchain concepts - Jormungandr</title>
+
        
+

                      
+
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
        <meta name="description" content="">
+
        <meta name="viewport" content="width=device-width, initial-scale=1">
+
        <meta name="theme-color" content="#ffffff" />
+

                      
+
        <link rel="shortcut icon" href="../favicon.png">
+
        <link rel="stylesheet" href="../css/variables.css">
+
        <link rel="stylesheet" href="../css/general.css">
+
        <link rel="stylesheet" href="../css/chrome.css">
+
        <link rel="stylesheet" href="../css/print.css" media="print">
+

                      
+
        <!-- Fonts -->
+
        <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
+
        <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
+
        <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
+

                      
+
        <!-- Highlight.js Stylesheets -->
+
        <link rel="stylesheet" href="../highlight.css">
+
        <link rel="stylesheet" href="../tomorrow-night.css">
+
        <link rel="stylesheet" href="../ayu-highlight.css">
+

                      
+
        <!-- Custom theme stylesheets -->
+
        
+

                      
+
        
+
        <!-- MathJax -->
+
        <script async type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
        
+
    </head>
+
    <body>
+
        <!-- Provide site root to javascript -->
+
        <script type="text/javascript">
+
            var path_to_root = "../";
+
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "light" : "light";
+
        </script>
+

                      
+
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
+
        <script type="text/javascript">
+
            try {
+
                var theme = localStorage.getItem('mdbook-theme');
+
                var sidebar = localStorage.getItem('mdbook-sidebar');
+

                      
+
                if (theme.startsWith('"') && theme.endsWith('"')) {
+
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
+
                }
+

                      
+
                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
+
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
+
                }
+
            } catch (e) { }
+
        </script>
+

                      
+
        <!-- Set the theme before any content is loaded, prevents flash -->
+
        <script type="text/javascript">
+
            var theme;
+
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
+
            if (theme === null || theme === undefined) { theme = default_theme; }
+
            var html = document.querySelector('html');
+
            html.classList.remove('no-js')
+
            html.classList.remove('light')
+
            html.classList.add(theme);
+
            html.classList.add('js');
+
        </script>
+

                      
+
        <!-- Hide / unhide sidebar before it is displayed -->
+
        <script type="text/javascript">
+
            var html = document.querySelector('html');
+
            var sidebar = 'hidden';
+
            if (document.body.clientWidth >= 1080) {
+
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
+
                sidebar = sidebar || 'visible';
+
            }
+
            html.classList.remove('sidebar-visible');
+
            html.classList.add("sidebar-" + sidebar);
+
        </script>
+

                      
+
        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
+
            <div id="sidebar-scrollbox" class="sidebar-scrollbox">
+
                <ol class="chapter"><li class="expanded affix "><a href="../introduction.html">Introduction</a></li><li class="expanded "><a href="../concepts/introduction.html"><strong aria-hidden="true">1.</strong> General Concepts</a></li><li><ol class="section"><li class="expanded "><a href="../concepts/blockchain.html" class="active"><strong aria-hidden="true">1.1.</strong> Blockchain concepts</a></li><li class="expanded "><a href="../concepts/stake.html"><strong aria-hidden="true">1.2.</strong> Stake</a></li><li class="expanded "><a href="../concepts/node.html"><strong aria-hidden="true">1.3.</strong> Node organisation</a></li><li class="expanded "><a href="../concepts/network.html"><strong aria-hidden="true">1.4.</strong> Network overview</a></li></ol></li><li class="expanded "><a href="../quickstart/introduction.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="expanded "><a href="../quickstart/01_command_line.html"><strong aria-hidden="true">2.1.</strong> Command lines tools</a></li><li class="expanded "><a href="../quickstart/02_passive_node.html"><strong aria-hidden="true">2.2.</strong> Starting a passive node</a></li><li class="expanded "><a href="../quickstart/03_rest_api.html"><strong aria-hidden="true">2.3.</strong> REST API</a></li><li class="expanded "><a href="../quickstart/04_explorer.html"><strong aria-hidden="true">2.4.</strong> Explorer API</a></li><li class="expanded "><a href="../quickstart/05_leader_candidate.html"><strong aria-hidden="true">2.5.</strong> Starting as a leader candidate</a></li></ol></li><li class="expanded "><a href="../configuration/introduction.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="expanded "><a href="../configuration/logging.html"><strong aria-hidden="true">3.1.</strong> Logging</a></li><li class="expanded "><a href="../configuration/network.html"><strong aria-hidden="true">3.2.</strong> Node network</a></li><li class="expanded "><a href="../configuration/mempool.html"><strong aria-hidden="true">3.3.</strong> Fragment Pool</a></li><li class="expanded "><a href="../configuration/leadership.html"><strong aria-hidden="true">3.4.</strong> Leader Events</a></li></ol></li><li class="expanded "><a href="../jcli/introduction.html"><strong aria-hidden="true">4.</strong> jcli</a></li><li><ol class="section"><li class="expanded "><a href="../jcli/key.html"><strong aria-hidden="true">4.1.</strong> Cryptographic keys</a></li><li class="expanded "><a href="../jcli/address.html"><strong aria-hidden="true">4.2.</strong> Address</a></li><li class="expanded "><a href="../jcli/transaction.html"><strong aria-hidden="true">4.3.</strong> Transaction</a></li><li class="expanded "><a href="../jcli/certificate.html"><strong aria-hidden="true">4.4.</strong> Certificate</a></li><li class="expanded "><a href="../jcli/genesis.html"><strong aria-hidden="true">4.5.</strong> Genesis</a></li><li class="expanded "><a href="../jcli/rest.html"><strong aria-hidden="true">4.6.</strong> REST</a></li></ol></li><li class="expanded "><a href="../stake_pool/introduction.html"><strong aria-hidden="true">5.</strong> staking and stake pool</a></li><li><ol class="section"><li class="expanded "><a href="../stake_pool/delegating_stake.html"><strong aria-hidden="true">5.1.</strong> delegating your stake</a></li><li class="expanded "><a href="../stake_pool/registering_stake_pool.html"><strong aria-hidden="true">5.2.</strong> registering stake pool</a></li></ol></li><li class="expanded "><a href="../advanced/introduction.html"><strong aria-hidden="true">6.</strong> Advanced</a></li><li><ol class="section"><li class="expanded "><a href="../advanced/01_the_genesis_block.html"><strong aria-hidden="true">6.1.</strong> Genesis block</a></li><li class="expanded "><a href="../advanced/02_starting_bft_blockchain.html"><strong aria-hidden="true">6.2.</strong> Starting a bft blockchain</a></li><li class="expanded "><a href="../advanced/03_starting_genesis_praos_blockchain.html"><strong aria-hidden="true">6.3.</strong> Starting a genesis blockchain</a></li></ol></li></ol>
+
            </div>
+
            <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
+
        </nav>
+

                      
+
        <div id="page-wrapper" class="page-wrapper">
+

                      
+
            <div class="page">
+
                
+
                <div id="menu-bar" class="menu-bar">
+
                    <div id="menu-bar-sticky-container">
+
                        <div class="left-buttons">
+
                            <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
+
                                <i class="fa fa-bars"></i>
+
                            </button>
+
                            <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
+
                                <i class="fa fa-paint-brush"></i>
+
                            </button>
+
                            <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
+
                                <li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
+
                            </ul>
+
                            
+
                            <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
+
                                <i class="fa fa-search"></i>
+
                            </button>
+
                            
+
                        </div>
+

                      
+
                        <h1 class="menu-title">Jormungandr</h1>
+

                      
+
                        <div class="right-buttons">
+
                            <a href="../print.html" title="Print this book" aria-label="Print this book">
+
                                <i id="print-button" class="fa fa-print"></i>
+
                            </a>
+
                            
+
                        </div>
+
                    </div>
+
                </div>
+

                      
+
                
+
                <div id="search-wrapper" class="hidden">
+
                    <form id="searchbar-outer" class="searchbar-outer">
+
                        <input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
+
                    </form>
+
                    <div id="searchresults-outer" class="searchresults-outer hidden">
+
                        <div id="searchresults-header" class="searchresults-header"></div>
+
                        <ul id="searchresults">
+
                        </ul>
+
                    </div>
+
                </div>
+
                
+

                      
+
                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
+
                <script type="text/javascript">
+
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
+
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
+
                    });
+
                </script>
+

                      
+
                <div id="content" class="content">
+
                    <main>
+
                        <h1><a class="header" href="#blockchain-concepts" id="blockchain-concepts">Blockchain concepts</a></h1>
+
<h2><a class="header" href="#time" id="time">Time</a></h2>
+
<p>Slots represent the basic unit of time in the blockchain, and at each slot
+
a block could be present.</p>
+
<p>Consecutive slots are grouped into epochs, which have updatable size defined
+
by the protocol.</p>
+
<h2><a class="header" href="#fragments" id="fragments">Fragments</a></h2>
+
<p>Fragments are part of the blockchain data that represent all the possible
+
events related to the blockchain health (e.g. update to the protocol), but
+
also and mainly the general recording of information like transactions and
+
certificates.</p>
+
<h2><a class="header" href="#blocks" id="blocks">Blocks</a></h2>
+
<p>Blocks represent the spine of the blockchain, safely and securely linking
+
blocks in a chain, whilst grouping valid fragments together.</p>
+
<p>Blocks are composed of 2 parts:</p>
+
<ul>
+
<li>The header</li>
+
<li>The content</li>
+
</ul>
+
<p>The header link the content with the blocks securely together, while the
+
content is effectively a sequence of fragments.</p>
+
<h2><a class="header" href="#blockchain" id="blockchain">Blockchain</a></h2>
+
<p>The blockchain is the general set of rules and the blocks that are periodically created.
+
Some of the rules and settings, can be changed dynamically in the system by updates,
+
while some other are hardcoded in the genesis block (first block of the blockchain).</p>
+
<pre><code>    +-------+      +-------+
+
    |Genesis+&lt;-----+Block 1+&lt;--- ....
+
    |Header |      |Header |
+
    +---+---+      +---+---+
+
        |              |
+
    +---v---+      +---v---+
+
    |Genesis|      |Block 1|
+
    |Content|      |Content|
+
    +-------+      +-------+
+
</code></pre>
+
<h2><a class="header" href="#consensus" id="consensus">Consensus</a></h2>
+
<p>The node currently support the following consensus protocol:</p>
+
<ul>
+
<li>Ouroboros BFT (OBFT)</li>
+
<li>Ouroboros Genesis-Praos</li>
+
</ul>
+
<p>Ouroboros BFT is a simple Byzantine Fault Tolerant (BFT) protocol where the
+
block makers is a known list of leaders that successively create a block and
+
broadcast it on the network.</p>
+
<p>Ouroboros Genesis Praos is a proof of stake (PoS) protocol where the block
+
maker is made of a lottery where each stake pool has a chance proportional to
+
<!DOCTYPE HTML>
+
<html lang="en" class="sidebar-visible no-js light">
+
    <head>
+
        <!-- Book generated using mdBook -->
+
        <meta charset="UTF-8">
+
        <title>General Concepts - Jormungandr</title>
+
        
+

                      
+
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
        <meta name="description" content="">
+
        <meta name="viewport" content="width=device-width, initial-scale=1">
+
        <meta name="theme-color" content="#ffffff" />
+

                      
+
        <link rel="shortcut icon" href="../favicon.png">
+
        <link rel="stylesheet" href="../css/variables.css">
+
        <link rel="stylesheet" href="../css/general.css">
+
        <link rel="stylesheet" href="../css/chrome.css">
+
        <link rel="stylesheet" href="../css/print.css" media="print">
+

                      
+
        <!-- Fonts -->
+
        <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
+
        <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
+
        <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
+

                      
+
        <!-- Highlight.js Stylesheets -->
+
        <link rel="stylesheet" href="../highlight.css">
+
        <link rel="stylesheet" href="../tomorrow-night.css">
+
        <link rel="stylesheet" href="../ayu-highlight.css">
+

                      
+
        <!-- Custom theme stylesheets -->
+
        
+

                      
+
        
+
        <!-- MathJax -->
+
        <script async type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
        
+
    </head>
+
    <body>
+
        <!-- Provide site root to javascript -->
+
        <script type="text/javascript">
+
            var path_to_root = "../";
+
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "light" : "light";
+
        </script>
+

                      
+
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
+
        <script type="text/javascript">
+
            try {
+
                var theme = localStorage.getItem('mdbook-theme');
+
                var sidebar = localStorage.getItem('mdbook-sidebar');
+

                      
+
                if (theme.startsWith('"') && theme.endsWith('"')) {
+
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
+
                }
+

                      
+
                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
+
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
+
                }
+
            } catch (e) { }
+
        </script>
+

                      
+
        <!-- Set the theme before any content is loaded, prevents flash -->
+
        <script type="text/javascript">
+
            var theme;
+
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
+
            if (theme === null || theme === undefined) { theme = default_theme; }
+
            var html = document.querySelector('html');
+
            html.classList.remove('no-js')
+
            html.classList.remove('light')
+
            html.classList.add(theme);
+
            html.classList.add('js');
+
        </script>
+

                      
+
        <!-- Hide / unhide sidebar before it is displayed -->
+
        <script type="text/javascript">
+
            var html = document.querySelector('html');
+
            var sidebar = 'hidden';
+
            if (document.body.clientWidth >= 1080) {
+
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
+
                sidebar = sidebar || 'visible';
+
            }
+
            html.classList.remove('sidebar-visible');
+
            html.classList.add("sidebar-" + sidebar);
+
        </script>
+

                      
+
        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
+
            <div id="sidebar-scrollbox" class="sidebar-scrollbox">
+
                <ol class="chapter"><li class="expanded affix "><a href="../introduction.html">Introduction</a></li><li class="expanded "><a href="../concepts/introduction.html" class="active"><strong aria-hidden="true">1.</strong> General Concepts</a></li><li><ol class="section"><li class="expanded "><a href="../concepts/blockchain.html"><strong aria-hidden="true">1.1.</strong> Blockchain concepts</a></li><li class="expanded "><a href="../concepts/stake.html"><strong aria-hidden="true">1.2.</strong> Stake</a></li><li class="expanded "><a href="../concepts/node.html"><strong aria-hidden="true">1.3.</strong> Node organisation</a></li><li class="expanded "><a href="../concepts/network.html"><strong aria-hidden="true">1.4.</strong> Network overview</a></li></ol></li><li class="expanded "><a href="../quickstart/introduction.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="expanded "><a href="../quickstart/01_command_line.html"><strong aria-hidden="true">2.1.</strong> Command lines tools</a></li><li class="expanded "><a href="../quickstart/02_passive_node.html"><strong aria-hidden="true">2.2.</strong> Starting a passive node</a></li><li class="expanded "><a href="../quickstart/03_rest_api.html"><strong aria-hidden="true">2.3.</strong> REST API</a></li><li class="expanded "><a href="../quickstart/04_explorer.html"><strong aria-hidden="true">2.4.</strong> Explorer API</a></li><li class="expanded "><a href="../quickstart/05_leader_candidate.html"><strong aria-hidden="true">2.5.</strong> Starting as a leader candidate</a></li></ol></li><li class="expanded "><a href="../configuration/introduction.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="expanded "><a href="../configuration/logging.html"><strong aria-hidden="true">3.1.</strong> Logging</a></li><li class="expanded "><a href="../configuration/network.html"><strong aria-hidden="true">3.2.</strong> Node network</a></li><li class="expanded "><a href="../configuration/mempool.html"><strong aria-hidden="true">3.3.</strong> Fragment Pool</a></li><li class="expanded "><a href="../configuration/leadership.html"><strong aria-hidden="true">3.4.</strong> Leader Events</a></li></ol></li><li class="expanded "><a href="../jcli/introduction.html"><strong aria-hidden="true">4.</strong> jcli</a></li><li><ol class="section"><li class="expanded "><a href="../jcli/key.html"><strong aria-hidden="true">4.1.</strong> Cryptographic keys</a></li><li class="expanded "><a href="../jcli/address.html"><strong aria-hidden="true">4.2.</strong> Address</a></li><li class="expanded "><a href="../jcli/transaction.html"><strong aria-hidden="true">4.3.</strong> Transaction</a></li><li class="expanded "><a href="../jcli/certificate.html"><strong aria-hidden="true">4.4.</strong> Certificate</a></li><li class="expanded "><a href="../jcli/genesis.html"><strong aria-hidden="true">4.5.</strong> Genesis</a></li><li class="expanded "><a href="../jcli/rest.html"><strong aria-hidden="true">4.6.</strong> REST</a></li></ol></li><li class="expanded "><a href="../stake_pool/introduction.html"><strong aria-hidden="true">5.</strong> staking and stake pool</a></li><li><ol class="section"><li class="expanded "><a href="../stake_pool/delegating_stake.html"><strong aria-hidden="true">5.1.</strong> delegating your stake</a></li><li class="expanded "><a href="../stake_pool/registering_stake_pool.html"><strong aria-hidden="true">5.2.</strong> registering stake pool</a></li></ol></li><li class="expanded "><a href="../advanced/introduction.html"><strong aria-hidden="true">6.</strong> Advanced</a></li><li><ol class="section"><li class="expanded "><a href="../advanced/01_the_genesis_block.html"><strong aria-hidden="true">6.1.</strong> Genesis block</a></li><li class="expanded "><a href="../advanced/02_starting_bft_blockchain.html"><strong aria-hidden="true">6.2.</strong> Starting a bft blockchain</a></li><li class="expanded "><a href="../advanced/03_starting_genesis_praos_blockchain.html"><strong aria-hidden="true">6.3.</strong> Starting a genesis blockchain</a></li></ol></li></ol>
+
            </div>
+
            <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
+
        </nav>
+

                      
+
        <div id="page-wrapper" class="page-wrapper">
+

                      
+
            <div class="page">
+
                
+
                <div id="menu-bar" class="menu-bar">
+
                    <div id="menu-bar-sticky-container">
+
                        <div class="left-buttons">
+
                            <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
+
                                <i class="fa fa-bars"></i>
+
                            </button>
+
                            <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
+
                                <i class="fa fa-paint-brush"></i>
+
                            </button>
+
                            <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
+
                                <li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
+
                            </ul>
+
                            
+
                            <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
+
                                <i class="fa fa-search"></i>
+
                            </button>
+
                            
+
                        </div>
+

                      
+
                        <h1 class="menu-title">Jormungandr</h1>
+

                      
+
                        <div class="right-buttons">
+
                            <a href="../print.html" title="Print this book" aria-label="Print this book">
+
                                <i id="print-button" class="fa fa-print"></i>
+
                            </a>
+
                            
+
                        </div>
+
                    </div>
+
                </div>
+

                      
+
                
+
                <div id="search-wrapper" class="hidden">
+
                    <form id="searchbar-outer" class="searchbar-outer">
+
                        <input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
+
                    </form>
+
                    <div id="searchresults-outer" class="searchresults-outer hidden">
+
                        <div id="searchresults-header" class="searchresults-header"></div>
+
                        <ul id="searchresults">
+
                        </ul>
+
                    </div>
+
                </div>
+
                
+

                      
+
                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
+
                <script type="text/javascript">
+
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
+
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
+
                    });
+
                </script>
+

                      
+
                <div id="content" class="content">
+
                    <main>
+
                        <h1><a class="header" href="#general-concepts" id="general-concepts">General Concepts</a></h1>
+
<p>This chapter covers the general concepts of the blockchain, and their application
+
in the node, and is followed by the node organisation and the user interaction with it.</p>
+

                      
+
                    </main>
+

                      
+
                    <nav class="nav-wrapper" aria-label="Page navigation">
+
                        <!-- Mobile navigation buttons -->
+
                        
+
                            <a rel="prev" href="../introduction.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
+
                                <i class="fa fa-angle-left"></i>
+
                            </a>
+
                        
+

                      
+
                        
+
                            <a rel="next" href="../concepts/blockchain.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
+
                                <i class="fa fa-angle-right"></i>
+
                            </a>
+
                        
+

                      
+
                        <div style="clear: both"></div>
+
                    </nav>
+
                </div>
+
            </div>
+

                      
+
            <nav class="nav-wide-wrapper" aria-label="Page navigation">
+
                
+
                    <a href="../introduction.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
+
                        <i class="fa fa-angle-left"></i>
+
                    </a>
+
                
+

                      
+
                
+
                    <a href="../concepts/blockchain.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
+
                        <i class="fa fa-angle-right"></i>
+
                    </a>
+
                
+
            </nav>
+

                      
+
        </div>
+

                      
+
        
+

                      
+
        
+

                      
+
        
+
<!DOCTYPE HTML>
+
<html lang="en" class="sidebar-visible no-js light">
+
    <head>
+
        <!-- Book generated using mdBook -->
+
        <meta charset="UTF-8">
+
        <title>Network overview - Jormungandr</title>
+
        
+

                      
+
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
        <meta name="description" content="">
+
        <meta name="viewport" content="width=device-width, initial-scale=1">
+
        <meta name="theme-color" content="#ffffff" />
+

                      
+
        <link rel="shortcut icon" href="../favicon.png">
+
        <link rel="stylesheet" href="../css/variables.css">
+
        <link rel="stylesheet" href="../css/general.css">
+
        <link rel="stylesheet" href="../css/chrome.css">
+
        <link rel="stylesheet" href="../css/print.css" media="print">
+

                      
+
        <!-- Fonts -->
+
        <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
+
        <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
+
        <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
+

                      
+
        <!-- Highlight.js Stylesheets -->
+
        <link rel="stylesheet" href="../highlight.css">
+
        <link rel="stylesheet" href="../tomorrow-night.css">
+
        <link rel="stylesheet" href="../ayu-highlight.css">
+

                      
+
        <!-- Custom theme stylesheets -->
+
        
+

                      
+
        
+
        <!-- MathJax -->
+
        <script async type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
        
+
    </head>
+
    <body>
+
        <!-- Provide site root to javascript -->
+
        <script type="text/javascript">
+
            var path_to_root = "../";
+
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "light" : "light";
+
        </script>
+

                      
+
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
+
        <script type="text/javascript">
+
            try {
+
                var theme = localStorage.getItem('mdbook-theme');
+
                var sidebar = localStorage.getItem('mdbook-sidebar');
+

                      
+
                if (theme.startsWith('"') && theme.endsWith('"')) {
+
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
+
                }
+

                      
+
                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
+
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
+
                }
+
            } catch (e) { }
+
        </script>
+

                      
+
        <!-- Set the theme before any content is loaded, prevents flash -->
+
        <script type="text/javascript">
+
            var theme;
+
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
+
            if (theme === null || theme === undefined) { theme = default_theme; }
+
            var html = document.querySelector('html');
+
            html.classList.remove('no-js')
+
            html.classList.remove('light')
+
            html.classList.add(theme);
+
            html.classList.add('js');
+
        </script>
+

                      
+
        <!-- Hide / unhide sidebar before it is displayed -->
+
        <script type="text/javascript">
+
            var html = document.querySelector('html');
+
            var sidebar = 'hidden';
+
            if (document.body.clientWidth >= 1080) {
+
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
+
                sidebar = sidebar || 'visible';
+
            }
+
            html.classList.remove('sidebar-visible');
+
            html.classList.add("sidebar-" + sidebar);
+
        </script>
+

                      
+
        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
+
            <div id="sidebar-scrollbox" class="sidebar-scrollbox">
+
                <ol class="chapter"><li class="expanded affix "><a href="../introduction.html">Introduction</a></li><li class="expanded "><a href="../concepts/introduction.html"><strong aria-hidden="true">1.</strong> General Concepts</a></li><li><ol class="section"><li class="expanded "><a href="../concepts/blockchain.html"><strong aria-hidden="true">1.1.</strong> Blockchain concepts</a></li><li class="expanded "><a href="../concepts/stake.html"><strong aria-hidden="true">1.2.</strong> Stake</a></li><li class="expanded "><a href="../concepts/node.html"><strong aria-hidden="true">1.3.</strong> Node organisation</a></li><li class="expanded "><a href="../concepts/network.html" class="active"><strong aria-hidden="true">1.4.</strong> Network overview</a></li></ol></li><li class="expanded "><a href="../quickstart/introduction.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="expanded "><a href="../quickstart/01_command_line.html"><strong aria-hidden="true">2.1.</strong> Command lines tools</a></li><li class="expanded "><a href="../quickstart/02_passive_node.html"><strong aria-hidden="true">2.2.</strong> Starting a passive node</a></li><li class="expanded "><a href="../quickstart/03_rest_api.html"><strong aria-hidden="true">2.3.</strong> REST API</a></li><li class="expanded "><a href="../quickstart/04_explorer.html"><strong aria-hidden="true">2.4.</strong> Explorer API</a></li><li class="expanded "><a href="../quickstart/05_leader_candidate.html"><strong aria-hidden="true">2.5.</strong> Starting as a leader candidate</a></li></ol></li><li class="expanded "><a href="../configuration/introduction.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="expanded "><a href="../configuration/logging.html"><strong aria-hidden="true">3.1.</strong> Logging</a></li><li class="expanded "><a href="../configuration/network.html"><strong aria-hidden="true">3.2.</strong> Node network</a></li><li class="expanded "><a href="../configuration/mempool.html"><strong aria-hidden="true">3.3.</strong> Fragment Pool</a></li><li class="expanded "><a href="../configuration/leadership.html"><strong aria-hidden="true">3.4.</strong> Leader Events</a></li></ol></li><li class="expanded "><a href="../jcli/introduction.html"><strong aria-hidden="true">4.</strong> jcli</a></li><li><ol class="section"><li class="expanded "><a href="../jcli/key.html"><strong aria-hidden="true">4.1.</strong> Cryptographic keys</a></li><li class="expanded "><a href="../jcli/address.html"><strong aria-hidden="true">4.2.</strong> Address</a></li><li class="expanded "><a href="../jcli/transaction.html"><strong aria-hidden="true">4.3.</strong> Transaction</a></li><li class="expanded "><a href="../jcli/certificate.html"><strong aria-hidden="true">4.4.</strong> Certificate</a></li><li class="expanded "><a href="../jcli/genesis.html"><strong aria-hidden="true">4.5.</strong> Genesis</a></li><li class="expanded "><a href="../jcli/rest.html"><strong aria-hidden="true">4.6.</strong> REST</a></li></ol></li><li class="expanded "><a href="../stake_pool/introduction.html"><strong aria-hidden="true">5.</strong> staking and stake pool</a></li><li><ol class="section"><li class="expanded "><a href="../stake_pool/delegating_stake.html"><strong aria-hidden="true">5.1.</strong> delegating your stake</a></li><li class="expanded "><a href="../stake_pool/registering_stake_pool.html"><strong aria-hidden="true">5.2.</strong> registering stake pool</a></li></ol></li><li class="expanded "><a href="../advanced/introduction.html"><strong aria-hidden="true">6.</strong> Advanced</a></li><li><ol class="section"><li class="expanded "><a href="../advanced/01_the_genesis_block.html"><strong aria-hidden="true">6.1.</strong> Genesis block</a></li><li class="expanded "><a href="../advanced/02_starting_bft_blockchain.html"><strong aria-hidden="true">6.2.</strong> Starting a bft blockchain</a></li><li class="expanded "><a href="../advanced/03_starting_genesis_praos_blockchain.html"><strong aria-hidden="true">6.3.</strong> Starting a genesis blockchain</a></li></ol></li></ol>
+
            </div>
+
            <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
+
        </nav>
+

                      
+
        <div id="page-wrapper" class="page-wrapper">
+

                      
+
            <div class="page">
+
                
+
                <div id="menu-bar" class="menu-bar">
+
                    <div id="menu-bar-sticky-container">
+
                        <div class="left-buttons">
+
                            <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
+
                                <i class="fa fa-bars"></i>
+
                            </button>
+
                            <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
+
                                <i class="fa fa-paint-brush"></i>
+
                            </button>
+
                            <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
+
                                <li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
+
                            </ul>
+
                            
+
                            <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
+
                                <i class="fa fa-search"></i>
+
                            </button>
+
                            
+
                        </div>
+

                      
+
                        <h1 class="menu-title">Jormungandr</h1>
+

                      
+
                        <div class="right-buttons">
+
                            <a href="../print.html" title="Print this book" aria-label="Print this book">
+
                                <i id="print-button" class="fa fa-print"></i>
+
                            </a>
+
                            
+
                        </div>
+
                    </div>
+
                </div>
+

                      
+
                
+
                <div id="search-wrapper" class="hidden">
+
                    <form id="searchbar-outer" class="searchbar-outer">
+
                        <input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
+
                    </form>
+
                    <div id="searchresults-outer" class="searchresults-outer hidden">
+
                        <div id="searchresults-header" class="searchresults-header"></div>
+
                        <ul id="searchresults">
+
                        </ul>
+
                    </div>
+
                </div>
+
                
+

                      
+
                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
+
                <script type="text/javascript">
+
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
+
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
+
                    });
+
                </script>
+

                      
+
                <div id="content" class="content">
+
                    <main>
+
                        <p>Jörmungandr network capabilities are split into:</p>
+
<ol>
+
<li>the REST API, used for informational queries or control of the node;</li>
+
<li>the gRPC API for blockchain protocol exchange and participation;</li>
+
</ol>
+
<p>Here we will only review the gRPC API as the REST API is described in another
+
chapter: <a href="../quickstart/03_rest_api.html">go to the REST documentation</a></p>
+
<h1><a class="header" href="#the-protocol" id="the-protocol">The protocol</a></h1>
+
<p>The protocol is based on <a href="https://www.grpc.io"><code>gRPC</code></a> that combines commonly used protocols like HTTP/2 and RPC.
+
More precisely, Jörmungandr utilises.</p>
+
<p>This choice was made because  <a href="https://www.grpc.io"><code>gRPC</code></a> is already widely supported around the world because
+
of it's uitilization of standard protocols HTTP/2 which makes it much easier for Proxies and Firewalls to recognise
+
the protocol and permit the traffic.</p>
+
<h2><a class="header" href="#type-of-queries" id="type-of-queries">Type of queries</a></h2>
+
<p>The protocol allows you to send multiple types of messages between nodes:</p>
+
<ul>
+
<li>sync block to remote peer's <em>Last Block</em> (<code>tip</code>).</li>
+
<li>propose new fragments (new transactions, certificates, ...):
+
this is for the fragment propagation.</li>
+
<li>propose new blocks: for block propagation.</li>
+
</ul>
+
<p>There are other commands that optimise the communication and synchronisation
+
between nodes that will be documented here in the future.</p>
+
<p>Another type of messages is the <code>Gossip</code> message. These gossip messages allow Nodes to exchange
+
information (gossips) about other nodes on the network, allowing for peer
+
discovery.</p>
+
<h2><a class="header" href="#peer-to-peer" id="peer-to-peer">Peer to peer</a></h2>
+
<p>The peer 2 peer connections are established utilising multiple components:</p>
+
<ul>
+
<li>A multilayered topology (e.g. <a href="https://hal.inria.fr/hal-01555561/document">Poldercast</a>);</li>
+
<li>Gossiping for node discoverability;</li>
+
<li>Subscription mechanism for event propagation;</li>
+
<li>Security and countermeasures: (such as Topology Policy for scoring and/or
+
blacklisting nodes);</li>
+
</ul>
+
<h3><a class="header" href="#multilayered-topology" id="multilayered-topology">Multilayered topology</a></h3>
+
<p>As described in the <a href="https://hal.inria.fr/hal-01555561/document">Poldercast</a> paper, our network topology is
+
built on multiple layers that allow for granular control of it's behavior. In 
+
practice this means a node will have different groups of nodes that it connects to 
+
based on different algorithms, each of these groups are a subset of the whole 
+
known list of nodes.</p>
+
<p>In short we have:</p>
+
<ul>
+
<li>The rings layer selects a predecessor(s) and a successor(s) for each
+
topic (Fragment or Blocks);</li>
+
<li>The Vicinity layer will select nodes that have similar interests;</li>
a
+262/-0
+
<!DOCTYPE HTML>
+
<html lang="en" class="sidebar-visible no-js light">
+
    <head>
+
        <!-- Book generated using mdBook -->
+
        <meta charset="UTF-8">
+
        <title>Node organisation - Jormungandr</title>
+
        
+

                      
+
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
        <meta name="description" content="">
+
        <meta name="viewport" content="width=device-width, initial-scale=1">
+
        <meta name="theme-color" content="#ffffff" />
+

                      
+
        <link rel="shortcut icon" href="../favicon.png">
+
        <link rel="stylesheet" href="../css/variables.css">
+
        <link rel="stylesheet" href="../css/general.css">
+
        <link rel="stylesheet" href="../css/chrome.css">
+
        <link rel="stylesheet" href="../css/print.css" media="print">
+

                      
+
        <!-- Fonts -->
+
        <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
+
        <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
+
        <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
+

                      
+
        <!-- Highlight.js Stylesheets -->
+
        <link rel="stylesheet" href="../highlight.css">
+
        <link rel="stylesheet" href="../tomorrow-night.css">
+
        <link rel="stylesheet" href="../ayu-highlight.css">
+

                      
+
        <!-- Custom theme stylesheets -->
+
        
+

                      
+
        
+
        <!-- MathJax -->
+
        <script async type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
        
+
    </head>
+
    <body>
+
        <!-- Provide site root to javascript -->
+
        <script type="text/javascript">
+
            var path_to_root = "../";
+
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "light" : "light";
+
        </script>
+

                      
+
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
+
        <script type="text/javascript">
+
            try {
+
                var theme = localStorage.getItem('mdbook-theme');
+
                var sidebar = localStorage.getItem('mdbook-sidebar');
+

                      
+
                if (theme.startsWith('"') && theme.endsWith('"')) {
+
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
+
                }
+

                      
+
                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
+
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
+
                }
+
            } catch (e) { }
+
        </script>
+

                      
+
        <!-- Set the theme before any content is loaded, prevents flash -->
+
        <script type="text/javascript">
+
            var theme;
+
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
+
            if (theme === null || theme === undefined) { theme = default_theme; }
+
            var html = document.querySelector('html');
+
            html.classList.remove('no-js')
+
            html.classList.remove('light')
+
            html.classList.add(theme);
+
            html.classList.add('js');
+
        </script>
+

                      
+
        <!-- Hide / unhide sidebar before it is displayed -->
+
        <script type="text/javascript">
+
            var html = document.querySelector('html');
+
            var sidebar = 'hidden';
+
            if (document.body.clientWidth >= 1080) {
+
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
+
                sidebar = sidebar || 'visible';
+
            }
+
            html.classList.remove('sidebar-visible');
+
            html.classList.add("sidebar-" + sidebar);
+
        </script>
+

                      
+
        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
+
            <div id="sidebar-scrollbox" class="sidebar-scrollbox">
+
                <ol class="chapter"><li class="expanded affix "><a href="../introduction.html">Introduction</a></li><li class="expanded "><a href="../concepts/introduction.html"><strong aria-hidden="true">1.</strong> General Concepts</a></li><li><ol class="section"><li class="expanded "><a href="../concepts/blockchain.html"><strong aria-hidden="true">1.1.</strong> Blockchain concepts</a></li><li class="expanded "><a href="../concepts/stake.html"><strong aria-hidden="true">1.2.</strong> Stake</a></li><li class="expanded "><a href="../concepts/node.html" class="active"><strong aria-hidden="true">1.3.</strong> Node organisation</a></li><li class="expanded "><a href="../concepts/network.html"><strong aria-hidden="true">1.4.</strong> Network overview</a></li></ol></li><li class="expanded "><a href="../quickstart/introduction.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="expanded "><a href="../quickstart/01_command_line.html"><strong aria-hidden="true">2.1.</strong> Command lines tools</a></li><li class="expanded "><a href="../quickstart/02_passive_node.html"><strong aria-hidden="true">2.2.</strong> Starting a passive node</a></li><li class="expanded "><a href="../quickstart/03_rest_api.html"><strong aria-hidden="true">2.3.</strong> REST API</a></li><li class="expanded "><a href="../quickstart/04_explorer.html"><strong aria-hidden="true">2.4.</strong> Explorer API</a></li><li class="expanded "><a href="../quickstart/05_leader_candidate.html"><strong aria-hidden="true">2.5.</strong> Starting as a leader candidate</a></li></ol></li><li class="expanded "><a href="../configuration/introduction.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="expanded "><a href="../configuration/logging.html"><strong aria-hidden="true">3.1.</strong> Logging</a></li><li class="expanded "><a href="../configuration/network.html"><strong aria-hidden="true">3.2.</strong> Node network</a></li><li class="expanded "><a href="../configuration/mempool.html"><strong aria-hidden="true">3.3.</strong> Fragment Pool</a></li><li class="expanded "><a href="../configuration/leadership.html"><strong aria-hidden="true">3.4.</strong> Leader Events</a></li></ol></li><li class="expanded "><a href="../jcli/introduction.html"><strong aria-hidden="true">4.</strong> jcli</a></li><li><ol class="section"><li class="expanded "><a href="../jcli/key.html"><strong aria-hidden="true">4.1.</strong> Cryptographic keys</a></li><li class="expanded "><a href="../jcli/address.html"><strong aria-hidden="true">4.2.</strong> Address</a></li><li class="expanded "><a href="../jcli/transaction.html"><strong aria-hidden="true">4.3.</strong> Transaction</a></li><li class="expanded "><a href="../jcli/certificate.html"><strong aria-hidden="true">4.4.</strong> Certificate</a></li><li class="expanded "><a href="../jcli/genesis.html"><strong aria-hidden="true">4.5.</strong> Genesis</a></li><li class="expanded "><a href="../jcli/rest.html"><strong aria-hidden="true">4.6.</strong> REST</a></li></ol></li><li class="expanded "><a href="../stake_pool/introduction.html"><strong aria-hidden="true">5.</strong> staking and stake pool</a></li><li><ol class="section"><li class="expanded "><a href="../stake_pool/delegating_stake.html"><strong aria-hidden="true">5.1.</strong> delegating your stake</a></li><li class="expanded "><a href="../stake_pool/registering_stake_pool.html"><strong aria-hidden="true">5.2.</strong> registering stake pool</a></li></ol></li><li class="expanded "><a href="../advanced/introduction.html"><strong aria-hidden="true">6.</strong> Advanced</a></li><li><ol class="section"><li class="expanded "><a href="../advanced/01_the_genesis_block.html"><strong aria-hidden="true">6.1.</strong> Genesis block</a></li><li class="expanded "><a href="../advanced/02_starting_bft_blockchain.html"><strong aria-hidden="true">6.2.</strong> Starting a bft blockchain</a></li><li class="expanded "><a href="../advanced/03_starting_genesis_praos_blockchain.html"><strong aria-hidden="true">6.3.</strong> Starting a genesis blockchain</a></li></ol></li></ol>
+
            </div>
+
            <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
+
        </nav>
+

                      
+
        <div id="page-wrapper" class="page-wrapper">
+

                      
+
            <div class="page">
+
                
+
                <div id="menu-bar" class="menu-bar">
+
                    <div id="menu-bar-sticky-container">
+
                        <div class="left-buttons">
+
                            <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
+
                                <i class="fa fa-bars"></i>
+
                            </button>
+
                            <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
+
                                <i class="fa fa-paint-brush"></i>
+
                            </button>
+
                            <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
+
                                <li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
+
                            </ul>
+
                            
+
                            <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
+
                                <i class="fa fa-search"></i>
+
                            </button>
+
                            
+
                        </div>
+

                      
+
                        <h1 class="menu-title">Jormungandr</h1>
+

                      
+
                        <div class="right-buttons">
+
                            <a href="../print.html" title="Print this book" aria-label="Print this book">
+
                                <i id="print-button" class="fa fa-print"></i>
+
                            </a>
+
                            
+
                        </div>
+
                    </div>
+
                </div>
+

                      
+
                
+
                <div id="search-wrapper" class="hidden">
+
                    <form id="searchbar-outer" class="searchbar-outer">
+
                        <input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
+
                    </form>
+
                    <div id="searchresults-outer" class="searchresults-outer hidden">
+
                        <div id="searchresults-header" class="searchresults-header"></div>
+
                        <ul id="searchresults">
+
                        </ul>
+
                    </div>
+
                </div>
+
                
+

                      
+
                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
+
                <script type="text/javascript">
+
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
+
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
+
                    });
+
                </script>
+

                      
+
                <div id="content" class="content">
+
                    <main>
+
                        <h1><a class="header" href="#node-organisation" id="node-organisation">Node organisation</a></h1>
+
<h2><a class="header" href="#secure-enclave" id="secure-enclave">Secure Enclave</a></h2>
+
<p>The secure enclave is the component containing the secret cryptographic
+
material, and offering safe and secret high level interfaces to the rest of
+
the node.</p>
+
<h2><a class="header" href="#network" id="network">Network</a></h2>
+
<p>The node's network is 3 components:</p>
+
<ul>
+
<li>Intercommunication API (GRPC)</li>
+
<li>Public client API (REST)</li>
+
<li>Control client API (REST)</li>
+
</ul>
+
<p>More detailed information <a href="./network.html">here</a></p>
+
<h3><a class="header" href="#intercommunication-api-grpc" id="intercommunication-api-grpc">Intercommunication API (GRPC)</a></h3>
+
<p>This interface is a binary, efficient interface using the protobuf format and
+
GRPC standard. The protobuf files of types and interfaces are available in
+
the source code.</p>
+
<p>The interface is responsible to communicate with other node in the network:</p>
+
<ul>
+
<li>block sending and receiving</li>
+
<li>fragments (transaction, certificates) broadcast</li>
+
<li>peer2peer gossip</li>
+
</ul>
+
<h3><a class="header" href="#public-api-rest" id="public-api-rest">Public API REST</a></h3>
+
<p>This interface is for simple queries for clients like:</p>
+
<ul>
+
<li>Wallet Client &amp; Middleware</li>
+
<li>Analytics &amp; Debugging tools</li>
+
<li>Explorer</li>
+
</ul>
+
<p>it's recommended for this interface to not be opened to the public.</p>
+
<p>TODO: Add a high level overview of what it does</p>
+
<h3><a class="header" href="#control-api-rest" id="control-api-rest">Control API REST</a></h3>
+
<p>This interface is not finished, but is a restricted interface with ACL,
+
to be able to do maintenance tasks on the process:</p>
+
<ul>
+
<li>Shutdown</li>
+
<li>Load/Retire cryptographic material</li>
+
</ul>
+
<p>TODO: Detail the ACL/Security measure</p>
+

                      
+
                    </main>
+

                      
+
                    <nav class="nav-wrapper" aria-label="Page navigation">
+
                        <!-- Mobile navigation buttons -->
+
                        
+
<!DOCTYPE HTML>
+
<html lang="en" class="sidebar-visible no-js light">
+
    <head>
+
        <!-- Book generated using mdBook -->
+
        <meta charset="UTF-8">
+
        <title>Stake - Jormungandr</title>
+
        
+

                      
+
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+
        <meta name="description" content="">
+
        <meta name="viewport" content="width=device-width, initial-scale=1">
+
        <meta name="theme-color" content="#ffffff" />
+

                      
+
        <link rel="shortcut icon" href="../favicon.png">
+
        <link rel="stylesheet" href="../css/variables.css">
+
        <link rel="stylesheet" href="../css/general.css">
+
        <link rel="stylesheet" href="../css/chrome.css">
+
        <link rel="stylesheet" href="../css/print.css" media="print">
+

                      
+
        <!-- Fonts -->
+
        <link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
+
        <link href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
+
        <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500" rel="stylesheet" type="text/css">
+

                      
+
        <!-- Highlight.js Stylesheets -->
+
        <link rel="stylesheet" href="../highlight.css">
+
        <link rel="stylesheet" href="../tomorrow-night.css">
+
        <link rel="stylesheet" href="../ayu-highlight.css">
+

                      
+
        <!-- Custom theme stylesheets -->
+
        
+

                      
+
        
+
        <!-- MathJax -->
+
        <script async type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
        
+
    </head>
+
    <body>
+
        <!-- Provide site root to javascript -->
+
        <script type="text/javascript">
+
            var path_to_root = "../";
+
            var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "light" : "light";
+
        </script>
+

                      
+
        <!-- Work around some values being stored in localStorage wrapped in quotes -->
+
        <script type="text/javascript">
+
            try {
+
                var theme = localStorage.getItem('mdbook-theme');
+
                var sidebar = localStorage.getItem('mdbook-sidebar');
+

                      
+
                if (theme.startsWith('"') && theme.endsWith('"')) {
+
                    localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
+
                }
+

                      
+
                if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
+
                    localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
+
                }
+
            } catch (e) { }
+
        </script>
+

                      
+
        <!-- Set the theme before any content is loaded, prevents flash -->
+
        <script type="text/javascript">
+
            var theme;
+
            try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
+
            if (theme === null || theme === undefined) { theme = default_theme; }
+
            var html = document.querySelector('html');
+
            html.classList.remove('no-js')
+
            html.classList.remove('light')
+
            html.classList.add(theme);
+
            html.classList.add('js');
+
        </script>
+

                      
+
        <!-- Hide / unhide sidebar before it is displayed -->
+
        <script type="text/javascript">
+
            var html = document.querySelector('html');
+
            var sidebar = 'hidden';
+
            if (document.body.clientWidth >= 1080) {
+
                try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
+
                sidebar = sidebar || 'visible';
+
            }
+
            html.classList.remove('sidebar-visible');
+
            html.classList.add("sidebar-" + sidebar);
+
        </script>
+

                      
+
        <nav id="sidebar" class="sidebar" aria-label="Table of contents">
+
            <div id="sidebar-scrollbox" class="sidebar-scrollbox">
+
                <ol class="chapter"><li class="expanded affix "><a href="../introduction.html">Introduction</a></li><li class="expanded "><a href="../concepts/introduction.html"><strong aria-hidden="true">1.</strong> General Concepts</a></li><li><ol class="section"><li class="expanded "><a href="../concepts/blockchain.html"><strong aria-hidden="true">1.1.</strong> Blockchain concepts</a></li><li class="expanded "><a href="../concepts/stake.html" class="active"><strong aria-hidden="true">1.2.</strong> Stake</a></li><li class="expanded "><a href="../concepts/node.html"><strong aria-hidden="true">1.3.</strong> Node organisation</a></li><li class="expanded "><a href="../concepts/network.html"><strong aria-hidden="true">1.4.</strong> Network overview</a></li></ol></li><li class="expanded "><a href="../quickstart/introduction.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="expanded "><a href="../quickstart/01_command_line.html"><strong aria-hidden="true">2.1.</strong> Command lines tools</a></li><li class="expanded "><a href="../quickstart/02_passive_node.html"><strong aria-hidden="true">2.2.</strong> Starting a passive node</a></li><li class="expanded "><a href="../quickstart/03_rest_api.html"><strong aria-hidden="true">2.3.</strong> REST API</a></li><li class="expanded "><a href="../quickstart/04_explorer.html"><strong aria-hidden="true">2.4.</strong> Explorer API</a></li><li class="expanded "><a href="../quickstart/05_leader_candidate.html"><strong aria-hidden="true">2.5.</strong> Starting as a leader candidate</a></li></ol></li><li class="expanded "><a href="../configuration/introduction.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="expanded "><a href="../configuration/logging.html"><strong aria-hidden="true">3.1.</strong> Logging</a></li><li class="expanded "><a href="../configuration/network.html"><strong aria-hidden="true">3.2.</strong> Node network</a></li><li class="expanded "><a href="../configuration/mempool.html"><strong aria-hidden="true">3.3.</strong> Fragment Pool</a></li><li class="expanded "><a href="../configuration/leadership.html"><strong aria-hidden="true">3.4.</strong> Leader Events</a></li></ol></li><li class="expanded "><a href="../jcli/introduction.html"><strong aria-hidden="true">4.</strong> jcli</a></li><li><ol class="section"><li class="expanded "><a href="../jcli/key.html"><strong aria-hidden="true">4.1.</strong> Cryptographic keys</a></li><li class="expanded "><a href="../jcli/address.html"><strong aria-hidden="true">4.2.</strong> Address</a></li><li class="expanded "><a href="../jcli/transaction.html"><strong aria-hidden="true">4.3.</strong> Transaction</a></li><li class="expanded "><a href="../jcli/certificate.html"><strong aria-hidden="true">4.4.</strong> Certificate</a></li><li class="expanded "><a href="../jcli/genesis.html"><strong aria-hidden="true">4.5.</strong> Genesis</a></li><li class="expanded "><a href="../jcli/rest.html"><strong aria-hidden="true">4.6.</strong> REST</a></li></ol></li><li class="expanded "><a href="../stake_pool/introduction.html"><strong aria-hidden="true">5.</strong> staking and stake pool</a></li><li><ol class="section"><li class="expanded "><a href="../stake_pool/delegating_stake.html"><strong aria-hidden="true">5.1.</strong> delegating your stake</a></li><li class="expanded "><a href="../stake_pool/registering_stake_pool.html"><strong aria-hidden="true">5.2.</strong> registering stake pool</a></li></ol></li><li class="expanded "><a href="../advanced/introduction.html"><strong aria-hidden="true">6.</strong> Advanced</a></li><li><ol class="section"><li class="expanded "><a href="../advanced/01_the_genesis_block.html"><strong aria-hidden="true">6.1.</strong> Genesis block</a></li><li class="expanded "><a href="../advanced/02_starting_bft_blockchain.html"><strong aria-hidden="true">6.2.</strong> Starting a bft blockchain</a></li><li class="expanded "><a href="../advanced/03_starting_genesis_praos_blockchain.html"><strong aria-hidden="true">6.3.</strong> Starting a genesis blockchain</a></li></ol></li></ol>
+
            </div>
+
            <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
+
        </nav>
+

                      
+
        <div id="page-wrapper" class="page-wrapper">
+

                      
+
            <div class="page">
+
                
+
                <div id="menu-bar" class="menu-bar">
+
                    <div id="menu-bar-sticky-container">
+
                        <div class="left-buttons">
+
                            <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
+
                                <i class="fa fa-bars"></i>
+
                            </button>
+
                            <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
+
                                <i class="fa fa-paint-brush"></i>
+
                            </button>
+
                            <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
+
                                <li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
+
                                <li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
+
                            </ul>
+
                            
+
                            <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
+
                                <i class="fa fa-search"></i>
+
                            </button>
+
                            
+
                        </div>
+

                      
+
                        <h1 class="menu-title">Jormungandr</h1>
+

                      
+
                        <div class="right-buttons">
+
                            <a href="../print.html" title="Print this book" aria-label="Print this book">
+
                                <i id="print-button" class="fa fa-print"></i>
+
                            </a>
+
                            
+
                        </div>
+
                    </div>
+
                </div>
+

                      
+
                
+
                <div id="search-wrapper" class="hidden">
+
                    <form id="searchbar-outer" class="searchbar-outer">
+
                        <input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
+
                    </form>
+
                    <div id="searchresults-outer" class="searchresults-outer hidden">
+
                        <div id="searchresults-header" class="searchresults-header"></div>
+
                        <ul id="searchresults">
+
                        </ul>
+
                    </div>
+
                </div>
+
                
+

                      
+
                <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
+
                <script type="text/javascript">
+
                    document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+
                    document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+
                    Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
+
                        link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
+
                    });
+
                </script>
+

                      
+
                <div id="content" class="content">
+
                    <main>
+
                        <h1><a class="header" href="#stake" id="stake">Stake</a></h1>
+
<p>In a proof of stake, participants are issued a stake equivalent to the amount
+
of coins they own. The stake is then used to allow participation in the protocol,
+
simply explained as:</p>
+
<blockquote>
+
<p>The more stake one has, the more likely one will participate in the good health of the network.</p>
+
</blockquote>
+
<p>When using the BFT consensus, the stake doesn't influence how the system
+
runs, but stake can still be manipulated for a later transition of the chain
+
to another consensus mode.</p>
+
<h2><a class="header" href="#stake-in-the-account-model" id="stake-in-the-account-model">Stake in the Account Model</a></h2>
+
<p>Account are represented by 1 type of address and are just composed of a public key.
+
The account accumulate moneys and its stake power is directly represented by the amount it contains</p>
+
<p>For example:</p>
+
<pre><code>
+
    A - Account with 30$ =&gt; Account A has stake of 30
+
    B - Account with 0$ =&gt; Account B has no stake
+

                      
+
</code></pre>
+
<p>The account might have a bigger stake than what it actually contains, since it could
+
also have associated UTXOs, and this case is covered in the next section.</p>
+
<h2><a class="header" href="#stake-in-the-utxo-model" id="stake-in-the-utxo-model">Stake in the UTXO Model</a></h2>
+
<p>UTXO are represented by two kind of addresses:</p>
+
<ul>
+
<li>single address: those type of address have no stake associated</li>
+
<li>group address: those types of address have an account associated which receive the stake power of the UTXOs value</li>
+
</ul>
+
<p>For example with the following utxos:</p>
+
<pre><code>    UTXO1 60$ (single address) =&gt; has stake of 0
+

                      
+
    UTXO2 50$ (group address A) \
+
                                 -&gt;- A - Account with 10$ =&gt; Account A has stake of 100
+
    UTXO3 40$ (group address A) /
+

                      
+
    UTXO4 20$ (group address B) --&gt;- B - Account with 5$ =&gt; Account B has stake of 25
+
</code></pre>
+
<h2><a class="header" href="#stake-pool" id="stake-pool">Stake pool</a></h2>
+
<p>Stake pool are the trusted block creators in the genesis-praos system. A pool
+
is declared on the network explicitely by its owners and contains, metadata
+
and cryptographic material.</p>
+
<p>Stake pool has no stake power on their own, but participants in the network
+
delegate their stake to a pool for running the operation.</p>
+
<h2><a class="header" href="#stake-delegation" id="stake-delegation">Stake Delegation</a></h2>
+
<p>Stake can and need to be delegated to stake pool in the system. They can
+
change over time with a publication of a new delegation certificate.</p>
+
<p>Delegation certificate are a simple declaration statement in the form of:</p>
Diff too large – View on GitHub