-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathEthereum_1x_Definition_part_1.html
956 lines (929 loc) · 86.5 KB
/
Ethereum_1x_Definition_part_1.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="mobile-web-app-capable" content="yes">
<title>
Ethereum 1x Definition (part 1) - HackMD
</title>
<link rel="icon" type="image/png" href="https://hackmd.io/favicon.png">
<link rel="apple-touch-icon" href="https://hackmd.io/apple-touch-icon.png">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha256-eZrrJcwDc/3uDhsdt61sL2oOBY362qM3lon1gyExkL0=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/octicons/3.5.0/octicons.min.css" integrity="sha256-QiWfLIsCT02Sdwkogf6YMiQlj4NE84MKkzEMkZnMGdg=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/themes/prism.min.css" integrity="sha256-vtR0hSWRc3Tb26iuN2oZHt3KRUomwTufNIf5/4oeCyg=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/emojify.js/1.1.0/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
<style>
@charset "UTF-8";@import url(https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i|Source+Code+Pro:300,400,500|Source+Sans+Pro:300,300i,400,400i,600,600i|Source+Serif+Pro&subset=latin-ext);.hljs{display:block;background:#fff;padding:.5em;color:#333;overflow-x:auto}.hljs-comment,.hljs-meta{color:#969896}.hljs-emphasis,.hljs-quote,.hljs-string,.hljs-strong,.hljs-template-variable,.hljs-variable{color:#df5000}.hljs-keyword,.hljs-selector-tag,.hljs-type{color:#a71d5d}.hljs-attribute,.hljs-bullet,.hljs-literal,.hljs-number,.hljs-symbol{color:#0086b3}.hljs-built_in,.hljs-builtin-name{color:#005cc5}.hljs-name,.hljs-section{color:#63a35c}.hljs-tag{color:#333}.hljs-attr,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-title{color:#795da3}.hljs-addition{color:#55a532;background-color:#eaffea}.hljs-deletion{color:#bd2c00;background-color:#ffecec}.hljs-link{text-decoration:underline}.markdown-body{font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:#c00}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e7e7e7;border:0}.markdown-body blockquote{font-size:16px;padding:0 1em;color:#777;border-left:.25em solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd,.popover kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:1px solid #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.markdown-body .loweralpha{list-style-type:lower-alpha}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 code,.markdown-body h1 tt,.markdown-body h2 code,.markdown-body h2 tt,.markdown-body h3 code,.markdown-body h3 tt,.markdown-body h4 code,.markdown-body h4 tt,.markdown-body h5 code,.markdown-body h5 tt,.markdown-body h6 code,.markdown-body h6 tt{font-size:inherit}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#777}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol.no-list,.markdown-body ul.no-list{padding:0;list-style-type:none}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table th{font-weight:700}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{max-width:none;vertical-align:text-top;background-color:transparent}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{display:block;float:left;width:auto;padding:7px;margin:13px 0 0;overflow:hidden;border:1px solid #ddd}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{display:block;padding:5px 0 0;clear:both;color:#333}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{display:block;overflow:hidden;clear:both}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before,.markdown-body tt:after,.markdown-body tt:before{letter-spacing:-.2em;content:"\00a0"}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code,.markdown-body pre tt{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code:after,.markdown-body pre code:before,.markdown-body pre tt:after,.markdown-body pre tt:before{content:normal}.markdown-body .csv-data td,.markdown-body .csv-data th{padding:5px;overflow:hidden;font-size:12px;line-height:1;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-line-num{padding:10px 8px 9px;text-align:right;background:#fff;border:0}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:700;background:#f8f8f8;border-top:0}.news .alert .markdown-body blockquote{padding:0 0 0 40px;border:0 none}.activity-tab .news .alert .commits,.activity-tab .news .markdown-body blockquote{padding-left:0}.task-list-item{list-style-type:none}.task-list-item label{font-weight:400}.task-list-item.enabled label{cursor:pointer}.task-list-item+.task-list-item{margin-top:3px}.task-list-item-checkbox{float:left;margin:.31em 0 .2em -1.3em!important;vertical-align:middle;cursor:default!important}.markdown-body{padding-top:40px;padding-bottom:40px;max-width:758px;overflow:visible!important}.markdown-body .emoji{vertical-align:top}.markdown-body pre{border:inherit!important}.markdown-body code{color:inherit!important}.markdown-body pre code .wrapper{display:-moz-inline-flex;display:-ms-inline-flex;display:-o-inline-flex;display:inline-flex}.markdown-body pre code .gutter{float:left;overflow:hidden;-webkit-user-select:none;user-select:none}.markdown-body pre code .gutter.linenumber{text-align:right;position:relative;display:inline-block;cursor:default;z-index:4;padding:0 8px 0 0;min-width:20px;box-sizing:content-box;color:#afafaf!important;border-right:3px solid #6ce26c!important}.markdown-body pre code .gutter.linenumber>span:before{content:attr(data-linenumber)}.markdown-body pre code .code{float:left;margin:0 0 0 16px}.markdown-body .gist .line-numbers{border-left:none;border-top:none;border-bottom:none}.markdown-body .gist .line-data{border:none}.markdown-body .gist table{border-spacing:0;border-collapse:inherit!important}.markdown-body code[data-gist-id]{background:none;padding:0}.markdown-body code[data-gist-id]:after,.markdown-body code[data-gist-id]:before{content:""}.markdown-body code[data-gist-id] .blob-num{border:unset}.markdown-body code[data-gist-id] table{overflow:unset;margin-bottom:unset}.markdown-body code[data-gist-id] table tr{background:unset}.markdown-body[dir=rtl] pre{direction:ltr}.markdown-body[dir=rtl] code{direction:ltr;unicode-bidi:embed}.markdown-body .alert>p{margin-bottom:0}.markdown-body pre.abc,.markdown-body pre.flow-chart,.markdown-body pre.graphviz,.markdown-body pre.mermaid,.markdown-body pre.sequence-diagram{text-align:center;background-color:inherit;border-radius:0;white-space:inherit}.markdown-body pre.abc>code,.markdown-body pre.flow-chart>code,.markdown-body pre.graphviz>code,.markdown-body pre.mermaid>code,.markdown-body pre.sequence-diagram>code{text-align:left}.markdown-body pre.abc>svg,.markdown-body pre.flow-chart>svg,.markdown-body pre.graphviz>svg,.markdown-body pre.mermaid>svg,.markdown-body pre.sequence-diagram>svg{max-width:100%;height:100%}.markdown-body pre>code.wrap{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.markdown-body .alert>p,.markdown-body .alert>ul{margin-bottom:0}.markdown-body summary{display:list-item}.markdown-body summary:focus{outline:none}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>:not(summary){display:none}.markdown-body figure{margin:1em 40px}.markdown-body .mark,.markdown-body mark{background-color:#fff1a7}.vimeo,.youtube{cursor:pointer;display:table;text-align:center;background-position:50%;background-repeat:no-repeat;background-size:contain;background-color:#000;overflow:hidden}.vimeo,.youtube{position:relative;width:100%}.youtube{padding-bottom:56.25%}.vimeo img{width:100%;object-fit:contain;z-index:0}.youtube img{object-fit:cover;z-index:0}.vimeo iframe,.youtube iframe,.youtube img{width:100%;height:100%;position:absolute;top:0;left:0}.vimeo iframe,.youtube iframe{vertical-align:middle;z-index:1}.vimeo .icon,.youtube .icon{position:absolute;height:auto;width:auto;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;opacity:.3;transition:opacity .2s;z-index:0}.vimeo:hover .icon,.youtube:hover .icon{opacity:.6;transition:opacity .2s}.slideshare .inner,.speakerdeck .inner{position:relative;width:100%}.slideshare .inner iframe,.speakerdeck .inner iframe{position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%}.MJX_Assistive_MathML{display:none}.ui-infobar{position:relative;z-index:2;max-width:760px;margin:25px auto -25px;padding:0 15px;color:#777}.toc .invisable-node{list-style-type:none}.ui-toc{position:fixed;bottom:20px;z-index:998}.ui-toc-label{opacity:.3;background-color:#ccc;border:none;transition:opacity .2s}.ui-toc .open .ui-toc-label{opacity:1;color:#fff;transition:opacity .2s}.ui-toc-label:focus{opacity:.3;background-color:#ccc;color:#000}.ui-toc-label:hover{opacity:1;background-color:#ccc;transition:opacity .2s}.ui-toc-dropdown{margin-top:23px;margin-bottom:20px;padding-left:10px;padding-right:10px;max-width:45vw;width:25vw;max-height:70vh;overflow:auto;text-align:inherit}.ui-toc-dropdown>.toc{max-height:calc(70vh - 100px);overflow:auto}.ui-toc-dropdown[dir=rtl] .nav{padding-right:0;letter-spacing:.0029em}.ui-toc-dropdown a{overflow:hidden;text-overflow:ellipsis;white-space:pre}.ui-toc-dropdown .nav>li>a{display:block;padding:4px 20px;font-size:13px;font-weight:500;color:#767676}.ui-toc-dropdown .nav>li:first-child:last-child > ul,.ui-toc-dropdown .toc.expand ul{display:block}.ui-toc-dropdown .nav>li>a:focus,.ui-toc-dropdown .nav>li>a:hover{padding-left:19px;color:#000;text-decoration:none;background-color:transparent;border-left:1px solid #000}.ui-toc-dropdown[dir=rtl] .nav>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav>li>a:hover{padding-right:19px;border-left:none;border-right:1px solid #000}.ui-toc-dropdown .nav>.active:focus>a,.ui-toc-dropdown .nav>.active:hover>a,.ui-toc-dropdown .nav>.active>a{padding-left:18px;font-weight:700;color:#000;background-color:transparent;border-left:2px solid #000}.ui-toc-dropdown[dir=rtl] .nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav>.active>a{padding-right:18px;border-left:none;border-right:2px solid #000}.ui-toc-dropdown .nav .nav{display:none;padding-bottom:10px}.ui-toc-dropdown .nav>.active>ul{display:block}.ui-toc-dropdown .nav .nav>li>a{padding-top:1px;padding-bottom:1px;padding-left:30px;font-size:12px;font-weight:400}.ui-toc-dropdown[dir=rtl] .nav .nav>li>a{padding-right:30px}.ui-toc-dropdown .nav .nav>li>ul>li>a{padding-top:1px;padding-bottom:1px;padding-left:40px;font-size:12px;font-weight:400}.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a{padding-right:40px}.ui-toc-dropdown .nav .nav>li>a:focus,.ui-toc-dropdown .nav .nav>li>a:hover{padding-left:29px}.ui-toc-dropdown[dir=rtl] .nav .nav>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav .nav>li>a:hover{padding-right:29px}.ui-toc-dropdown .nav .nav>li>ul>li>a:focus,.ui-toc-dropdown .nav .nav>li>ul>li>a:hover{padding-left:39px}.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a:hover{padding-right:39px}.ui-toc-dropdown .nav .nav>.active:focus>a,.ui-toc-dropdown .nav .nav>.active:hover>a,.ui-toc-dropdown .nav .nav>.active>a{padding-left:28px;font-weight:500}.ui-toc-dropdown[dir=rtl] .nav .nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>a{padding-right:28px}.ui-toc-dropdown .nav .nav>.active>.nav>.active:focus>a,.ui-toc-dropdown .nav .nav>.active>.nav>.active:hover>a,.ui-toc-dropdown .nav .nav>.active>.nav>.active>a{padding-left:38px;font-weight:500}.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active>a{padding-right:38px}.markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,sans-serif}html[lang^=ja] .markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,MS\ ゴシック,sans-serif}html[lang=zh-tw] .markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html[lang=zh-cn] .markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}html .markdown-body[lang^=ja]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,MS\ ゴシック,sans-serif}html .markdown-body[lang=zh-tw]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html .markdown-body[lang=zh-cn]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}html[lang^=ja] .ui-toc-dropdown{font-family:Source Sans Pro,Helvetica,Arial,Meiryo UI,MS PGothic,MS\ Pゴシック,sans-serif}html[lang=zh-tw] .ui-toc-dropdown{font-family:Source Sans Pro,Helvetica,Arial,Microsoft JhengHei UI,微軟正黑UI,sans-serif}html[lang=zh-cn] .ui-toc-dropdown{font-family:Source Sans Pro,Helvetica,Arial,Microsoft YaHei UI,微软雅黑UI,sans-serif}html .ui-toc-dropdown[lang^=ja]{font-family:Source Sans Pro,Helvetica,Arial,Meiryo UI,MS PGothic,MS\ Pゴシック,sans-serif}html .ui-toc-dropdown[lang=zh-tw]{font-family:Source Sans Pro,Helvetica,Arial,Microsoft JhengHei UI,微軟正黑UI,sans-serif}html .ui-toc-dropdown[lang=zh-cn]{font-family:Source Sans Pro,Helvetica,Arial,Microsoft YaHei UI,微软雅黑UI,sans-serif}.ui-affix-toc{position:fixed;top:0;max-width:15vw;max-height:70vh;overflow:auto}.back-to-top,.expand-toggle,.go-to-bottom{display:block;padding:4px 10px;margin-top:10px;margin-left:10px;font-size:12px;font-weight:500;color:#999}.back-to-top:focus,.back-to-top:hover,.expand-toggle:focus,.expand-toggle:hover,.go-to-bottom:focus,.go-to-bottom:hover{color:#563d7c;text-decoration:none}.back-to-top,.go-to-bottom{margin-top:0}.ui-user-icon{width:20px;height:20px;display:block;border-radius:3px;margin-top:2px;margin-bottom:2px;margin-right:5px;background-position:50%;background-repeat:no-repeat;background-size:cover}.ui-user-icon.small{width:18px;height:18px;display:inline-block;vertical-align:middle;margin:0 0 .2em}.ui-infobar>small>span{line-height:22px}.ui-infobar>small .dropdown{display:inline-block}.ui-infobar>small .dropdown a:focus,.ui-infobar>small .dropdown a:hover{text-decoration:none}.ui-published-note{color:#337ab7}.ui-published-note .fa{font-size:20px;vertical-align:top}.unselectable{-webkit-user-select:none;-o-user-select:none;user-select:none}@media print{blockquote,div,img,pre,table{page-break-inside:avoid!important}a[href]:after{font-size:12px!important}}.markdown-body.slides{position:relative;z-index:1;color:#222}.markdown-body.slides:before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;background-color:currentColor;box-shadow:0 0 0 50vw}.markdown-body.slides section[data-markdown]{position:relative;margin-bottom:1.5em;background-color:#fff;text-align:center}.markdown-body.slides section[data-markdown] code{text-align:left}.markdown-body.slides section[data-markdown]:before{content:"";display:block;padding-bottom:56.23%}.markdown-body.slides section[data-markdown]>div:first-child{position:absolute;top:50%;left:1em;right:1em;transform:translateY(-50%);max-height:100%;overflow:hidden}.markdown-body.slides section[data-markdown]>ul{display:inline-block}.markdown-body.slides>section>section+section:after{content:"";position:absolute;top:-1.5em;right:1em;height:1.5em;border:3px solid #777}body{font-smoothing:subpixel-antialiased!important;-webkit-font-smoothing:subpixel-antialiased!important;-moz-osx-font-smoothing:auto!important;text-shadow:0 0 1em transparent,1px 1px 1.2px rgba(0,0,0,.004);-webkit-overflow-scrolling:touch;letter-spacing:.025em}.focus,:focus{outline:none!important}::-moz-focus-inner{border:0!important}body{font-family:Source Sans Pro,Helvetica,Arial,sans-serif}html[lang^=ja] body{font-family:Source Sans Pro,Helvetica,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,MS\ ゴシック,sans-serif}html[lang=zh-tw] body{font-family:Source Sans Pro,Helvetica,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html[lang=zh-cn] body{font-family:Source Sans Pro,Helvetica,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}abbr[data-original-title],abbr[title]{cursor:help}body.modal-open{overflow-y:auto;padding-right:0!important}
</style>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" integrity="sha256-3Jy/GbSLrg0o9y5Z5n1uw0qxZECH7C6OQpVBgNFYa0g=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js" integrity="sha256-g6iAfvZp+nDQ2TdTR/VVKJf3bGro4ub5fvWSWVRi2NE=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.9/es5-shim.min.js" integrity="sha256-8E4Is26QH0bD52WoQpcB+R/tcWQtpzlCojrybUd7Mxo=" crossorigin="anonymous"></script>
<![endif]-->
</head>
<body>
<div id="doc" class="markdown-body container-fluid comment-enabled" data-hard-breaks="true"><h1 id="Ethereum-1x-Definition-part-1"><a class="anchor hidden-xs" href="#Ethereum-1x-Definition-part-1" title="Ethereum-1x-Definition-part-1"><span class="octicon octicon-link"></span></a>Ethereum 1x Definition (part 1)</h1><h2 id="Objective"><a class="anchor hidden-xs" href="#Objective" title="Objective"><span class="octicon octicon-link"></span></a>Objective</h2><p>This document aims to define and describe the Ethereum 1x initiative, with a primary goal of being used as a guide for funding and other support that various improvement proposals and projects should receive under the auspices of Ethereum 1x.</p><h2 id="Definition"><a class="anchor hidden-xs" href="#Definition" title="Definition"><span class="octicon octicon-link"></span></a>Definition</h2><p>We define Ethereum 1x as a set of solutions that seek to address the causes of the most critical challenges faced by the agents in the Ethereum system. TODO: this hinges on the determinations of which challenges are more critical than the others.</p><h2 id="Methodology-and-terminology"><a class="anchor hidden-xs" href="#Methodology-and-terminology" title="Methodology-and-terminology"><span class="octicon octicon-link"></span></a>Methodology and terminology</h2><p>For the purpose of this analysis, we view Ethereum as a set of interacting agents. Their interaction is described by the concepts of contributions and challenges.<br>
Ethereum system itsef is an emergent entity, and only exists as long as its crucial actors keep making their contributions. The goal of the Ethereum 1x as an initiative, is to preserse and improve the “wellfare” of this emergent entity, rather than any agents specifically.</p><p>We split the definition into two three parts. First parts serves as an introduction to the challenges that the agents of Ethereum dace. Second parts goes into more (technical) details of the challenges, and attempts to rank (prioritise them) against each other. Third part discusses their causes and solutions. It is possible that the third part will be further subdivided to separate the discussions of causes and solutions.</p><h3 id="Agents"><a class="anchor hidden-xs" href="#Agents" title="Agents"><span class="octicon octicon-link"></span></a>Agents</h3><p>Agents make contributions and thus, collectively, give rise to the Ethereum system. Their contributions also give the Etherum system its properties, such as resilience, efficiency, accessibility. Agents are shown as ellipses.</p><pre class="graphviz"><!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: agents Pages: 1 -->
<svg width="72pt" height="44pt" viewBox="0.00 0.00 71.90 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>agents</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-40 67.9011,-40 67.9011,4 -4,4"></polygon>
<!-- agent -->
<g id="node1" class="node">
<title>agent</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="31.9506" cy="-18" rx="31.9012" ry="18"></ellipse>
<text text-anchor="middle" x="31.9506" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">agent</text>
</g>
</g>
</svg>
</pre><h3 id="Contributions"><a class="anchor hidden-xs" href="#Contributions" title="Contributions"><span class="octicon octicon-link"></span></a>Contributions</h3><p>We attempt to enumerate the most valuable and crucial contributions of the agents to the Ethereum system.</p><pre class="graphviz"><!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: contributions Pages: 1 -->
<svg width="242pt" height="52pt" viewBox="0.00 0.00 241.99 52.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 48)">
<title>contributions</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-48 237.9858,-48 237.9858,4 -4,4"></polygon>
<!-- agent -->
<g id="node1" class="node">
<title>agent</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="202.0352" cy="-22" rx="31.9012" ry="18"></ellipse>
<text text-anchor="middle" x="202.0352" y="-17.8" font-family="Times,serif" font-size="14.00" fill="#000000">agent</text>
</g>
<!-- contribution -->
<g id="node2" class="node">
<title>contribution</title>
<polygon fill="#7cfc00" stroke="#000000" points="130.1245,-14.5442 130.1245,-29.4558 93.1718,-40 40.9128,-40 3.9602,-29.4558 3.9602,-14.5442 40.9128,-4 93.1718,-4 130.1245,-14.5442"></polygon>
<polygon fill="none" stroke="#000000" points="134.127,-11.5264 134.127,-32.4736 93.732,-44 40.3526,-44 -.0424,-32.4736 -.0424,-11.5264 40.3526,0 93.732,0 134.127,-11.5264"></polygon>
<text text-anchor="middle" x="67.0423" y="-17.8" font-family="Times,serif" font-size="14.00" fill="#000000">contribution</text>
</g>
<!-- contribution->agent -->
<g id="edge1" class="edge">
<title>contribution->agent</title>
<path fill="none" stroke="#000000" d="M144.3175,-22C153.2714,-22 161.9907,-22 169.827,-22"></path>
<polygon fill="#000000" stroke="#000000" points="144.1433,-18.5001 134.1433,-22 144.1432,-25.5001 144.1433,-18.5001"></polygon>
</g>
</g>
</svg>
</pre><h3 id="Challenges"><a class="anchor hidden-xs" href="#Challenges" title="Challenges"><span class="octicon octicon-link"></span></a>Challenges</h3><p>Challenges (how critical they are, i.e. if the challenge is not met, will agents’s contribution degrade or stop?) that agents face. Shown as octagons.</p><pre class="graphviz"><!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: challenges Pages: 1 -->
<svg width="212pt" height="44pt" viewBox="0.00 0.00 211.89 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>challenges</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-40 207.889,-40 207.889,4 -4,4"></polygon>
<!-- challenge -->
<g id="node1" class="node">
<title>challenge</title>
<polygon fill="#dda0dd" stroke="#000000" points="203.8829,-10.5442 203.8829,-25.4558 173.4291,-36 130.361,-36 99.9072,-25.4558 99.9072,-10.5442 130.361,0 173.4291,0 203.8829,-10.5442"></polygon>
<text text-anchor="middle" x="151.895" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">challenge</text>
</g>
<!-- agent -->
<g id="node2" class="node">
<title>agent</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="31.9506" cy="-18" rx="31.9012" ry="18"></ellipse>
<text text-anchor="middle" x="31.9506" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">agent</text>
</g>
<!-- agent->challenge -->
<g id="edge1" class="edge">
<title>agent->challenge</title>
<path fill="none" stroke="#000000" d="M64.0935,-18C72.0595,-18 80.8673,-18 89.7389,-18"></path>
<polygon fill="#000000" stroke="#000000" points="89.7409,-21.5001 99.7408,-18 89.7408,-14.5001 89.7409,-21.5001"></polygon>
</g>
</g>
</svg>
</pre><h2 id="Agents1"><a class="anchor hidden-xs" href="#Agents1" title="Agents1"><span class="octicon octicon-link"></span></a>Agents</h2><p>For the purpose of this document, we will consider a somewhat coarse-grained grouping of Ethereum agents. In the later revisions of the document, the grouping can be expanded or made more fine-grained.</p><pre class="graphviz"><!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: agents Pages: 1 -->
<svg width="160pt" height="260pt" viewBox="0.00 0.00 160.39 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>agents</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-256 156.3877,-256 156.3877,4 -4,4"></polygon>
<!-- end_users -->
<g id="node1" class="node">
<title>end_users</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="76.1938" cy="-18" rx="48.697" ry="18"></ellipse>
<text text-anchor="middle" x="76.1938" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">End users</text>
</g>
<!-- node_ops -->
<g id="node2" class="node">
<title>node_ops</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="76.1938" cy="-72" rx="70.0875" ry="18"></ellipse>
<text text-anchor="middle" x="76.1938" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000">Node operators</text>
</g>
<!-- miners -->
<g id="node3" class="node">
<title>miners</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="76.1938" cy="-126" rx="38.2799" ry="18"></ellipse>
<text text-anchor="middle" x="76.1938" y="-121.8" font-family="Times,serif" font-size="14.00" fill="#000000">Miners</text>
</g>
<!-- dapp_devs -->
<g id="node4" class="node">
<title>dapp_devs</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="76.1938" cy="-180" rx="76.3882" ry="18"></ellipse>
<text text-anchor="middle" x="76.1938" y="-175.8" font-family="Times,serif" font-size="14.00" fill="#000000">Dapp developers</text>
</g>
<!-- core_devs -->
<g id="node5" class="node">
<title>core_devs</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="76.1938" cy="-234" rx="74.0981" ry="18"></ellipse>
<text text-anchor="middle" x="76.1938" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">Core developers</text>
</g>
</g>
</svg>
</pre><p>Each agent type makes certain contributions to the wellfare of the Ethereum system, and, in turn faces challenges. If these challenges become too great, then the contribution reduces or stops, and the Ethereum system suffers or potentially ceases to exist.</p><h2 id="End-users-agent"><a class="anchor hidden-xs" href="#End-users-agent" title="End-users-agent"><span class="octicon octicon-link"></span></a>End users (agent)</h2><p>End users generally contribute “usage” to the system. Some usage is directly beneficial, as it brings more resources into the system (for example, purchasing Ether), some - only indirectly (intense usage attract more users).<br>
End users are mostly concerned with lack of use cases, transactional cost of using Ethereum dapps or Ether currency, as well as the safety of their funds and data.</p><pre class="graphviz"><!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: end_users Pages: 1 -->
<svg width="586pt" height="114pt" viewBox="0.00 0.00 585.84 114.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 110)">
<title>end_users</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-110 581.8392,-110 581.8392,4 -4,4"></polygon>
<!-- end_users -->
<g id="node1" class="node">
<title>end_users</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="202.6457" cy="-53" rx="48.697" ry="18"></ellipse>
<text text-anchor="middle" x="202.6457" y="-48.8" font-family="Times,serif" font-size="14.00" fill="#000000">End users</text>
</g>
<!-- tx_cost -->
<g id="node4" class="node">
<title>tx_cost</title>
<polygon fill="#dda0dd" stroke="#000000" points="576.6293,-72.5442 576.6293,-87.4558 492.2979,-98 373.0352,-98 288.7038,-87.4558 288.7038,-72.5442 373.0352,-62 492.2979,-62 576.6293,-72.5442"></polygon>
<text text-anchor="middle" x="432.6666" y="-75.8" font-family="Times,serif" font-size="14.00" fill="#000000">Estimating cost of a transaction</text>
</g>
<!-- end_users->tx_cost -->
<g id="edge3" class="edge">
<title>end_users->tx_cost</title>
<path fill="none" stroke="#000000" d="M249.1938,-58.4639C269.0389,-60.7933 293.1598,-63.6246 317.3015,-66.4584"></path>
<polygon fill="#000000" stroke="#000000" points="316.9302,-69.9387 327.2701,-67.6285 317.7464,-62.9865 316.9302,-69.9387"></polygon>
</g>
<!-- tx_safety -->
<g id="node5" class="node">
<title>tx_safety</title>
<polygon fill="#dda0dd" stroke="#000000" points="578.012,-18.5442 578.012,-33.4558 492.8706,-44 372.4625,-44 287.3212,-33.4558 287.3212,-18.5442 372.4625,-8 492.8706,-8 578.012,-18.5442"></polygon>
<text text-anchor="middle" x="432.6666" y="-21.8" font-family="Times,serif" font-size="14.00" fill="#000000">Assessing safety of transactions</text>
</g>
<!-- end_users->tx_safety -->
<g id="edge4" class="edge">
<title>end_users->tx_safety</title>
<path fill="none" stroke="#000000" d="M249.1938,-47.5361C268.8359,-45.2306 292.6666,-42.4333 316.5604,-39.6286"></path>
<polygon fill="#000000" stroke="#000000" points="317.2687,-43.0696 326.7924,-38.4276 316.4526,-36.1173 317.2687,-43.0696"></polygon>
</g>
<!-- resources -->
<g id="node2" class="node">
<title>resources</title>
<polygon fill="#7cfc00" stroke="#000000" points="113.7032,-76.5442 113.7032,-91.4558 81.5995,-102 36.198,-102 4.0943,-91.4558 4.0943,-76.5442 36.198,-66 81.5995,-66 113.7032,-76.5442"></polygon>
<polygon fill="none" stroke="#000000" points="117.6963,-73.6461 117.6963,-94.3539 82.2374,-106 35.56,-106 .1011,-94.3539 .1011,-73.6461 35.56,-62 82.2374,-62 117.6963,-73.6461"></polygon>
<text text-anchor="middle" x="58.8987" y="-79.8" font-family="Times,serif" font-size="14.00" fill="#000000">Resources</text>
</g>
<!-- resources->end_users -->
<g id="edge1" class="edge">
<title>resources->end_users</title>
<path fill="none" stroke="#000000" d="M123.5136,-70.0654C135.9221,-67.3894 148.6221,-64.6505 160.114,-62.1723"></path>
<polygon fill="#000000" stroke="#000000" points="122.6908,-66.6623 113.6533,-72.1918 124.1665,-73.505 122.6908,-66.6623"></polygon>
</g>
<!-- usage -->
<g id="node3" class="node">
<title>usage</title>
<polygon fill="#7cfc00" stroke="#000000" points="97.0182,-14.5442 97.0182,-29.4558 74.6883,-40 43.1091,-40 20.7792,-29.4558 20.7792,-14.5442 43.1091,-4 74.6883,-4 97.0182,-14.5442"></polygon>
<polygon fill="none" stroke="#000000" points="101.0242,-12.011 101.0242,-31.989 75.5878,-44 42.2096,-44 16.7732,-31.989 16.7732,-12.011 42.2096,0 75.5878,0 101.0242,-12.011"></polygon>
<text text-anchor="middle" x="58.8987" y="-17.8" font-family="Times,serif" font-size="14.00" fill="#000000">Usage</text>
</g>
<!-- usage->end_users -->
<g id="edge2" class="edge">
<title>usage->end_users</title>
<path fill="none" stroke="#000000" d="M111.0646,-33.2499C127.1762,-36.7245 144.7197,-40.5079 160.1003,-43.8248"></path>
<polygon fill="#000000" stroke="#000000" points="111.7632,-29.8202 101.2501,-31.1334 110.2875,-36.6629 111.7632,-29.8202"></polygon>
</g>
</g>
</svg>
</pre><h3 id="Estimating-cost-of-a-transaction-challenge"><a class="anchor hidden-xs" href="#Estimating-cost-of-a-transaction-challenge" title="Estimating-cost-of-a-transaction-challenge"><span class="octicon octicon-link"></span></a>Estimating cost of a transaction (challenge)</h3><p>By cost of transactions for the end user we normally understand the gas cost of those transactions multiplied by the current cost of gas. Users may often overpay for gas because they cannot reliably predict which gas price level will ensure the inclusion of their transactions with required urgency.</p><h3 id="Assessing-safety-of-transactions-challenge"><a class="anchor hidden-xs" href="#Assessing-safety-of-transactions-challenge" title="Assessing-safety-of-transactions-challenge"><span class="octicon octicon-link"></span></a>Assessing safety of transactions (challenge)</h3><p>Often users need to weight risk of exploit against the benefit they hope to get from the transaction. Initial design of Ethereum did not put a lot of empphasys on making that risk assessment easier.</p><h2 id="Node-operators-agent"><a class="anchor hidden-xs" href="#Node-operators-agent" title="Node-operators-agent"><span class="octicon octicon-link"></span></a>Node operators (agent)</h2><p>Cost of operating a full node is rising. Below are the main cost categories.</p><pre class="graphviz"><!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: node_ops Pages: 1 -->
<svg width="681pt" height="206pt" viewBox="0.00 0.00 681.03 206.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 202)">
<title>node_ops</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-202 677.0301,-202 677.0301,4 -4,4"></polygon>
<!-- node_ops -->
<g id="node1" class="node">
<title>node_ops</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="265.3159" cy="-99" rx="70.0875" ry="18"></ellipse>
<text text-anchor="middle" x="265.3159" y="-94.8" font-family="Times,serif" font-size="14.00" fill="#000000">Node operators</text>
</g>
<!-- long_sync -->
<g id="node3" class="node">
<title>long_sync</title>
<polygon fill="#dda0dd" stroke="#000000" points="660.1777,-172.5442 660.1777,-187.4558 579.4224,-198 465.2171,-198 384.4618,-187.4558 384.4618,-172.5442 465.2171,-162 579.4224,-162 660.1777,-172.5442"></polygon>
<text text-anchor="middle" x="522.3198" y="-175.8" font-family="Times,serif" font-size="14.00" fill="#000000">Long time to sync a new node</text>
</g>
<!-- node_ops->long_sync -->
<g id="edge2" class="edge">
<title>node_ops->long_sync</title>
<path fill="none" stroke="#000000" d="M292.7604,-115.7732C313.6694,-127.8401 343.5473,-143.5864 371.6094,-153 385.7704,-157.7504 400.9759,-161.7162 416.0851,-165.0131"></path>
<polygon fill="#000000" stroke="#000000" points="415.4834,-168.4629 425.9882,-167.0845 416.9166,-161.6112 415.4834,-168.4629"></polygon>
</g>
<!-- storage_devices -->
<g id="node4" class="node">
<title>storage_devices</title>
<polygon fill="#dda0dd" stroke="#000000" points="631.6845,-118.5442 631.6845,-133.4558 567.6201,-144 477.0194,-144 412.9551,-133.4558 412.9551,-118.5442 477.0194,-108 567.6201,-108 631.6845,-118.5442"></polygon>
<text text-anchor="middle" x="522.3198" y="-121.8" font-family="Times,serif" font-size="14.00" fill="#000000">Cost of storage devices</text>
</g>
<!-- node_ops->storage_devices -->
<g id="edge3" class="edge">
<title>node_ops->storage_devices</title>
<path fill="none" stroke="#000000" d="M330.5011,-105.8481C356.8404,-108.6153 387.9112,-111.8795 417.288,-114.9657"></path>
<polygon fill="#000000" stroke="#000000" points="417.2867,-118.4847 427.5977,-116.0488 418.0181,-111.5231 417.2867,-118.4847"></polygon>
</g>
<!-- traffic -->
<g id="node5" class="node">
<title>traffic</title>
<polygon fill="#dda0dd" stroke="#000000" points="617.8799,-64.5442 617.8799,-79.4558 561.9021,-90 482.7375,-90 426.7596,-79.4558 426.7596,-64.5442 482.7375,-54 561.9021,-54 617.8799,-64.5442"></polygon>
<text text-anchor="middle" x="522.3198" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000">High internet traffic</text>
</g>
<!-- node_ops->traffic -->
<g id="edge4" class="edge">
<title>node_ops->traffic</title>
<path fill="none" stroke="#000000" d="M330.5011,-92.1519C359.2174,-89.135 393.5578,-85.5273 425.1954,-82.2036"></path>
<polygon fill="#000000" stroke="#000000" points="425.7822,-85.6613 435.3618,-81.1355 425.0508,-78.6996 425.7822,-85.6613"></polygon>
</g>
<!-- complex_ops -->
<g id="node6" class="node">
<title>complex_ops</title>
<polygon fill="#dda0dd" stroke="#000000" points="673.2408,-10.5442 673.2408,-25.4558 584.8333,-36 459.8062,-36 371.3987,-25.4558 371.3987,-10.5442 459.8062,0 584.8333,0 673.2408,-10.5442"></polygon>
<text text-anchor="middle" x="522.3198" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">Complex operations to run nodes</text>
</g>
<!-- node_ops->complex_ops -->
<g id="edge5" class="edge">
<title>node_ops->complex_ops</title>
<path fill="none" stroke="#000000" d="M292.7604,-82.2268C313.6694,-70.1599 343.5473,-54.4136 371.6094,-45 384.5881,-40.6462 398.4442,-36.9514 412.2994,-33.8267"></path>
<polygon fill="#000000" stroke="#000000" points="413.3394,-37.1829 422.3754,-31.651 411.8619,-30.3406 413.3394,-37.1829"></polygon>
</g>
<!-- nodes -->
<g id="node2" class="node">
<title>nodes</title>
<polygon fill="#7cfc00" stroke="#000000" points="155.0331,-91.5442 155.0331,-106.4558 110.7934,-117 48.229,-117 3.9893,-106.4558 3.9893,-91.5442 48.229,-81 110.7934,-81 155.0331,-91.5442"></polygon>
<polygon fill="none" stroke="#000000" points="159.0337,-88.3856 159.0337,-109.6144 111.2637,-121 47.7588,-121 -.0112,-109.6144 -.0112,-88.3856 47.7588,-77 111.2637,-77 159.0337,-88.3856"></polygon>
<text text-anchor="middle" x="79.5112" y="-94.8" font-family="Times,serif" font-size="14.00" fill="#000000">Network nodes</text>
</g>
<!-- nodes->node_ops -->
<g id="edge1" class="edge">
<title>nodes->node_ops</title>
<path fill="none" stroke="#000000" d="M159.1177,-99C167.5908,-99 176.2145,-99 184.6991,-99"></path>
<polygon fill="#000000" stroke="#000000" points="184.9599,-102.5001 194.9599,-99 184.9599,-95.5001 184.9599,-102.5001"></polygon>
</g>
</g>
</svg>
</pre><h3 id="Long-time-to-sync-a-new-node-challenge"><a class="anchor hidden-xs" href="#Long-time-to-sync-a-new-node-challenge" title="Long-time-to-sync-a-new-node-challenge"><span class="octicon octicon-link"></span></a>Long time to sync a new node (challenge)</h3><h3 id="Cost-of-storage-devices-challenge"><a class="anchor hidden-xs" href="#Cost-of-storage-devices-challenge" title="Cost-of-storage-devices-challenge"><span class="octicon octicon-link"></span></a>Cost of storage devices (challenge)</h3><p>All main-net capable implementations require at least SSD to maintable acceptable operating speed, and NVMe is desirable for a initial sync (downloading all the blocks and reconstituting the current state of the blockchain).</p><h3 id="High-internet-traffic-challenge"><a class="anchor hidden-xs" href="#High-internet-traffic-challenge" title="High-internet-traffic-challenge"><span class="octicon octicon-link"></span></a>High internet traffic (challenge)</h3><p>After initial sync, traffic usage should not be very high. However, if many new nodes joining the network, the outgoing traffic of the incument nodes may increase, to serve blocks and initial state to the new-joiners.</p><h3 id="Complex-operations-to-run-nodes-challenge"><a class="anchor hidden-xs" href="#Complex-operations-to-run-nodes-challenge" title="Complex-operations-to-run-nodes-challenge"><span class="octicon octicon-link"></span></a>Complex operations to run nodes (challenge)</h3><p>Ethereum nodes transmit, process, and store large amounts of data. They also often have very little tolerance to downtime. These two characteristics mean that management of Ethereum nodes can be non-trivial.</p><h2 id="Dapp-DevOps-agent"><a class="anchor hidden-xs" href="#Dapp-DevOps-agent" title="Dapp-DevOps-agent"><span class="octicon octicon-link"></span></a>Dapp DevOps (agent)</h2><p>Dapp developers and operators (devOps) are mainly concerned with two issues: scalability and security. For some potential dapps, Ethereum as a platform does not provide enough capacity in terms of transactional throughput, cost of transactions, capacity of data retention.<br>
These two issued can be thought of mirroring the issues facing the end users. Higher scalability correlates to the lower cost for users. Better security measures for smart contracts translate to easier risk assessment for the users.</p><pre class="graphviz"><!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: dapp_devops Pages: 1 -->
<svg width="616pt" height="98pt" viewBox="0.00 0.00 616.08 98.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 94)">
<title>dapp_devops</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-94 612.0794,-94 612.0794,4 -4,4"></polygon>
<!-- dapp_devops -->
<g id="node1" class="node">
<title>dapp_devops</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="215.7265" cy="-45" rx="66.0154" ry="18"></ellipse>
<text text-anchor="middle" x="215.7265" y="-40.8" font-family="Times,serif" font-size="14.00" fill="#000000">Dapp DevOps</text>
</g>
<!-- scalability -->
<g id="node3" class="node">
<title>scalability</title>
<polygon fill="#dda0dd" stroke="#000000" points="604.9073,-64.5442 604.9073,-79.4558 521.7253,-90 404.0883,-90 320.9063,-79.4558 320.9063,-64.5442 404.0883,-54 521.7253,-54 604.9073,-64.5442"></polygon>
<text text-anchor="middle" x="462.9068" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000">Limited transaction throughput</text>
</g>
<!-- dapp_devops->scalability -->
<g id="edge2" class="edge">
<title>dapp_devops->scalability</title>
<path fill="none" stroke="#000000" d="M277.1448,-51.7088C297.6624,-53.95 321.2711,-56.5289 344.6265,-59.08"></path>
<polygon fill="#000000" stroke="#000000" points="344.2898,-62.564 354.6107,-60.1706 345.0499,-55.6053 344.2898,-62.564"></polygon>
</g>
<!-- security -->
<g id="node4" class="node">
<title>security</title>
<polygon fill="#dda0dd" stroke="#000000" points="608.2522,-10.5442 608.2522,-25.4558 523.1108,-36 402.7028,-36 317.5614,-25.4558 317.5614,-10.5442 402.7028,0 523.1108,0 608.2522,-10.5442"></polygon>
<text text-anchor="middle" x="462.9068" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">Assessing safety of transactions</text>
</g>
<!-- dapp_devops->security -->
<g id="edge3" class="edge">
<title>dapp_devops->security</title>
<path fill="none" stroke="#000000" d="M277.1448,-38.2912C297.3217,-36.0872 320.488,-33.5567 343.4629,-31.0471"></path>
<polygon fill="#000000" stroke="#000000" points="344.0789,-34.5007 353.6397,-29.9355 343.3187,-27.5421 344.0789,-34.5007"></polygon>
</g>
<!-- use_cases -->
<g id="node2" class="node">
<title>use_cases</title>
<polygon fill="#7cfc00" stroke="#000000" points="109.5884,-37.5442 109.5884,-52.4558 78.7005,-63 35.0183,-63 4.1304,-52.4558 4.1304,-37.5442 35.0183,-27 78.7005,-27 109.5884,-37.5442"></polygon>
<polygon fill="none" stroke="#000000" points="113.5786,-34.6807 113.5786,-55.3193 79.3612,-67 34.3576,-67 .1403,-55.3193 .1403,-34.6807 34.3576,-23 79.3612,-23 113.5786,-34.6807"></polygon>
<text text-anchor="middle" x="56.8594" y="-40.8" font-family="Times,serif" font-size="14.00" fill="#000000">Use cases</text>
</g>
<!-- use_cases->dapp_devops -->
<g id="edge1" class="edge">
<title>use_cases->dapp_devops</title>
<path fill="none" stroke="#000000" d="M113.7653,-45C122.0844,-45 130.7629,-45 139.3925,-45"></path>
<polygon fill="#000000" stroke="#000000" points="139.476,-48.5001 149.476,-45 139.476,-41.5001 139.476,-48.5001"></polygon>
</g>
</g>
</svg>
</pre><h3 id="Limited-transaction-throughput-challenge"><a class="anchor hidden-xs" href="#Limited-transaction-throughput-challenge" title="Limited-transaction-throughput-challenge"><span class="octicon octicon-link"></span></a>Limited transaction throughput (challenge)</h3><p>Some use cases of smart contracts and currency require certain level of scalability, which usually translates to how quickly a transaction gets “confirmed” related to how high gas price is paid. If scalability of the system is not enough, some more complex constructions (e.g. Level 2 solutions like state channels and Plasma) might need to be employed, at the cost of increased complexity.</p><h3 id="Assessing-safety-of-transactions-challenge1"><a class="anchor hidden-xs" href="#Assessing-safety-of-transactions-challenge1" title="Assessing-safety-of-transactions-challenge1"><span class="octicon octicon-link"></span></a>Assessing safety of transactions (challenge)</h3><p>This challenges is shared with the end users.<br>
Whenever users’ interaction with the Ethereum system are less trivial than currency transfer, some security analysis is usually performed, to demonstrate to the potential users of smart contracts that most likely their transactions will not have unintended consequences. So far the tradition is that the additional cost of performing security audits of the code, or formal verification, or other security measures is paid by the dapp developers.</p><h2 id="Core-developers-agent"><a class="anchor hidden-xs" href="#Core-developers-agent" title="Core-developers-agent"><span class="octicon octicon-link"></span></a>Core developers (agent)</h2><p>Contribuion of core developers is in developing and maintaining the software that, when run on the computers connected to the Internet, gives rise to the Ethereum network.<br>
Development of a fully functional Ethereum implementation which is capable of run on the mainnet is challenging.</p><pre class="graphviz"><!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: core_devs Pages: 1 -->
<svg width="616pt" height="152pt" viewBox="0.00 0.00 615.93 152.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 148)">
<title>core_devs</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-148 611.9292,-148 611.9292,4 -4,4"></polygon>
<!-- core_devs -->
<g id="node1" class="node">
<title>core_devs</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="264.4055" cy="-72" rx="74.0981" ry="18"></ellipse>
<text text-anchor="middle" x="264.4055" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000">Core developers</text>
</g>
<!-- new_implementations -->
<g id="node3" class="node">
<title>new_implementations</title>
<polygon fill="#dda0dd" stroke="#000000" points="595.1246,-118.5442 595.1246,-133.4558 534.2422,-144 448.1415,-144 387.2591,-133.4558 387.2591,-118.5442 448.1415,-108 534.2422,-108 595.1246,-118.5442"></polygon>
<text text-anchor="middle" x="491.1918" y="-121.8" font-family="Times,serif" font-size="14.00" fill="#000000">New implementations</text>
</g>
<!-- core_devs->new_implementations -->
<g id="edge2" class="edge">
<title>core_devs->new_implementations</title>
<path fill="none" stroke="#000000" d="M316.4332,-84.9152C334.7591,-89.4245 355.5094,-94.4853 374.4545,-99 388.5117,-102.3499 403.536,-105.87 417.9673,-109.2211"></path>
<polygon fill="#000000" stroke="#000000" points="417.3123,-112.662 427.8443,-111.51 418.8926,-105.8427 417.3123,-112.662"></polygon>
</g>
<!-- product_vs_system -->
<g id="node4" class="node">
<title>product_vs_system</title>
<polygon fill="#dda0dd" stroke="#000000" points="580.7025,-64.5442 580.7025,-79.4558 528.2684,-90 454.1153,-90 401.6812,-79.4558 401.6812,-64.5442 454.1153,-54 528.2684,-54 580.7025,-64.5442"></polygon>
<text text-anchor="middle" x="491.1918" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000">Product vs System</text>
</g>
<!-- core_devs->product_vs_system -->
<g id="edge3" class="edge">
<title>core_devs->product_vs_system</title>
<path fill="none" stroke="#000000" d="M338.6638,-72C355.4018,-72 373.4364,-72 391.0395,-72"></path>
<polygon fill="#000000" stroke="#000000" points="391.3411,-75.5001 401.341,-72 391.341,-68.5001 391.3411,-75.5001"></polygon>
</g>
<!-- backwards_compatibility -->
<g id="node5" class="node">
<title>backwards_compatibility</title>
<polygon fill="#dda0dd" stroke="#000000" points="608.167,-10.5442 608.167,-25.4558 539.6445,-36 442.7391,-36 374.2167,-25.4558 374.2167,-10.5442 442.7391,0 539.6445,0 608.167,-10.5442"></polygon>
<text text-anchor="middle" x="491.1918" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">Backwards compatibility</text>
</g>
<!-- core_devs->backwards_compatibility -->
<g id="edge4" class="edge">
<title>core_devs->backwards_compatibility</title>
<path fill="none" stroke="#000000" d="M316.4332,-59.0848C334.7591,-54.5755 355.5094,-49.5147 374.4545,-45 387.3545,-41.9259 401.0689,-38.7084 414.3921,-35.6097"></path>
<polygon fill="#000000" stroke="#000000" points="415.5343,-38.9378 424.4842,-33.2676 413.9518,-32.119 415.5343,-38.9378"></polygon>
</g>
<!-- software -->
<g id="node2" class="node">
<title>software</title>
<polygon fill="#7cfc00" stroke="#000000" points="150.5258,-64.5442 150.5258,-79.4558 107.5598,-90 46.7967,-90 3.8306,-79.4558 3.8306,-64.5442 46.7967,-54 107.5598,-54 150.5258,-64.5442"></polygon>
<polygon fill="none" stroke="#000000" points="154.5351,-61.4088 154.5351,-82.5912 108.0456,-94 46.3108,-94 -.1786,-82.5912 -.1786,-61.4088 46.3108,-50 108.0456,-50 154.5351,-61.4088"></polygon>
<text text-anchor="middle" x="77.1782" y="-67.8" font-family="Times,serif" font-size="14.00" fill="#000000">Node software</text>
</g>
<!-- software->core_devs -->
<g id="edge1" class="edge">
<title>software->core_devs</title>
<path fill="none" stroke="#000000" d="M154.4116,-72C162.7904,-72 171.3498,-72 179.81,-72"></path>
<polygon fill="#000000" stroke="#000000" points="180.0617,-75.5001 190.0616,-72 180.0616,-68.5001 180.0617,-75.5001"></polygon>
</g>
</g>
</svg>
</pre><h4 id="New-implementations-challenge"><a class="anchor hidden-xs" href="#New-implementations-challenge" title="New-implementations-challenge"><span class="octicon octicon-link"></span></a>New implementations (challenge)</h4><p>It is difficult to create new indepdendent implementations (clients) that are capable of working with the main net. Lack of implementation diversity leads to core developers being “conservative” by default.```</p><h4 id="Product-vs-system-challenge"><a class="anchor hidden-xs" href="#Product-vs-system-challenge" title="Product-vs-system-challenge"><span class="octicon octicon-link"></span></a>Product vs system (challenge)</h4><p>It is difficult to balance product improvements (performance, usability), and the upgrades of Ethereum. Example: preparation for the Istanbul hard fork vs finishing Geth 1.9</p><h4 id="Backwards-compatibility-challenge"><a class="anchor hidden-xs" href="#Backwards-compatibility-challenge" title="Backwards-compatibility-challenge"><span class="octicon octicon-link"></span></a>Backwards compatibility (challenge)</h4><p>It is difficult to balance backwards compatibility (with the existing contracts), and the rule changes that are neccessary for Ethereum system to be sustainable.</p><h2 id="Entire-diagram"><a class="anchor hidden-xs" href="#Entire-diagram" title="Entire-diagram"><span class="octicon octicon-link"></span></a>Entire diagram</h2><pre class="graphviz"><!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: agents Pages: 1 -->
<svg width="625pt" height="646pt" viewBox="0.00 0.00 624.88 646.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 642)">
<title>agents</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-642 620.8848,-642 620.8848,4 -4,4"></polygon>
<!-- contributions -->
<g id="node1" class="node">
<title>contributions</title>
<polygon fill="none" stroke="#000000" stroke-width="0" points="155.9242,-36 3.0983,-36 3.0983,0 155.9242,0 155.9242,-36"></polygon>
<text text-anchor="middle" x="79.5112" y="-12.9" font-family="Times,serif" font-size="17.00" fill="#000000">CONTRIBUTIONS</text>
</g>
<!-- agents -->
<g id="node2" class="node">
<title>agents</title>
<polygon fill="none" stroke="#000000" stroke-width="0" points="312.7541,-71 229.6785,-71 229.6785,-35 312.7541,-35 312.7541,-71"></polygon>
<text text-anchor="middle" x="271.2163" y="-47.9" font-family="Times,serif" font-size="17.00" fill="#000000">AGENTS</text>
</g>
<!-- challenges -->
<g id="node3" class="node">
<title>challenges</title>
<polygon fill="none" stroke="#000000" stroke-width="0" points="564.0662,-44 436.2288,-44 436.2288,-8 564.0662,-8 564.0662,-44"></polygon>
<text text-anchor="middle" x="500.1475" y="-20.9" font-family="Times,serif" font-size="17.00" fill="#000000">CHALLENGES</text>
</g>
<!-- end_users -->
<g id="node4" class="node">
<title>end_users</title>
<g id="a_node4"><a xlink:href="#End-users-agent" xlink:title="End users">
<ellipse fill="#f0e68c" stroke="#000000" cx="271.2163" cy="-107" rx="48.697" ry="18"></ellipse>
<text text-anchor="middle" x="271.2163" y="-102.8" font-family="Times,serif" font-size="14.00" fill="#000000">End users</text>
</a>
</g>
</g>
<!-- tx_cost -->
<g id="node7" class="node">
<title>tx_cost</title>
<polygon fill="#dda0dd" stroke="#000000" points="595.0829,-126.5442 595.0829,-141.4558 539.471,-152 460.824,-152 405.2121,-141.4558 405.2121,-126.5442 460.824,-116 539.471,-116 595.0829,-126.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-129.8" font-family="Times,serif" font-size="14.00" fill="#000000">Cost of transactions</text>
</g>
<!-- end_users->tx_cost -->
<g id="edge3" class="edge">
<title>end_users->tx_cost</title>
<path fill="none" stroke="#000000" d="M317.8199,-112.4964C343.4255,-115.5163 376.1218,-119.3725 406.7369,-122.9832"></path>
<polygon fill="#000000" stroke="#000000" points="406.6853,-126.5013 417.0264,-124.1967 407.5052,-119.5495 406.6853,-126.5013"></polygon>
</g>
<!-- tx_safety -->
<g id="node8" class="node">
<title>tx_safety</title>
<polygon fill="#dda0dd" stroke="#000000" points="580.4836,-72.5442 580.4836,-87.4558 533.4238,-98 466.8712,-98 419.8114,-87.4558 419.8114,-72.5442 466.8712,-62 533.4238,-62 580.4836,-72.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-75.8" font-family="Times,serif" font-size="14.00" fill="#000000">Risk assessment</text>
</g>
<!-- end_users->tx_safety -->
<g id="edge4" class="edge">
<title>end_users->tx_safety</title>
<path fill="none" stroke="#000000" d="M317.8199,-101.5036C345.8992,-98.1919 382.5055,-93.8746 415.5435,-89.9781"></path>
<polygon fill="#000000" stroke="#000000" points="416.1475,-93.4313 425.6687,-88.784 415.3276,-86.4794 416.1475,-93.4313"></polygon>
</g>
<!-- resources -->
<g id="node5" class="node">
<title>resources</title>
<polygon fill="#7cfc00" stroke="#000000" points="134.3157,-130.5442 134.3157,-145.4558 102.212,-156 56.8105,-156 24.7068,-145.4558 24.7068,-130.5442 56.8105,-120 102.212,-120 134.3157,-130.5442"></polygon>
<polygon fill="none" stroke="#000000" points="138.3088,-127.6461 138.3088,-148.3539 102.8499,-160 56.1726,-160 20.7137,-148.3539 20.7137,-127.6461 56.1726,-116 102.8499,-116 138.3088,-127.6461"></polygon>
<text text-anchor="middle" x="79.5112" y="-133.8" font-family="Times,serif" font-size="14.00" fill="#000000">Resources</text>
</g>
<!-- resources->end_users -->
<g id="edge1" class="edge">
<title>resources->end_users</title>
<path fill="none" stroke="#000000" d="M148.4661,-126.8495C174.3413,-122.6653 203.062,-118.021 226.2128,-114.2774"></path>
<polygon fill="#000000" stroke="#000000" points="147.6449,-123.4368 138.3319,-128.4883 148.7624,-130.347 147.6449,-123.4368"></polygon>
</g>
<!-- usage -->
<g id="node6" class="node">
<title>usage</title>
<polygon fill="#7cfc00" stroke="#000000" points="117.6308,-68.5442 117.6308,-83.4558 95.3009,-94 63.7216,-94 41.3917,-83.4558 41.3917,-68.5442 63.7216,-58 95.3009,-58 117.6308,-68.5442"></polygon>
<polygon fill="none" stroke="#000000" points="121.6367,-66.011 121.6367,-85.989 96.2003,-98 62.8221,-98 37.3857,-85.989 37.3857,-66.011 62.8221,-54 96.2003,-54 121.6367,-66.011"></polygon>
<text text-anchor="middle" x="79.5112" y="-71.8" font-family="Times,serif" font-size="14.00" fill="#000000">Usage</text>
</g>
<!-- usage->end_users -->
<g id="edge2" class="edge">
<title>usage->end_users</title>
<path fill="none" stroke="#000000" d="M131.7256,-84.4434C161.3065,-89.2268 197.9369,-95.1502 226.2369,-99.7265"></path>
<polygon fill="#000000" stroke="#000000" points="132.0122,-80.9444 121.5817,-82.8031 130.8948,-87.8546 132.0122,-80.9444"></polygon>
</g>
<!-- node_ops -->
<g id="node9" class="node">
<title>node_ops</title>
<g id="a_node9"><a xlink:href="#Node-operators-agent" xlink:title="Node operators">
<ellipse fill="#f0e68c" stroke="#000000" cx="271.2163" cy="-269" rx="70.0875" ry="18"></ellipse>
<text text-anchor="middle" x="271.2163" y="-264.8" font-family="Times,serif" font-size="14.00" fill="#000000">Node operators</text>
</a>
</g>
</g>
<!-- storage_devices -->
<g id="node11" class="node">
<title>storage_devices</title>
<polygon fill="#dda0dd" stroke="#000000" points="609.5122,-342.5442 609.5122,-357.4558 545.4478,-368 454.8472,-368 390.7828,-357.4558 390.7828,-342.5442 454.8472,-332 545.4478,-332 609.5122,-342.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-345.8" font-family="Times,serif" font-size="14.00" fill="#000000">Cost of storage devices</text>
</g>
<!-- node_ops->storage_devices -->
<g id="edge6" class="edge">
<title>node_ops->storage_devices</title>
<path fill="none" stroke="#000000" d="M300.9181,-285.5336C323.0983,-297.3215 354.4504,-312.823 383.4102,-323 394.8695,-327.027 407.1746,-330.6217 419.3434,-333.7717"></path>
<polygon fill="#000000" stroke="#000000" points="418.5039,-337.1695 429.0545,-336.2024 420.2036,-330.379 418.5039,-337.1695"></polygon>
</g>
<!-- traffic -->
<g id="node12" class="node">
<title>traffic</title>
<polygon fill="#dda0dd" stroke="#000000" points="595.7076,-288.5442 595.7076,-303.4558 539.7298,-314 460.5652,-314 404.5874,-303.4558 404.5874,-288.5442 460.5652,-278 539.7298,-278 595.7076,-288.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-291.8" font-family="Times,serif" font-size="14.00" fill="#000000">High internet traffic</text>
</g>
<!-- node_ops->traffic -->
<g id="edge7" class="edge">
<title>node_ops->traffic</title>
<path fill="none" stroke="#000000" d="M335.2908,-276.5569C357.3977,-279.1642 382.6375,-282.1409 406.6096,-284.9682"></path>
<polygon fill="#000000" stroke="#000000" points="406.4517,-288.4738 416.7929,-286.1692 407.2717,-281.5219 406.4517,-288.4738"></polygon>
</g>
<!-- dev_ops -->
<g id="node13" class="node">
<title>dev_ops</title>
<g id="a_node13"><a xlink:href="#DevOps-challenge" xlink:title="Complex DevOps">
<polygon fill="#dda0dd" stroke="#000000" points="587.4147,-234.5442 587.4147,-249.4558 536.2947,-260 464.0003,-260 412.8803,-249.4558 412.8803,-234.5442 464.0003,-224 536.2947,-224 587.4147,-234.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-237.8" font-family="Times,serif" font-size="14.00" fill="#000000">Complex DevOps</text>
</a>
</g>
</g>
<!-- node_ops->dev_ops -->
<g id="edge8" class="edge">
<title>node_ops->dev_ops</title>
<path fill="none" stroke="#000000" d="M335.2908,-261.4431C358.8796,-258.6611 386.0354,-255.4583 411.412,-252.4654"></path>
<polygon fill="#000000" stroke="#000000" points="411.89,-255.9334 421.4112,-251.2861 411.07,-248.9816 411.89,-255.9334"></polygon>
</g>
<!-- sync_time -->
<g id="node14" class="node">
<title>sync_time</title>
<polygon fill="#dda0dd" stroke="#000000" points="554.2328,-180.5442 554.2328,-195.4558 522.5504,-206 477.7446,-206 446.0622,-195.4558 446.0622,-180.5442 477.7446,-170 522.5504,-170 554.2328,-180.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-183.8" font-family="Times,serif" font-size="14.00" fill="#000000">Sync time</text>
</g>
<!-- node_ops->sync_time -->
<g id="edge9" class="edge">
<title>node_ops->sync_time</title>
<path fill="none" stroke="#000000" d="M300.9181,-252.4664C323.0983,-240.6785 354.4504,-225.177 383.4102,-215 401.6261,-208.5986 421.979,-203.2897 440.5245,-199.1227"></path>
<polygon fill="#000000" stroke="#000000" points="441.3003,-202.5359 450.3257,-196.9869 439.8098,-195.6964 441.3003,-202.5359"></polygon>
</g>
<!-- nodes -->
<g id="node10" class="node">
<title>nodes</title>
<polygon fill="#7cfc00" stroke="#000000" points="155.0331,-261.5442 155.0331,-276.4558 110.7934,-287 48.229,-287 3.9893,-276.4558 3.9893,-261.5442 48.229,-251 110.7934,-251 155.0331,-261.5442"></polygon>
<polygon fill="none" stroke="#000000" points="159.0337,-258.3856 159.0337,-279.6144 111.2637,-291 47.7588,-291 -.0112,-279.6144 -.0112,-258.3856 47.7588,-247 111.2637,-247 159.0337,-258.3856"></polygon>
<text text-anchor="middle" x="79.5112" y="-264.8" font-family="Times,serif" font-size="14.00" fill="#000000">Network nodes</text>
</g>
<!-- nodes->node_ops -->
<g id="edge5" class="edge">
<title>nodes->node_ops</title>
<path fill="none" stroke="#000000" d="M159.146,-269C169.4847,-269 180.0826,-269 190.4397,-269"></path>
<polygon fill="#000000" stroke="#000000" points="190.698,-272.5001 200.698,-269 190.698,-265.5001 190.698,-272.5001"></polygon>
</g>
<!-- miners -->
<g id="node15" class="node">
<title>miners</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="271.2163" cy="-350" rx="38.2799" ry="18"></ellipse>
<text text-anchor="middle" x="271.2163" y="-345.8" font-family="Times,serif" font-size="14.00" fill="#000000">Miners</text>
</g>
<!-- chain_security -->
<g id="node16" class="node">
<title>chain_security</title>
<polygon fill="#7cfc00" stroke="#000000" points="152.233,-342.5442 152.233,-357.4558 109.6336,-368 49.3889,-368 6.7895,-357.4558 6.7895,-342.5442 49.3889,-332 109.6336,-332 152.233,-342.5442"></polygon>
<polygon fill="none" stroke="#000000" points="156.239,-339.4146 156.239,-360.5854 110.1227,-372 48.8998,-372 2.7835,-360.5854 2.7835,-339.4146 48.8998,-328 110.1227,-328 156.239,-339.4146"></polygon>
<text text-anchor="middle" x="79.5112" y="-345.8" font-family="Times,serif" font-size="14.00" fill="#000000">Chain security</text>
</g>
<!-- chain_security->miners -->
<g id="edge10" class="edge">
<title>chain_security->miners</title>
<path fill="none" stroke="#000000" d="M166.6127,-350C189.8033,-350 213.6828,-350 232.7605,-350"></path>
<polygon fill="#000000" stroke="#000000" points="166.3805,-346.5001 156.3804,-350 166.3804,-353.5001 166.3805,-346.5001"></polygon>
</g>
<!-- dapp_devs -->
<g id="node17" class="node">
<title>dapp_devs</title>
<ellipse fill="#f0e68c" stroke="#000000" cx="271.2163" cy="-431" rx="76.3882" ry="18"></ellipse>
<text text-anchor="middle" x="271.2163" y="-426.8" font-family="Times,serif" font-size="14.00" fill="#000000">Dapp developers</text>
</g>
<!-- scalability -->
<g id="node19" class="node">
<title>scalability</title>
<g id="a_node19"><a xlink:href="#Scalability-challenge" xlink:title="Scalability">
<polygon fill="#dda0dd" stroke="#000000" points="556.9532,-450.5442 556.9532,-465.4558 523.6772,-476 476.6178,-476 443.3418,-465.4558 443.3418,-450.5442 476.6178,-440 523.6772,-440 556.9532,-450.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-453.8" font-family="Times,serif" font-size="14.00" fill="#000000">Scalability</text>
</a>
</g>
</g>
<!-- dapp_devs->scalability -->
<g id="edge12" class="edge">
<title>dapp_devs->scalability</title>
<path fill="none" stroke="#000000" d="M339.5931,-439.0643C369.1756,-442.5533 403.6885,-446.6237 433.1185,-450.0946"></path>
<polygon fill="#000000" stroke="#000000" points="432.9587,-453.6 443.2998,-451.2954 433.7787,-446.6482 432.9587,-453.6"></polygon>
</g>
<!-- security -->
<g id="node20" class="node">
<title>security</title>
<g id="a_node20"><a xlink:href="#Security-challenge" xlink:title="Security">
<polygon fill="#dda0dd" stroke="#000000" points="546.7047,-396.5442 546.7047,-411.4558 519.4321,-422 480.8629,-422 453.5903,-411.4558 453.5903,-396.5442 480.8629,-386 519.4321,-386 546.7047,-396.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-399.8" font-family="Times,serif" font-size="14.00" fill="#000000">Security</text>
</a>
</g>
</g>
<!-- dapp_devs->security -->
<g id="edge13" class="edge">
<title>dapp_devs->security</title>
<path fill="none" stroke="#000000" d="M339.5931,-422.9357C372.6192,-419.0406 411.7904,-414.4208 443.1737,-410.7195"></path>
<polygon fill="#000000" stroke="#000000" points="443.9769,-414.1491 453.4981,-409.5018 443.1569,-407.1973 443.9769,-414.1491"></polygon>
</g>
<!-- use_cases -->
<g id="node18" class="node">
<title>use_cases</title>
<polygon fill="#7cfc00" stroke="#000000" points="132.2403,-423.5442 132.2403,-438.4558 101.3523,-449 57.6702,-449 26.7822,-438.4558 26.7822,-423.5442 57.6702,-413 101.3523,-413 132.2403,-423.5442"></polygon>
<polygon fill="none" stroke="#000000" points="136.2304,-420.6807 136.2304,-441.3193 102.0131,-453 57.0094,-453 22.7921,-441.3193 22.7921,-420.6807 57.0094,-409 102.0131,-409 136.2304,-420.6807"></polygon>
<text text-anchor="middle" x="79.5112" y="-426.8" font-family="Times,serif" font-size="14.00" fill="#000000">Use cases</text>
</g>
<!-- use_cases->dapp_devs -->
<g id="edge11" class="edge">
<title>use_cases->dapp_devs</title>
<path fill="none" stroke="#000000" d="M146.334,-431C161.9569,-431 178.7158,-431 194.7231,-431"></path>
<polygon fill="#000000" stroke="#000000" points="146.251,-427.5001 136.251,-431 146.2509,-434.5001 146.251,-427.5001"></polygon>
</g>
<!-- core_devs -->
<g id="node21" class="node">
<title>core_devs</title>
<g id="a_node21"><a xlink:href="#Core-developers-agent" xlink:title="Core developers">
<ellipse fill="#f0e68c" stroke="#000000" cx="271.2163" cy="-566" rx="74.0981" ry="18"></ellipse>
<text text-anchor="middle" x="271.2163" y="-561.8" font-family="Times,serif" font-size="14.00" fill="#000000">Core developers</text>
</a>
</g>
</g>
<!-- new_implementations -->
<g id="node23" class="node">
<title>new_implementations</title>
<g id="a_node23"><a xlink:href="#New-implementations-challenge" xlink:title="New implementations">
<polygon fill="#dda0dd" stroke="#000000" points="604.0802,-612.5442 604.0802,-627.4558 543.1978,-638 457.0972,-638 396.2148,-627.4558 396.2148,-612.5442 457.0972,-602 543.1978,-602 604.0802,-612.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-615.8" font-family="Times,serif" font-size="14.00" fill="#000000">New implementations</text>
</a>
</g>
</g>
<!-- core_devs->new_implementations -->
<g id="edge15" class="edge">
<title>core_devs->new_implementations</title>
<path fill="none" stroke="#000000" d="M323.7046,-578.7334C342.5267,-583.2726 363.9115,-588.399 383.4102,-593 397.4747,-596.3188 412.5024,-599.8246 426.9347,-603.1715"></path>
<polygon fill="#000000" stroke="#000000" points="426.2802,-606.6125 436.8121,-605.459 427.8596,-599.793 426.2802,-606.6125"></polygon>
</g>
<!-- product_vs_system -->
<g id="node24" class="node">
<title>product_vs_system</title>
<g id="a_node24"><a xlink:href="#Product-vs-system-challenge" xlink:title="Product vs System">
<polygon fill="#dda0dd" stroke="#000000" points="589.6582,-558.5442 589.6582,-573.4558 537.224,-584 463.071,-584 410.6368,-573.4558 410.6368,-558.5442 463.071,-548 537.224,-548 589.6582,-558.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-561.8" font-family="Times,serif" font-size="14.00" fill="#000000">Product vs System</text>
</a>
</g>
</g>
<!-- core_devs->product_vs_system -->
<g id="edge16" class="edge">
<title>core_devs->product_vs_system</title>
<path fill="none" stroke="#000000" d="M345.5437,-566C363.0591,-566 382.0101,-566 400.4419,-566"></path>
<polygon fill="#000000" stroke="#000000" points="400.616,-569.5001 410.616,-566 400.6159,-562.5001 400.616,-569.5001"></polygon>
</g>
<!-- backwards_compatibility -->
<g id="node25" class="node">
<title>backwards_compatibility</title>
<g id="a_node25"><a xlink:href="#Backwards-compatibility-challenge" xlink:title="Backwards compatibility">
<polygon fill="#dda0dd" stroke="#000000" points="617.1227,-504.5442 617.1227,-519.4558 548.6002,-530 451.6948,-530 383.1723,-519.4558 383.1723,-504.5442 451.6948,-494 548.6002,-494 617.1227,-504.5442"></polygon>
<text text-anchor="middle" x="500.1475" y="-507.8" font-family="Times,serif" font-size="14.00" fill="#000000">Backwards compatibility</text>
</a>
</g>
</g>
<!-- core_devs->backwards_compatibility -->
<g id="edge17" class="edge">
<title>core_devs->backwards_compatibility</title>
<path fill="none" stroke="#000000" d="M323.7046,-553.2666C342.5267,-548.7274 363.9115,-543.601 383.4102,-539 396.5249,-535.9054 410.4771,-532.6481 424.0031,-529.5086"></path>
<polygon fill="#000000" stroke="#000000" points="424.8073,-532.9151 433.7588,-527.2474 423.2267,-526.0959 424.8073,-532.9151"></polygon>
</g>
<!-- software -->
<g id="node22" class="node">
<title>software</title>
<polygon fill="#7cfc00" stroke="#000000" points="152.8588,-558.5442 152.8588,-573.4558 109.8928,-584 49.1297,-584 6.1637,-573.4558 6.1637,-558.5442 49.1297,-548 109.8928,-548 152.8588,-558.5442"></polygon>
<polygon fill="none" stroke="#000000" points="156.8681,-555.4088 156.8681,-576.5912 110.3786,-588 48.6438,-588 2.1544,-576.5912 2.1544,-555.4088 48.6438,-544 110.3786,-544 156.8681,-555.4088"></polygon>
<text text-anchor="middle" x="79.5112" y="-561.8" font-family="Times,serif" font-size="14.00" fill="#000000">Node software</text>
</g>
<!-- software->core_devs -->
<g id="edge14" class="edge">
<title>software->core_devs</title>
<path fill="none" stroke="#000000" d="M167.2184,-566C177.1468,-566 187.1926,-566 196.9256,-566"></path>
<polygon fill="#000000" stroke="#000000" points="166.9325,-562.5001 156.9324,-566 166.9324,-569.5001 166.9325,-562.5001"></polygon>
</g>
</g>
</svg>
</pre><h2 id="TODOs"><a class="anchor hidden-xs" href="#TODOs" title="TODOs"><span class="octicon octicon-link"></span></a>TODOs</h2><ul>
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled"><label></label>Discuss and correct methodology, wording, and content (specically the challenges)</li>
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled"><label></label>Levels of criticality for challenges, perhaps expressed by colours</li>
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled"><label></label>Add remaining open projects to the solutions</li>
<li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled"><label></label>Place correct hyperlinks on all the nodes in the diagram</li>
</ul></div>
<div class="ui-toc dropup unselectable hidden-print" style="display:none;">
<div class="pull-right dropdown">
<a id="tocLabel" class="ui-toc-label btn btn-default" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false" title="Table of content">
<i class="fa fa-bars"></i>
</a>
<ul id="ui-toc" class="ui-toc-dropdown dropdown-menu" aria-labelledby="tocLabel">
<div class="toc"><ul class="nav">
<li class=""><a href="#Ethereum-1x-Definition-part-1" title="Ethereum 1x Definition (part 1)">Ethereum 1x Definition (part 1)</a><ul class="nav">
<li><a href="#Objective" title="Objective">Objective</a></li>
<li><a href="#Definition" title="Definition">Definition</a></li>
<li><a href="#Methodology-and-terminology" title="Methodology and terminology">Methodology and terminology</a><ul class="nav">
<li><a href="#Agents" title="Agents">Agents</a></li>
<li><a href="#Contributions" title="Contributions">Contributions</a></li>
<li><a href="#Challenges" title="Challenges">Challenges</a></li>
</ul>
</li>
<li><a href="#Agents1" title="Agents">Agents</a></li>
<li><a href="#End-users-agent" title="End users (agent)">End users (agent)</a><ul class="nav">
<li><a href="#Estimating-cost-of-a-transaction-challenge" title="Estimating cost of a transaction (challenge)">Estimating cost of a transaction (challenge)</a></li>
<li><a href="#Assessing-safety-of-transactions-challenge" title="Assessing safety of transactions (challenge)">Assessing safety of transactions (challenge)</a></li>
</ul>
</li>
<li><a href="#Node-operators-agent" title="Node operators (agent)">Node operators (agent)</a><ul class="nav">
<li><a href="#Long-time-to-sync-a-new-node-challenge" title="Long time to sync a new node (challenge)">Long time to sync a new node (challenge)</a></li>
<li><a href="#Cost-of-storage-devices-challenge" title="Cost of storage devices (challenge)">Cost of storage devices (challenge)</a></li>
<li><a href="#High-internet-traffic-challenge" title="High internet traffic (challenge)">High internet traffic (challenge)</a></li>
<li><a href="#Complex-operations-to-run-nodes-challenge" title="Complex operations to run nodes (challenge)">Complex operations to run nodes (challenge)</a></li>
</ul>
</li>
<li><a href="#Dapp-DevOps-agent" title="Dapp DevOps (agent)">Dapp DevOps (agent)</a><ul class="nav">
<li><a href="#Limited-transaction-throughput-challenge" title="Limited transaction throughput (challenge)">Limited transaction throughput (challenge)</a></li>
<li><a href="#Assessing-safety-of-transactions-challenge1" title="Assessing safety of transactions (challenge)">Assessing safety of transactions (challenge)</a></li>
</ul>
</li>
<li><a href="#Core-developers-agent" title="Core developers (agent)">Core developers (agent)</a></li>
<li><a href="#Entire-diagram" title="Entire diagram">Entire diagram</a></li>
<li><a href="#TODOs" title="TODOs">TODOs</a></li>
</ul>
</li>
</ul>
</div><div class="toc-menu"><a class="expand-toggle" href="#">Expand all</a><a class="back-to-top" href="#">Back to top</a><a class="go-to-bottom" href="#">Go to bottom</a></div>
</ul>
</div>
</div>
<div id="ui-toc-affix" class="ui-affix-toc ui-toc-dropdown unselectable hidden-print" data-spy="affix" style="top:17px;display:none;" null null>
<div class="toc"><ul class="nav">
<li class=""><a href="#Ethereum-1x-Definition-part-1" title="Ethereum 1x Definition (part 1)">Ethereum 1x Definition (part 1)</a><ul class="nav">
<li><a href="#Objective" title="Objective">Objective</a></li>
<li><a href="#Definition" title="Definition">Definition</a></li>
<li><a href="#Methodology-and-terminology" title="Methodology and terminology">Methodology and terminology</a><ul class="nav">
<li><a href="#Agents" title="Agents">Agents</a></li>
<li><a href="#Contributions" title="Contributions">Contributions</a></li>
<li><a href="#Challenges" title="Challenges">Challenges</a></li>
</ul>
</li>
<li><a href="#Agents1" title="Agents">Agents</a></li>
<li><a href="#End-users-agent" title="End users (agent)">End users (agent)</a><ul class="nav">
<li><a href="#Estimating-cost-of-a-transaction-challenge" title="Estimating cost of a transaction (challenge)">Estimating cost of a transaction (challenge)</a></li>
<li><a href="#Assessing-safety-of-transactions-challenge" title="Assessing safety of transactions (challenge)">Assessing safety of transactions (challenge)</a></li>
</ul>
</li>
<li><a href="#Node-operators-agent" title="Node operators (agent)">Node operators (agent)</a><ul class="nav">
<li><a href="#Long-time-to-sync-a-new-node-challenge" title="Long time to sync a new node (challenge)">Long time to sync a new node (challenge)</a></li>
<li><a href="#Cost-of-storage-devices-challenge" title="Cost of storage devices (challenge)">Cost of storage devices (challenge)</a></li>
<li><a href="#High-internet-traffic-challenge" title="High internet traffic (challenge)">High internet traffic (challenge)</a></li>
<li><a href="#Complex-operations-to-run-nodes-challenge" title="Complex operations to run nodes (challenge)">Complex operations to run nodes (challenge)</a></li>
</ul>
</li>
<li><a href="#Dapp-DevOps-agent" title="Dapp DevOps (agent)">Dapp DevOps (agent)</a><ul class="nav">
<li><a href="#Limited-transaction-throughput-challenge" title="Limited transaction throughput (challenge)">Limited transaction throughput (challenge)</a></li>
<li><a href="#Assessing-safety-of-transactions-challenge1" title="Assessing safety of transactions (challenge)">Assessing safety of transactions (challenge)</a></li>
</ul>
</li>
<li><a href="#Core-developers-agent" title="Core developers (agent)">Core developers (agent)</a></li>
<li><a href="#Entire-diagram" title="Entire diagram">Entire diagram</a></li>
<li><a href="#TODOs" title="TODOs">TODOs</a></li>
</ul>
</li>
</ul>
</div><div class="toc-menu"><a class="expand-toggle" href="#">Expand all</a><a class="back-to-top" href="#">Back to top</a><a class="go-to-bottom" href="#">Go to bottom</a></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gist-embed/2.6.0/gist-embed.min.js" integrity="sha256-KyF2D6xPIJUW5sUDSs93vWyZm+1RzIpKCexxElmxl8g=" crossorigin="anonymous" defer></script>
<script>
var markdown = $(".markdown-body");
//smooth all hash trigger scrolling
function smoothHashScroll() {
var hashElements = $("a[href^='#']").toArray();
for (var i = 0; i < hashElements.length; i++) {
var element = hashElements[i];
var $element = $(element);
var hash = element.hash;
if (hash) {
$element.on('click', function (e) {
// store hash
var hash = this.hash;
if ($(hash).length <= 0) return;
// prevent default anchor click behavior
e.preventDefault();
// animate
$('body, html').stop(true, true).animate({
scrollTop: $(hash).offset().top
}, 100, "linear", function () {
// when done, add hash to url
// (default click behaviour)
window.location.hash = hash;
});
});
}
}
}
smoothHashScroll();
var toc = $('.ui-toc');
var tocAffix = $('.ui-affix-toc');
var tocDropdown = $('.ui-toc-dropdown');
//toc
tocDropdown.click(function (e) {
e.stopPropagation();
});
var enoughForAffixToc = true;
function generateScrollspy() {
$(document.body).scrollspy({
target: ''
});
$(document.body).scrollspy('refresh');
if (enoughForAffixToc) {
toc.hide();
tocAffix.show();
} else {
tocAffix.hide();
toc.show();
}
$(document.body).scroll();
}
function windowResize() {
//toc right
var paddingRight = parseFloat(markdown.css('padding-right'));
var right = ($(window).width() - (markdown.offset().left + markdown.outerWidth() - paddingRight));
toc.css('right', right + 'px');
//affix toc left
var newbool;
var rightMargin = (markdown.parent().outerWidth() - markdown.outerWidth()) / 2;
//for ipad or wider device
if (rightMargin >= 133) {
newbool = true;
var affixLeftMargin = (tocAffix.outerWidth() - tocAffix.width()) / 2;
var left = markdown.offset().left + markdown.outerWidth() - affixLeftMargin;
tocAffix.css('left', left + 'px');
} else {
newbool = false;
}
if (newbool != enoughForAffixToc) {
enoughForAffixToc = newbool;
generateScrollspy();
}
}
$(window).resize(function () {
windowResize();
});
$(document).ready(function () {
windowResize();
generateScrollspy();
});
//remove hash
function removeHash() {
window.location.hash = '';
}
var backtotop = $('.back-to-top');
var gotobottom = $('.go-to-bottom');
backtotop.click(function (e) {
e.preventDefault();
e.stopPropagation();
if (scrollToTop)
scrollToTop();
removeHash();
});
gotobottom.click(function (e) {
e.preventDefault();
e.stopPropagation();
if (scrollToBottom)
scrollToBottom();
removeHash();
});
var toggle = $('.expand-toggle');
var tocExpand = false;
checkExpandToggle();
toggle.click(function (e) {
e.preventDefault();
e.stopPropagation();
tocExpand = !tocExpand;
checkExpandToggle();
})
function checkExpandToggle () {
var toc = $('.ui-toc-dropdown .toc');
var toggle = $('.expand-toggle');
if (!tocExpand) {
toc.removeClass('expand');
toggle.text('Expand all');
} else {
toc.addClass('expand');
toggle.text('Collapse all');
}
}
function scrollToTop() {
$('body, html').stop(true, true).animate({
scrollTop: 0
}, 100, "linear");
}
function scrollToBottom() {
$('body, html').stop(true, true).animate({
scrollTop: $(document.body)[0].scrollHeight
}, 100, "linear");
}
</script>
</body>
</html>