Contents

AppWorks Blockchain Program Batch 心得

最近上完了 AppWorks Blockchain Program Batch #2(第三屆的報名已經開跑了),這是個為期 18 週的課程,前半部分會從基礎的區塊鏈知識開始教,然後學習智能合約的語法;後半部分會學習兩大知名 DeFi 專案:Uniswap 和 Compound,還有一些著名的資安攻擊事件。短短幾句話看似就帶過整個課程大綱,但實際內容只能用非常紮實來形容!我在上這門課程之前,其實已經有自學過一點智能合約,也曾在區塊鏈公司打工學習,甚至 Uniswap 和 Compound 的合約也都有觀摩過。然而即使是這樣的背景,我在這 18 週中仍然收穫頗豐,也更激起我對這塊領域的求知慾。打鐵趁熱,趕緊我對這門課的心得寫下來。

反正我本來就是要摸透這頭大象。

學習釣魚,學習摸大象

課程採取俗稱「給你魚吃不如教你釣魚」的方式,在學習區塊鏈時,釣魚的能力尤為重要。區塊鏈不像一門學科,有一條明確的路徑這照著往前走就對了,區塊鏈融合了密碼學、電腦科學、經濟學等眾多領域,且仍在發展當中。因此,要學好區塊鏈,不能指示單純接受餵養的知識,而是非常仰賴學習者的學習能力(儘管這番說詞放諸各個領域皆準,但區塊鏈更需要這樣的特質)。

從課程的一開始,導師就是不斷地丟問題,然後要我們去找答案。例如第一週的作業是:

  1. 請描述何謂 Transaction (交易)?執行流程是什麼?什麼是交易確認次數?
  2. 「挖礦」原理為何?礦工如何收集待挖的交易資料?(以 POW 回答)
  3. Transaction Hash 如何產生?
  4. 區塊的 Nonce 與 Ethereum 交易的 Nonce 分別是什麼意思?各解決什麼問題?
  5. 加密錢包的地址、公鑰、私鑰關係為何?錢包如何透過公私鑰進行加解密?
  6. 擴容想要解決什麼問題?ETH 2.0 轉成 POS,與 POW 有哪些差異?效果為何?

如果是完全沒有經驗的初學者,這些問題肯定都會花上不少時間查詢資料。我常常為了找出一個問題的答案,開啟一個又一個的分頁,不斷地看到相同或者類似的名詞,在閱讀完一大堆素材之後,各種資訊會漸漸在腦中連接起來,然後再寫下答案的過程中,慢慢提煉出知識。在經歷過大量資訊轟炸後,我學會了用以下幾點來過濾資訊:

  • 找到好入口的第一份素材:好的開始是成功的一半,在學習一個新的概念前,我會先看一些淺顯的介紹文章或影片,抓出重要的關鍵字,寫下還有不懂的地方,這些就是之後繼續深挖的方向。通常在區塊鏈領域規模較大的公司,例如幣安、Alchemy 都會有給初學者的學習素材。
  • 看看作者是誰:基本但重要,一旦開始要看較為深入的文章,最好還是找有份量的作者、專案、公司等所寫的文章。例如以太坊基金會的文章就是個不太可能出錯的選擇,而 medium 上的文章則較容易參差不齊。
  • 看看寫作日期:在一日十年的區塊鏈領域這點尤為重要,必須將文章的日期對應到在當時的時空,例如在哪個以太坊的分岔、著名專案出到第幾個版本,才能判斷文章提到的資訊是否已經過時。並不是說不要學習過時的知識,事實上這些知識仍然非常重要,它能夠讓我們對整個脈絡更清晰,只是我們要搞清楚時間的先後順序。

前期的作業採取簡答題的方式,除了讓我們學習到問題的答案外,更重要的是在尋找答案時的擴散效應。剛開始學習的時候很像是瞎子摸象,很多時候我根本不知道自己在讀的東西是什麼,「這個是什麼」、「這個重要嗎」、「這個和那個有什麼關聯」、「現在讀這個是不是太早」、「還是應該要先讀懂那個」、「這個會不會已經過時了」。作業的問題提供一個支點的作用,就像把我們的手放在大象的某個部位上,讓我們可以從特定的起點開始摸索。在摸索的過程中肯定會摸到不需要摸的地方(也就是簡答題以外的範圍),但沒關係,反正我本來就是要摸透這頭大象。

畢業之後,前往零知識

這篇文在畢業後的第一個禮拜一就開始寫了,原本除了心得以外,還要整理筆記,但拖了好幾個禮拜,始終沒有整理,索性先放入待辦事項,之後有空再來補上。上完課程之後,因為同學的牽線(大腿),緊接著又要來上另外一個課程:ZK Playground。ZK 是區塊鏈未來的走向,既然要成為一名好的區塊鏈工程師,肯定是要來點零知識的。我對零知識的了解非常少,只知道充滿我非常不熟悉的密碼學,我可以預見未來的幾個月又要焚膏繼晷的學習了:)