身邊認識的人參與鐵人賽的不少。但我一直猶豫要不要參加,一來是要連續寫 30 天蠻累的。二來是我從來沒有一天寫完一篇文章的經驗,很怕會寫不完,只能發部分。也有人說一天要發一篇可能會寫得很水。
但我想要嘗試不同的東西。過去的經驗讓我學會放棄追求完美。
我一直想寫一本專注以太坊協議的書。
市面上關於 Web3 的書大概分以下幾種:
我想寫一本,如果一個具備某種專業的人,想要有系統的瞭解以太坊,能夠上手的書。
現在人們可能會找 精通以太坊 這本( 二版 快出版了 )。但這本一版有點舊,二版有點書目看起來有點也是專注合約寫作。
對於底層講得最厲害的書應該是 Ben Edgington 的 Upgrading Ethereum (暫譯:升級以太坊),他曾經參與押金制的升級的開發,因此有辦法寫清楚那些規格書上沒有寫明的設計原理。
「眼前有景道不得,崔顥題詩在上頭」。的確有升級以太坊這麼一本厲害的書在,還必要再寫一本嗎?主要是升級以太坊的目標讀者是協議開發者,裡面充滿了許多細節。
若說以太坊技術整體是一張巨大的蒙娜麗莎 PNG 圖檔,開發者需要有升級以太坊這本書才能知道那些皮膚皺紋怎麼畫。
我想寫的是一本蒙娜麗莎的火柴人。那種讀者有限的注意力點數可以點在五官和四肢上,但不是衣服的細節紋理上。
過去七年,我參與以太坊押金制升級開發三年,零知識證明應用開發四年。我想寫出我們平常養出來的常識,那些不一定百分之百精確或甚至正確,但一套人們口耳相傳對技術問題的理解。那些有辦法讓我們參與工作最低限的知識。不查資料,像 LLM 幻覺一樣直接從腦袋倒出來。
本來已經有計劃寫一點點了,但也就停在一點點。直到參加鐵人賽才有辦法推進。
寫作時存稿三天。當天發兩天前寫的內容。
有時一開始想法不多。但發的當天可能會再想到一些新的內容補充上去。
一開始想說以有點小說的方式撰寫。所以引入了特務 K 和小雨。
特務 K 是那種情報電影類的特務,以攻擊為業。
以太坊的各種防禦性設計,總是在提防著某種不存在的攻擊者。沒設計好是一定會被攻擊的,但設計正確之後,這攻擊者也不在了。安插特務 K 這個角色的企圖是讓讀者能站在攻擊者的角度思考,理解防禦措施的設計動機。
小雨想像中的背景是一個技術社群的參與者。他並非是以專家角色提供情報,而是藉由幾乎無限多的時間和精力去追蹤那些公開資訊。
在前面十天大概是執行層的內容。這部分比較接近一般的軟體,也是幾乎以太坊十年以來運作方式不太變化的地方。我發現透過虛擬角色對話的方式,寫作時比較有辦法掌握是否跳躍太快。如果小雨講太多,代表特務的好奇心還沒跟上。
到了第十一天之後,共識層的變化真的比較大。許多 2018 記得的東西最近有比較多變更,需要常常翻閱新的文件。寫起來稍微比較卡。
但慢慢的我也發現,似乎不需要引入虛構角色來充字數或引起好奇心。圈子本身有那麼多有趣的故事可以當作引人注意的點(Hook),但寫作前不會想到哪些故事可以擺在什麼地方。
書寫也讓我思考了技術溝通這件事。以前我們的溝通或演講,都非常的開發者導向。目的是傳遞某種有助於軟體開發的訊息。有講出來就好。總會有人用到。
但面對更廣大的受眾,需要把訊息再切細與重組織。找到火柴人的五官和四肢。
寫作的過程讓我從新思考翻譯這件事。我已經思考翻譯一陣子,並整理一個 清單 討論。但清單只能就單個英文詞去尋找對應的翻譯。
但在撰寫一整篇文章時,能夠以更大的格局去思考翻譯這件事。
這裡面最滿意的大概是使用「押金制」這個詞。以往 Proof of Stake 照字面翻,就會譯為「權益證明」。中文詞沒辦法表達那個共識設計的內涵,但實際英文詞早就問題重重。整個設計的重點是使用能夠沒收的押金,作為有懲罰機制的共識系統,增進安全性。與「證明」無關。
滿意的翻譯還有
.oO
迷因尚不滿意的翻譯有
最後是「證明」這個詞。這大概是整個系統裡面最重要的動詞。
自己的手機與筆電,是由眾多小電子零件所組成,電子零件沒有自己的意志,有某種故障率很低的可靠度。一台點對點網路電腦可以形成,也是把網路上的陌生節點當成自己的零件。這些零件有自己的意志,或說遵從其主人的意志。零件要故障也可以是天然的或人為惡意的。因此其中零件之間的溝通以誘因或密碼學來約束行為,避免故障。
因此區塊鏈的技術文章出現一堆和證明相關的詞:工作量證明(Proof of Work)、權益證明(Proof of Stake)、雜湊樹成員證明(Merkle Proof, Membership Proof)、零知識證明(Zero Knowledge Proof)、正確執行證明(Validity Proof)、詐欺證明(Fraud Proof)。以及證明相關的詞如:見證(Witness)、論據(Argument)等。
在有相關密碼學脈絡交代清楚的情況下,使用「證明」這個詞的確是工作上溝通的標準。但在對大眾溝通上,證明用起來很拗口。第一是證明與數學證明是同一個詞,「使用者可以對合約提出提款證明」與「數學可以證明破壞共識的惡意投票要燒毀 1/3 以上押金」兩者的差別需要讀者倚賴句子脈絡去區分。
第二是證明同時是動詞又是名詞。英文尚有 Prove 與 Proof 之分,中文卻沒有。「可以用雜湊樹成員證明去證明」聽起來真正拗口。
第三是證明似乎只是系統運作邏輯的一半,證明能夠被檢驗才是完整的流程。「合約能檢驗使用者曾經存款,並不曾提款過」。因次我會慢慢傾向使用「驗算」、「檢驗」或「檢查」等等詞彙描述。「工作量證明」和「權益證明」直接換成「算力制」和「押金制」去思考。「雜湊樹成員證明」換成「成員檢查」。「零知識證明」在無隱私需求的應用變成「驗算壓縮」,有隱私需求的可能未來會想翻「隱私驗算」之類。「正確執行證明」和「詐欺證明」就全部變成「驗算」。
這邊還有一個感想是我對公務人員的作業不熟悉。我知道有些公文要蓋騎縫章,以確保文件完整性,以免中間頁面被抽換。效果和數位化的文件雜湊起來相同。也許我想找的翻譯詞彙都有公務機關或法律上對應的詞彙。有那樣的詞彙,人們容易從紙本的經驗與知識,遷移到數位世界。
數位簽章,就是這樣的例子。英文中 Digital Signature 只包含簽名的部分,中文加上了印章。這樣的英文命名與中文翻譯,把簽名與蓋章的紙本經驗,那些使用者知情同意的意象,一併帶到數位世界。
書寫的過程也思考了要傳達哪些資訊給讀者。
如果密碼學最終是隱形的話,那為什麼讀者需要介意呢?如果區塊鏈設計良好,應該就像飛機一樣,搭上去就能穩穩地飛到目的地,不需要懂什麼流體力學。又或是像瀏覽網站一樣,也不用知道憑證。細節讓少數專家去煩惱就好吧?
的確穩定幣或其他區塊鏈應用悄悄或已經滲透到人們生活之中。包裝良好的知識熱騰騰上桌也許是人們需要的。
但也許 魅力 也是需要傳達給讀者的東西。看到押金制,或零知識證明,或一個開放協作的生態系,能用多快的速度改善笨重的金融體系。知道這些,即使不是當下有用的知識,學習區塊鏈也是可以得到啟發的吧?
馮紐曼曾說「如果人們認為數學不簡單,那只是因為他們不了解生活有多麼複雜。」區塊鏈有許多面向,和社會非常有關係。舉凡獎勵與懲罰、數位身分、節點的投票、「合約」。那些機器間的設計,借鏡了某種社會上既有的制度。只是在機器能驗證雜湊值,或用運算執行業務邏輯,變成用另一種方式實現人類制度。也認為人造的區塊鏈簡單,也是低估了真實社會的複雜。又或是藉由學習區塊鏈,能夠啟發我們對真實社會的設計不同的想像。
這次報的鐵人賽分組是自我挑戰組,很開心終於完成 30 天挑戰了。
感謝 yahsin 米格魯小狗的審稿。感謝讀者的支持。
感謝 iThome 長期以來舉辦這個這麼有意義的活動。很榮幸今年終於可以參與,也希望未來還有機會參加。