Préface

Bannière Amazon du livre Maîtriser Ethereum

Ce livre est une collaboration entre Andreas M. Antonopoulos et le Dr Gavin Wood. Une série de coïncidences heureuses a réuni ces deux auteurs dans un effort qui a galvanisé des centaines de contributeurs pour produire ce livre, dans le meilleur esprit de l’open source et de la culture creative commons.

Gavin souhaitait écrire un livre qui développait le Livre jaune (sa description technique du protocole Ethereum) depuis un certain temps, principalement pour l’ouvrir à un public plus large que ne le permettait le document original infusé de lettres grecques.

Des plans étaient en cours - un éditeur avait été trouvé - lorsque Gavin a parlé à Andreas, qu’il connaissait depuis le tout début de son mandat chez Ethereum en tant que personnalité notable dans l’espace.

Andreas avait récemment publié la première édition de son livre Mastering Bitcoin (O’Reilly), qui est rapidement devenu le guide technique faisant autorité sur le Bitcoin et les cryptomonnaies. Presque aussitôt que le livre a été publié, ses lecteurs ont commencé à lui demander : "Quand écriras-tu 'Mastering Ethereum' ?" Andreas envisageait déjà son prochain projet et a trouvé qu’Ethereum était un sujet technique convaincant.

Enfin, en mai 2016, Gavin et Andreas se trouvaient par coïncidence dans la même ville au même moment. Ils se sont retrouvés autour d’un café pour discuter de travailler ensemble sur le livre. Andreas et Gavin étant tous deux des adeptes du paradigme open source, ils se sont tous deux engagés à en faire un effort collaboratif, publié sous une licence Creative Commons. Heureusement, l’éditeur, O’Reilly Media, était heureux d’être d’accord, et le projet Mastering Ethereum a été officiellement lancé.

Comment utiliser ce livre

Le livre est destiné à servir à la fois de manuel de référence et d’exploration d’Ethereum de bout en bout. Les deux premiers chapitres offrent une introduction douce, adaptée aux utilisateurs novices, et les exemples de ces chapitres peuvent être complétés par toute personne ayant un peu de compétence technique. Ces deux chapitres vous donneront une bonne compréhension des bases et vous permettront d’utiliser les outils fondamentaux d’Ethereum. [ethereum_clients_chapter] et au-delà sont destinés principalement aux programmeurs et incluent de nombreux sujets techniques et exemples de programmation.

Pour servir à la fois de manuel de référence et de récit complet sur Ethereum, le livre contient inévitablement des doublons. Certains sujets, tels que le gaz, doivent être introduits suffisamment tôt pour que le reste des sujets ait un sens, mais sont également examinés en profondeur dans leurs propres sections.

Enfin, l’index du livre permet aux lecteurs de trouver facilement des sujets très précis et les sections pertinentes, par mot-clé.

Public visé

Ce livre est principalement destiné aux codeurs. Si vous pouvez utiliser un langage de programmation, ce livre vous apprendra comment fonctionnent les chaînes de blocs de contrats intelligents, comment les utiliser et comment développer des contrats intelligents et des applications décentralisées avec eux. Les premiers chapitres conviennent également comme une introduction approfondie à Ethereum pour les non-codeurs.

Conventions utilisées dans ce livre

Les conventions typographiques suivantes sont utilisées dans ce livre :

Italic

Indique de nouveaux termes, URL, adresses e-mail, noms de fichiers et extensions de fichiers.

Largeur constante

Utilisé pour les listes de programmes, ainsi que dans les paragraphes pour faire référence à des éléments de programme tels que des noms de variables ou de fonctions, des bases de données, des types de données, des variables d’environnement, des instructions et des mots-clés.

Largeur constante en gras

Affiche les commandes ou tout autre texte qui doit être saisi littéralement par l’utilisateur.

Largeur constante en italique

affiche le texte qui doit être remplacé par des valeurs fournies par l’utilisateur ou des valeurs déterminées par le contexte.

Tip

Cette icône signifie un conseil ou une suggestion.

Note

Cette icône signifie une note générale.

Warning

Cette icône indique un avertissement ou une mise en garde.

Exemples de codes

Les exemples sont illustrés dans Solidity, Vyper et JavaScript, et en utilisant la ligne de commande d’un système d’exploitation de type Unix. Tous les extraits de code sont disponibles dans le référentiel GitHub sous le sous-répertoire code. Fourchez le code du livre, essayez les exemples de code ou soumettez des corrections via GitHub : https://github.com/ethereumbook/ethereumbook.

Tous les extraits de code peuvent être répliqués sur la plupart des systèmes d’exploitation avec une installation minimale de compilateurs, d’interpréteurs et de bibliothèques pour les langages correspondants. Si nécessaire, nous fournissons des instructions d’installation de base et des exemples étape par étape de la sortie de ces instructions.

Certains des extraits de code et des sorties de code ont été reformatés pour l’impression. Dans tous ces cas, les lignes ont été séparées par une barre oblique inverse (\), suivie d’un caractère de saut de ligne. Lors de la transcription des exemples, supprimez ces deux caractères et rejoignez les lignes à nouveau et vous devriez voir des résultats identiques à ceux présentés dans l’exemple.

Tous les extraits de code utilisent des valeurs réelles et des calculs lorsque cela est possible, de sorte que vous pouvez construire d’exemple en exemple et voir les mêmes résultats dans n’importe quel code que vous écrivez pour calculer les mêmes valeurs. Par exemple, les clés privées et les clés et adresses publiques correspondantes sont toutes réelles. Les exemples de transactions, de contrats, de blocs et de références de chaîne de blocs ont tous été introduits dans la chaîne de blocs Ethereum actuelle et font partie du grand livre public, vous pouvez donc les consulter.

Nous apprécions, mais n’exigeons pas, l’attribution. Une attribution comprend généralement le titre, l’auteur, l’éditeur, l’ISBN et le droit d’auteur. Par exemple : « Mastering Ethereum par Andreas M. Antonopoulos et le Dr Gavin Wood. Copyright 2019 The Ethereum Book LLC et Gavin Wood"

Mastering Ethereum est proposé sous la licence internationale Creative Commons Attribution-ShareAlike (CC BY SA 4.0).

Références aux entreprises et aux produits

Toutes les références aux entreprises et aux produits sont destinées à des fins éducatives, de démonstration et de référence. Les auteurs ne cautionnent aucune des entreprises ou des produits mentionnés. Nous n’avons testé le fonctionnement ou la sécurité d’aucun des produits, projets ou segments de code présentés dans ce livre. Utilisez-les à vos risques et périls!

Adresses et transactions Ethereum dans ce livre

Les adresses Ethereum, les transactions, les clés, les codes QR et les données de la chaîne de blocs utilisés dans ce livre sont, pour la plupart, réels. Cela signifie que vous pouvez parcourir la chaîne de blocs, regarder les transactions proposées en exemple, les récupérer avec vos propres scripts ou programmes, etc.

Cependant, notez que les clés privées utilisées pour construire les adresses imprimées dans ce livre ont été "brûlées". Cela signifie que si vous envoyez de l’argent à l’une de ces adresses, l’argent sera perdu pour toujours ou (plus probablement) approprié, puisque toute personne qui lit le livre peut le prendre en utilisant les clés privées imprimées ici.

Warning

N’ENVOYEZ D’ARGENT A AUCUNE DES ADRESSES DANS CE LIVRE. Votre argent sera pris par un autre lecteur, ou perdu à jamais.

Contacter Andreas

Vous pouvez contacter Andreas M. Antonopoulos sur son site personnel : https://antonopoulos.com/

Abonnez-vous à la chaîne d’Andreas sur YouTube : https://www.youtube.com/aantonop

Aimez la page d’Andreas sur Facebook : https://www.facebook.com/AndreasMAntonopoulos

Suivez Andreas sur Twitter : https://twitter.com/aantonop

Connectez-vous avec Andreas sur LinkedIn : https://linkedin.com/company/aantonop

Andreas tient également à remercier tous les mécènes qui soutiennent son travail par des dons mensuels. Vous pouvez soutenir Andreas sur Patreon à https://patreon.com/aantonop.

Contacter Gavin

Vous pouvez contacter le Dr Gavin Wood sur son site personnel : http://gavwood.com/

Suivez Gavin sur Twitter : https://twitter.com/gavofyork

Gavin traîne généralement dans le Polkadot Watercooler sur Riot.im : http://bit.ly/2xciG68

Remerciements par Andreas

Je dois mon amour des mots et des livres à ma mère, Theresa, qui m’a élevé dans une maison avec des livres tapissant tous les murs. Ma mère m’a également acheté mon premier ordinateur en 1982, bien qu’elle se décrive comme une technophobe. Mon père, Menelaos, un ingénieur civil qui a publié son premier livre à 80 ans, est celui qui m’a enseigné la pensée logique et analytique et l’amour de la science et de l’ingénierie.

Merci à tous de m’avoir soutenu tout au long de ce parcours.

Remerciements par Gavin

Ma mère m’a procuré mon premier ordinateur chez un voisin quand j’avais 9 ans, sans quoi mes progrès techniques auraient sans doute été amoindris. Je lui dois aussi ma peur de l’électricité depuis mon enfance et je dois reconnaître Trevor et mes grands-parents, qui ont accompli le grave devoir de "me regarder le brancher" à maintes reprises, et sans qui ledit ordinateur aurait été inutile. Je dois également reconnaître les différents éducateurs que j’ai eu la chance d’avoir tout au long de ma vie, du dit voisin Sean (qui m’a appris mon premier programme informatique), à M. Quinn, mon professeur d’école primaire, qui m’a aidé à faire plus de programmation et moins d’histoire, grâce à des enseignants du secondaire comme Richard Furlong-Brown, qui m’ont arrangé pour que je fasse plus de programmation et moins de rugby.

Je dois remercier la mère de mes enfants, Jutta, pour son soutien continu, et les nombreuses personnes dans ma vie, amis nouveaux et anciens, qui me gardent, grosso modo, sain d’esprit. Enfin, une énorme cuillerée de remerciements doit aller à Aeron Buchanan, sans qui les cinq dernières années de ma vie n’auraient jamais pu se dérouler comme elles l’ont fait et sans le temps, le soutien et les conseils de qui ce livre ne serait pas en aussi bon état tel quel.

Contributions

Many contributors offered comments, corrections, and additions to the early-release draft on GitHub.

Contributions on GitHub were facilitated by two editors who volunteered to project manage, review, edit, merge, and approve pull requests and issues:

  • Francisco Javier Rojas Garcia (fjrojasgarcia)

  • Will Binns (wbnns)

Major contributions were provided on the topics of DApps, ENS, the EVM, fork history, gas, oracles, smart contract security, and Vyper. Additional contributions, which were not included in this first edition due to time and space constraints, can be found in the contrib folder of the GitHub repository. Thousands of smaller contributions throughout the book have improved its quality, legibility, and accuracy. Sincere thanks to all those who contributed!

Following is an alphabetically sorted list of all the GitHub contributors, including their GitHub IDs in parentheses:

  • Abhishek Shandilya (abhishandy)

  • Adam Zaremba (zaremba)

  • Adrian Li (adrianmcli)

  • Adrian Manning (agemanning)

  • Alec Francis (alec-francis)

  • Alejandro Santander (ajsantander)

  • Alejo Salles (fiiiu)

  • Aleš Ferlan (Alko89)

  • Alessandro Coglio (acoglio)

  • Alex Manuskin (amanusk)

  • Alex Van de Sande (alexvandesande)

  • Ali Atiia (aliatiia)

  • Amin Latifi (aminlatifi)

  • Anthony Lusardi (pyskell)

  • Anup Dhakal (anuphunt)

  • Assaf Yossifoff (assafy)

  • axeldelamarre (axeldelamarre)

  • athio92 (athio92)

  • Ben Kaufman (ben-kaufman)

  • bgaughran (bgaughran)

  • Bok Khoo (bokkypoobah)

  • Brandon Arvanaghi (arvanaghi)

  • Brian Ethier (dbe)

  • Bryant Eisenbach (fubuloubu)

  • Carl Park (4000D)

  • carlinhocr

  • Carlos Cebrecos (ccebrecos)

  • Chan-Ho Suh (chanhosuh)

  • Chanan Sack (chanan-sack)

  • Charlie Leathers (cleathers)

  • Chris Lin (ChrisLinn)

  • Chris Remus (chris-remus)

  • Christopher Gondek (christophergondek)

  • Cornell Blockchain (CornellBlockchain)

    • Alex Frolov (sashafrolov)

    • Brian Guo (BrianGuo)

    • Brian Leffew (bleffew99)

    • Giancarlo Pacenza (GPacenza)

    • Lucas Switzer (LucasSwitz)

    • Ohad Koronyo (ohadh123)

    • Richard Sun (richardsfc)

  • Cory Solovewicz (CorySolovewicz)

  • crypto501 (crypto501)

  • Dan Shields (NukeManDan)

  • Danger Zhang (safetyth1rd)

  • Daniel Jiang (WizardOfAus)

  • Daniel McClure (danielmcclure)

  • Daniel Peterson (danrpts)

  • datgrog

  • Dave Potter (dnpotter)

  • David Lozano Jarque (davidlj95)

  • David McFadzean (macterra)

  • Denis Milicevic (D-Nice)

  • Dennis Zasnicoff (zasnicoff)

  • Dhruvin Parikh (dhruvinparikh)

  • Diego H. Gurpegui (diegogurpegui)

  • Dimitris Tsapakidis (dimitris-t)

  • Dzmitry Bachko (dbachko)

  • Ed (jbazzel)

  • Edward Posnak (edposnak)

  • Enrico Cambiaso (auino)

  • Ersin Bayraktar (ersinbyrktr)

  • Etaro Ito (etaroid)

  • Exhausted Mind (exhaustedmind)

  • Feiyang Tan (FeiyangTan)

  • Flash Sheridan (FlashSheridan)

  • Franco Abaroa (francoabaroa)

  • Franco Daniel Berdun (fMercury)

  • Griff Green (GriffGreen)

  • Harry Moreno (morenoh149)

  • Harshal Patil (ErHarshal)

  • Håvard Anda Estensen (estensen)

  • Henrique Moreira (henriquegaia)

  • Hon Lau (masterlook)

  • Howard Peng (howardpen9)

  • Hudson Jameson (Souptacular)

  • Hyunbin Jeong (gusqls1603)

  • Iuri Matias (iurimatias)

  • Ivan Molto (ivanmolto)

  • Jacques Dafflon (jacquesd)

  • Jason Hill (denifednu)

  • Javier Acrich (javiergacrich)

  • Javier Rojas (fjrojasgarcia)

  • Jaycen Horton (jaycenhorton)

  • JB Paul (yjb94)

  • jdmuriel (jdmuriel)

  • jeremyfny (jeremyfny)

  • jjmr007

  • Joel Gugger (guggerjoel)

  • John Woods (johnalanwoods)

  • Jon Ramvi (ramvi)

  • Jonathan Velando (rigzba21)

  • jpopxfile (jpopxfile)

  • Jules Lainé (fakje)

  • Karolin Siebert (karolinkas)

  • Kevin Carter (kcar1)

  • Kevin Weaver (kevinweaver)

  • Krzysztof Nowak (krzysztof)

  • Lane Rettig (lrettig)

  • Leo Arias (elopio)

  • Liang Ma (liangma)

  • Łukasz Gołębiewski (lukasz-golebiewski)

  • Luke Riley (Luker501)

  • Luke Schoen (ltfschoen)

  • Marcelo Creimer (mcreimer)

  • Martin Berger (drmartinberger)

  • Martin Harrigan (harrigan)

  • Martin Linkhorst (linki)

  • Masi Dawoud (mazewoods)

  • Massimiliano Terzi (terzim)

  • Matt Peskett (mattpeskett)

  • Matthew Sedaghatfar (sedaghatfar)

  • mehlawat (mehlawat)

  • Michael Freeman (stefek99)

  • Miguel Baizan (mbaiigl)

  • Mike Pumphrey (bmmpxf)

  • Mike Walker (mikew1)

  • Milo Chen (milochen0418)

  • Mobin Hosseini (iNDicat0r)

  • Nagesh Subrahmanyam (chainhead)

  • Nichanan Kesonpat (nichanank)

  • Nicholas Hallahan (hallahan)

  • Nicholas Maccharoli (Nirma)

  • Nick Johnson (arachnid)

  • Nick Paterno (nicholasjpaterno)

  • Oleg Kuzmenko (MentatX)

  • Oliver Bristow (Code0x58)

  • Omar Boukli-Hacene (oboukli)

  • Paulo Trezentos (paulotrezentos)

  • Pet3rpan (pet3r-pan)

  • Peter Kacherginsky (iphelix)

  • Pierre-Jean Subervie (pjsub)

  • Pong Cheecharern (Pongch)

  • Qiao Wang (qiaowang26)

  • Raul Andres Garcia (manilabay)

  • rattle99 (rattle99)

  • Richard Horrocks (RichHorrocks)

  • robFifth (robFifth)

  • Robin Pan (robinpan1)

  • Roger Häusermann (haurog)

  • Robert Miller (bertmiller)

  • Sam Westby (samwestby)

  • Saxon Knight (knight7)

  • Sebastian Falbesoner (theStack)

  • Sejin Kim (sejjj120)

  • Seong-il Lee (modolee)

  • sgtn (shogochiai)

  • Solomon Victorino (bitsol)

  • stefdelec (stefdelec)

  • Steve Klise (sklise)

  • Sylvain Tissier (SylTi)

  • Taylor Masterson (tjmasterson)

  • Tim Nugent (timnugent)

  • Timothy McCallum (tpmccallum)

  • Tommy Cooksey (tcooksey1972)

  • Tomoya Ishizaki (zaq1tomo)

  • Tor Gammelgard (torgammelgard)

  • Trib (Tribianni)

  • Ulrich Stark (ulrichstark)

  • Vignesh Karthikeyan (meshugah)

  • viktorZenkov

  • Vuksan Simunović (Vuksan)

  • westerpants (westerpants)

  • Will Binns (wbnns)

  • William Tong (wtong98)

  • Xavier Lavayssière (xalava)

  • Yash Bhutwala (yashbhutwala)

  • Yeramin Santana (ysfdev)

  • Yukishige Nakajo (nakajo2011)

  • Zhen Wang (zmxv)

  • ztz (zt2)

Without the help offered by everyone listed above, this book would not have been possible. Your contributions demonstrate the power of open source and open culture, and we are eternally grateful for your help. Thank you.

Sources

Ce livre fait référence à diverses sources publiques et sous licence libre :