forked from WebOfTrustInfo/rwot3-sf
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathblockchain-technologies-feature-analysis.html
1 lines (1 loc) · 199 KB
/
blockchain-technologies-feature-analysis.html
1
<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><style type="text/css">@import url('https://themes.googleusercontent.com/fonts/css?kit=8apCgqRrTD4kFh3_sUrApqVHVmz1j9z6CQkgeB2u-bsDmUxO1UhoSA1xU3Qkmv47Chy3hwTL9q21JQE85xPzMQ');.lst-kix_c0ts0b7hihra-6>li:before{content:"\0025cf "}.lst-kix_c0ts0b7hihra-5>li:before{content:"\0025a0 "}.lst-kix_c0ts0b7hihra-7>li:before{content:"\0025cb "}.lst-kix_c0ts0b7hihra-2>li:before{content:"\0025a0 "}.lst-kix_c0ts0b7hihra-1>li:before{content:"\0025cb "}.lst-kix_c0ts0b7hihra-0>li:before{content:"\0025cf "}.lst-kix_c0ts0b7hihra-8>li:before{content:"\0025a0 "}ul.lst-kix_7qvnfc4ea6es-8{list-style-type:none}ul.lst-kix_7qvnfc4ea6es-6{list-style-type:none}ul.lst-kix_7qvnfc4ea6es-7{list-style-type:none}.lst-kix_5k127236ue1h-4>li{counter-increment:lst-ctn-kix_5k127236ue1h-4}ul.lst-kix_7qvnfc4ea6es-4{list-style-type:none}ul.lst-kix_7qvnfc4ea6es-5{list-style-type:none}.lst-kix_c0ts0b7hihra-3>li:before{content:"\0025cf "}ul.lst-kix_7qvnfc4ea6es-2{list-style-type:none}ul.lst-kix_7qvnfc4ea6es-3{list-style-type:none}ol.lst-kix_wkc10sxa2vip-8.start{counter-reset:lst-ctn-kix_wkc10sxa2vip-8 0}.lst-kix_c0ts0b7hihra-4>li:before{content:"\0025cb "}ul.lst-kix_7qvnfc4ea6es-0{list-style-type:none}ul.lst-kix_7qvnfc4ea6es-1{list-style-type:none}ol.lst-kix_5k127236ue1h-6.start{counter-reset:lst-ctn-kix_5k127236ue1h-6 0}.lst-kix_ghfuaj9pbcrg-2>li:before{content:"\0025a0 "}.lst-kix_ghfuaj9pbcrg-1>li:before{content:"\0025cb "}.lst-kix_ghfuaj9pbcrg-3>li:before{content:"\0025cf "}.lst-kix_ghfuaj9pbcrg-0>li:before{content:"\0025cf "}.lst-kix_ghfuaj9pbcrg-4>li:before{content:"\0025cb "}.lst-kix_6imt9oh7va4p-3>li{counter-increment:lst-ctn-kix_6imt9oh7va4p-3}.lst-kix_eein7yasug7r-1>li{counter-increment:lst-ctn-kix_eein7yasug7r-1}ol.lst-kix_6imt9oh7va4p-5.start{counter-reset:lst-ctn-kix_6imt9oh7va4p-5 0}.lst-kix_wkc10sxa2vip-4>li{counter-increment:lst-ctn-kix_wkc10sxa2vip-4}ol.lst-kix_nupi7wb5oa83-1.start{counter-reset:lst-ctn-kix_nupi7wb5oa83-1 0}.lst-kix_nupi7wb5oa83-3>li{counter-increment:lst-ctn-kix_nupi7wb5oa83-3}ul.lst-kix_vyjo33e5etkp-5{list-style-type:none}.lst-kix_6imt9oh7va4p-7>li{counter-increment:lst-ctn-kix_6imt9oh7va4p-7}.lst-kix_56y7l160mnp8-8>li:before{content:"\0025a0 "}ul.lst-kix_vyjo33e5etkp-6{list-style-type:none}.lst-kix_mibybetei6u2-0>li:before{content:"\0025cf "}ul.lst-kix_vyjo33e5etkp-7{list-style-type:none}ul.lst-kix_vyjo33e5etkp-8{list-style-type:none}.lst-kix_mibybetei6u2-1>li:before{content:"\0025cb "}.lst-kix_56y7l160mnp8-6>li:before{content:"\0025cf "}.lst-kix_56y7l160mnp8-7>li:before{content:"\0025cb "}.lst-kix_56y7l160mnp8-5>li:before{content:"\0025a0 "}.lst-kix_mibybetei6u2-2>li:before{content:"\0025a0 "}.lst-kix_mibybetei6u2-5>li:before{content:"\0025a0 "}.lst-kix_56y7l160mnp8-2>li:before{content:"\0025a0 "}.lst-kix_56y7l160mnp8-3>li:before{content:"\0025cf "}.lst-kix_mibybetei6u2-3>li:before{content:"\0025cf "}.lst-kix_mibybetei6u2-7>li:before{content:"\0025cb "}.lst-kix_56y7l160mnp8-0>li:before{content:"\0025cf "}.lst-kix_56y7l160mnp8-4>li:before{content:"\0025cb "}.lst-kix_mibybetei6u2-4>li:before{content:"\0025cb "}.lst-kix_mibybetei6u2-8>li:before{content:"\0025a0 "}ul.lst-kix_vyjo33e5etkp-1{list-style-type:none}.lst-kix_oojgn0vd07p0-0>li:before{content:"\0025cf "}ul.lst-kix_vyjo33e5etkp-2{list-style-type:none}ol.lst-kix_wkc10sxa2vip-3.start{counter-reset:lst-ctn-kix_wkc10sxa2vip-3 0}ul.lst-kix_vyjo33e5etkp-3{list-style-type:none}ul.lst-kix_vyjo33e5etkp-4{list-style-type:none}.lst-kix_56y7l160mnp8-1>li:before{content:"\0025cb "}.lst-kix_mibybetei6u2-6>li:before{content:"\0025cf "}ul.lst-kix_vyjo33e5etkp-0{list-style-type:none}.lst-kix_oojgn0vd07p0-3>li:before{content:"\0025cf "}.lst-kix_oojgn0vd07p0-4>li:before{content:"\0025cb "}.lst-kix_oojgn0vd07p0-1>li:before{content:"\0025cb "}.lst-kix_oojgn0vd07p0-2>li:before{content:"\0025a0 "}.lst-kix_oojgn0vd07p0-5>li:before{content:"\0025a0 "}.lst-kix_oojgn0vd07p0-6>li:before{content:"\0025cf "}ol.lst-kix_nupi7wb5oa83-6.start{counter-reset:lst-ctn-kix_nupi7wb5oa83-6 0}.lst-kix_wkc10sxa2vip-0>li{counter-increment:lst-ctn-kix_wkc10sxa2vip-0}.lst-kix_oojgn0vd07p0-7>li:before{content:"\0025cb "}.lst-kix_oojgn0vd07p0-8>li:before{content:"\0025a0 "}ol.lst-kix_eein7yasug7r-3.start{counter-reset:lst-ctn-kix_eein7yasug7r-3 0}ol.lst-kix_wkc10sxa2vip-1.start{counter-reset:lst-ctn-kix_wkc10sxa2vip-1 0}.lst-kix_x3uevqu79rxt-1>li:before{content:"\0025cb "}.lst-kix_x3uevqu79rxt-3>li:before{content:"\0025cf "}ul.lst-kix_mibybetei6u2-8{list-style-type:none}.lst-kix_nupi7wb5oa83-6>li{counter-increment:lst-ctn-kix_nupi7wb5oa83-6}ul.lst-kix_mibybetei6u2-5{list-style-type:none}ol.lst-kix_6imt9oh7va4p-3.start{counter-reset:lst-ctn-kix_6imt9oh7va4p-3 0}ul.lst-kix_mibybetei6u2-4{list-style-type:none}ul.lst-kix_mibybetei6u2-7{list-style-type:none}.lst-kix_x3uevqu79rxt-5>li:before{content:"\0025a0 "}.lst-kix_x3uevqu79rxt-7>li:before{content:"\0025cb "}ul.lst-kix_mibybetei6u2-6{list-style-type:none}ul.lst-kix_mibybetei6u2-1{list-style-type:none}ul.lst-kix_mibybetei6u2-0{list-style-type:none}ul.lst-kix_mibybetei6u2-3{list-style-type:none}.lst-kix_9i4fyzc013yz-8>li:before{content:"\0025a0 "}ul.lst-kix_mibybetei6u2-2{list-style-type:none}.lst-kix_sv54fp2cxfj-2>li:before{content:"\0025a0 "}ol.lst-kix_nupi7wb5oa83-3.start{counter-reset:lst-ctn-kix_nupi7wb5oa83-3 0}.lst-kix_sv54fp2cxfj-0>li:before{content:"\0025cf "}.lst-kix_jvj1shpofnc2-4>li:before{content:"\0025cb "}.lst-kix_wkc10sxa2vip-5>li:before{content:"" counter(lst-ctn-kix_wkc10sxa2vip-5,lower-roman) ". "}.lst-kix_wkc10sxa2vip-7>li:before{content:"" counter(lst-ctn-kix_wkc10sxa2vip-7,lower-latin) ". "}.lst-kix_8zqdo4oh100d-7>li:before{content:"\0025cb "}.lst-kix_jvj1shpofnc2-0>li:before{content:"\0025cf "}.lst-kix_jvj1shpofnc2-8>li:before{content:"\0025a0 "}.lst-kix_sv54fp2cxfj-6>li:before{content:"\0025cf "}.lst-kix_wkc10sxa2vip-1>li:before{content:"" counter(lst-ctn-kix_wkc10sxa2vip-1,lower-latin) ". "}.lst-kix_wkc10sxa2vip-3>li:before{content:"" counter(lst-ctn-kix_wkc10sxa2vip-3,decimal) ". "}.lst-kix_8zqdo4oh100d-5>li:before{content:"\0025a0 "}.lst-kix_jvj1shpofnc2-6>li:before{content:"\0025cf "}.lst-kix_sv54fp2cxfj-4>li:before{content:"\0025cb "}ol.lst-kix_wkc10sxa2vip-1{list-style-type:none}ol.lst-kix_wkc10sxa2vip-0{list-style-type:none}.lst-kix_8zqdo4oh100d-1>li:before{content:"\0025cb "}.lst-kix_8zqdo4oh100d-3>li:before{content:"\0025cf "}.lst-kix_5k127236ue1h-0>li{counter-increment:lst-ctn-kix_5k127236ue1h-0}ol.lst-kix_wkc10sxa2vip-5{list-style-type:none}ol.lst-kix_wkc10sxa2vip-4{list-style-type:none}ol.lst-kix_wkc10sxa2vip-3{list-style-type:none}ol.lst-kix_wkc10sxa2vip-2{list-style-type:none}ul.lst-kix_jvj1shpofnc2-6{list-style-type:none}ol.lst-kix_wkc10sxa2vip-8{list-style-type:none}ul.lst-kix_jvj1shpofnc2-5{list-style-type:none}ol.lst-kix_wkc10sxa2vip-7{list-style-type:none}ul.lst-kix_jvj1shpofnc2-4{list-style-type:none}ol.lst-kix_wkc10sxa2vip-6{list-style-type:none}ul.lst-kix_jvj1shpofnc2-3{list-style-type:none}.lst-kix_jvj1shpofnc2-2>li:before{content:"\0025a0 "}.lst-kix_sv54fp2cxfj-8>li:before{content:"\0025a0 "}ul.lst-kix_jvj1shpofnc2-8{list-style-type:none}ul.lst-kix_jvj1shpofnc2-7{list-style-type:none}.lst-kix_fq0f3fp2kz7v-6>li:before{content:"\0025cf "}.lst-kix_fq0f3fp2kz7v-8>li:before{content:"\0025a0 "}.lst-kix_vyjo33e5etkp-0>li:before{content:"\0025cf "}ul.lst-kix_jvj1shpofnc2-2{list-style-type:none}ul.lst-kix_jvj1shpofnc2-1{list-style-type:none}ul.lst-kix_jvj1shpofnc2-0{list-style-type:none}.lst-kix_fq0f3fp2kz7v-4>li:before{content:"\0025cb "}.lst-kix_vyjo33e5etkp-4>li:before{content:"\0025cb "}ol.lst-kix_5k127236ue1h-8.start{counter-reset:lst-ctn-kix_5k127236ue1h-8 0}.lst-kix_fq0f3fp2kz7v-0>li:before{content:"\0025cf "}.lst-kix_vyjo33e5etkp-6>li:before{content:"\0025cf "}.lst-kix_vyjo33e5etkp-8>li:before{content:"\0025a0 "}.lst-kix_ghfuaj9pbcrg-8>li:before{content:"\0025a0 "}ol.lst-kix_eein7yasug7r-6{list-style-type:none}.lst-kix_ghfuaj9pbcrg-6>li:before{content:"\0025cf "}ol.lst-kix_eein7yasug7r-5{list-style-type:none}ol.lst-kix_eein7yasug7r-8{list-style-type:none}.lst-kix_fq0f3fp2kz7v-2>li:before{content:"\0025a0 "}ol.lst-kix_eein7yasug7r-7{list-style-type:none}ol.lst-kix_eein7yasug7r-2{list-style-type:none}ol.lst-kix_eein7yasug7r-1{list-style-type:none}ol.lst-kix_eein7yasug7r-4{list-style-type:none}ol.lst-kix_eein7yasug7r-3{list-style-type:none}.lst-kix_fqw21crzvbrc-3>li:before{content:"\0025cf "}ol.lst-kix_eein7yasug7r-0{list-style-type:none}ul.lst-kix_fq0f3fp2kz7v-5{list-style-type:none}.lst-kix_fqw21crzvbrc-1>li:before{content:"\0025cb "}.lst-kix_fqw21crzvbrc-5>li:before{content:"\0025a0 "}ul.lst-kix_fq0f3fp2kz7v-6{list-style-type:none}ul.lst-kix_fq0f3fp2kz7v-7{list-style-type:none}ul.lst-kix_fq0f3fp2kz7v-8{list-style-type:none}ul.lst-kix_fq0f3fp2kz7v-1{list-style-type:none}ul.lst-kix_fq0f3fp2kz7v-2{list-style-type:none}.lst-kix_fqw21crzvbrc-7>li:before{content:"\0025cb "}ol.lst-kix_eein7yasug7r-0.start{counter-reset:lst-ctn-kix_eein7yasug7r-0 0}ul.lst-kix_fq0f3fp2kz7v-3{list-style-type:none}ul.lst-kix_fq0f3fp2kz7v-4{list-style-type:none}ul.lst-kix_fq0f3fp2kz7v-0{list-style-type:none}ul.lst-kix_oojgn0vd07p0-6{list-style-type:none}ul.lst-kix_oojgn0vd07p0-5{list-style-type:none}ul.lst-kix_oojgn0vd07p0-8{list-style-type:none}ul.lst-kix_oojgn0vd07p0-7{list-style-type:none}ul.lst-kix_oojgn0vd07p0-2{list-style-type:none}ul.lst-kix_oojgn0vd07p0-1{list-style-type:none}ul.lst-kix_oojgn0vd07p0-4{list-style-type:none}.lst-kix_vyjo33e5etkp-2>li:before{content:"\0025a0 "}.lst-kix_eein7yasug7r-8>li{counter-increment:lst-ctn-kix_eein7yasug7r-8}ul.lst-kix_oojgn0vd07p0-3{list-style-type:none}ul.lst-kix_oojgn0vd07p0-0{list-style-type:none}ol.lst-kix_6imt9oh7va4p-0.start{counter-reset:lst-ctn-kix_6imt9oh7va4p-0 0}.lst-kix_7qvnfc4ea6es-4>li:before{content:"\0025cb "}.lst-kix_6imt9oh7va4p-4>li{counter-increment:lst-ctn-kix_6imt9oh7va4p-4}.lst-kix_7qvnfc4ea6es-3>li:before{content:"\0025cf "}.lst-kix_7qvnfc4ea6es-7>li:before{content:"\0025cb "}ol.lst-kix_5k127236ue1h-3.start{counter-reset:lst-ctn-kix_5k127236ue1h-3 0}ol.lst-kix_wkc10sxa2vip-5.start{counter-reset:lst-ctn-kix_wkc10sxa2vip-5 0}.lst-kix_eein7yasug7r-0>li{counter-increment:lst-ctn-kix_eein7yasug7r-0}.lst-kix_7qvnfc4ea6es-0>li:before{content:"\0025cf "}ol.lst-kix_5k127236ue1h-3{list-style-type:none}ol.lst-kix_5k127236ue1h-4{list-style-type:none}ol.lst-kix_5k127236ue1h-5{list-style-type:none}.lst-kix_6imt9oh7va4p-0>li:before{content:"" counter(lst-ctn-kix_6imt9oh7va4p-0,decimal) ". "}ol.lst-kix_5k127236ue1h-6{list-style-type:none}ol.lst-kix_5k127236ue1h-7{list-style-type:none}ol.lst-kix_5k127236ue1h-8{list-style-type:none}ol.lst-kix_wkc10sxa2vip-0.start{counter-reset:lst-ctn-kix_wkc10sxa2vip-0 0}ol.lst-kix_5k127236ue1h-0{list-style-type:none}ol.lst-kix_5k127236ue1h-1{list-style-type:none}.lst-kix_6imt9oh7va4p-1>li:before{content:"" counter(lst-ctn-kix_6imt9oh7va4p-1,lower-latin) ". "}ol.lst-kix_5k127236ue1h-2{list-style-type:none}.lst-kix_7qvnfc4ea6es-8>li:before{content:"\0025a0 "}ol.lst-kix_nupi7wb5oa83-4.start{counter-reset:lst-ctn-kix_nupi7wb5oa83-4 0}ol.lst-kix_nupi7wb5oa83-5.start{counter-reset:lst-ctn-kix_nupi7wb5oa83-5 0}.lst-kix_eein7yasug7r-3>li:before{content:"" counter(lst-ctn-kix_eein7yasug7r-3,decimal) ". "}.lst-kix_odxcdwwquxh8-0>li:before{content:"\0025cf "}.lst-kix_odxcdwwquxh8-1>li:before{content:"\0025cb "}ol.lst-kix_5k127236ue1h-4.start{counter-reset:lst-ctn-kix_5k127236ue1h-4 0}.lst-kix_eein7yasug7r-2>li:before{content:"" counter(lst-ctn-kix_eein7yasug7r-2,lower-roman) ". "}.lst-kix_dngwqbtawag0-2>li:before{content:"\0025a0 "}.lst-kix_6imt9oh7va4p-8>li:before{content:"" counter(lst-ctn-kix_6imt9oh7va4p-8,lower-roman) ". "}.lst-kix_dngwqbtawag0-1>li:before{content:"\0025cb "}.lst-kix_5k127236ue1h-7>li{counter-increment:lst-ctn-kix_5k127236ue1h-7}.lst-kix_eein7yasug7r-7>li{counter-increment:lst-ctn-kix_eein7yasug7r-7}.lst-kix_6imt9oh7va4p-4>li:before{content:"" counter(lst-ctn-kix_6imt9oh7va4p-4,lower-latin) ". "}.lst-kix_6imt9oh7va4p-5>li:before{content:"" counter(lst-ctn-kix_6imt9oh7va4p-5,lower-roman) ". "}.lst-kix_nupi7wb5oa83-5>li:before{content:"" counter(lst-ctn-kix_nupi7wb5oa83-5,lower-roman) ". "}.lst-kix_nupi7wb5oa83-6>li:before{content:"" counter(lst-ctn-kix_nupi7wb5oa83-6,decimal) ". "}.lst-kix_wkc10sxa2vip-3>li{counter-increment:lst-ctn-kix_wkc10sxa2vip-3}ul.lst-kix_sv54fp2cxfj-0{list-style-type:none}ul.lst-kix_8zqdo4oh100d-2{list-style-type:none}ul.lst-kix_sv54fp2cxfj-1{list-style-type:none}ul.lst-kix_8zqdo4oh100d-1{list-style-type:none}ul.lst-kix_8zqdo4oh100d-0{list-style-type:none}.lst-kix_odxcdwwquxh8-4>li:before{content:"\0025cb "}.lst-kix_odxcdwwquxh8-8>li:before{content:"\0025a0 "}.lst-kix_9i4fyzc013yz-1>li:before{content:"\0025cb "}.lst-kix_9i4fyzc013yz-5>li:before{content:"\0025a0 "}.lst-kix_odxcdwwquxh8-5>li:before{content:"\0025a0 "}.lst-kix_9i4fyzc013yz-2>li:before{content:"\0025a0 "}.lst-kix_9i4fyzc013yz-6>li:before{content:"\0025cf "}ul.lst-kix_sv54fp2cxfj-8{list-style-type:none}.lst-kix_nupi7wb5oa83-1>li:before{content:"" counter(lst-ctn-kix_nupi7wb5oa83-1,lower-latin) ". "}.lst-kix_nupi7wb5oa83-2>li:before{content:"" counter(lst-ctn-kix_nupi7wb5oa83-2,lower-roman) ". "}ul.lst-kix_sv54fp2cxfj-6{list-style-type:none}ul.lst-kix_8zqdo4oh100d-8{list-style-type:none}ul.lst-kix_sv54fp2cxfj-7{list-style-type:none}ul.lst-kix_8zqdo4oh100d-7{list-style-type:none}.lst-kix_dngwqbtawag0-5>li:before{content:"\0025a0 "}ul.lst-kix_sv54fp2cxfj-4{list-style-type:none}ul.lst-kix_8zqdo4oh100d-6{list-style-type:none}ul.lst-kix_sv54fp2cxfj-5{list-style-type:none}ul.lst-kix_8zqdo4oh100d-5{list-style-type:none}ul.lst-kix_sv54fp2cxfj-2{list-style-type:none}ul.lst-kix_8zqdo4oh100d-4{list-style-type:none}ul.lst-kix_sv54fp2cxfj-3{list-style-type:none}ul.lst-kix_8zqdo4oh100d-3{list-style-type:none}.lst-kix_dngwqbtawag0-6>li:before{content:"\0025cf "}.lst-kix_lygw3md2dpbe-0>li:before{content:"\0025cf "}.lst-kix_x3uevqu79rxt-6>li:before{content:"\0025cf "}.lst-kix_kazl6izhs824-0>li:before{content:"\0025cf "}.lst-kix_lygw3md2dpbe-4>li:before{content:"\0025cb "}.lst-kix_sv54fp2cxfj-1>li:before{content:"\0025cb "}.lst-kix_x3uevqu79rxt-2>li:before{content:"\0025a0 "}.lst-kix_wkc10sxa2vip-6>li:before{content:"" counter(lst-ctn-kix_wkc10sxa2vip-6,decimal) ". "}.lst-kix_kazl6izhs824-4>li:before{content:"\0025cb "}.lst-kix_kazl6izhs824-8>li:before{content:"\0025a0 "}ol.lst-kix_wkc10sxa2vip-7.start{counter-reset:lst-ctn-kix_wkc10sxa2vip-7 0}.lst-kix_jvj1shpofnc2-1>li:before{content:"\0025cb "}.lst-kix_jvj1shpofnc2-5>li:before{content:"\0025a0 "}.lst-kix_wkc10sxa2vip-2>li:before{content:"" counter(lst-ctn-kix_wkc10sxa2vip-2,lower-roman) ". "}.lst-kix_8zqdo4oh100d-6>li:before{content:"\0025cf "}.lst-kix_sv54fp2cxfj-5>li:before{content:"\0025a0 "}.lst-kix_8zqdo4oh100d-2>li:before{content:"\0025a0 "}ol.lst-kix_wkc10sxa2vip-4.start{counter-reset:lst-ctn-kix_wkc10sxa2vip-4 0}.lst-kix_wkc10sxa2vip-1>li{counter-increment:lst-ctn-kix_wkc10sxa2vip-1}.lst-kix_5k127236ue1h-3>li:before{content:"" counter(lst-ctn-kix_5k127236ue1h-3,decimal) ". "}ol.lst-kix_5k127236ue1h-2.start{counter-reset:lst-ctn-kix_5k127236ue1h-2 0}.lst-kix_eein7yasug7r-6>li:before{content:"" counter(lst-ctn-kix_eein7yasug7r-6,decimal) ". "}.lst-kix_fq0f3fp2kz7v-7>li:before{content:"\0025cb "}.lst-kix_wkc10sxa2vip-8>li{counter-increment:lst-ctn-kix_wkc10sxa2vip-8}ol.lst-kix_wkc10sxa2vip-6.start{counter-reset:lst-ctn-kix_wkc10sxa2vip-6 0}.lst-kix_vyjo33e5etkp-5>li:before{content:"\0025a0 "}ol.lst-kix_nupi7wb5oa83-8.start{counter-reset:lst-ctn-kix_nupi7wb5oa83-8 0}.lst-kix_rkdqgfllapc3-7>li:before{content:"\0025cb "}.lst-kix_fq0f3fp2kz7v-3>li:before{content:"\0025cf "}.lst-kix_6imt9oh7va4p-6>li{counter-increment:lst-ctn-kix_6imt9oh7va4p-6}.lst-kix_ghfuaj9pbcrg-7>li:before{content:"\0025cb "}ol.lst-kix_5k127236ue1h-1.start{counter-reset:lst-ctn-kix_5k127236ue1h-1 0}.lst-kix_fqw21crzvbrc-2>li:before{content:"\0025a0 "}ol.lst-kix_5k127236ue1h-0.start{counter-reset:lst-ctn-kix_5k127236ue1h-0 0}.lst-kix_5k127236ue1h-2>li{counter-increment:lst-ctn-kix_5k127236ue1h-2}ol.lst-kix_6imt9oh7va4p-5{list-style-type:none}ol.lst-kix_6imt9oh7va4p-6{list-style-type:none}.lst-kix_fqw21crzvbrc-6>li:before{content:"\0025cf "}ol.lst-kix_6imt9oh7va4p-7{list-style-type:none}ol.lst-kix_6imt9oh7va4p-8{list-style-type:none}.lst-kix_rkdqgfllapc3-3>li:before{content:"\0025cf "}ol.lst-kix_6imt9oh7va4p-1{list-style-type:none}ol.lst-kix_6imt9oh7va4p-2{list-style-type:none}ol.lst-kix_6imt9oh7va4p-3{list-style-type:none}ol.lst-kix_6imt9oh7va4p-4{list-style-type:none}.lst-kix_nupi7wb5oa83-8>li{counter-increment:lst-ctn-kix_nupi7wb5oa83-8}.lst-kix_vyjo33e5etkp-1>li:before{content:"\0025cb "}.lst-kix_eein7yasug7r-5>li{counter-increment:lst-ctn-kix_eein7yasug7r-5}ol.lst-kix_eein7yasug7r-4.start{counter-reset:lst-ctn-kix_eein7yasug7r-4 0}ol.lst-kix_nupi7wb5oa83-7.start{counter-reset:lst-ctn-kix_nupi7wb5oa83-7 0}ol.lst-kix_6imt9oh7va4p-0{list-style-type:none}.lst-kix_nupi7wb5oa83-1>li{counter-increment:lst-ctn-kix_nupi7wb5oa83-1}ul.lst-kix_lygw3md2dpbe-3{list-style-type:none}ul.lst-kix_uhwfqoxcjq6n-3{list-style-type:none}ul.lst-kix_lygw3md2dpbe-4{list-style-type:none}ul.lst-kix_uhwfqoxcjq6n-4{list-style-type:none}ul.lst-kix_lygw3md2dpbe-1{list-style-type:none}ul.lst-kix_uhwfqoxcjq6n-5{list-style-type:none}ul.lst-kix_lygw3md2dpbe-2{list-style-type:none}.lst-kix_uhwfqoxcjq6n-1>li:before{content:"\0025cb "}.lst-kix_uhwfqoxcjq6n-3>li:before{content:"\0025cf "}ul.lst-kix_uhwfqoxcjq6n-6{list-style-type:none}ul.lst-kix_lygw3md2dpbe-0{list-style-type:none}ul.lst-kix_uhwfqoxcjq6n-0{list-style-type:none}ul.lst-kix_uhwfqoxcjq6n-1{list-style-type:none}.lst-kix_uhwfqoxcjq6n-2>li:before{content:"\0025a0 "}ul.lst-kix_uhwfqoxcjq6n-2{list-style-type:none}ul.lst-kix_lygw3md2dpbe-7{list-style-type:none}ul.lst-kix_lygw3md2dpbe-8{list-style-type:none}ul.lst-kix_lygw3md2dpbe-5{list-style-type:none}ul.lst-kix_lygw3md2dpbe-6{list-style-type:none}.lst-kix_uhwfqoxcjq6n-0>li:before{content:"\0025cf "}.lst-kix_6imt9oh7va4p-5>li{counter-increment:lst-ctn-kix_6imt9oh7va4p-5}.lst-kix_5k127236ue1h-6>li{counter-increment:lst-ctn-kix_5k127236ue1h-6}ul.lst-kix_uhwfqoxcjq6n-7{list-style-type:none}ul.lst-kix_uhwfqoxcjq6n-8{list-style-type:none}.lst-kix_5k127236ue1h-5>li:before{content:"" counter(lst-ctn-kix_5k127236ue1h-5,lower-roman) ". "}.lst-kix_5k127236ue1h-6>li:before{content:"" counter(lst-ctn-kix_5k127236ue1h-6,decimal) ". "}ol.lst-kix_6imt9oh7va4p-4.start{counter-reset:lst-ctn-kix_6imt9oh7va4p-4 0}.lst-kix_5k127236ue1h-7>li:before{content:"" counter(lst-ctn-kix_5k127236ue1h-7,lower-latin) ". "}.lst-kix_eein7yasug7r-3>li{counter-increment:lst-ctn-kix_eein7yasug7r-3}.lst-kix_uhwfqoxcjq6n-5>li:before{content:"\0025a0 "}.lst-kix_5k127236ue1h-8>li:before{content:"" counter(lst-ctn-kix_5k127236ue1h-8,lower-roman) ". "}.lst-kix_uhwfqoxcjq6n-4>li:before{content:"\0025cb "}.lst-kix_wj0ugibz1wiu-6>li:before{content:"\0025cf "}ul.lst-kix_ghfuaj9pbcrg-7{list-style-type:none}ul.lst-kix_ghfuaj9pbcrg-8{list-style-type:none}ol.lst-kix_wkc10sxa2vip-2.start{counter-reset:lst-ctn-kix_wkc10sxa2vip-2 0}ul.lst-kix_ghfuaj9pbcrg-5{list-style-type:none}ul.lst-kix_ghfuaj9pbcrg-6{list-style-type:none}ul.lst-kix_ghfuaj9pbcrg-3{list-style-type:none}.lst-kix_wj0ugibz1wiu-3>li:before{content:"\0025cf "}.lst-kix_wj0ugibz1wiu-7>li:before{content:"\0025cb "}ul.lst-kix_ghfuaj9pbcrg-4{list-style-type:none}.lst-kix_uhwfqoxcjq6n-6>li:before{content:"\0025cf "}ul.lst-kix_ghfuaj9pbcrg-1{list-style-type:none}.lst-kix_wkc10sxa2vip-6>li{counter-increment:lst-ctn-kix_wkc10sxa2vip-6}ul.lst-kix_ghfuaj9pbcrg-2{list-style-type:none}ul.lst-kix_ghfuaj9pbcrg-0{list-style-type:none}.lst-kix_uhwfqoxcjq6n-7>li:before{content:"\0025cb "}.lst-kix_lygw3md2dpbe-8>li:before{content:"\0025a0 "}.lst-kix_wj0ugibz1wiu-4>li:before{content:"\0025cb "}.lst-kix_wj0ugibz1wiu-5>li:before{content:"\0025a0 "}.lst-kix_uhwfqoxcjq6n-8>li:before{content:"\0025a0 "}.lst-kix_wj0ugibz1wiu-2>li:before{content:"\0025a0 "}.lst-kix_wj0ugibz1wiu-0>li:before{content:"\0025cf "}.lst-kix_6imt9oh7va4p-1>li{counter-increment:lst-ctn-kix_6imt9oh7va4p-1}.lst-kix_wj0ugibz1wiu-1>li:before{content:"\0025cb "}ol.lst-kix_nupi7wb5oa83-7{list-style-type:none}ol.lst-kix_nupi7wb5oa83-8{list-style-type:none}.lst-kix_lygw3md2dpbe-1>li:before{content:"\0025cb "}ul.lst-kix_wj0ugibz1wiu-0{list-style-type:none}ul.lst-kix_wj0ugibz1wiu-4{list-style-type:none}ul.lst-kix_wj0ugibz1wiu-3{list-style-type:none}.lst-kix_lygw3md2dpbe-3>li:before{content:"\0025cf "}.lst-kix_lygw3md2dpbe-7>li:before{content:"\0025cb "}ul.lst-kix_wj0ugibz1wiu-2{list-style-type:none}ul.lst-kix_wj0ugibz1wiu-1{list-style-type:none}ul.lst-kix_wj0ugibz1wiu-8{list-style-type:none}ul.lst-kix_wj0ugibz1wiu-7{list-style-type:none}.lst-kix_kazl6izhs824-1>li:before{content:"\0025cb "}ul.lst-kix_wj0ugibz1wiu-6{list-style-type:none}ul.lst-kix_wj0ugibz1wiu-5{list-style-type:none}.lst-kix_wj0ugibz1wiu-8>li:before{content:"\0025a0 "}.lst-kix_kazl6izhs824-3>li:before{content:"\0025cf "}ol.lst-kix_nupi7wb5oa83-0.start{counter-reset:lst-ctn-kix_nupi7wb5oa83-0 0}.lst-kix_lygw3md2dpbe-5>li:before{content:"\0025a0 "}.lst-kix_kazl6izhs824-5>li:before{content:"\0025a0 "}ol.lst-kix_5k127236ue1h-5.start{counter-reset:lst-ctn-kix_5k127236ue1h-5 0}.lst-kix_5k127236ue1h-4>li:before{content:"" counter(lst-ctn-kix_5k127236ue1h-4,lower-latin) ". "}.lst-kix_kazl6izhs824-7>li:before{content:"\0025cb "}.lst-kix_6imt9oh7va4p-8>li{counter-increment:lst-ctn-kix_6imt9oh7va4p-8}ol.lst-kix_nupi7wb5oa83-1{list-style-type:none}ol.lst-kix_nupi7wb5oa83-2{list-style-type:none}.lst-kix_5k127236ue1h-2>li:before{content:"" counter(lst-ctn-kix_5k127236ue1h-2,lower-roman) ". "}.lst-kix_eein7yasug7r-5>li:before{content:"" counter(lst-ctn-kix_eein7yasug7r-5,lower-roman) ". "}.lst-kix_eein7yasug7r-7>li:before{content:"" counter(lst-ctn-kix_eein7yasug7r-7,lower-latin) ". "}ol.lst-kix_nupi7wb5oa83-0{list-style-type:none}ol.lst-kix_nupi7wb5oa83-5{list-style-type:none}ol.lst-kix_nupi7wb5oa83-6{list-style-type:none}.lst-kix_5k127236ue1h-0>li:before{content:"" counter(lst-ctn-kix_5k127236ue1h-0,decimal) ". "}ol.lst-kix_nupi7wb5oa83-3{list-style-type:none}ol.lst-kix_nupi7wb5oa83-4{list-style-type:none}.lst-kix_eein7yasug7r-2>li{counter-increment:lst-ctn-kix_eein7yasug7r-2}ol.lst-kix_6imt9oh7va4p-1.start{counter-reset:lst-ctn-kix_6imt9oh7va4p-1 0}.lst-kix_6imt9oh7va4p-2>li{counter-increment:lst-ctn-kix_6imt9oh7va4p-2}ul.lst-kix_c0ts0b7hihra-1{list-style-type:none}ul.lst-kix_c0ts0b7hihra-0{list-style-type:none}ul.lst-kix_c0ts0b7hihra-3{list-style-type:none}ul.lst-kix_c0ts0b7hihra-2{list-style-type:none}.lst-kix_rkdqgfllapc3-8>li:before{content:"\0025a0 "}.lst-kix_rkdqgfllapc3-6>li:before{content:"\0025cf "}ol.lst-kix_5k127236ue1h-7.start{counter-reset:lst-ctn-kix_5k127236ue1h-7 0}.lst-kix_rkdqgfllapc3-0>li:before{content:"\0025cf "}.lst-kix_rkdqgfllapc3-4>li:before{content:"\0025cb "}ul.lst-kix_c0ts0b7hihra-8{list-style-type:none}ul.lst-kix_c0ts0b7hihra-5{list-style-type:none}ul.lst-kix_c0ts0b7hihra-4{list-style-type:none}.lst-kix_5k127236ue1h-5>li{counter-increment:lst-ctn-kix_5k127236ue1h-5}ul.lst-kix_c0ts0b7hihra-7{list-style-type:none}ol.lst-kix_nupi7wb5oa83-2.start{counter-reset:lst-ctn-kix_nupi7wb5oa83-2 0}.lst-kix_rkdqgfllapc3-2>li:before{content:"\0025a0 "}ul.lst-kix_c0ts0b7hihra-6{list-style-type:none}.lst-kix_nupi7wb5oa83-5>li{counter-increment:lst-ctn-kix_nupi7wb5oa83-5}.lst-kix_7qvnfc4ea6es-6>li:before{content:"\0025cf "}ul.lst-kix_rkdqgfllapc3-7{list-style-type:none}.lst-kix_wkc10sxa2vip-5>li{counter-increment:lst-ctn-kix_wkc10sxa2vip-5}ul.lst-kix_rkdqgfllapc3-8{list-style-type:none}ul.lst-kix_rkdqgfllapc3-5{list-style-type:none}ul.lst-kix_rkdqgfllapc3-6{list-style-type:none}ul.lst-kix_rkdqgfllapc3-3{list-style-type:none}ul.lst-kix_rkdqgfllapc3-4{list-style-type:none}ul.lst-kix_x3uevqu79rxt-8{list-style-type:none}ul.lst-kix_rkdqgfllapc3-1{list-style-type:none}ol.lst-kix_eein7yasug7r-1.start{counter-reset:lst-ctn-kix_eein7yasug7r-1 0}ul.lst-kix_rkdqgfllapc3-2{list-style-type:none}ul.lst-kix_x3uevqu79rxt-6{list-style-type:none}ul.lst-kix_x3uevqu79rxt-7{list-style-type:none}ul.lst-kix_rkdqgfllapc3-0{list-style-type:none}ul.lst-kix_x3uevqu79rxt-4{list-style-type:none}.lst-kix_nupi7wb5oa83-0>li{counter-increment:lst-ctn-kix_nupi7wb5oa83-0}ul.lst-kix_x3uevqu79rxt-5{list-style-type:none}.lst-kix_7qvnfc4ea6es-5>li:before{content:"\0025a0 "}.lst-kix_7qvnfc4ea6es-2>li:before{content:"\0025a0 "}ol.lst-kix_eein7yasug7r-7.start{counter-reset:lst-ctn-kix_eein7yasug7r-7 0}.lst-kix_7qvnfc4ea6es-1>li:before{content:"\0025cb "}ul.lst-kix_kazl6izhs824-0{list-style-type:none}.lst-kix_6imt9oh7va4p-2>li:before{content:"" counter(lst-ctn-kix_6imt9oh7va4p-2,lower-roman) ". "}.lst-kix_6imt9oh7va4p-3>li:before{content:"" counter(lst-ctn-kix_6imt9oh7va4p-3,decimal) ". "}ul.lst-kix_fqw21crzvbrc-8{list-style-type:none}ul.lst-kix_fqw21crzvbrc-5{list-style-type:none}ol.lst-kix_6imt9oh7va4p-2.start{counter-reset:lst-ctn-kix_6imt9oh7va4p-2 0}ul.lst-kix_fqw21crzvbrc-4{list-style-type:none}ul.lst-kix_fqw21crzvbrc-7{list-style-type:none}ul.lst-kix_fqw21crzvbrc-6{list-style-type:none}ul.lst-kix_x3uevqu79rxt-2{list-style-type:none}ul.lst-kix_x3uevqu79rxt-3{list-style-type:none}.lst-kix_wkc10sxa2vip-7>li{counter-increment:lst-ctn-kix_wkc10sxa2vip-7}ul.lst-kix_x3uevqu79rxt-0{list-style-type:none}ul.lst-kix_x3uevqu79rxt-1{list-style-type:none}.lst-kix_5k127236ue1h-3>li{counter-increment:lst-ctn-kix_5k127236ue1h-3}ul.lst-kix_kazl6izhs824-7{list-style-type:none}ul.lst-kix_kazl6izhs824-8{list-style-type:none}ul.lst-kix_kazl6izhs824-5{list-style-type:none}ul.lst-kix_kazl6izhs824-6{list-style-type:none}ul.lst-kix_kazl6izhs824-3{list-style-type:none}ul.lst-kix_kazl6izhs824-4{list-style-type:none}ul.lst-kix_kazl6izhs824-1{list-style-type:none}ul.lst-kix_kazl6izhs824-2{list-style-type:none}.lst-kix_dngwqbtawag0-7>li:before{content:"\0025cb "}.lst-kix_eein7yasug7r-1>li:before{content:"" counter(lst-ctn-kix_eein7yasug7r-1,lower-latin) ". "}.lst-kix_dngwqbtawag0-8>li:before{content:"\0025a0 "}.lst-kix_eein7yasug7r-0>li:before{content:"" counter(lst-ctn-kix_eein7yasug7r-0,decimal) ". "}.lst-kix_eein7yasug7r-4>li:before{content:"" counter(lst-ctn-kix_eein7yasug7r-4,lower-latin) ". "}.lst-kix_dngwqbtawag0-4>li:before{content:"\0025cb "}.lst-kix_odxcdwwquxh8-2>li:before{content:"\0025a0 "}.lst-kix_dngwqbtawag0-3>li:before{content:"\0025cf "}.lst-kix_odxcdwwquxh8-3>li:before{content:"\0025cf "}ul.lst-kix_fqw21crzvbrc-1{list-style-type:none}ul.lst-kix_fqw21crzvbrc-0{list-style-type:none}ul.lst-kix_fqw21crzvbrc-3{list-style-type:none}ol.lst-kix_eein7yasug7r-2.start{counter-reset:lst-ctn-kix_eein7yasug7r-2 0}ul.lst-kix_fqw21crzvbrc-2{list-style-type:none}.lst-kix_6imt9oh7va4p-6>li:before{content:"" counter(lst-ctn-kix_6imt9oh7va4p-6,decimal) ". "}.lst-kix_6imt9oh7va4p-7>li:before{content:"" counter(lst-ctn-kix_6imt9oh7va4p-7,lower-latin) ". "}.lst-kix_dngwqbtawag0-0>li:before{content:"\0025cf "}.lst-kix_nupi7wb5oa83-4>li{counter-increment:lst-ctn-kix_nupi7wb5oa83-4}.lst-kix_5k127236ue1h-1>li{counter-increment:lst-ctn-kix_5k127236ue1h-1}.lst-kix_nupi7wb5oa83-4>li:before{content:"" counter(lst-ctn-kix_nupi7wb5oa83-4,lower-latin) ". "}.lst-kix_nupi7wb5oa83-8>li:before{content:"" counter(lst-ctn-kix_nupi7wb5oa83-8,lower-roman) ". "}.lst-kix_nupi7wb5oa83-7>li:before{content:"" counter(lst-ctn-kix_nupi7wb5oa83-7,lower-latin) ". "}.lst-kix_9i4fyzc013yz-0>li:before{content:"\0025cf "}.lst-kix_odxcdwwquxh8-6>li:before{content:"\0025cf "}.lst-kix_9i4fyzc013yz-3>li:before{content:"\0025cf "}.lst-kix_nupi7wb5oa83-0>li:before{content:"" counter(lst-ctn-kix_nupi7wb5oa83-0,decimal) ". "}.lst-kix_nupi7wb5oa83-3>li:before{content:"" counter(lst-ctn-kix_nupi7wb5oa83-3,decimal) ". "}.lst-kix_odxcdwwquxh8-7>li:before{content:"\0025cb "}.lst-kix_9i4fyzc013yz-4>li:before{content:"\0025cb "}.lst-kix_x3uevqu79rxt-0>li:before{content:"\0025cf "}.lst-kix_x3uevqu79rxt-4>li:before{content:"\0025cb "}ul.lst-kix_odxcdwwquxh8-6{list-style-type:none}ol.lst-kix_6imt9oh7va4p-6.start{counter-reset:lst-ctn-kix_6imt9oh7va4p-6 0}.lst-kix_lygw3md2dpbe-2>li:before{content:"\0025a0 "}.lst-kix_9i4fyzc013yz-7>li:before{content:"\0025cb "}ul.lst-kix_odxcdwwquxh8-5{list-style-type:none}ul.lst-kix_odxcdwwquxh8-8{list-style-type:none}ul.lst-kix_odxcdwwquxh8-7{list-style-type:none}ul.lst-kix_odxcdwwquxh8-2{list-style-type:none}ul.lst-kix_odxcdwwquxh8-1{list-style-type:none}ul.lst-kix_odxcdwwquxh8-4{list-style-type:none}ul.lst-kix_odxcdwwquxh8-3{list-style-type:none}.lst-kix_lygw3md2dpbe-6>li:before{content:"\0025cf "}.lst-kix_sv54fp2cxfj-3>li:before{content:"\0025cf "}.lst-kix_eein7yasug7r-4>li{counter-increment:lst-ctn-kix_eein7yasug7r-4}.lst-kix_wkc10sxa2vip-0>li:before{content:"" counter(lst-ctn-kix_wkc10sxa2vip-0,decimal) ". "}.lst-kix_fqw21crzvbrc-8>li:before{content:"\0025a0 "}.lst-kix_kazl6izhs824-2>li:before{content:"\0025a0 "}.lst-kix_nupi7wb5oa83-7>li{counter-increment:lst-ctn-kix_nupi7wb5oa83-7}ol.lst-kix_eein7yasug7r-5.start{counter-reset:lst-ctn-kix_eein7yasug7r-5 0}.lst-kix_kazl6izhs824-6>li:before{content:"\0025cf "}.lst-kix_6imt9oh7va4p-0>li{counter-increment:lst-ctn-kix_6imt9oh7va4p-0}.lst-kix_wkc10sxa2vip-4>li:before{content:"" counter(lst-ctn-kix_wkc10sxa2vip-4,lower-latin) ". "}.lst-kix_wkc10sxa2vip-8>li:before{content:"" counter(lst-ctn-kix_wkc10sxa2vip-8,lower-roman) ". "}.lst-kix_8zqdo4oh100d-8>li:before{content:"\0025a0 "}.lst-kix_eein7yasug7r-6>li{counter-increment:lst-ctn-kix_eein7yasug7r-6}.lst-kix_jvj1shpofnc2-7>li:before{content:"\0025cb "}ol.lst-kix_eein7yasug7r-8.start{counter-reset:lst-ctn-kix_eein7yasug7r-8 0}.lst-kix_8zqdo4oh100d-0>li:before{content:"\0025cf "}.lst-kix_8zqdo4oh100d-4>li:before{content:"\0025cb "}.lst-kix_eein7yasug7r-8>li:before{content:"" counter(lst-ctn-kix_eein7yasug7r-8,lower-roman) ". "}.lst-kix_sv54fp2cxfj-7>li:before{content:"\0025cb "}.lst-kix_5k127236ue1h-1>li:before{content:"" counter(lst-ctn-kix_5k127236ue1h-1,lower-latin) ". "}.lst-kix_jvj1shpofnc2-3>li:before{content:"\0025cf "}ol.lst-kix_6imt9oh7va4p-8.start{counter-reset:lst-ctn-kix_6imt9oh7va4p-8 0}ol.lst-kix_eein7yasug7r-6.start{counter-reset:lst-ctn-kix_eein7yasug7r-6 0}.lst-kix_fq0f3fp2kz7v-5>li:before{content:"\0025a0 "}.lst-kix_vyjo33e5etkp-7>li:before{content:"\0025cb "}.lst-kix_ghfuaj9pbcrg-5>li:before{content:"\0025a0 "}.lst-kix_rkdqgfllapc3-5>li:before{content:"\0025a0 "}.lst-kix_fq0f3fp2kz7v-1>li:before{content:"\0025cb "}.lst-kix_wkc10sxa2vip-2>li{counter-increment:lst-ctn-kix_wkc10sxa2vip-2}ul.lst-kix_56y7l160mnp8-3{list-style-type:none}.lst-kix_5k127236ue1h-8>li{counter-increment:lst-ctn-kix_5k127236ue1h-8}ul.lst-kix_dngwqbtawag0-7{list-style-type:none}ul.lst-kix_56y7l160mnp8-2{list-style-type:none}ul.lst-kix_dngwqbtawag0-6{list-style-type:none}ol.lst-kix_6imt9oh7va4p-7.start{counter-reset:lst-ctn-kix_6imt9oh7va4p-7 0}ul.lst-kix_56y7l160mnp8-5{list-style-type:none}.lst-kix_fqw21crzvbrc-4>li:before{content:"\0025cb "}ul.lst-kix_56y7l160mnp8-4{list-style-type:none}.lst-kix_rkdqgfllapc3-1>li:before{content:"\0025cb "}ul.lst-kix_dngwqbtawag0-8{list-style-type:none}ul.lst-kix_56y7l160mnp8-7{list-style-type:none}ul.lst-kix_56y7l160mnp8-6{list-style-type:none}ul.lst-kix_56y7l160mnp8-8{list-style-type:none}.lst-kix_fqw21crzvbrc-0>li:before{content:"\0025cf "}ul.lst-kix_56y7l160mnp8-1{list-style-type:none}ul.lst-kix_56y7l160mnp8-0{list-style-type:none}ul.lst-kix_odxcdwwquxh8-0{list-style-type:none}ul.lst-kix_9i4fyzc013yz-6{list-style-type:none}ul.lst-kix_9i4fyzc013yz-7{list-style-type:none}.lst-kix_nupi7wb5oa83-2>li{counter-increment:lst-ctn-kix_nupi7wb5oa83-2}ul.lst-kix_9i4fyzc013yz-8{list-style-type:none}.lst-kix_x3uevqu79rxt-8>li:before{content:"\0025a0 "}ul.lst-kix_9i4fyzc013yz-2{list-style-type:none}.lst-kix_vyjo33e5etkp-3>li:before{content:"\0025cf "}ul.lst-kix_9i4fyzc013yz-3{list-style-type:none}ul.lst-kix_9i4fyzc013yz-4{list-style-type:none}ul.lst-kix_dngwqbtawag0-1{list-style-type:none}ul.lst-kix_9i4fyzc013yz-5{list-style-type:none}ul.lst-kix_dngwqbtawag0-0{list-style-type:none}ul.lst-kix_dngwqbtawag0-3{list-style-type:none}ul.lst-kix_dngwqbtawag0-2{list-style-type:none}ul.lst-kix_9i4fyzc013yz-0{list-style-type:none}ul.lst-kix_dngwqbtawag0-5{list-style-type:none}ul.lst-kix_9i4fyzc013yz-1{list-style-type:none}ul.lst-kix_dngwqbtawag0-4{list-style-type:none}ol{margin:0;padding:0}table td,table th{padding:0}.c8{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;background-color:#f2f2f2;border-left-style:solid;border-bottom-width:1pt;width:327pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c60{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#b6d7a8;border-left-style:solid;border-bottom-width:1pt;width:67.5pt;border-top-color:#000000;border-bottom-style:solid}.c75{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#666666;border-top-width:1pt;border-right-width:1pt;border-left-color:#666666;vertical-align:top;border-right-color:#666666;border-left-width:1pt;border-top-style:solid;background-color:#fce5cd;border-left-style:solid;border-bottom-width:1pt;width:468pt;border-top-color:#666666;border-bottom-style:solid}.c52{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#ffe599;border-left-style:solid;border-bottom-width:1pt;width:66.8pt;border-top-color:#000000;border-bottom-style:solid}.c63{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#ffe599;border-left-style:solid;border-bottom-width:1pt;width:84pt;border-top-color:#000000;border-bottom-style:solid}.c65{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#ea9999;border-left-style:solid;border-bottom-width:1pt;width:78.8pt;border-top-color:#000000;border-bottom-style:solid}.c48{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#ea9999;border-left-style:solid;border-bottom-width:1pt;width:67.5pt;border-top-color:#000000;border-bottom-style:solid}.c61{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#b6d7a8;border-left-style:solid;border-bottom-width:1pt;width:78.8pt;border-top-color:#000000;border-bottom-style:solid}.c46{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#ea9999;border-left-style:solid;border-bottom-width:1pt;width:84pt;border-top-color:#000000;border-bottom-style:solid}.c69{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#b6d7a8;border-left-style:solid;border-bottom-width:1pt;width:66.8pt;border-top-color:#000000;border-bottom-style:solid}.c43{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#cccccc;border-left-style:solid;border-bottom-width:1pt;width:84.8pt;border-top-color:#000000;border-bottom-style:solid}.c62{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#cccccc;border-left-style:solid;border-bottom-width:1pt;width:78pt;border-top-color:#000000;border-bottom-style:solid}.c79{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#b6d7a8;border-left-style:solid;border-bottom-width:1pt;width:74.2pt;border-top-color:#000000;border-bottom-style:solid}.c81{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#ffe599;border-left-style:solid;border-bottom-width:1pt;width:78pt;border-top-color:#000000;border-bottom-style:solid}.c59{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#ea9999;border-left-style:solid;border-bottom-width:1pt;width:71.2pt;border-top-color:#000000;border-bottom-style:solid}.c24{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#b6d7a8;border-left-style:solid;border-bottom-width:1pt;width:84pt;border-top-color:#000000;border-bottom-style:solid}.c53{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#ea9999;border-left-style:solid;border-bottom-width:1pt;width:66.8pt;border-top-color:#000000;border-bottom-style:solid}.c71{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#b6d7a8;border-left-style:solid;border-bottom-width:1pt;width:71.2pt;border-top-color:#000000;border-bottom-style:solid}.c70{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#b6d7a8;border-left-style:solid;border-bottom-width:1pt;width:69pt;border-top-color:#000000;border-bottom-style:solid}.c47{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#b6d7a8;border-left-style:solid;border-bottom-width:1pt;width:78pt;border-top-color:#000000;border-bottom-style:solid}.c84{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#ffe599;border-left-style:solid;border-bottom-width:1pt;width:66pt;border-top-color:#000000;border-bottom-style:solid}.c34{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#ffe599;border-left-style:solid;border-bottom-width:1pt;width:69pt;border-top-color:#000000;border-bottom-style:solid}.c74{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;background-color:#b6d7a8;border-left-style:solid;border-bottom-width:1pt;width:66pt;border-top-color:#000000;border-bottom-style:solid}.c80{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#666666;border-top-width:1pt;border-right-width:1pt;border-left-color:#666666;vertical-align:top;border-right-color:#666666;border-left-width:1pt;border-top-style:solid;background-color:#f6b26b;border-left-style:solid;border-bottom-width:1pt;width:468pt;border-top-color:#666666;border-bottom-style:solid}.c31{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:345.8pt;border-top-color:#000000;border-bottom-style:solid}.c51{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:91.5pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c36{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:87.8pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c23{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:132.8pt;border-top-color:#000000;border-bottom-style:solid}.c26{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:0pt;border-right-width:0pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:0pt;border-top-style:solid;border-left-style:solid;border-bottom-width:0pt;width:97.5pt;border-top-color:#000000;border-bottom-style:solid}.c86{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:74.2pt;border-top-color:#000000;border-bottom-style:solid}.c42{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:97.5pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c22{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:255.8pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c95{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:66pt;border-top-color:#000000;border-bottom-style:solid}.c64{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:243.8pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c58{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:94.5pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c67{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:105pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c90{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:67.5pt;border-top-color:#000000;border-bottom-style:solid}.c72{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:84.8pt;border-top-color:#000000;border-bottom-style:solid}.c83{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:69pt;border-top-color:#000000;border-bottom-style:solid}.c12{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:102pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c85{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:71.2pt;border-top-color:#000000;border-bottom-style:solid}.c78{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:96.8pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c33{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:122.2pt;border-top-color:#000000;border-bottom-style:solid}.c55{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:233.2pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c50{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:0pt;border-right-width:0pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:0pt;border-top-style:solid;border-left-style:solid;border-bottom-width:0pt;width:370.5pt;border-top-color:#000000;border-bottom-style:solid}.c15{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:327pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c89{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:108.8pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c44{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:81.8pt;border-top-color:#000000;border-bottom-style:solid}.c7{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:330pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c21{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:335.2pt;border-top-color:#000000;border-bottom-style:solid}.c32{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:246.8pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c92{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:78.8pt;border-top-color:#000000;border-bottom-style:solid}.c35{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:254.2pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c99{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:66.8pt;border-top-color:#000000;border-bottom-style:solid}.c87{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:84pt;border-top-color:#000000;border-bottom-style:solid}.c25{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:95.2pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c77{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:90.8pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c38{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:142.5pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c5{border-right-style:solid;padding:2pt 2pt 2pt 2pt;border-bottom-color:#aaaaaa;border-top-width:1pt;border-right-width:1pt;border-left-color:#aaaaaa;vertical-align:top;border-right-color:#aaaaaa;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:141pt;border-top-color:#aaaaaa;border-bottom-style:solid}.c13{background-color:#f9f9f9;color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:12pt;font-family:"Average";font-style:normal}.c1{color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:12pt;font-family:"Average";font-style:normal}.c16{color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:12pt;font-family:"Average";font-style:normal}.c2{color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:10pt;font-family:"Average";font-style:normal}.c4{padding-top:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:left}.c29{padding-top:11pt;padding-bottom:11pt;line-height:1.6;orphans:2;widows:2;text-align:center}.c9{padding-top:11pt;padding-bottom:11pt;line-height:1.6;orphans:2;widows:2;text-align:left}.c98{color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-style:normal}.c3{padding-top:0pt;padding-bottom:0pt;line-height:1.0;text-align:center}.c17{padding-top:0pt;padding-bottom:0pt;line-height:1.0;text-align:left}.c20{border-spacing:0;border-collapse:collapse;margin-right:auto}.c18{margin-left:54pt;orphans:2;widows:2}.c27{margin-left:18pt;orphans:2;widows:2}.c94{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}.c96{padding-top:0pt;padding-bottom:0pt;text-align:justify}.c30{orphans:2;widows:2;height:12pt}.c28{font-size:18pt;font-family:"Francois One"}.c37{background-color:#ffffff;font-size:8pt}.c0{color:#1155cc;text-decoration:underline}.c91{font-size:12pt;font-family:"Francois One"}.c40{orphans:2;widows:2}.c66{font-size:12pt;font-family:"Average"}.c11{color:inherit;text-decoration:inherit}.c82{height:24pt}.c10{font-weight:700}.c76{background-color:#cccccc}.c100{font-size:14pt}.c68{height:18pt}.c6{height:0pt}.c73{font-size:10pt}.c88{background-color:#ffe599}.c41{page-break-after:avoid}.c45{background-color:#f9f9f9}.c97{font-size:8pt}.c39{line-height:1.0}.c14{background-color:#f2f2f2}.c93{background-color:#ea9999}.c49{height:12pt}.c56{height:33pt}.c54{margin-left:36pt}.c19{color:#999999}.c57{text-align:center}.title{padding-top:0pt;color:#000000;font-size:26pt;padding-bottom:3pt;font-family:"Francois One";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:center}.subtitle{padding-top:0pt;color:#666666;font-size:15pt;padding-bottom:16pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}li{color:#000000;font-size:12pt;font-family:"Average"}p{margin:0;color:#000000;font-size:12pt;font-family:"Average"}h1{padding-top:20pt;color:#000000;font-size:18pt;padding-bottom:6pt;font-family:"Francois One";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h2{padding-top:18pt;color:#000000;font-size:14pt;padding-bottom:6pt;font-family:"Francois One";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h3{padding-top:16pt;color:#434343;font-size:12pt;padding-bottom:4pt;font-family:"Francois One";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h4{padding-top:14pt;color:#666666;font-size:12pt;padding-bottom:4pt;font-family:"Average";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h5{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Average";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h6{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Average";line-height:1.15;page-break-after:avoid;font-style:italic;orphans:2;widows:2;text-align:left}</style></head><body class="c94"><div><p class="c30 c57"><span class="c19"></span></p><p class="c40 c57"><span class="c19">Copyright 2016 Digital Bazaar, Inc. (except for Data Structure sections)</span></p><p class="c40 c57"><span class="c19">Shared under a Creative Commons Attribution 4.0 International license</span></p></div><p class="c40 c41 title" id="h.e7nm32ax0m50"><span>Blockchain Technologies Feature Analysis</span></p><p class="c30 c57"><span></span></p><p class="c40"><span class="c28">Abstract</span></p><p class="c40"><span>This document analyses the security and performance characteristics of six interesting software systems related to blockchain technology and decentralized identity systems. The systems analyzed in this report are Bitcoin, Ethereum, Stellar, IPFS, Blockstack, and Hashgraph.</span></p><p class="c30"><span class="c28"></span></p><p class="c40"><span class="c28">Overview</span></p><p class="c40"><span>The security and performance findings of this report are summarized in table form at the beginning of the report. Each technology is then analyzed in detail for the rest of the report.</span></p><p class="c30"><span></span></p><p class="c40"><span>Each analysis of a particular blockchain technology starts by documenting the basic data structures used for the system. The basic data structures are a window into the information that the system needs to operate. They also provide a view into the capabilities and complexity of the given system. </span></p><p class="c30"><span></span></p><p class="c40"><span>Once the data structures are highlighted, an analysis on the security characteristics of the system is performed. This analysis is based on what the system is capable of doing today. A similar analysis is then performed for the performance characteristics of the system. Finally, the notable characteristics of the system are outlined in an attempt to highlight what makes the particular blockchain different from other blockchains.</span></p><p class="c30"><span></span></p><p class="c30"><span class="c28"></span></p><p class="c30"><span class="c28"></span></p><a id="t.5fe53f3a28528d3b8fb25871ce697d99811a35db"></a><a id="t.0"></a><table class="c20"><tbody><tr class="c6"><td class="c80" colspan="1" rowspan="1"><p class="c3"><span class="c28 c98">Disclaimer</span></p></td></tr><tr class="c6"><td class="c75" colspan="1" rowspan="1"><p class="c39 c96"><span class="c16">The analysis performed in this document is preliminary, the field of study is rapidly evolving, and thus this document is a work in progress. There may be errors or interpretations that do not align with the high-level summaries that the authors have presented in this analysis. We are actively engaging with the developer communities that created each technology analyzed in this document in an attempt to ensure that the information provided and analysis performed is accurate.</span></p></td></tr></tbody></table><hr style="page-break-before:always;display:none;"><p class="c30 c57"><span class="c28"></span></p><p class="c40 c57"><span class="c28">Table of Contents</span></p><p class="c27"><span class="c0"><a class="c11" href="#h.qgk2dtjel1kw">Terminology</a></span></p><p class="c27"><span class="c0"><a class="c11" href="#h.x3fnf46se7c8">Security Principles Summary Chart</a></span></p><p class="c27"><span class="c0"><a class="c11" href="#h.sihbr510y2eq">Performance Principles Summary Chart</a></span></p><p class="c27"><span class="c0"><a class="c11" href="#h.eyoiiixd5qnz">Bitcoin</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.jzlaq41mea29">Data Structures</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.jm3m8f55qqr4">Block Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.5oqmt8a1meol">Blockheader Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.n1c1zdk9yo5u">Transaction Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.74jh2arthmjh">Transaction Input Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.k39ipof1m79t">Transaction Output Format</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.wk6k97l77040">Security Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.jxf0mzf64kz1">Performance Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.ylmbifxhf2wt">Notable Features</a></span></p><p class="c27"><span class="c0"><a class="c11" href="#h.vow22tugv7i6">Ethereum</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.gf6xzkox80tg">Data Structures</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.vd8h3zl4p5jr">Account Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.maawhth2ri0">Message Transaction Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.fsofg65vgcx6">Receipt Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.5hxbdk87bzre">Block Format</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.egbwrx8a7x1q">Security Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.z3zhooo9dz1n">Performance Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.axjj47mppobd">Notable Features</a></span></p><p class="c27"><span class="c0"><a class="c11" href="#h.ujr4nxmppxn">Stellar</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.1d84rbdwxfwv">Data Structures</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.botkqgtk3ss0">LedgerHeader Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.9bduknnyf2xq">Account Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.iyanbpgam0lo">Transaction Format</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.mawqzi9y1r9z">Security Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.tr83tu4t9hqm">Performance Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.igm73w7416j">Notable Features</a></span></p><p class="c27"><span class="c0"><a class="c11" href="#h.4lczux9k3ogn">IPFS</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.s1ify17xernx">Data Structures</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.gcnbqiv75z6k">Object Merkle DAG - IPFSLink</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.efr4n3s0iziz">Object Merkle DAG - IPFSObject</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.otcf47nulwyx">Other</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.kqtrrq3iwj5u">Security Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.lamkl9dsmgai">Performance Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.507y5dmhr736">Notable Features</a></span></p><p class="c27"><span class="c0"><a class="c11" href="#h.i8l4yfkmtlm4">Blockstack</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.yxbimd6rpm8r">Data Structures</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.ystj6kh20d9q">Base Name Record Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.psgo8to09gv2">Base Namespace Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.bsd2bspzbnaa">Name Import Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.yozufnlf2xwm">Namespace Preorder Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.i0vaindqoodi">Namespace Reveal Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.nl9212xgtpcq">Namespace Ready Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.wk0jsqhomrwa">Name Preorder Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.km5l48whk6i4">Name Registration Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.cxsxes2n25q2">Name Revoke Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.a2tyhu9i9glo">Name Transfer Format</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.cbhkk25bjz9o">Name Update Format</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.svsymb8vgpir">Security Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.5e523xmnjen5">Performance Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.bd6y6et035ca">Notable Features</a></span></p><p class="c27"><span class="c0"><a class="c11" href="#h.qqkdfud9d2lk">Hashgraph</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.cl02u5662dd">Data Structures</a></span></p><p class="c18"><span class="c0"><a class="c11" href="#h.viufvini6ax1">Gossip Event</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.rj4bauwb66f6">Security Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.23w5auwq6zbp">Performance Characteristics</a></span></p><p class="c40 c54"><span class="c0"><a class="c11" href="#h.o6rph53wx04m">Notable Features</a></span></p><h1 class="c40 c68 c41" id="h.f35nhrch30mz"><span></span></h1><hr style="page-break-before:always;display:none;"><h1 class="c40 c41 c68" id="h.l2yv5hli0y7c"><span></span></h1><h1 class="c40 c41" id="h.qgk2dtjel1kw"><span>Terminology</span></h1><p class="c40"><span>In order to perform a meaningful analysis of each system, it is important to define and use the terminology that is applied to each system consistently. The terminology below is used throughout the document and readers are strongly advised to understand the terminology before going further and to refer back to this section in order to fully understand the usage of each term in the analysis sections.</span></p><p class="c30"><span></span></p><a id="t.38163576d2f33c3ece4ff1d5082cfe210f57b42e"></a><a id="t.1"></a><table class="c20"><tbody><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Confidentiality</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">Asserts that information is not made available or disclosed to unauthorized individuals, entities, or processes.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Integrity</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">Asserts that information accuracy and completeness of data over its entire life-cycle is maintained and assured.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Non-repudiation</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">Asserts that one party of a transaction cannot deny having received a transaction nor can the other party deny having sent a transaction.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Information Availability</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">Asserts that all information to perform a particular action must be available when it is needed.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Provenance</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">Asserts that the the chronology of ownership, custody, or location of a piece of information can be traced throughout time.</span></p><p class="c17 c49"><span class="c16"></span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Pseudonymity</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">Asserts that interactions do not expose an entity’s true name or legal identity.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Selective Disclosure</span><span class="c16"> </span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">A situation where an entity may disclose information to one or more selected entities without disclosing that information outside of the selected set.</span></p><p class="c17 c49"><span class="c16"></span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Consistency</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">Asserts that all nodes in a decentralized system see the same data at the same time.</span></p><p class="c17 c49"><span class="c16"></span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">System Availability</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">Asserts that every request receives a response about whether it succeeded or failed.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Failure Tolerance</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">Asserts that the a decentralized system continues to operate despite arbitrary partitioning due to network failures.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Scalability</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">A characteristic of a system that states how performance characteristics change as the system grows or shrinks in size.</span></p><p class="c17 c49"><span class="c16"></span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Latency</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">A characteristic of a system that states how much time it takes to complete certain operations.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Auditability</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">A characteristic of a system that ensures that the complete system state can be verified at any given time to be correct.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Liveliness</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">A characteristic of a system that states that all data requested may be retrieved from the system at any point.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">Denial of Service Resistance</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">A measure of a system’s ability to respond to requests when under extreme load. Typically, a mechanism is utilized that is capable of determining a valid request from an invalid one or that makes the price the attacker must pay far greater than the price the receiver must pay to execute the request.</span></p></td></tr><tr class="c6"><td class="c26" colspan="1" rowspan="1"><p class="c4"><span class="c10">System Complexity</span></p></td><td class="c50" colspan="1" rowspan="1"><p class="c4"><span class="c16">The level of complexity in the system that exists to achieve a set of tasks.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h1 class="c40 c68 c41" id="h.4w0pf62yfrps"><span class="c66"></span></h1><hr style="page-break-before:always;display:none;"><h1 class="c40 c68 c41" id="h.ajbq8k781nsv"><span class="c66"></span></h1><h1 class="c40 c41" id="h.x3fnf46se7c8"><span>Security Principles Summary Chart</span></h1><p class="c30"><span></span></p><a id="t.5439679a42b17ca9a6beddf9dad9247b46b0355f"></a><a id="t.2"></a><table class="c20"><tbody><tr class="c82"><td class="c43" colspan="1" rowspan="1"><p class="c3"><span class="c1">Principle</span></p></td><td class="c76 c86" colspan="1" rowspan="1"><p class="c3"><span class="c1">Bitcoin</span></p></td><td class="c92 c76" colspan="1" rowspan="1"><p class="c3"><span class="c1">Ethereum</span></p></td><td class="c76 c85" colspan="1" rowspan="1"><p class="c3"><span class="c1">Stellar</span></p></td><td class="c76 c95" colspan="1" rowspan="1"><p class="c3"><span class="c1">IPFS</span></p></td><td class="c99 c76" colspan="1" rowspan="1"><p class="c3"><span class="c1">Blockstack</span></p></td><td class="c76 c99" colspan="1" rowspan="1"><p class="c3"><span class="c1">Hashgraph</span></p></td></tr><tr class="c6"><td class="c72" colspan="1" rowspan="1"><p class="c4"><span class="c2">Confidentiality</span></p></td><td class="c86 c93" colspan="1" rowspan="1"><p class="c3"><span class="c73">None</span></p></td><td class="c65" colspan="1" rowspan="1"><p class="c3"><span class="c2">None</span></p></td><td class="c59" colspan="1" rowspan="1"><p class="c3"><span class="c2">None</span></p></td><td class="c84" colspan="1" rowspan="1"><p class="c3"><span class="c2">Hash-based content addresses</span></p></td><td class="c53" colspan="1" rowspan="1"><p class="c3"><span class="c2">None</span></p></td><td class="c53" colspan="1" rowspan="1"><p class="c3"><span class="c2">None</span></p></td></tr><tr class="c6"><td class="c72" colspan="1" rowspan="1"><p class="c4"><span class="c2">Information Availability</span></p></td><td class="c79" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block Mirroring</span></p></td><td class="c61" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block Mirroring</span></p></td><td class="c71" colspan="1" rowspan="1"><p class="c3"><span class="c2">Ledger Mirroring</span></p></td><td class="c84" colspan="1" rowspan="1"><p class="c3"><span class="c2">Graph and file Mirroring</span></p></td><td class="c52" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block Mirroring / DHT Mirroring</span></p></td><td class="c52" colspan="1" rowspan="1"><p class="c3"><span class="c2">Hashgraph Mirroring; optional event history</span></p></td></tr><tr class="c6"><td class="c72" colspan="1" rowspan="1"><p class="c4"><span class="c2">Integrity</span></p></td><td class="c86 c88" colspan="1" rowspan="1"><p class="c3"><span class="c2">Multiple block verifications</span></p></td><td class="c92 c88" colspan="1" rowspan="1"><p class="c3"><span class="c2">Multiple block verifications</span></p></td><td class="c71" colspan="1" rowspan="1"><p class="c3"><span class="c2">Latest block verification</span></p></td><td class="c74" colspan="1" rowspan="1"><p class="c3"><span class="c2">Hash-based content addressing</span></p></td><td class="c52" colspan="1" rowspan="1"><p class="c3"><span class="c2">Multiple block verifications</span></p></td><td class="c69" colspan="1" rowspan="1"><p class="c3"><span class="c2">Consensus with probability one</span></p></td></tr><tr class="c6"><td class="c72" colspan="1" rowspan="1"><p class="c4"><span class="c2">Non-repudiation</span></p></td><td class="c79" colspan="1" rowspan="1"><p class="c3"><span class="c2">Digital signatures</span></p></td><td class="c61" colspan="1" rowspan="1"><p class="c3"><span class="c2">Digital signatures</span></p></td><td class="c71" colspan="1" rowspan="1"><p class="c3"><span class="c2">Digital signatures</span></p></td><td class="c74" colspan="1" rowspan="1"><p class="c3"><span class="c2">Digital signatures</span></p></td><td class="c69" colspan="1" rowspan="1"><p class="c3"><span class="c2">Digital signatures</span></p></td><td class="c69" colspan="1" rowspan="1"><p class="c3"><span class="c2">Digital signatures</span></p></td></tr><tr class="c6"><td class="c72" colspan="1" rowspan="1"><p class="c4"><span class="c2">Provenance</span></p></td><td class="c79" colspan="1" rowspan="1"><p class="c3"><span class="c2">Transaction inputs/outputs</span></p></td><td class="c61" colspan="1" rowspan="1"><p class="c3"><span class="c2">Ethereum state machine and transition functions</span></p></td><td class="c71" colspan="1" rowspan="1"><p class="c3"><span class="c2">Digitally signed ledger transition instructions</span></p></td><td class="c74" colspan="1" rowspan="1"><p class="c3"><span class="c2">Digital signatures and versioning</span></p></td><td class="c69" colspan="1" rowspan="1"><p class="c3"><span class="c2">Transaction inputs & outputs and virtualchain references</span></p></td><td class="c52" colspan="1" rowspan="1"><p class="c3"><span class="c2">Hashgraph Mirroring; optional event history</span></p></td></tr><tr class="c6"><td class="c72" colspan="1" rowspan="1"><p class="c4"><span class="c2">Pseudonymity</span></p></td><td class="c86 c88" colspan="1" rowspan="1"><p class="c3"><span class="c2">Public keys</span></p></td><td class="c88 c92" colspan="1" rowspan="1"><p class="c3"><span class="c2">Public keys and contract addresses</span></p></td><td class="c85 c88" colspan="1" rowspan="1"><p class="c3"><span class="c2">Public keys</span></p></td><td class="c84" colspan="1" rowspan="1"><p class="c3"><span class="c2">Public keys</span></p></td><td class="c52" colspan="1" rowspan="1"><p class="c3"><span class="c2">Public keys, but public information encouraged</span></p></td><td class="c52" colspan="1" rowspan="1"><p class="c3"><span class="c2">Not supported; could be layered</span></p></td></tr><tr class="c6"><td class="c72" colspan="1" rowspan="1"><p class="c4"><span class="c2">Selective Disclosure</span></p></td><td class="c86 c93" colspan="1" rowspan="1"><p class="c3"><span class="c2">None</span></p></td><td class="c65" colspan="1" rowspan="1"><p class="c3"><span class="c2">None</span></p></td><td class="c59" colspan="1" rowspan="1"><p class="c3"><span class="c2">None</span></p></td><td class="c95 c93" colspan="1" rowspan="1"><p class="c3"><span class="c2">None</span></p></td><td class="c52" colspan="1" rowspan="1"><p class="c3"><span class="c2">Selective access to encrypted storage</span></p></td><td class="c52" colspan="1" rowspan="1"><p class="c3"><span class="c2">Not supported; could be layered</span></p></td></tr></tbody></table><h1 class="c40 c68 c41" id="h.1pz6ptwmffsj"><span></span></h1><hr style="page-break-before:always;display:none;"><h1 class="c40 c68 c41" id="h.6u85bicvywyo"><span></span></h1><h1 class="c40 c41" id="h.sihbr510y2eq"><span>Performance Principles Summary Chart</span></h1><p class="c30"><span></span></p><a id="t.3d771e4fa46297029397903b42f9ed877472b986"></a><a id="t.3"></a><table class="c20"><tbody><tr class="c6"><td class="c44 c76" colspan="1" rowspan="1"><p class="c3"><span class="c1">Principle</span></p></td><td class="c90 c76" colspan="1" rowspan="1"><p class="c3"><span class="c1">Bitcoin</span></p></td><td class="c90 c76" colspan="1" rowspan="1"><p class="c3"><span class="c1">Ethereum</span></p></td><td class="c76 c83" colspan="1" rowspan="1"><p class="c3"><span class="c1">Stellar</span></p></td><td class="c76 c87" colspan="1" rowspan="1"><p class="c3"><span class="c1">IPFS</span></p></td><td class="c99 c76" colspan="1" rowspan="1"><p class="c3"><span class="c1">Blockstack</span></p></td><td class="c62" colspan="1" rowspan="1"><p class="c3"><span class="c1">Hashgraph</span></p></td></tr><tr class="c6"><td class="c44" colspan="1" rowspan="1"><p class="c4"><span class="c2">Consistency</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block verifications. 30-60 minutes</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block verifications. 20-60 minutes</span></p></td><td class="c34" colspan="1" rowspan="1"><p class="c3"><span class="c2">Single block verification. Less than 1 minute</span></p></td><td class="c24" colspan="1" rowspan="1"><p class="c3"><span class="c2">P2P mirroring. Limited primarily by network I/O. Several seconds for files less than 128KB.</span></p></td><td class="c53" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block verifications. 30-60 minutes</span></p></td><td class="c81" colspan="1" rowspan="1"><p class="c3"><span class="c2">Consensus with probability one; Byzantine agreement, but attackers must control less than one-third</span></p></td></tr><tr class="c6"><td class="c44" colspan="1" rowspan="1"><p class="c4"><span class="c2">System Availability</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block verifications. 30-60 minutes</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block verifications. 20-60 minutes</span></p></td><td class="c34" colspan="1" rowspan="1"><p class="c3"><span class="c2">Single block verification. Less than 1 minute.</span></p></td><td class="c24" colspan="1" rowspan="1"><p class="c3"><span class="c2">Single storage request response. Several seconds for files less than 128KB</span></p></td><td class="c53" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block verifications. 30-60 minutes</span></p></td><td class="c47" colspan="1" rowspan="1"><p class="c3"><span class="c2">Virtual voting; DoS resistant w/o proof-of-work, fast gossip</span></p></td></tr><tr class="c6"><td class="c44" colspan="1" rowspan="1"><p class="c4"><span class="c2">Failure Tolerance</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">Longest chain wins</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">Longest chain wins</span></p></td><td class="c70" colspan="1" rowspan="1"><p class="c3"><span class="c2">Last balloted block always has consensus.</span></p></td><td class="c24" colspan="1" rowspan="1"><p class="c3"><span class="c2">Content address hash. Highly resilient against network partitioning</span></p></td><td class="c53" colspan="1" rowspan="1"><p class="c3"><span class="c2">Longest chain wins</span></p></td><td class="c47" colspan="1" rowspan="1"><p class="c3"><span class="c2">Strong Byzantine fault tolerance</span></p></td></tr><tr class="c6"><td class="c44" colspan="1" rowspan="1"><p class="c4"><span class="c2">Scalability</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block size. 7 transactions per second</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block size. 7-20 transactions per second</span></p></td><td class="c70" colspan="1" rowspan="1"><p class="c3"><span class="c2">Thousands to tens of thousands of transactions per second.</span></p></td><td class="c24" colspan="1" rowspan="1"><p class="c3"><span class="c2">Thousands to tens of thousands of transactions per second. Scales linearly as nodes are added.</span></p></td><td class="c53" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block size. 7 transactions per second</span></p></td><td class="c47" colspan="1" rowspan="1"><p class="c3"><span class="c2">Thousands to tens of thousands of transactions per second. Limited by bandwidth only</span></p></td></tr><tr class="c6"><td class="c44" colspan="1" rowspan="1"><p class="c4"><span class="c2">Latency</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block verifications. 30-60 minutes</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block verifications. 20-60 minutes</span></p></td><td class="c70" colspan="1" rowspan="1"><p class="c3"><span class="c2">Single block verification. Less than 1 minute.</span></p></td><td class="c24" colspan="1" rowspan="1"><p class="c3"><span class="c2">Single storage request response. Several seconds for files less than 128KB.</span></p></td><td class="c53" colspan="1" rowspan="1"><p class="c3"><span class="c2">Block verifications. 30-60 minutes</span></p></td><td class="c47" colspan="1" rowspan="1"><p class="c3"><span class="c2">Virtual voting; limited only by exponentially fast gossip protocol</span></p></td></tr><tr class="c6"><td class="c44" colspan="1" rowspan="1"><p class="c4"><span class="c2">Auditability</span></p></td><td class="c60" colspan="1" rowspan="1"><p class="c3"><span class="c2">Full</span></p></td><td class="c60" colspan="1" rowspan="1"><p class="c3"><span class="c2">Full</span></p></td><td class="c70" colspan="1" rowspan="1"><p class="c3"><span class="c2">Full</span></p></td><td class="c63" colspan="1" rowspan="1"><p class="c3"><span class="c2">Difficult</span></p></td><td class="c69" colspan="1" rowspan="1"><p class="c3"><span class="c2">Full</span></p></td><td class="c47" colspan="1" rowspan="1"><p class="c3"><span class="c2">Configurable</span></p></td></tr><tr class="c6"><td class="c44" colspan="1" rowspan="1"><p class="c4"><span class="c2">Liveliness</span></p></td><td class="c60" colspan="1" rowspan="1"><p class="c3"><span class="c2">Full</span></p></td><td class="c60" colspan="1" rowspan="1"><p class="c3"><span class="c2">Full</span></p></td><td class="c70" colspan="1" rowspan="1"><p class="c3"><span class="c2">Full</span></p></td><td class="c46" colspan="1" rowspan="1"><p class="c3"><span class="c2">Fails if nodes storing data fail</span></p></td><td class="c69" colspan="1" rowspan="1"><p class="c3"><span class="c2">Full</span></p></td><td class="c47" colspan="1" rowspan="1"><p class="c3"><span class="c2">Full</span></p></td></tr><tr class="c6"><td class="c44" colspan="1" rowspan="1"><p class="c4"><span class="c2">Denial of Service Resistance</span></p></td><td class="c60" colspan="1" rowspan="1"><p class="c3"><span class="c2">Spend Bitcoin</span></p></td><td class="c60" colspan="1" rowspan="1"><p class="c3"><span class="c2">Spend Ether</span></p></td><td class="c70" colspan="1" rowspan="1"><p class="c3"><span class="c2">Spend Stellar</span></p></td><td class="c46" colspan="1" rowspan="1"><p class="c3"><span class="c2">Files are only mirrored if requested</span></p></td><td class="c69" colspan="1" rowspan="1"><p class="c3"><span class="c2">Spend Bitcoin</span></p></td><td class="c81" colspan="1" rowspan="1"><p class="c3"><span class="c2">Signed State / Proof-of-stake / < 1/3 attackers</span></p></td></tr><tr class="c6"><td class="c44" colspan="1" rowspan="1"><p class="c4"><span class="c2">System Complexity</span></p></td><td class="c88 c90" colspan="1" rowspan="1"><p class="c3"><span class="c2">Medium</span></p></td><td class="c48" colspan="1" rowspan="1"><p class="c3"><span class="c2">High</span></p></td><td class="c34" colspan="1" rowspan="1"><p class="c3"><span class="c2">Medium</span></p></td><td class="c63" colspan="1" rowspan="1"><p class="c3"><span class="c2">Medium</span></p></td><td class="c52" colspan="1" rowspan="1"><p class="c3"><span class="c2">Medium High</span></p></td><td class="c81" colspan="1" rowspan="1"><p class="c3"><span class="c2">Low, but not full system</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h1 class="c40 c41" id="h.eyoiiixd5qnz"><span>Bitcoin</span></h1><h2 class="c40 c41" id="h.jzlaq41mea29"><span>Data Structures</span></h2><h3 class="c40 c41" id="h.jm3m8f55qqr4"><span class="c91">Block Format</span></h3><a id="t.f7abc47c06bf3510fae3d2b203d9862db289eb3a"></a><a id="t.4"></a><table class="c20"><tbody><tr class="c6"><td class="c25 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c35 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c58 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c9"><span class="c13">Magic no</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c9"><span class="c13">value always 0xD9B4BEF9</span></p></td><td class="c58" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c9"><span class="c13">Blocksize</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c9"><span class="c13">number of bytes following up to end of block</span></p></td><td class="c58" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c9"><span class="c13">Blockheader</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c9"><span class="c13">See below</span></p></td><td class="c58" colspan="1" rowspan="1"><p class="c9"><span class="c13">80 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c9"><span class="c13">Transaction counter</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c9"><span class="c13">positive integer</span></p></td><td class="c58" colspan="1" rowspan="1"><p class="c9"><span class="c13">1 - 9 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c9"><span class="c45">transactions</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c9"><span class="c13">the (non empty) list of transactions</span></p></td><td class="c58" colspan="1" rowspan="1"><p class="c9"><span class="c13"><Transaction counter>-many transactions</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.5oqmt8a1meol"><span>Blockheader Format</span></h3><p class="c30"><span></span></p><a id="t.63f42f396a45ab47b47ce22f4f9574e6e437f9c3"></a><a id="t.5"></a><table class="c20"><tbody><tr class="c6"><td class="c78 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c22 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c51 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c78" colspan="1" rowspan="1"><p class="c9"><span class="c13">Version</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c13">Block version number</span></p></td><td class="c51" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c78" colspan="1" rowspan="1"><p class="c9"><span class="c13">hashPrevBlock</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c13">256-bit hash of the previous block header</span></p></td><td class="c51" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c78" colspan="1" rowspan="1"><p class="c9"><span class="c13">hashMerkleRoot</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c13">256-bit hash based on all of the transactions in the block</span></p></td><td class="c51" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c78" colspan="1" rowspan="1"><p class="c9"><span class="c13">Time</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c13">Current timestamp as seconds since 1970-01-01T00:00 UTC</span></p></td><td class="c51" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c78" colspan="1" rowspan="1"><p class="c9"><span class="c13">Bits</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c45">Current </span><span class="c45">target</span><span class="c13"> in compact format</span></p></td><td class="c51" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c78" colspan="1" rowspan="1"><p class="c9"><span class="c13">Nonce</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c13">32-bit number (starts at 0)</span></p></td><td class="c51" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p><p class="c9 c49"><span class="c13"></span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.n1c1zdk9yo5u"><span>Transaction Format</span></h3><p class="c30"><span></span></p><a id="t.8c8f4079239fb46c988eebe4a0c9e701b291abca"></a><a id="t.6"></a><table class="c20"><tbody><tr class="c6"><td class="c42 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c22 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c14 c77" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c42" colspan="1" rowspan="1"><p class="c9"><span class="c13">Version no</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c13">currently 1</span></p></td><td class="c77" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c42" colspan="1" rowspan="1"><p class="c9"><span class="c13">In-counter</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c13">positive integer</span></p></td><td class="c77" colspan="1" rowspan="1"><p class="c9"><span class="c13">1 - 9 bytes</span></p></td></tr><tr class="c6"><td class="c42" colspan="1" rowspan="1"><p class="c9"><span class="c13">list of inputs</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c45">the first input of the first transaction is also called "coinbase" (its content was ignored in earlier versions)</span></p></td><td class="c77" colspan="1" rowspan="1"><p class="c9"><span class="c13"><in-counter>-many inputs</span></p></td></tr><tr class="c6"><td class="c42" colspan="1" rowspan="1"><p class="c9"><span class="c13">Out-counter</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c13">positive integer</span></p></td><td class="c77" colspan="1" rowspan="1"><p class="c9"><span class="c13">1 - 9 bytes</span></p></td></tr><tr class="c6"><td class="c42" colspan="1" rowspan="1"><p class="c9"><span class="c13">list of outputs</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c45">the outputs of the first transaction spend the mined bitcoins for the block</span></p></td><td class="c77" colspan="1" rowspan="1"><p class="c9"><span class="c13"><out-counter>-many outputs</span></p></td></tr><tr class="c6"><td class="c42" colspan="1" rowspan="1"><p class="c9"><span class="c13">lock_time</span></p></td><td class="c22" colspan="1" rowspan="1"><p class="c9"><span class="c13">if non-zero and sequence numbers are < 0xFFFFFFFF: block height or timestamp when transaction is final</span></p></td><td class="c77" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p><p class="c9 c49"><span class="c13"></span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.74jh2arthmjh"><span>Transaction Input Format</span></h3><p class="c30"><span></span></p><a id="t.47ccd43be05e561e57fd1f938351139d566799a5"></a><a id="t.7"></a><table class="c20"><tbody><tr class="c6"><td class="c25 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c64 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c67 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c9"><span class="c13">Previous Transaction hash</span></p></td><td class="c64" colspan="1" rowspan="1"><p class="c9"><span class="c13">doubled SHA256-hashed of a (previous) to-be-used transaction</span></p></td><td class="c67" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c9"><span class="c13">Previous Txout-index</span></p></td><td class="c64" colspan="1" rowspan="1"><p class="c9"><span class="c13">non negative integer indexing an output of the to-be-used transaction</span></p></td><td class="c67" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c9"><span class="c13">Txin-script length</span></p></td><td class="c64" colspan="1" rowspan="1"><p class="c9"><span class="c13">non negative integer</span></p></td><td class="c67" colspan="1" rowspan="1"><p class="c9"><span class="c13">1 - 9 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c9"><span class="c13">Txin-script / scriptSig</span></p></td><td class="c64" colspan="1" rowspan="1"><p class="c9"><span class="c13">Script</span></p></td><td class="c67" colspan="1" rowspan="1"><p class="c9"><span class="c13"><in-script length>-many bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c9"><span class="c13">sequence_no</span></p></td><td class="c64" colspan="1" rowspan="1"><p class="c9"><span class="c13">normally 0xFFFFFFFF; irrelevant unless transaction's lock_time is > 0</span></p></td><td class="c67" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p><p class="c9 c49"><span class="c13"></span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.k39ipof1m79t"><span>Transaction Output Format</span></h3><p class="c30"><span></span></p><a id="t.344361a29f346f506360afc2fc2824c2b6844e98"></a><a id="t.8"></a><table class="c20"><tbody><tr class="c6"><td class="c36 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c35 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c12 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c9"><span class="c13">value</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c9"><span class="c45">non negative integer giving the number of </span><span class="c45">Satoshis </span><span class="c13">to be transferred</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">8 bytes</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c9"><span class="c13">Txout-script length</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c9"><span class="c13">non negative integer</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">1 - 9 bytes</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c9"><span class="c13">Txout-script / scriptPubKey</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c9"><span class="c45">Script</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13"><out-script length>-many bytes</span></p><p class="c9 c49"><span class="c13"></span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.wk6k97l77040"><span>Security Characteristics</span></h2><p class="c30"><span></span></p><a id="t.a137a7eb33c2d5c0a61064a1e5ca3723ac8d8514"></a><a id="t.9"></a><table class="c20"><tbody><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c1">Security Principle</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Confidentiality</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">None. All information in the Bitcoin blockchain is public. Confidentiality is achieved by hashing data and placing it in the blockchain.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Information Availability</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Block mirroring. In general, all information is highly mirrored and available at all times. It may be true that some of the more recent information cannot be trusted until more block verifications are performed.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Integrity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Information is accurate given no blockchain forks. Integrity cannot be strongly trusted until at least 6+ verifications have been performed.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Non-repudiation</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Digital signatures. All transactions are digitally signed and are thus non-repudiable.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Provenance</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Transaction inputs and outputs. All transactions can be traced using block inputs and outputs.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Pseudonymity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Public keys used as identifiers. All transactions use public keys as identifiers (not legal names or identifiers). Pseudonymity may be compromised via court orders to Bitcoin money transmitters.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Selective Disclosure</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">None. All information in the Bitcoin blockchain is public. Selective disclosure could theoretically be achieved via symmetric key encryption, but due to the permanent nature of the Bitcoin blockchain and the impermanent nature of cryptographic protection, storing encrypted information directly on the Blockchain is ill advised.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.jxf0mzf64kz1"><span>Performance Characteristics</span></h2><p class="c30"><span></span></p><a id="t.9c62fd6afd3304fef26cccbbf27051cf36d108a8"></a><a id="t.10"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Performance Principle</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Consistency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Eventual consistency is guaranteed through multiple block verifications. Consistency of a freshly committed block cannot be highly trusted until between 30 to 60 minutes after the transaction.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">System Availability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Transactions are not verified to a high degree of certainty until between 30 to 60 minutes after the transaction occurs.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Failure Tolerance</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Longest chain wins. Eventual consistency during arbitrary network partitioning. Mining allocation may cause one network partition to gain blocks at a faster rate than other partitions. In these cases, transactions are not very tolerant to failure depending on which network partition a transaction is written to.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Scalability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Block size. Transaction speed is currently set at 7 transactions per second with a 1MB block size. </span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Latency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Transaction verifications take between 30 to 60 minutes after a transaction occurs to be verified. In May 2016, boot-up time for new nodes takes 1-3 days due to having to download 69GBs of data from peers and audit the blockchain..</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.ylmbifxhf2wt"><span>Notable Features</span></h2><p class="c30"><span></span></p><a id="t.695a6fa11c45fb255f67787b4284ee3a1f092b6b"></a><a id="t.11"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Feature</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Description</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Proof of Work</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Processing cycles must be expended in order to be able to write a new block to the blockchain.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Bitcoin Script</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17 c40"><span class="c16">A non-turing complete, Forth-like, stack-based scripting system, without support for loops is used for transaction inputs and outputs enabling some programmability for how transactions can be spent.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Mining Rewards</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">To incentivize block verification, bounties are provided to miners that make securing the blockchain a profitable endeavor.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h1 class="c40 c41" id="h.vow22tugv7i6"><span>Ethereum</span></h1><h2 class="c40 c41" id="h.gf6xzkox80tg"><span>Data Structures</span></h2><h3 class="c40 c41" id="h.vd8h3zl4p5jr"><span>Account Format</span></h3><p class="c30"><span></span></p><a id="t.0ccadd4e65e36e9ef45d44bb47352a6865cc26a9"></a><a id="t.12"></a><table class="c20"><tbody><tr class="c6"><td class="c36 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c35 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c12 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span>nonce</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span>A scalar value equal to the number of transactions sent from this address or, in the case of accounts with associated code, the number of contract-creations made by this account.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span>balance</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span>A scalar value equal to the number of Wei owned by this address.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span>storageRoot</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span>A 256-bit hash of the root node of a Merkle Patricia tree that encodes the storage contents of the account (a mapping between 256-bit integer values), encoded into the trie as a mapping from the Keccak 256-bit hash of the 256-bit integer keys to the RLP-encoded 256-bit integer values.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span>codeHash</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span>The hash of the EVM code of this account—this is the code that gets executed should this address receive a message call; it is immutable and thus, unlike all other fields, cannot be changed after construction. All such code fragments are contained in the state database under their corresponding hashes for later retrieval.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr></tbody></table><p class="c30"><span></span></p><p class="c30"><span></span></p><h3 class="c40 c41" id="h.maawhth2ri0"><span>Message Transaction Format</span></h3><p class="c30"><span></span></p><a id="t.f220e5e4bd54b2287e0abbb37d4662f078ecbc99"></a><a id="t.13"></a><table class="c20"><tbody><tr class="c6"><td class="c36 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c35 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c12 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span>nonce</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span>A 64-bit hash which proves combined with the mix-hash that a sufficient amount of computation has been carried out on this block</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">8 bytes</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span>gasPrice</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span>A scalar value equal to the number of Wei to be paid per unit of gas for all computation costs incurred as a result of the execution of this transaction.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span>gasLimit</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span>A scalar value equal to the current limit of gas expenditure per block</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span>to</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span>T</span><span>he 160-bit address of the message call’s recipient or, for a contract creation transaction, ∅, used here to denote the only member of B0.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">20 bytes</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span>value</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span>A scalar value equal to the number of Wei to be transferred to the message call’s recipient or, in the case of contract creation, as an endowment to the newly created account</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span>v, r, s</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span>Values corresponding to the signature of the transaction and used to determine the sender of the transaction</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">?</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span class="c16">data</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span class="c10">Only in non-contract messages. </span><span class="c16">An unlimited size byte array specifying the input data of the message call.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">unlimited</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span class="c16">init</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span class="c10">Only in contract messages.</span><span class="c16">An unlimited size byte array specifying the EVM-code for the account initialisation procedure</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">unlimited</span></p></td></tr><tr class="c6"><td class="c36" colspan="1" rowspan="1"><p class="c4"><span class="c16">body</span></p></td><td class="c35" colspan="1" rowspan="1"><p class="c4"><span class="c10">Only in contract messages.</span><span class="c16"> A fragment of code that executes each time the account receives a message call (either through a transaction or due to the internal execution of code)</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">unlimited</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h3 class="c40 c41" id="h.fsofg65vgcx6"><span>Receipt Format</span></h3><p class="c30"><span></span></p><a id="t.b8a077460a5932a3320a4416810261d44b661adf"></a><a id="t.14"></a><table class="c20"><tbody><tr class="c6"><td class="c14 c89" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c55 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c12 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c89" colspan="1" rowspan="1"><p class="c4"><span class="c13">state</span></p></td><td class="c55" colspan="1" rowspan="1"><p class="c4"><span>the post-transaction state</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">?</span></p></td></tr><tr class="c6"><td class="c89" colspan="1" rowspan="1"><p class="c4"><span class="c13">cumulativeGasUsed</span></p></td><td class="c55" colspan="1" rowspan="1"><p class="c4"><span>the cumulative gas used in the block containing the transaction receipt as of immediately after the transaction has happened</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">?</span></p></td></tr><tr class="c6"><td class="c89" colspan="1" rowspan="1"><p class="c4"><span class="c13">logs</span></p></td><td class="c55" colspan="1" rowspan="1"><p class="c4"><span>the set of logs created through execution of the transaction</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">?</span></p></td></tr><tr class="c6"><td class="c89" colspan="1" rowspan="1"><p class="c4"><span class="c13">logsBloom</span></p></td><td class="c55" colspan="1" rowspan="1"><p class="c4"><span>the Bloom filter composed from information in those logs</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">?</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h3 class="c40 c41" id="h.5hxbdk87bzre"><span>Block Format</span></h3><p class="c30"><span></span></p><a id="t.9725cf2caa68ec7bf35f4641c7d903c515ce07bf"></a><a id="t.15"></a><table class="c20"><tbody><tr class="c6"><td class="c25 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c32 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c12 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>parentHash</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>The Keccak 256-bit hash of the parent block’s header, in its entirety</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>ommersHash</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>The Keccak 256-bit hash of the ommers list portion of this block</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>beneficiary</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>The 160-bit address to which all fees collected from the successful mining of this block be transferred</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">20 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">stateRoot</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">The Keccak 256-bit hash of the root node of the state trie, after all transactions are executed and finalisations applied</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>transactionsRoot</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>The Keccak 256-bit hash of the root node of the trie structure populated with each transaction in the transactions list portion of the block</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">receiptsRoot</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">The Keccak 256-bit hash of the root node of the trie structure populated with the receipts of each transaction in the transactions list portion of the block</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">logsBloom</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">The Bloom filter composed from indexable information (logger address and log topics) contained in each log entry from the receipt of each transaction in the transactions list</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">?</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">difficulty</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">A scalar value corresponding to the difficulty level of this block. This can be calculated from the previous block’s difficulty level and the timestamp.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">number</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">A scalar value equal to the number of ancestor blocks. The genesis block has a number of zero</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">timestamp</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">A scalar value equal to the reasonable output of Unix’s time() at this block’s inception</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes?</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">extraData</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">An arbitrary byte array containing data relevant to this block. This must be 32 bytes or fewer</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">0-32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">mixHash</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">A 256-bit hash which proves combined with the nonce that a sufficient amount of computation has been carried out on this block</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">ommerBlockHeaders</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">A list of ommer block headers (of the same format as everything above in this table)</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">?</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">transactions</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">a series of the transactions</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">?</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.egbwrx8a7x1q"><span>Security Characteristics</span></h2><p class="c30"><span></span></p><a id="t.67b513a4fa7ce204c7054a21d6b6f431bdf92ef2"></a><a id="t.16"></a><table class="c20"><tbody><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c1">Security Principle</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Confidentiality</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">None. All information in the Ethereum state machine is public. Confidentiality is achieved by hashing data and placing it in the blockchain or storing a pointer to off-chain data.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Information Availability</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Mirroring. In general, all non-generatable information is highly mirrored and available at all times. It may be true that some of the more recent information cannot be trusted until more block verifications are performed. There is also the possibility of not having to store all of the state machine transitions via a Simplified Payment Verification by only downloading the Patricia Merkle Tree block headers and verifying those, leading to light client implementations.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Integrity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Information is accurate given no long forks in the Merkle Patricia tree. Integrity cannot be strongly trusted until at least 7+ verifications have been performed.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Non-repudiation</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Digital signatures. All transactions are digitally signed and are thus non-repudiable.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Provenance</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Ethereum state machine and transition functions. All state machine transitions can be traced by replaying each state and set of inputs (both external and internal) to the Ethereum state machine.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Pseudonymity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Random identifiers, transaction identifiers, or contract addresses may be used as identifiers each of them having a certain level of pseudonymity. Pseudonymity may be compromised via other data associated with the random identifier in the Ethereum state machine or court orders to Bitcoin money transmitters and/or BTC to ETH gateways.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Selective Disclosure</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">None. All information in the Ethereum state machine is public. Selective disclosure could theoretically be achieved via symmetric key encryption, but due to the permanent nature of the Ethereum state machine transitions and the impermanent nature of cryptographic protection, storing encrypted information directly in the Ethereum state machine is ill advised.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.z3zhooo9dz1n"><span>Performance Characteristics</span></h2><p class="c30"><span></span></p><a id="t.2291ecc6719be53bf4a89fe80abc8da7b510e5ee"></a><a id="t.17"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Performance Principle</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Consistency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Eventual consistency is guaranteed through multiple block verifications. Consistency of a freshly committed block cannot be highly trusted until between 6-10 confirmations (20-60 minutes after the first verification).</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">System Availability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Transactions are not verified to a high degree of certainty until between 20 to 60 minutes after the transaction occurs.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Failure Tolerance</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Longest chain wins. Eventual consistency during arbitrary network partitioning. Mining allocation may cause one network partition to gain blocks at a faster rate than other partitions. In these cases, transactions are not very tolerant to failure depending on which network partition a transaction is written to.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Scalability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Block size, proof algorithm, and protocol GHOST and CASPER. Maximum transaction speed is currently around 7-10 transactions per second with a 1.7KB block size. Testnet has achieved 10-20 transactions per second. Predicted future rates range between 10,000 to 100,000 transactions per second.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Latency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Roughly 12-40 seconds to propagate a transaction to 95% of all nodes. Transaction verifications take between 20 to 60 minutes after a transaction occurs to be strongly trusted.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.axjj47mppobd"><span>Notable Features</span></h2><p class="c30"><span></span></p><a id="t.50d92ca2859904b3737a50fea5af90bb44e10f19"></a><a id="t.18"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Feature</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Description</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Contracts with a Turing-complete Programming Language</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Executable code that runs in the Ethereum state machine moving Ether and data around the state machine. Ethereum Virtual Machine is turing-complete, allowing any program to be written and executed.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Asynchronous Multisignatures</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17 c40"><span class="c16">Enables multi-signatures to be performed asynchronously vs. Bitcoins requirement for a synchronous multi-signature (all signatures must be submitted at the same time requiring out of band coordination).</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Gas Fees</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Turing-complete languages create systems with halting problems (systems that could possibly execute a program forever - in an endless loop, for example). Gas fees enforce an upper-bound on Contract execution cost. Once a Contract’s gas runs out, it stops running, thus solving the halting problem in Ethereum.</span></p></td></tr></tbody></table><h1 class="c40 c41" id="h.ujr4nxmppxn"><span>Stellar</span></h1><h2 class="c40 c41" id="h.1d84rbdwxfwv"><span>Data Structures</span></h2><h3 class="c40 c41" id="h.botkqgtk3ss0"><span>LedgerHeader Format</span></h3><p class="c30"><span></span></p><a id="t.78ca55421c3c25da81cdf51fe48428f847129079"></a><a id="t.19"></a><table class="c20"><tbody><tr class="c6"><td class="c25 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c32 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c12 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>ledgerVersion</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span> The protocol version of the ledger<br></span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c13">previousLedgerHash</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c13">Hash of the previous ledger header<br></span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c13">scpValue</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c13">What consensus agreed to<br></span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">808 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">txSetResultHash</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">The TransactionResultSet that led to this ledger<br></span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>bucketListHash</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Hash of the ledger state<br></span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">ledgerSeq</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Sequence number of this ledger<br></span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">totalCoins</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Total number of stroops in existence. There are 10,000,000 stroops in 1 Stellar (XLM) - 1 Stellar is the unit of currency (e.g. U.S. Dollars).<br></span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">8 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">feePool</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Fees burned since last inflation run</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">8 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">inflationSeq</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Inflation sequence number</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">idPool</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Last used global ID, used for generating objects</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">8 bytes</span></p></td></tr><tr class="c56"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">baseFee</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Base fee per operation in stroops</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">baseReserve</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Account base reserve in stroops</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">maxTxSetSize</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Maximum size a transaction set can be</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">skipList</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Hashes of ledgers in the past. allows you to jump back in time without walking the chain back ledger by ledger each slot contains the oldest ledger that is mod of either 50 5000 50000 or 500000 depending on index skipList[0] mod(50), skipList[1] mod(5000), etc.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">128 bytes</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h3 class="c40 c41" id="h.9bduknnyf2xq"><span>Account Format</span></h3><p class="c30"><span></span></p><a id="t.10f5e754c52efa2e5007dbdc1b99f34a5d91b602"></a><a id="t.20"></a><table class="c20"><tbody><tr class="c6"><td class="c25 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c32 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c12 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>accountID</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Master public key for this account</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>balance</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span> Account balance in stroops</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">8 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>seqNum</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Last sequence number used for this account</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">8 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">numSubEntries</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Number of sub-entries this account has drives the reserve</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>inflationDest</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Account to vote for during inflation</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">8 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>flags</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c13">Flags set on issuer accounts. TrustLines are created with authorized set to "false" requiring the issuer to set it for each TrustLine. Values may be AUTH_REQUIRED_FLAG (if set, the authorized flag in TrustLines can be cleared), otherwise, authorization cannot be revoked and the flag is AUTH_REVOCABLE_FLAG. If AUTH_IMMUTABLE_FLAG is set, causes all AUTH_* flags to be read-only.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>homeDomain</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Can be used for reverse federation and memo lookup</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>thresholds</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Stores unsigned bytes: [weight of master|low|medium|high]</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>signers</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Possible signers for this account</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">36 bytes per signer (720 bytes total)</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h3 class="c40 c41" id="h.iyanbpgam0lo"><span>Transaction Format</span></h3><p class="c30"><span></span></p><a id="t.706eb6037642dd1017e4118f6923b3cc497e728a"></a><a id="t.21"></a><table class="c20"><tbody><tr class="c6"><td class="c25 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c32 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c12 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Size</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>sourceAccount</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Account used to run the transaction</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>fee</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span> The fee the sourceAccount will pay</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>seqNum</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Sequence number to consume in the account</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">8 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span class="c16">timeBounds</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Validity range (inclusive) for the last ledger close time</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">4 bytes (pointer to 16 byte data structure)</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>memo</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Extra data carried along with the transaction.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">0-32 bytes</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>operations</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span class="c16">Up to 100 operations associated with this transaction.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">8-N bytes (dependent on op code)</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.mawqzi9y1r9z"><span>Security Characteristics</span></h2><p class="c30"><span></span></p><a id="t.4320f7d340187eb3308c885871738ac5a98aacd3"></a><a id="t.22"></a><table class="c20"><tbody><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c1">Security Principle</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Confidentiality</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">None. All information in the Stellar ledger is public. Confidentiality is achieved by hashing data and placing it in the blockchain or storing a pointer to off-chain data.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Information Availability</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Mirroring. In general, all non-generatable information is highly mirrored and available at all times. It may be true that some of the more recent information cannot be trusted until at least one block confirmation can be done, which is a great improvement over permissionless ledgers at the cost of having to trust a set of nodes in the network.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Integrity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">A single block verification. Information is accurate when a ballot produces a new block.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Non-repudiation</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Digital signatures. All transactions are digitally signed and are thus non-repudiable.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Provenance</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">All transactions (instructions to the ledger) are digitally signed. A replay of all transactions results in a full understanding of a particular state’s provenance.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Pseudonymity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Public keys are the primary identification mechanism in the system and provide a certain level of pseudonymity. Court orders to Stellar to fiat currency gateways can uncover the true identity of a person using the system.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Selective Disclosure</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">None. All information in the Stellar ledger is public. Selective disclosure could theoretically be achieved via symmetric key encryption, but due to the permanent nature of the Stellar ledger and the impermanent nature of cryptographic protection, storing encrypted information directly in the Stellar ledger is ill advised.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.tr83tu4t9hqm"><span>Performance Characteristics</span></h2><p class="c30"><span></span></p><a id="t.f6efca10f3072a07b16759f8f80567e39520e18b"></a><a id="t.23"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Performance Principle</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Consistency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">A single block verification. A single block verification can be propagated in a number of seconds (12 seconds on average to reach 95% of all nodes, up to 40 seconds to reach the other 5%).</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">System Availability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">A single block verification. Requests are typically answered in under a minute.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Failure Tolerance</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Stellar Consensus Protocol. As long as trust lines are allocated to maximize network connectivity, consensus will be achieved even in the event of multiple node failures and network partitions. If, for example, half of the network is separated from the other, the consensus protocol no longer works but the likelihood of an event of that nature is highly improbable.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Scalability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Stellar Consensus Protocol. A single block can store 4 billion transactions, each with 100 transaction operations. The system is theoretically capable of performing thousands of transactions per second with the primary limiting factor being network speed and latency.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Latency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">A single block verification. A single block verification can be propagated in a number of seconds (12 seconds on average to reach 95% of all nodes, up to 40 seconds to reach the other 5%).</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.igm73w7416j"><span>Notable Features</span></h2><p class="c30"><span></span></p><a id="t.7b36384381d468c147d2dcdb6938c3359c65c9cf"></a><a id="t.24"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Feature</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Description</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Stellar Consensus Protocol</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">An algorithm with a mathematical proof of correctness for reaching consensus using quorum slices and assuming a certain level of network connectivity.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Trust Lines</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17 c40"><span class="c16">The consensus mechanism in Stellar requires that an entity running a node specify the other nodes in the system that it trusts. This design choice results in a much faster consensus algorithm (instead of using proof-of-work and proof-of-stake) with the drawback of making the system permissioned instead of permission-less.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h1 class="c40 c41" id="h.4lczux9k3ogn"><span>IPFS</span></h1><h2 class="c40 c41" id="h.s1ify17xernx"><span>Data Structures</span></h2><h3 class="c40 c41" id="h.gcnbqiv75z6k"><span>Object Merkle DAG - IPFSLink</span></h3><p class="c30"><span></span></p><a id="t.691246cbd286570989121a0edbe6a21af8cf78ea"></a><a id="t.25"></a><table class="c20"><tbody><tr class="c6"><td class="c25 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c32 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c12 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Type</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>Name</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Name or alias of link.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">string</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>Hash</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Cryptographic hash of target.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">Multihash</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>Size</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Total size of target.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">int</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.efr4n3s0iziz"><span>Object Merkle DAG - IPFSObject</span></h3><p class="c30"><span></span></p><a id="t.6c726a03337688fb3b0e2450c3843e538594554b"></a><a id="t.26"></a><table class="c20"><tbody><tr class="c6"><td class="c25 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c32 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td><td class="c12 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Type</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>links</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Array of links.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">Array of IPFSLinks</span></p></td></tr><tr class="c6"><td class="c25" colspan="1" rowspan="1"><p class="c4"><span>data</span></p></td><td class="c32" colspan="1" rowspan="1"><p class="c4"><span>Opaque content data.</span></p></td><td class="c12" colspan="1" rowspan="1"><p class="c9"><span class="c13">Array of bytes</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.otcf47nulwyx"><span>Other</span></h3><p class="c40"><span>Merkle DAG (directed acyclic graph) structures can be used to build many types of other systems. Specialized structures exist for encrypted data, signed data, and a number of versioned file system primitives.</span></p><h3 class="c30 c41" id="h.gv7sxsk9vaim"><span></span></h3><h2 class="c40 c41" id="h.kqtrrq3iwj5u"><span>Security Characteristics</span></h2><p class="c30"><span></span></p><a id="t.5b45e537663b1d6bfc7ab4026cff2d1e63abd886"></a><a id="t.27"></a><table class="c20"><tbody><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c1">Security Principle</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Confidentiality</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Hash-based obfuscation and encryption (limited confidentiality). All information in the DHT is available to the peer-to-peer network. Confidentiality may be achieved by using EncryptedObjects or storing a pointer to data outside of IPFS.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Information Availability</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Peer-to-peer mirroring. The DHT and Merkle DAG store data addressed by content hash. Various peer-to-peer strategies can be used to find, send, receive, and store data.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Integrity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Hash-based content-addressing. Content is stored in a Merkle DAG and addressed by content hash. Individual data blocks can be verified for hash correctness. Completeness of all data depends on having a correct root with links to all data.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Non-repudiation</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Digital signatures. Data can be digitally signed and thus non-repudiable.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Provenance</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Digital signatures and data versioning. While not a core part of IPFS, these concepts could be layered on top to provide needed provenance features.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Pseudonymity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Public keys. Nodes use identities built from public keys which could expose information about the person if cross-correlated. Data itself is opaque and addressed by content hash. Without a known hash it may be difficult to find and expose arbitrary data from the network.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Selective Disclosure</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span>None. All information in the DHT is public. </span><span>S</span><span class="c16">elective disclosure could theoretically be achieved via symmetric key encryption, but due to the permanent nature of the hashed data and the impermanent nature of cryptographic protection, storing encrypted information directly in the DHT is ill advised. Some protection is provided as it is unlikely unknown peers would request arbitrary data by its specific hash value.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.lamkl9dsmgai"><span>Performance Characteristics</span></h2><p class="c30"><span></span></p><a id="t.cbe367a125247e7a32959b724232a45009823b4a"></a><a id="t.28"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Performance Principle</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Consistency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span>Peer-to-peer mirroring. </span><span>Peer-to-peer network can be used to ensure consistency between all network peers of required immutable data.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">System Availability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17 c49"><span class="c16"></span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Failure Tolerance</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span>The peer-to-peer network is resistant to failure when data is available from many peers and some network connectivity is available.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Scalability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span>BitSwap peer-to-peer protocol is similar to protocols such as BitTorrent. Network topology, data locality, and BitSwap strategies that peers use will will have an effect on scalability.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Latency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17 c49"><span class="c16"></span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.507y5dmhr736"><span>Notable Features</span></h2><p class="c30"><span></span></p><a id="t.30a147f8fb0768f57fe4d76a773354c91503f3ef"></a><a id="t.29"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Feature</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Description</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">IPNS</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Mutable naming system to compliment immutable IPFS objects. Allows for easier human naming and references..</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Flexible Components</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17 c40"><span class="c16">Components of the system can be changed depending on performance, security, and other considerations. Standard interfaces allow for changing of naming, data exchange, routing, and network transport components.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h1 class="c40 c41" id="h.i8l4yfkmtlm4"><span>Blockstack</span></h1><h2 class="c40 c41" id="h.yxbimd6rpm8r"><span>Data Structures</span></h2><h3 class="c40 c41" id="h.ystj6kh20d9q"><a id="id.dw4rtgqrlgb6"></a><span>Base Name Record Format</span></h3><a id="t.b60480ab59435bc9d8c5ddaa06c2e6d84f8ea847"></a><a id="t.30"></a><table class="c20"><tbody><tr class="c6"><td class="c38 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c7 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>name</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the name itself</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>value_hash</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the hash of the name's associated profile</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>sender</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the scriptPubKey hex that owns this name (identifies ownership)</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span class="c16">sender_pubkey</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span class="c16">(OPTIONAL) the public key</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>address</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the address of the sender</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>block_number</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the block number when this name record was created (preordered for the first time)</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>preorder_block_number</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the block number when this name was last preordered</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>first_registered</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the block number when this name was registered by the current owner</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>last_renewed</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the block number when this name was renewed by the current owner</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>revoked</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>whether or not the name is revoked</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>op</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>byte sequence describing the last operation to affect this name</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>txid</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the ID of the last transaction to affect this name</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>vtxindex</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the index in the block of the transaction.</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>op_fee</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>the value of the last Blockstack-specific burn fee paid for this name (i.e. from preorder or renew)</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>importer</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>(OPTIONAL) if this name was imported, this is the importer's scriptPubKey hex</span></p></td></tr><tr class="c6"><td class="c38" colspan="1" rowspan="1"><p class="c4"><span>importer_address</span></p></td><td class="c7" colspan="1" rowspan="1"><p class="c4"><span>(OPTIONAL) if this name was imported, this is the importer's address</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h3 class="c40 c41" id="h.psgo8to09gv2"><a id="id.5zxdxsadifg9"></a><span>Base Namespace Format</span></h3><p class="c30"><span></span></p><a id="t.8f13fccb821131c8123f49f59ba2d2c71ca91191"></a><a id="t.31"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>namespace_id</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>human-readable namespace ID</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>namespace_id_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>hash(namespace_id,sender,reveal_addr) from the preorder (binds this namespace to its preorder)</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>version</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>namespace rules version</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c16">sender</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c16">the scriptPubKey hex script that identifies the preorderer</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>sender_pubkey</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>if sender is a p2pkh script, this is the public key</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>address</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>address of the sender, from the scriptPubKey</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>recipient</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>the scriptPubKey hex script that identifies the revealer.</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>recipient_address</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>the address of the revealer</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>block_number</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>block number at which this namespace was preordered</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>reveal_block</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>block number at which this namespace was revealed</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>op</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>byte code identifying this operation to Blockstack</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>txid</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>transaction ID at which this namespace was revealed</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>vtxindex</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>the index in the block where the tx occurs</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>lifetime</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>how long names last in this namespace (in number of blocks)</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>coeff</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>constant multiplicative coefficient on a name's price</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>base</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>exponential base of a name's price</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>buckets</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>array that maps name length to the exponent to which to raise 'base' to</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>nonalpha_discount</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>multiplicative coefficient that drops a name's price if it has non-alpha characters</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>no_vowel_discount</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>multiplicative coefficient that drops a name's price if it has no vowels</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.bsd2bspzbnaa"><span>Name Import Format</span></h3><p class="c30"><span></span></p><a id="t.9784802b0c80469da8daf02d02a605d6a592fad0"></a><a id="t.32"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c0 c45"><a class="c11" href="#id.dw4rtgqrlgb6">NameRecordFields</a></span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c45">All of the base Name Record Format fields</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>recipient</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>scriptPubKey hex that identifies the name recipient</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>recipient_address</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>address of the recipient</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.yozufnlf2xwm"><span>Namespace Preorder Format</span></h3><p class="c30"><span></span></p><a id="t.9b4e9f42b2f43a672fe2a4416b17f1cffd6e95b4"></a><a id="t.33"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>namespace_id_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>hash(namespace_id,sender,reveal_addr)</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>consensus_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>consensus hash at the time issued</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>op</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>bytecode describing the operation (not necessarily 1 byte)</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c16">op_fee</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c16">fee paid for the namespace to the burn address</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>txid</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>transaction ID</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>vtxindex</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>the index in the block where the tx occurs</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>block_number</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>block number at which this transaction occurred</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>sender</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>scriptPubKey hex from the principal that issued this preorder (identifies the preorderer)</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>sender_pubkey</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>if sender is a p2pkh script, this is the public key</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>address</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>address from the scriptPubKey</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.i0vaindqoodi"><span>Namespace Reveal Format</span></h3><p class="c30"><span></span></p><a id="t.a9eecf0a5de8c3fa27db602d012d2595af439551"></a><a id="t.34"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c0 c45"><a class="c11" href="#id.5zxdxsadifg9">NamespaceFields</a></span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">All of the base Name Record Format fields</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.nl9212xgtpcq"><span>Namespace Ready Format</span></h3><p class="c30"><span></span></p><a id="t.fafb6e53a60f0a81ba9da2ff3c3a3bbc4d46a9c5"></a><a id="t.35"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c0 c45"><a class="c11" href="#id.5zxdxsadifg9">NamespaceFields</a></span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">All of the base Name Record Format fields</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c13">ready_block</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>block number at which the namespace was readied</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.wk0jsqhomrwa"><span>Name Preorder</span><span> Format</span></h3><p class="c30"><span></span></p><a id="t.7bb935730b9ae111a94cd4b2698d2dd019c96fbc"></a><a id="t.36"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>preorder_name_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>hash(name,sender,register_addr)</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>consensus_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>consensus hash at time of send</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>sender</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>scriptPubKey hex that identifies the principal that issued the preorder</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c16">sender_pubkey</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c16">if sender is a pubkeyhash script, then this is the public key</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>address</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>address from the sender's scriptPubKey</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>block_number</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>block number at which this name was preordered for the first time</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>op</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>blockstack bytestring describing the operation</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>txid</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>transaction ID</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>vtxindex</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>the index in the block where the tx occurs</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>op_fee</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>blockstack fee (sent to burn address)</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.km5l48whk6i4"><span>Name Registration Format</span></h3><p class="c30"><span></span></p><a id="t.86c4336372af79ece01a96a386a31729de6b9de6"></a><a id="t.37"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c0 c45"><a class="c11" href="#id.dw4rtgqrlgb6">NameRecordFields</a></span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">All of the base Name Record Format fields</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>recipient</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>scriptPubKey hex script that identifies the principal to own this name</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>recipient_address</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>principal's address from the scriptPubKey in the transaction</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h3 class="c40 c41" id="h.cxsxes2n25q2"><span>Name Revoke Format</span></h3><p class="c30"><span></span></p><a id="t.c737dde51d03ed0dcc4b44313fb10a4696d462c8"></a><a id="t.38"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c0 c45"><a class="c11" href="#id.dw4rtgqrlgb6">NameRecordFields</a></span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">All of the base Name Record Format fields</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.a2tyhu9i9glo"><span>Name Transfer</span><span> Format</span></h3><p class="c30"><span></span></p><a id="t.e62c0fca82b00c3f160a69b1a74d874faade27f2"></a><a id="t.39"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c0 c45"><a class="c11" href="#id.dw4rtgqrlgb6">NameRecordFields</a></span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">All of the base Name Record Format fields</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>name_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>hash(name)</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>consensus_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>consensus hash when this operation was sent</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c16">keep_data</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c16">whether or not to keep the profile data associated with the name when transferred</span></p></td></tr></tbody></table><h3 class="c40 c41" id="h.cbhkk25bjz9o"><span>Name Update Format</span></h3><p class="c30"><span></span></p><a id="t.1807bccadf252f53a62f676d32c819ec219085d6"></a><a id="t.40"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c0 c45"><a class="c11" href="#id.dw4rtgqrlgb6">NameRecordFields</a></span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">All of the base Name Record Format fields</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>name_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>hash(name,consensus_hash)</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span>consensus_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span>consensus hash when this update was sent</span></p></td></tr></tbody></table><h2 class="c40 c41" id="h.svsymb8vgpir"><span>Security Characteristics</span></h2><p class="c30"><span></span></p><a id="t.2d7d5a764d42d99a66cf8f439b764c5522341da2"></a><a id="t.41"></a><table class="c20"><tbody><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c1">Security Principle</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Confidentiality</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">None. All information in the Bitcoin blockchain and Blockstack virtualchain is public. Confidentiality could achieved by hashing data and placing it in either blockchain, but the system is not designed or intended to preserve confidentiality.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Information Availability</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Block mirroring. In general, all information is highly mirrored and available at all times. It may be true that some of the more recent information cannot be trusted until more block verifications are performed.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Integrity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Information is accurate given no blockchain forks. Integrity cannot be strongly trusted until at least 6+ verifications have been performed.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Non-repudiation</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Digital signatures. All transactions are digitally signed and are thus non-repudiable.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Provenance</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">At the Bitcoin layer via transaction inputs and outputs; all transactions can be traced using block inputs and outputs. At the Blockstack layer each virtualchain entry can be traced back to the Bitcoin block it came from.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Pseudonymity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span>Bitcoin: public keys are used as identifiers; Blockstack: pseudonyms in .id namespace. All Bitcoin transactions use public keys as identifiers (not legal names or identifiers). Pseudonymity may be compromised via court orders to </span><span>Bitcoin </span><span class="c16">money transmitters to determine who paid for particular inputs on Blockstack transactions. Blockstack entries in the .id namespace are pseudonyms, but publication of personally identifiable information is common practice typically leading to invalidation of pseudonymity.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Selective Disclosure</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Bitcoin: None; Blockstack: encrypted data at secret locations. All information in the Bitcoin blockchain and Blockstack virtual chain and storage layer is public. Selective disclosure could theoretically be achieved via symmetric key encryption, but due to the permanent nature of the Bitcoin blockchain and Blockstack virtualchain and the impermanent nature of cryptographic protection, storing encrypted information directly on the Bitcoin blockchain or on the Blockstack virtualchain/storage layer is ill advised. Blockstack profiles do have a mechanism where hashed information may be stored at known locations and where access may be provided to select entities with specific access keys.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.5e523xmnjen5"><span>Performance Characteristics</span></h2><p class="c30"><span></span></p><a id="t.069143dca2847cd61a6bdccc3e8da6961292bb0f"></a><a id="t.42"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Performance Principle</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Consistency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Eventual consistency is guaranteed through multiple block verifications. Consistency of a freshly committed block cannot be highly trusted until between 30 to 60 minutes after the transaction.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">System Availability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Transactions are not verified to a high degree of certainty until between 30 to 60 minutes after the transaction occurs.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Failure Tolerance</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Longest chain wins. Eventual consistency during arbitrary network partitioning. Mining allocation may cause one network partition to gain blocks at a faster rate than other partitions. In these cases, transactions are not very tolerant to failure depending on which network partition a transaction is written to.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Scalability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Block size. Transaction speed is currently set at 7 transactions per second with a 1MB block size.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Latency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Multiple block verifications. Transaction verifications take between 30 to 60 minutes after a transaction occurs to be verified.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.bd6y6et035ca"><span>Notable Features</span></h2><p class="c30"><span></span></p><a id="t.6665eb1e254d88266044add4df094e0e0f64a47b"></a><a id="t.43"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Feature</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Description</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Fast Bootstrapping</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Utilizes log checkpoints and skip lists to provide fast bootstrapping/auditing for new nodes in the network (called Simple Name Verification). Use of SNV provides new node bootup times of 1-2 hours vs. 2-4 days without SNV.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Virtualchain</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17 c40"><span class="c16">Layering a virtualized blockchain on top of an existing blockchain (e.g. Blockstack on top of Bitcoin)</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Separation of Control/Routing/Data planes</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Separation of control plane (Bitcoin blockchain / Blockstack Virtualchain) from routing (DHT) from storage (S3, IPFS, etc.)</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h1 class="c40 c41" id="h.qqkdfud9d2lk"><span>Hashgraph</span></h1><h2 class="c40 c41" id="h.cl02u5662dd"><span>Data Structures</span></h2><p class="c40 c39"><span>No implementation of hashgraph was available, so the hashgraph datastructure, per the whitepaper is summarized below.</span></p><h3 class="c40 c41" id="h.viufvini6ax1"><span>Gossip Event</span></h3><p class="c40 c39"><span>The hashgraph consensus mechanism uses a gossip protocol. Whenever a member of the hashgraph receives new information, it chooses another member at random and communicates that information to it. This is called a “gossip event” and it is stored a sequence of bytes that is digitally signed by its creator.</span></p><p class="c30 c39"><span></span></p><a id="t.f3a509f3f07c0da5a9fc717052d049ba1c1083a8"></a><a id="t.44"></a><table class="c20"><tbody><tr class="c6"><td class="c5 c14" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Field</span></p></td><td class="c8" colspan="1" rowspan="1"><p class="c29"><span class="c10 c14">Description</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c13">peer_id</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">The network identifier for the peer that was gossipped with.</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c45">self_parent_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">The hash of the last local event prior to this one.</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c13">other_parent_hash</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">The hash of the peer’s last event prior to this one.</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c16">payload</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c16">An optional list of transactions created in this event.</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c13">timestamp</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">Date and time of event creation.</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c13">key_identifier</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">Identifier for the key that can verify the digital signature.</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c13">signature_algorithm</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">Algorithm for the digital signature.</span></p></td></tr><tr class="c6"><td class="c5" colspan="1" rowspan="1"><p class="c4"><span class="c13">signature</span></p></td><td class="c15" colspan="1" rowspan="1"><p class="c4"><span class="c13">The digital signature value.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.rj4bauwb66f6"><span>Security Characteristics</span></h2><p class="c30"><span></span></p><a id="t.37358a48e24887d53ba01bba4fcf4381f8e831cb"></a><a id="t.45"></a><table class="c20"><tbody><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c1">Security Principle</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Confidentiality</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">None. All information in the hashgraph is public. Confidentiality could achieved by hashing data and placing only the hash in the hashgraph (within a transaction), but the system is not designed or intended to preserve confidentiality.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Information Availability</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Configurable. In general, all information is highly mirrored and available at all times. However, hashgraph can also be implemented such that only the effects of the transactions in a block need to be remembered, the transactions themselves can be destroyed. Another option uses signed states to allow events to be destroyed as well.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Integrity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Consensus guaranteed with probability one and cannot be changed once reached. Once a transaction enters the system, it cannot be delayed and will be recorded in an order that cannot manipulated by individuals. Shortly after recording, due to the gossip protocol, every member will know the transaction’s place in history and that every other member also knows the same place.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Non-repudiation</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Digital signatures. All events/transactions are digitally signed and are thus non-repudiable.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Provenance</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">The hashgraph is a history of all of the gossip events that occurred in the network, in the order they occurred. Every event can be traced back via ancestor hashes. However, the system also allows for event payloads to be discarded, which would disallow tracking of individual transactions. Another option also allows for events themselves to be destroyed via signed states.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Pseudonymity</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">Identifiers for parties to the transactions are unspecified in the consensus algorithm. Pseudonymity could be implemented as a separate layer.</span></p></td></tr><tr class="c6"><td class="c23" colspan="1" rowspan="1"><p class="c4"><span class="c16">Selective Disclosure</span></p></td><td class="c21" colspan="1" rowspan="1"><p class="c17"><span class="c16">All information in the hashgraph is public and highly mirrored. Selective disclosure could theoretically be achieved via encryption, but due to the permanent nature of the hashgraph and the impermanent nature of cryptographic protection, storing encrypted information directly in the hashgraph event payloads is ill advised. The hashgraph consensus algorithm does allow the payloads to be destroyed with no influence upon the consensus algorithm, but the information would still have been made public and gossipped across the entire network.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.23w5auwq6zbp"><span>Performance Characteristics</span></h2><p class="c30"><span></span></p><a id="t.1764ee1984586a8ee27f576518e31ba0bbbffaae"></a><a id="t.46"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Performance Principle</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Enabling Mechanism</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Consistency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Eventual consensus guaranteed with probability one and cannot be changed once reached. Once a transaction enters the system, it cannot be delayed and will be recorded in an order that cannot manipulated by individuals. When members have different versions of the hashgraph, consensus is reached via virtual voting (zero bandwidth required) in a few minutes with no proof-of-work. Attackers must control less than one third of network.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">System Availability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Gossip protocol and virtual voting ensures quick success/failure indication. Eventual consensus guaranteed with probability one; forks are not possible under normal operation. Attackers cannot stop message recording other than by eliminating internet access. DoS Resistant without proof-of-work.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Failure Tolerance</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Strong Byzantine fault tolerance. Network will continue to function properly when up to just under one third of the members are attackers that collude, delete, or delay messages between honest members with no bounds on delays. Consensus algorithm is asynchronous, nondeterministic, and achieves Byzantine agreement with probability one.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Scalability</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Bandwidth. System is only limited by the amount of bandwidth available to its members. Using a few megabits per second (typical home connection) the network can support 4,000 transactions per second. Only 2-4% overhead added to messages for hashgraph protocol.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Latency</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">Low. Virtual voting allows consensus to occur without network communication. Communication of the hashgraph via the gossip protocol has low overhead and gossip spreads exponentially amongst members. Events and transactions can be discarded if desired whilst preserving consensus state.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><h2 class="c40 c41" id="h.o6rph53wx04m"><span>Notable Features</span></h2><p class="c30"><span></span></p><a id="t.4dd61ebcdbb98a71abf66b4ba2814cc2bda2e306"></a><a id="t.47"></a><table class="c20"><tbody><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c1">Feature</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c1">Description</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Proof-of-stake</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17"><span class="c16">The voting power for each member does not have to be equal; members could be given more power based on trust, based on number of coins, or a system could allow power to be split when inviting new members.</span></p></td></tr><tr class="c6"><td class="c33" colspan="1" rowspan="1"><p class="c4"><span class="c16">Signed State</span></p></td><td class="c31" colspan="1" rowspan="1"><p class="c17 c40"><span class="c16">Every time consensus is reached following a voting round, the state of the hashgraph can be considered immutable up to that round. This state can digitally signed and gossipped amongst members. Once more than two-thirds of the population have collected signatures, the information used to generate the state can be destroyed and the state can be used as a new starting point.</span></p></td></tr></tbody></table><p class="c30"><span></span></p><p class="c30"><span></span></p><p class="c30"><span></span></p><div><p class="c30 c57"><span class="c19"></span></p><p class="c40 c57"><span class="c19 c37">This document, a part of the "Credentials on Public/Private Linked Ledgers" project, has been funded in part by the United States Department of Homeland Security's Science and Technology Directorate under contract HSHQDC-16-C-00058. The content of this document does not necessarily reflect the position or the policy of the U.S. Government and no official endorsement should be inferred.</span></p></div></body></html>