【Z學院 Solidity 語法基礎:零基礎學習以太坊開發】課後心得 by 0X4n.eth

0x4n.eth
The Z Institute
Published in
Jul 21, 2023

前言

會想學習Solidity主要是以轉職智能合約工程師為目標,對於沒有程式背景的我來說,學習Solidity可能是一項具有挑戰性的任務。

而每天在幣圈打滾,智能合約肯定不少見,但又看不懂程式碼在寫什麼,也不懂智能合約的運作原理,往往很多機會就因此錯過(ex. 有技術背景的人可以直接從NFT的合約去Mint)。所以擁有一份會寫程式的技能或許已經成為這時代的必備條件。

雖然要自學程式語言乍聽之下不是難事,但網路上的資訊非常零碎,對於程式小白的我來說,很難去做資料整理及有效吸收,所以就報名了Z學院的Solidity語法基礎課程,來大幅降低在網路上尋找資訊的時間以及更有效的學習。

什麼是Solidity? 為什麼選擇Solidity?

Solidity是專門用來撰寫以太坊智能合約的程式語言,由以太坊共同創辦人開發。智能合約可以執行自動化的操作、儲存和轉移加密資產,並實現各種去中心化應用程式(DApps)的功能。

而之所以選擇Solidity,我認為有以下5點是吸引我的:

1. 大部分的項目都是以Solidity開發:Ex. Uniswap、Compound、Chainlink等,以及代幣和NFT協議都是使用Solidity開發。

2. 多鏈開發:目前至少約有7成的公鏈都是支持EVM (以太坊虛擬機)相容,可以說是只要寫好程式碼就能部署到多條鏈上。

3. 語法易學:近似JavaScript,屬於高階語言,至少可以從英文單字判斷程式碼的功能。

4. 學習與開發資源豐富:因近年以太坊和區塊鏈技術的普及,所以累積龐大的開發者生態和社群系統,可以更容易接觸到更多資源。

5. 早期紅利:Solidity算是新興的程式語言,在2014年被設計出來,學會少數人會的程式語言或許未來在職場上會是很加分的條件喔!

什麼是智能合約(Smart Contract)?

簡單來說就是將交易兩端的條件和需求,轉化成可以自動執行的程式碼。

智能合約的主要特點為以下:

  1. 無法竄改:大部分的智能合約(除了可升級的智能合約之外)一旦部署在區塊鏈上,其程式碼無法修改,只能遵從預先定義的規則和邏輯。
  2. 去中心化:智能合約運行在去中心化架構的區塊鏈上,沒有單一機構可以控制以及單點故障的問題。
  3. 開源透明:驗證合約後,所有人都可以檢視智能合約的程式碼,共同審查合約的功能性和潛在漏洞。

什麼是Dapp?Dapp與App?

全名為『Decentralized Application』,中文為『去中心化應用程式』,簡單來說就是有使用去中心化技術的App,像是:Uniswap、MakerDao、Chainlink、OpenSea、Axie Infinity等都是知名的Dapp項目喔!

而App與Dapp最大差別在於『數據儲存』,前者的數據都儲存在開發商的中心化伺服器當中,而後者的數據都儲存在區塊鏈的網路上,兩者最大差別在於項目方的足跡是否容易觀察,在Dapp上我們可以在區塊鏈瀏覽器上清楚看到程式碼的內容和項目方的一舉一動。

Solidity開發基礎

在結束第一章節的認識Solidity後,接著就是要認識開發Solidity的基礎,而這一章節會介紹所有開發Solidity的必備工具,包含開發智能合約的IDE、拆解Solidity結構、區塊鏈錢包介紹、智能合約瀏覽器介紹。透過講師一步一步解說和操作,原本艱澀難懂的專有名詞,變成有趣好玩的知識。

而實作練習透過本章節的教學,成功部署第一個智能合約到測試網上,把知識透過實作更加深對於智能合約開發的認知,以及在區塊鏈瀏覽器上看到自己部署的合約成功上測試鏈,一切都覺得太有趣了!

第二章節 — 實作練習

合約部署到測試網的過程,實在是太酷了
發送的交易正在被確認
成功部署Storage合約到測試網上
可以在Etherscan上查詢剛剛發送的合約
也可以在Etherscan上讀取和寫入合約

Solidity進階實作

這章節主要是更進階的帶入Solidity進階實作,透過實際案例講解和手把手發行自己的代幣和NFT,更理解對於智能合約開發的過程。

而第一部分是透過Solidity的範例合約進行深度解析每個語法的功能,其實對於沒有程式背景的我來說確實蠻吃力的,所以也重複觀看好幾次,但講師很細心的解釋每個語法的原理和邏輯,並且講師會透過在實物上的專業技能去額外介紹開發過程中的小細節,值得重複回放觀看並吸收。

接下來在常見的智能合約協議介紹中也把每個協議的各種語法都仔細介紹一遍,並且講解各種協議的功能和差異。

再來就是實際操作兩個實作; 發行自己的代幣和NFT,過程中還是遇到許多小問題,但在講師的講解之下,還是排除了困難,成功發行了自己的兩個專案,讓原本對於程式一竅不通的我可以從0到可以發行自己的代幣和NFT的過程非常有成就感,實在是太有趣了!

課程實作1-發行自己的Token

發佈代幣合約過程
部署成功
成功顯示在MetaMask

課程實作2-發行自己的NFT

部署NFT合約過程
把NFT圖片上傳至IPFS
上架NFT成功
成功Verify合約到Etherscan

總結

課程相對於自己在網上搜尋資料的過程相對方便許多,且課程中講師會帶入自己在實作中的各種經驗,再搭配上範例操作,講解每個部分的細節以及運作原理,對程式小白的我來說確實大幅增加自己對智能合約開發的認識。另外動手實作的過程更能加深開發智能合約的每個細節,實作中也會遇到很多意外的Bug,但通過講師的指導,排除困難的同時也學會了許多寫程式的小技巧,往後遇到類似問題也能大致了解問題所在。

整體課程感想是非常推薦購買來觀看學習的,但對於真的沒有程式背景的人來說確實會非常吃力,還是需要一點程式基礎才能快速上手,所以我也是碰到許多問題無法自己排除,需要講師的指導或是搜尋ChatGPT。但對於有程式背景的人來說,這門課確實可以讓你快速入門智能合約開發的領域,相信很快就可以駕馭智能合約開發的環境,成功轉職智能合約工程師!

--

--