-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
for_use_ethereumbook_appdx-forks-historytxt_fr_CA.html
703 lines (703 loc) · 52.6 KB
/
for_use_ethereumbook_appdx-forks-historytxt_fr_CA.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
<!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">
<meta name="generator" content="Asciidoctor 2.0.17">
<title>Historique de la fourche Ethereum</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment the following line when using as a custom stylesheet */
/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
b,strong{font-weight:bold}
abbr{font-size:.9em}
abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
dfn{font-style:italic}
hr{height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type=checkbox],input[type=radio]{padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,::before,::after{box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
ul.square{list-style-type:square}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details{margin-left:1.25rem}
details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
details>summary::-webkit-details-marker{display:none}
details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
.exampleblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child{margin-bottom:0}
.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
.sidebarblock>:first-child{margin-top:0}
.sidebarblock>:last-child{margin-bottom:0}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
pre.pygments span.linenos{display:inline-block;margin-right:.75em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
li>p:empty:only-child::before{content:"";display:inline-block}
ul.checklist>li>p:first-child{margin-left:-1em}
ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,span.alt,summary{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]{border-bottom:1px dotted}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
</head>
<body class="article">
<div id="header">
</div>
<div id="content">
<div class="sect1">
<h2 id="ethereum_fork_history">Appendix A: Historique de la fourche Ethereum</h2>
<div class="sectionbody">
<div class="paragraph">
<p>La plupart des <em>hard forks</em> ou <em>fourches ou embranchements divergents</em> sont planifiées dans le cadre d’une feuille de route de mise à niveau et consistent en des mises à jour généralement acceptées par la communauté (c’est-à-dire qu’il existe un consensus social). Cependant, certains embranchements divergents manquent de consensus, ce qui conduit à plusieurs chaînes de blocs distinctes. Les événements qui ont conduit à la scission Ethereum/Ethereum Classic en sont un exemple et sont abordés dans cette annexe.</p>
</div>
<div class="sect2">
<h3 id="etc_origin">Ethereum Classic (ETC)</h3>
<div class="paragraph">
<p>Ethereum Classic est né après que des membres de la communauté Ethereum ont mis en place un embranchement divergent sensible au temps (nom de code «DAO»). Le 20 juillet 2016, à une hauteur de bloc de 1,92 million, Ethereum a introduit un changement d’état irrégulier via un embranchement divergent dans le but de restituer environ 3,6 millions d’ether qui avaient été prélevés sur un contrat intelligent connu sous le nom de DAO. Presque tout le monde a convenu que l’ether pris avait été volé et que tout laisser entre les mains du voleur nuirait considérablement au développement de l’écosystème Ethereum ainsi qu’à la plate-forme elle-même.</p>
</div>
<div class="paragraph">
<p>Rendre l’ether à ses propriétaires respectifs comme si le DAO n’avait même jamais existé était techniquement facile, bien que politiquement controversé. Un certain nombre de personnes dans l’écosystème n’étaient pas d’accord avec ce changement, estimant que l’immuabilité devrait être un principe fondamental de la chaîne de blocs Ethereum sans exception ; ils ont choisi de continuer la chaîne originale sous le nom d’Ethereum Classic. Alors que la scission elle-même était initialement idéologique, les deux chaînes ont depuis évolué en entités distinctes.</p>
</div>
</div>
<div class="sect2">
<h3 id="dao_origin">L’Organisation Autonome Décentralisée (La DAO)</h3>
<div class="paragraph">
<p>La DAO a été créé par Slock.it, dans le but de fournir un financement et une gouvernance communautaires pour les projets. L’idée centrale était que les propositions seraient soumises, les conservateurs géreraient les propositions, des fonds seraient collectés auprès d’investisseurs au sein de la communauté Ethereum et, si les projets s’avéraient fructueux, les investisseurs recevraient une part des bénéfices.</p>
</div>
<div class="paragraph">
<p>Le DAO a également été l’une des premières expériences dans un jeton Ethereum. Plutôt que de financer des projets directement avec de l’ether, les participants échangeraient leur ether contre des jetons DAO, les utiliseraient pour voter sur le financement du projet et pourraient plus tard les échanger contre de l’ether à nouveau.</p>
</div>
<div class="paragraph">
<p>Les jetons DAO étaient disponibles à l’achat lors d’une vente publique qui s’est déroulée du 5 avril au 30 avril 2016, amassant <a href="https://econ.st/2qfJO1g">près de 14%</a> du total d’ether existant, qui valait environ 150 millions de dollars au temps.</p>
</div>
</div>
<div class="sect2">
<h3 id="dao_reentrancy_bug">Le bogue de réentrance</h3>
<div class="paragraph">
<p>Le 9 juin 2016, les développeurs Peter Vessenes et Chriseth ont signalé que la plupart des contrats basés sur Ethereum qui géraient des fonds étaient potentiellement http:/ /bit.ly/2AAaDmA[vulnérable à un exploit] qui pourrait vider les fonds du contrat. Quelques jours plus tard, le 12 juin, Stephen Tual (cofondateur de Slock.it) rapportait que <a href="http://bit.ly/2qmo3g1">Le code du DAO n’était pas vulnérable</a> au bogue décrit par Peter et Chriseth. Les contributeurs inquiets de DAO ont poussé un soupir de soulagement, jusqu’à cinq jours plus tard, lorsqu’un attaquant inconnu a lancé <a href="http://bit.ly/2Q7zR1h">drainant le DAO</a> en utilisant un exploit similaire à celui pour lequel l’avertissement avait été émis. En fin de compte, l’attaquant du DAO a siphonné environ 3,6 millions d’ether du DAO.</p>
</div>
<div class="paragraph">
<p>Simultanément, un assemblage de volontaires se faisant appeler le Robin Hood Group (RHG) a commencé à utiliser le même exploit pour retirer les fonds restants afin d’éviter qu’ils ne soient volés par l’attaquant du DAO. Le 21 juin, <a href="http://bit.ly/2PtX4xl">the RHG a annoncé</a> qu’ils avaient obtenu environ 70 % des fonds du DAO (environ 7,2 millions d’ethers), avec l’intention de les restituer à la communauté (ce qu’ils ont fait avec succès le le réseau ETC, et n’avait pas besoin de le faire sur le réseau Ethereum après le fork). De nombreux remerciements et félicitations ont été adressés au GHR pour sa réflexion rapide et ses actions rapides qui ont aidé à sécuriser l’essentiel de l’ether de la communauté.</p>
</div>
<div class="sect3">
<h4 id="dao_reentrancy_bug_technicals">Détails techniques</h4>
<div class="paragraph">
<p>Alors qu’une explication plus détaillée et approfondie du bogue est donnée par <a href="http://bit.ly/2EQaLCI">Phil Daian</a>, la brève explication est qu’une fonction cruciale dans le DAO avait deux lignes de code dans le mauvais ordre, ce qui signifie que l’attaquant pourrait avoir des demandes de retrait d’ether traitées à plusieurs reprises, avant que la vérification de savoir si l’attaquant avait droit au retrait ne soit terminée. Ce type de vulnérabilité est décrit dans <a href="#reentrancy_security">[reentrancy_security]</a>.</p>
</div>
</div>
<div class="sect3">
<h4 id="dao_reentrancy_bug_attack_flow">Flux d’attaque</h4>
<div class="paragraph">
<p>Imaginez que vous aviez 100 $ sur votre compte bancaire et que vous pouviez apporter à votre caissier de banque n’importe quel nombre de bordereaux de retrait. Le caissier vous donnerait de l’argent pour chaque feuillet dans l’ordre, et ce n’est qu’après avoir traité tous les feuillets qu’il enregistrerait votre retrait. Et si vous leur apportiez trois bordereaux, chacun demandant un retrait de 100 $ ? Et si vous leur apportiez trois mille ?</p>
</div>
<div class="paragraph">
<p>L’attaque DAO a fonctionné comme ceci :</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>L’attaquant du DAO demande au contrat DAO de retirer les jetons DAO (DAO).</p>
</li>
<li>
<p>L’attaquant demande au contrat de retirer du DAO <em>encore</em>, avant que le contrat ne mette à jour ses enregistrements pour montrer que DAO a été retiré.</p>
</li>
<li>
<p>L’attaquant répète l’étape 2 autant de fois que possible.</p>
</li>
<li>
<p>Le contrat enregistre finalement un seul retrait DAO, perdant la trace des retraits qui se sont produits entre-temps.</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect2">
<h3 id="dao_hard_fork">L’embranchement divergent DAO</h3>
<div class="paragraph">
<p>Heureusement, il y avait plusieurs garanties intégrées au DAO : notamment, toutes les demandes de retrait étaient soumises à un délai de 28 jours. Cela a donné à la communauté un peu de temps pour discuter de ce qu’il fallait faire à propos de l’exploit, car du 17 juin au 20 juillet environ, l’attaquant DAO ne serait pas en mesure de convertir ses jetons DAO en ether.</p>
</div>
<div class="paragraph">
<p>Plusieurs développeurs se sont concentrés sur la recherche d’une solution viable, et de multiples pistes ont été explorées dans ce court laps de temps. Parmi eux se trouvaient un <a href="http://bit.ly/2qhruEK"><em>embranchement convergent DAO</em></a>, annoncé le 24 juin, pour retarder les retraits de DAO jusqu’à ce qu’un consensus soit atteint, et un <a href="http://bit.ly/2AAGjIu"><em>embranchement divergent DAO</em></a>, annoncé le 15 juillet, pour inverser les effets de l’attaque DAO avec un changement d’état exceptionnel.</p>
</div>
<div class="paragraph">
<p>Le 28 juin, les développeurs ont découvert <a href="http://bit.ly/2zgOxUn">un exploit DoS dans l’embranchement convergent DAO</a> et ont conclu que l’embranchement divergent DAO serait la seule option viable pour résoudre complètement la situation. L’embranchement divergent DAO transférerait tout l’ether qui avait été investi dans le DAO dans un nouveau contrat intelligent de remboursement, permettant aux propriétaires d’origine de l’ether de réclamer un remboursement complet. Cela offrait une solution pour restituer les fonds piratés, mais signifiait également interférer avec les soldes d’adresses spécifiques sur le réseau, aussi isolées soient-elles. Il y aurait également des restes d’ether dans des parties de The DAO connues sous le nom de <em>childDAOs</em>. Un groupe d’administrateurs autoriserait manuellement l’ether restant, d’une valeur de <a href="http://bit.ly/2RuUrJh">~$6–7 millions</a> à l’époque.</p>
</div>
<div class="paragraph">
<p>Le temps presse, plusieurs équipes de développement Ethereum ont créé des clients qui permettaient à un utilisateur de décider s’il souhaitait activer cet embranchement. Cependant, les créateurs du client voulaient décider de faire ce choix opt-in (ne pas de fourche par défaut) ou opt-out (embranchement par défaut). Le 15 juillet, un vote a été ouvert sur <a href="http://bit.ly/2ABkTuV"><em>carbonvote.com</em></a>. Le lendemain, à hauteur de bloc <a href="http://bit.ly/2yHb7Gl">1,894,000</a>, il était fermé. Sur les <a href="http://bit.ly/2RuUrJh">5,5 % de l’offre totale d’ether</a> qui ont voté, environ 80 % des voix (~ 4,5 % de l’offre totale d’ether) ont voté pour l’opt-out. Un quart des votes d’opt-out provenaient d’une seule adresse.</p>
</div>
<div class="paragraph">
<p>En fin de compte, la décision est devenue une option de non-participation, de sorte que ceux qui s’opposaient à l’embranchement divergent DAO devraient exprimer explicitement leur opposition en modifiant une option de configuration dans le logiciel qu’ils exécutaient.</p>
</div>
<div class="paragraph">
<p>Le 20 juillet, à hauteur de bloc <a href="http://bit.ly/2zfaIKB">1,920,000</a>, Ethereum <a href="http://bit.ly/2yJxZ83">a implémenté l’embranchement divergent DAO</a> et ainsi deux réseaux Ethereum ont été créés : un incluant le changement d’état , et l’autre l’ignorant.</p>
</div>
<div class="paragraph">
<p>Lors de l’embranchement divergent DAO, Ethereum (Ethereum actuel) a gagné la majorité de la puissance minière, beaucoup ont supposé qu’un consensus était atteint et que la chaîne minoritaire s’estomperait loin, comme dans les fourches précédentes. Malgré cela, une partie importante de la communauté Ethereum (environ 10 % en valeur et en puissance minière) a commencé à soutenir la chaîne non bifurquée, connue sous le nom d’Ethereum Classic.</p>
</div>
<div class="paragraph">
<p>Quelques jours après l’embranchement, plusieurs bourses ont commencé à répertorier Ethereum ("ETH") et Ethereum Classic ("ETC"). En raison de la nature des embranchements divergents, tous les utilisateurs d’Ethereum détenant de l’ether au moment de la scission détenaient alors des fonds sur les deux chaînes, et une valeur marchande pour ETC a été rapidement établie avec <a href="http://bit.ly/2qhuNvP">Poloniex</a> cotant ETC le 24 juillet.</p>
</div>
<div class="sect3">
<h4 id="dao_hard_fork_timeline">Chronologie de l’embranchement divergent DAO</h4>
<div class="ulist">
<ul>
<li>
<p>5 avril 2016 : Slock.it <a href="http://bit.ly/2Db4boE">publie une revue de sécurité</a> des contrats intelligents génériques du cadre DAO par Deja Vu Security.</p>
</li>
<li>
<p>30 avril 2016 : La vente publique DAO est <a href="http://bit.ly/2qhwhpI">lancée</a>.</p>
</li>
<li>
<p>27 mai 2016 : Fin de la vente publique DAO.</p>
</li>
<li>
<p>9 juin 2016 : Un <a href="http://bit.ly/2AAaDmA">bogue d’appel récursif</a> générique est découvert et semble affecter de nombreux contrats Solidity qui suivent les soldes des utilisateurs.</p>
</li>
<li>
<p>12 juin 2016 : Stephen Tual <a href="http://bit.ly/2qmo3g1">déclare</a> que les fonds du DAO ne sont pas à risque.</p>
</li>
<li>
<p>17 juin 2016 : <a href="http://bit.ly/2EQaLCI">Le DAO est exploité</a> et une variante du bogue découvert (appelé le « bogue de réentrance ») est utilisée pour commencer à drainer les fonds, finissant par attraper environ 30 % de l’ether.</p>
</li>
<li>
<p>21 juin 2016 : Le RHG <a href="http://bit.ly/2zgl3Gk">annonce</a> qu’il a sécurisé les autres ~70 % de l’ether stocké au sein du DAO.</p>
</li>
<li>
<p>24 juin 2016 : Un <a href="http://bit.ly/2qhruEK">vote d’embranchement convergent</a> est annoncé via une signalisation opt-in via les clients Geth et Parity, conçu pour retenir temporairement les fonds jusqu’à ce que la communauté puisse mieux décider quoi faire.</p>
</li>
<li>
<p>28 juin 2016 : Une <a href="http://bit.ly/2zgOxUn">vulnérabilité</a> est découverte dans l’embranchement convergent et elle est abandonnée.</p>
</li>
<li>
<p>Du 28 juin 2016 au 15 juillet : les utilisateurs débattent de l’embranchement divergent ou non ; la plupart des débats publics vocaux se déroulent sur le subreddit <em>/r/ethereum</em>.</p>
</li>
<li>
<p>15 juillet 2016 : <a href="http://bit.ly/2qmo3g1">L’embranchement divergent DAO</a> est proposé, pour restituer les fonds pris lors de l’attaque DAO.</p>
</li>
<li>
<p>15 juillet 2016 : Un <a href="http://bit.ly/2ABkTuV">vote a lieu</a> sur CarbonVote pour décider si l’embranchement divergent DAO sera opt-in (ne pas fork par défaut) ou opt-out (fork by défaut).</p>
</li>
<li>
<p>16 juillet 2016 : <a href="http://bit.ly/2RuUrJh">5,5 % des votes sur l’offre totale d’ether</a> ; ~80 % des votes (~4,5 % de l’offre totale) sont en faveur d’un embranchement divergent opt-out, un quart des votes pro provenant d’une seule adresse.</p>
</li>
<li>
<p>20 juillet 2016 : <a href="http://bit.ly/2yJxZ83">L’embranchement divergent</a> se produit au bloc 1 920 000.</p>
</li>
<li>
<p>20 juillet 2016 : Ceux qui s’opposent à l’embranchement divergent DAO continuent d’utiliser l’ancien logiciel client ; cela entraîne des problèmes, <a href="http://bit.ly/2qjJm27">les transactions sont rejouées sur les deux chaînes</a>.</p>
</li>
<li>
<p>24 juillet 2016 : <a href="http://bit.ly/2qhuNvP">Poloniex répertorie</a> la chaîne Ethereum originale sous le symbole ETC ; c’est le premier échange à le faire.</p>
</li>
<li>
<p>10 août 2016 : Le RHG <a href="http://bit.ly/2JrLpK2">transfère 2,9</a> millions de l’ETC récupéré à Poloniex afin de le convertir en ETH sur les conseils de Bity SA ; 14% du total des avoirs RHG sont convertis d’ETC en ETH et autres crypto-monnaies, et <a href="http://bit.ly/2ETDdUc">Poloniex gèle</a> les 86% restants des ETH déposés.</p>
</li>
<li>
<p>30 août 2016 : Les fonds gelés sont renvoyés par Poloniex au RHG, qui met alors en place un contrat de remboursement sur la chaîne ETC.</p>
</li>
<li>
<p>11 décembre 2016 : L’équipe de développement ETC d’IOHK se forme, dirigée par le membre fondateur d’Ethereum, Charles Hoskinson.</p>
</li>
<li>
<p>13 janvier 2017 : Le réseau ETC est mis à jour pour résoudre les problèmes de relecture des transactions ; les chaînes sont maintenant fonctionnellement séparées.</p>
</li>
<li>
<p>20 février 2017 : L’équipe ETCDEVTeam se forme, dirigée par le premier développeur ETC Igor Artamonov (splix).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="eth_etc_differences">Ethereum et Ethereum Classic</h3>
<div class="paragraph">
<p>Alors que la scission initiale était centrée sur le DAO, les deux réseaux, Ethereum et Ethereum Classic, sont désormais des projets distincts, bien que la plupart des développements soient toujours effectués par la communauté Ethereum et simplement porté sur les bases de code Ethereum Classic. Néanmoins, l’ensemble des différences est en constante évolution et trop étendu pour être couvert dans cette annexe. Cependant, il convient de noter que les chaînes diffèrent considérablement dans leur développement de base et leur structure communautaire. Quelques-unes des différences techniques sont discutées ci-dessous.</p>
</div>
<div class="sect3">
<h4 id="eth_etc_differences_evm">L’EVM</h4>
<div class="paragraph">
<p>Pour la plupart (au moment de la rédaction), les deux réseaux restent hautement compatibles : le code de contrat produit pour une chaîne fonctionne comme prévu sur l’autre ; mais il y a quelques petites différences dans les OPCODES EVM (voir lien EIP : <a href="http://bit.ly/2yIajkF">140</a>, lien : <a href="http://bit.ly/2qhKz9Y">145</a> et lien : <a href="http://bit.ly/2SxsrFR">214</a>).</p>
</div>
</div>
<div class="sect3">
<h4 id="eth_etc_differences_core_development">Développement du réseau central</h4>
<div class="paragraph">
<p>Étant des projets ouverts, les plateformes de chaîne de blocs comptent souvent de nombreux utilisateurs et contributeurs. Cependant, le développement du réseau central (c’est-à-dire du code qui gère le réseau) est souvent effectué par de petits groupes en raison de l’expertise et des connaissances requises pour développer ce type de logiciel. Sur Ethereum, ce travail est effectué par la Fondation Ethereum et des bénévoles. Sur Ethereum Classic, c’est fait par ETCDEV, IOHK et des volontaires.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="ethereum_forks">Autres fourches Ethereum notables</h3>
<div class="paragraph">
<p><a href="https://ellaism.org/about/">Ellaism</a> est un réseau basé sur Ethereum qui a l’intention d’utiliser PoW exclusivement pour sécuriser la chaîne de blocs. Il n’y a pas de pré-minage et pas de frais de développement obligatoires, avec tout le support et le développement donnés gratuitement par la communauté. Ses développeurs pensent que cela fait du leur «l’un des projets Ethereum purs les plus honnêtes», et celui qui est «particulièrement intéressant en tant que plate-forme pour les développeurs sérieux, les éducateurs et les passionnés. Ellaism est une pure plateforme de contrats intelligents. Son objectif est de créer une plate-forme de contrats intelligents à la fois équitable et digne de confiance. » Les principes de la plateforme sont les suivants :</p>
</div>
<div class="quoteblock">
<blockquote>
<div class="ulist">
<ul>
<li>
<p>Toutes les modifications et mises à niveau du protocole doivent s’efforcer de maintenir et de renforcer ces principes d’Ellaism.</p>
</li>
<li>
<p>Politique monétaire : 280 millions de pièces.</p>
</li>
<li>
<p>Pas de censure : personne ne devrait pouvoir empêcher la confirmation de txs valides.</p>
</li>
<li>
<p>À source ouverte : le code source d’Ellaism doit toujours être ouvert à quiconque pour le lire, le modifier, le copier, le partager.</p>
</li>
<li>
<p>Sans permission : Aucune décision arbitraire ne devrait jamais empêcher quiconque de faire partie du réseau (utilisateur, nœud, mineur, etc.).</p>
</li>
<li>
<p>Pseudonyme : Aucune pièce d’identité ne devrait être exigée pour posséder, utiliser Ellaism.</p>
</li>
<li>
<p>Fongible : toutes les pièces sont égales et doivent pouvoir être dépensées de la même manière.</p>
</li>
<li>
<p>Transactions irréversibles : les blocs confirmés doivent être gravés dans le marbre. L’historique de la chaîne de blocs doit être immuable.</p>
</li>
<li>
<p>Pas d’embranchements divergents contentieux : jamais d’embranchement divergent sans consensus de toute la communauté. Ne brisez le consensus existant que lorsque cela est nécessaire.</p>
</li>
<li>
<p>De nombreuses mises à niveau de fonctionnalités peuvent être effectuées sans embranchement divergent, telles que l’amélioration des performances de l’EVM.</p>
</li>
</ul>
</div>
</blockquote>
</div>
<div class="paragraph">
<p>Plusieurs autres embranchements se sont également produites sur Ethereum. Certains d’entre eux sont des embranchements divergents, en ce sens qu’ils se séparent directement du réseau Ethereum préexistant. D’autres sont des fourches logiciels : ils utilisent le logiciel client/nœud d’Ethereum mais exécutent des réseaux entièrement séparés sans aucun historique partagé avec Ethereum. Il y aura probablement plus de fourches au cours de la vie d’Ethereum.</p>
</div>
<div class="paragraph">
<p>Il existe également plusieurs autres projets qui prétendent être des fourches Ethereum mais qui sont en fait basés sur des jetons ERC20 et exécutés sur le réseau Ethereum. Deux exemples de ceux-ci sont EtherBTC (ETHB) et Ethereum Modification (EMOD). Ce ne sont pas des fourches au sens traditionnel du terme, et peuvent parfois être appelés « airdrops ».</p>
</div>
<div class="paragraph">
<p>Voici un bref aperçu de certaines des fourches les plus notables qui se sont produites :</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>Expanse</em> a été le premier embranchement de la chaîne de blocs Ethereum à gagner du terrain. Il a été annoncé via le forum Bitcoin Talk le 7 septembre 2015. La véritable fourche s’est produit une semaine plus tard, le 14 septembre 2015, à une hauteur de bloc de 800 000. Il a été fondé à l’origine par Christopher Franko et James Clayton. Leur vision déclarée était de créer une chaîne avancée pour: "l’identité, la gouvernance, la charité, le commerce et l’équité".</p>
</li>
<li>
<p><em>EthereumFog</em> (ETF) a été lancé le 14 décembre 2017 et a bifurqué à une hauteur de bloc de 4 730 660. L’objectif déclaré du projet est de développer "l’informatique géodistribuée décentralisée mondiale" en se concentrant sur l’informatique géodistribuée et le stockage décentralisé. Il y a encore peu d’informations sur ce que cela impliquera réellement.</p>
</li>
<li>
<p><em>EtherZero</em> (ETZ) a été lancé le 19 janvier 2018, à une hauteur de bloc de 4 936 270. Ses innovations notables ont été l’introduction d’une architecture de masternode et la suppression des frais de transaction pour les contrats intelligents afin de permettre une plus grande diversité de DApps. Il y a eu quelques critiques de certains membres éminents de la communauté Ethereum, MyEtherWallet et MetaMask, en raison du manque de clarté entourant le développement et de certaines accusations de phishing possible.</p>
</li>
<li>
<p><em>EtherInc</em> (ETI) a été lancé le 13 février 2018, à une hauteur de bloc de 5 078 585, avec un accent sur la construction d’organisations décentralisées. Les objectifs déclarés incluent la réduction des temps de blocage, l’augmentation des récompenses des mineurs, la suppression des récompenses de l’Uncle et la fixation d’un plafond sur les pièces exploitables. EtherInc utilise les mêmes clés privées qu’Ethereum et a mis en place une protection contre la relecture pour protéger l’ether sur la chaîne originale non embranchée.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2022-05-15 05:09:37 -0400
</div>
</div>
</body>
</html>