前言
這本書由我(Carlo Parisi,又名 Blackie)、Alessandro Mazza 與 Niccolò Pozzolini 共同完成。第一版由 Andreas M. Antonopoulos 與 Gavin Wood 博士在 2016 年到 2019 年間寫成,當然也深深影響了我們的寫作。
2023 年 11 月,一連串非常幸運的巧合讓我和 Andreas 在格拉斯哥碰了面。喝了幾杯啤酒、請他簽了幾次名之後,我問他有沒有打算寫《精通以太坊》的第二版。我會這麼問,是因為第一版雖然是一部傑作,內容卻已經跟不上時代:它在 2019 年出版,當時以太坊還在使用工作量證明(PoW),發展路線圖也和現在大不相同。
Andreas 的回答是他沒有寫第二版的打算,但那次談話卻激發了一個想法,最後促使我接下這個計畫。在格拉斯哥見面後不到一天,我就已經在和 O’Reilly 討論撰寫第二版的可能性了。
我馬上就知道,這會是一項龐大又重要的任務。能得到這個機會,我深感榮幸,但也擔心自己沒辦法做得夠好。我多年來一直是 Andreas 作品的愛好者;早在 2014 到 2015 年間,我之所以能那麼深入地理解比特幣,都要歸功於他。所以我知道,我需要幫手。
我第一個想到的人是 Alessandro。機會一成真,我就傳訊息問他要不要加入,所以計畫才開始沒幾個小時,他就參與其中了。他立刻開心地答應了(當時他完全不知道任何條件,甚至不知道這份工作有沒有酬勞)。
Niccolò 就比較難說服了。他整整拒絕了一個月,我才終於把他拉進來。幸好我非常固執,不肯接受「不」這個答案。一個月後,他終於點頭答應。至此,我們的團隊全員到齊,《精通以太坊(第二版)》的計畫也正式啟動。
我希望每一位讀者都能從這本書中學到至少一點東西。《精通以太坊》這本書教會了我——以及成千上萬的讀者——非常多的東西,而我們也努力維持同樣的品質。這本書花了兩年的研究與寫作才完成,如果說這很容易,那我就是在說謊。
我們也非常自豪,這個計畫是由一支全義大利人的團隊完成的。希望這也能讓義大利的加密貨幣社群感到些許驕傲。
如何使用本書
本書既可以當作參考手冊,也可以從頭到尾讀完,完整探索以太坊。前兩章是循序漸進的入門介紹,適合新手使用者;這兩章的範例,只要具備一點技術能力的人都能完成。讀完這兩章,你就能掌握基礎知識,並使用以太坊的基本工具。第 3 章以後的部分內容是寫給程式設計師的,包含許多技術主題與程式設計範例,但大致上仍然是任何人都能讀懂的。
為了同時兼顧參考手冊與從頭讀到尾的敘述,本書難免有些重複的地方。有些主題(例如 gas)必須及早介紹,其他主題才講得通,但它們也會在各自的章節中深入探討。
最後,讀者可以透過本書的索引,依關鍵字輕鬆找到非常具體的主題與相關章節。
程式碼範例
本書的範例以 Solidity、Vyper 與 JavaScript 示範,並使用類 Unix 作業系統的命令列。只要為對應的語言安裝最基本的編譯器、直譯器與函式庫,所有程式碼片段都能在大多數作業系統上重現。必要時,我們會提供基本的安裝說明,並逐步示範這些指令的輸出。
所有程式碼片段都盡可能使用真實的數值與計算,所以你可以一個範例接著一個範例做下去,而且只要你自己寫程式計算同樣的值,都會看到相同的結果。例如,書中的私鑰以及對應的公鑰與地址都是真實的。範例中的交易、合約、區塊與區塊鏈參照,也都已經實際送上以太坊區塊鏈,成為公開帳本的一部分,你可以自行查看。
本書中的以太坊地址與交易
本書使用的以太坊地址、交易、金鑰、QR code 與區塊鏈資料,大部分都是真實的。也就是說,你可以瀏覽區塊鏈、查看書中作為範例的交易,用你自己的腳本或程式取得這些資料,諸如此類。
不過請注意,用來產生書中地址的私鑰都已經「燒毀」了。這表示如果你把錢送到這些地址中的任何一個,這筆錢不是永遠遺失,就是(更可能)被別人拿走,因為任何讀過本書的人,都能用書中印出的私鑰把錢取走。
|
警告
|
不要把錢送到本書中的任何地址。你的錢會被其他讀者拿走,或是永遠遺失。 |
本書的排版慣例
本書使用下列排版慣例:
斜體
表示新術語、網址、電子郵件地址、檔名與副檔名。
Constant width
等寬字,用於程式清單,也用在段落中指稱程式元素,例如變數或函式名稱、資料庫、資料型別、環境變數、陳述式與關鍵字。
Constant width bold
等寬粗體字,表示使用者應該照字面輸入的指令或其他文字。
Constant width italic
等寬斜體字,表示應該換成使用者提供的值,或依上下文決定的值的文字。
|
提示
|
這個元素表示提示或建議。 |
|
備註
|
這個元素表示一般的備註。 |
|
警告
|
這個元素表示警告或需要注意的事項。 |
使用程式碼範例
基於我們對協作的承諾,我們與 O’Reilly Media 合作,讓本書以創用 CC(Creative Commons)授權條款提供。
如果你有技術問題,或是使用程式碼範例時遇到困難,請寄電子郵件到 [email protected]。
本書的目的是協助你完成工作。一般來說,本書提供的範例程式碼,你都可以用在自己的程式與文件中。除非你要重製程式碼中相當大的部分,否則不需要聯絡我們取得許可。例如,寫一個用到本書數段程式碼的程式,不需要許可;販售或散布 O’Reilly 書籍中的範例,則需要許可。引用本書並引述範例程式碼來回答問題,不需要許可;把本書大量的範例程式碼放進你的產品文件中,則需要許可。
我們會感謝你註明出處,但一般並不要求。出處通常包括書名、作者、出版社與 ISBN,例如:「Mastering Ethereum, 2nd ed., by Andreas M. Antonopoulos, Gavin Wood, Carlo Parisi, Alessandro Mazza, and Niccolò Pozzolini (O’Reilly). Copyright 2026 Carlo Parisi, Alessandro Mazza, and Niccolò Pozzolini, 978-1-098-16842-1.」
如果你認為自己使用程式碼範例的方式超出合理使用或上述許可的範圍,歡迎寫信到 [email protected] 與我們聯絡。
O’Reilly 線上學習
|
備註
|
40 多年來,O’Reilly Media 一直提供技術與商業方面的培訓、知識與洞見,協助企業邁向成功。 |
由專家與創新者組成的獨特網路,透過書籍、文章與我們的線上學習平台分享知識與專業。O’Reilly 的線上學習平台讓你隨選參加直播培訓課程、深入的學習路徑、互動式程式設計環境,以及來自 O’Reilly 與 200 多家其他出版社的大量文字與影片內容。詳情請造訪 oreilly.com。
聯絡我們
關於本書的意見與問題,請寄給出版社:
O’Reilly Media, Inc.
141 Stony Circle, Suite 195
Santa Rosa, CA 95401
800-889-8969 (in the United States or Canada)
707-827-7019 (international or local)
707-829-0104 (fax)
我們為本書設有網頁,列出勘誤與其他補充資訊。網址是 https://oreil.ly/MasteringEthereum2e。
想了解我們書籍與課程的最新消息與資訊,請造訪 https://oreilly.com。
在 LinkedIn 上找到我們
在 YouTube 上觀看我們的影片
聯絡 Carlo
訂閱 Carlo 的 YouTube 頻道
在 Twitter/X 上追蹤 Carlo
在 LinkedIn 上與 Carlo 建立聯繫
電子郵件:[email protected]
聯絡 Alessandro
在 GitHub 上追蹤 Alessandro
在 LinkedIn 上與 Alessandro 建立聯繫
在 Twitter/X(義大利文帳號) 上追蹤 Alessandro
在 Twitter/X(英文帳號) 上追蹤 Alessandro
訂閱 Alessandro 的 YouTube 頻道
Carlo 的致謝
我在職涯與個人生活上的許多際遇,都要歸功於 Andreas 的作品。多虧了《精通比特幣》第一版,我才能在 2014 到 2015 年間真正理解比特幣的潛力,也因此決定投身加密貨幣產業。當時完整的學習資源並不多,所以《精通比特幣》對整個社群來說是一份了不起的禮物。如果沒有那部了不起的作品,我不會有今天的職涯,人生大概也會截然不同。《精通以太坊》也是如此。所以,Andreas,真的非常謝謝你。
謝謝我的高中資訊科學老師 Nicola Luigi Guglielmo Di Nanna。沒有你,我大概不會發現自己對程式設計的熱情,也就不會接著愛上區塊鏈。人家說,一位好老師能改變學生的一生;你確實做到了。謝謝你和我分享你對資訊科學的熱情,也謝謝你成為這麼激勵人心的榜樣。
也謝謝 Alessandro 和 Niccolò 在寫這本書時幫了這麼多忙,還有我們所有了不起的技術審閱者。
謝謝 O’Reilly 的 Michelle Smith 與 Shira Evans,一路上的每一步都支持著我們。
謝謝義大利社群,特別是我自己在 Discord、YouTube 與 Twitter 上的社群,給了我信心去接下這個計畫,以及其他許多計畫。
謝謝了不起的以太坊社群。沒有你們持續的支持與貢獻,我們不可能做這麼多研究,也不可能寫得這麼深入。
最後但同樣重要的,謝謝我美好的家人,在我做的每一件事上都支持我,讓我能自由探索自己的熱情與興趣。
Alessandro 的致謝
我要感謝的事情實在太多了。首先,我要謝謝 Carlo 主動找上我,給了我撰寫這本書的絕佳機會。我到現在還記得我們第一次見面的情景,那是在義大利的卡坦札羅。
謝謝我的大學教授 Luca Giuzzi 博士,讓我把論文題目定為比特幣與 Schnorr 數位簽章演算法。那是我在加密貨幣領域職涯的起點。
衷心感謝我的義大利社群,你們給了我信心,也間接帶我走到今天。如果沒有你們的支持,我大概不會認識 Carlo。
謝謝 O’Reilly,特別是 Shira Evans 與 Michelle Smith,在整段旅程中引導我們。兩位細心的協調與支持,加上所有審閱者的幫忙,才讓這本書得以問世。
最後,我要謝謝我的家人和我的女朋友 Alessandra,一直支持我、愛我。
Niccolò 的致謝
我要謝謝 Carlo 給我機會和他一起寫這本書。過去兩年來,我們一起做了許多計畫,一起笑過很多次、一起出國旅行,現在又一起完成了這本書。和你一起工作,讓這段旅程既有趣又充實。
我很感謝 Andreas 與 Gavin 創作了第一版的《精通以太坊》。他們的書讓我看見了區塊鏈的世界,也為許許多多的人做到了同樣的事。他們的作品幫助建立並壯大了這個了不起的區塊鏈社群,也就是我們今天都身在其中的社群。
非常感謝 O’Reilly 的 Michelle Smith 與 Shira Evans 從頭到尾支持我們。你們幫我們處理所有文書作業,讓我們跟上進度,並引導我們走完讓這本書成真的整個過程。
給我的家人、朋友,還有我的女朋友 Giuditta:你們一直陪在我身邊,我怎麼謝都謝不夠。在寫作的那好幾個月裡,你們包容了我忙碌的行程與壓力。我需要把想法說出來整理時,你們聽我說;我因為截稿日沒辦法參加聚會時,你們體諒我;遇到難關時,你們一直鼓勵我。你們始終如一的支持,給了我繼續前進的力量與專注。你手上的這本書不只是我的成果;它之所以存在,是因為你們一直以來給我的愛與支持。