iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
Web 3

Road Map To DApp Developer系列 第 2

【DAY2】 - RoadMap to DApp developer

  • 分享至 

  • xImage
  •  

Preface

大約在年初的時候,我就在煩惱今年的鐵人該寫些什麼東西?這個暑假該精進什麼東西?這時我剛好慢慢地在接觸區塊鏈的世界,也就對於成為一個 DApp 工程師有了很大的興趣。
於是我就在 medium 找了很多文章,像是「How to become a blockchain developer」「How To Become A Web3 Developer」。觀察過幾篇文章之後,可以發現要成為一個 DApp 工程師最為需要的技能主要有:

  1. 建構網頁的能力
  2. 撰寫智能合約的能力
  3. 區塊鏈、以太坊的基本知識

在看過這麼多個類似的文章後,我決定整理一下關於這些技能的資訊!並在認真學習裡面的一些資源過後,分享一下我自己的研究還有學習的心得,希望對於想開始做 DApp/ Web3 開發的人們有一點幫助。

Website

Web 3

在這些介紹網頁中常寫道:「現在要準備進入到 web3 的時代了」,其實我一方面好奇到底什麼是 web3?另一方面也在想到底在 web3 的時代,我需要怎樣的技能才能成功的存活

Web 1.0 (1991 ~ 2004) Read

首先要從 web1.0 開始講古,這個時候網站大多是只能閱讀而無法互動的網頁。且這時的個人網站通常是架在 IPS-server 上面,簡單來說就是個人網站是直接架在某個人家中的伺服器上的。
這種架網站的方式有幾個很明顯的缺點:

  1. 你只能在網頁上「看」一些資訊,如果你對於這些資料有疑問,你也不能直接在底下留言問這個網站的架設者。
  2. 抄襲的問題很嚴重,但是沒有任何規範可以限制這些不法分子。
  3. 當這個網站的伺服器掛了,你就看不到這些資訊了。

Web 2.0 (2004 ~ Now) Read & Write

Web 2.0 的開端大概是 2004 年,這年 Zuckerberg 創立 Facebook,引起了一種新的網路互動模式。人們開始使用社群媒體當作接觸網路的主要媒介,例如Facebook 提供了一個介面讓人們可以互動、分享、留言,為我們的生活帶來很多便利。但是於此同時也為我們帶來很多資本世界的險惡。

一個好玩的例子是當你 google 某個商品,例如「褲子」,過一天之後你的 Facebook 或是 Instagram 上面就會充斥著「褲子」的廣告。這些大公司取得我們的個人資訊,但是我們對於他們是如何使用我們的資料的卻無從得知,這造成了很大的資訊不對等與嚴重的隱私侵犯

Web2 的公司還存在更多的問題,像是例如你在一個網站 (像是 medium,只是舉例XD) 上投稿了一篇文章,若隔天網站的經營者決定把他們的伺服器收掉不做了,你又沒有儲存這一篇文章,就代表你撰寫的那篇文章瞬間消失在這個世界上了

又或是一些 YouTuber 的影片因為違背 YouTube 設置的規範而遭平台封鎖,但是在封鎖的時候只會告訴你違背了這個規範,但卻不會告訴你何處標準為何,這點也被現今很多網路工作者詬病,有些人甚至憤而離開 YouTube 圈。

簡而言之,Web2 的缺點是這些網站的經營權與資訊的擁有權都掌握在公司的手上,這些公司可以輕易的透過他們龐大的資源來控制人們的思想或是行為,像是透過投放很多的廣告讓人們被洗腦。另外 Web2 也無法保障人們在網路上的智慧財產權或是其他權力等,個體用戶(如你我)就只是一個被當作被那些公司操作的小小棋子而已。

Web 3.0 (Now ~ ?) Read & Write & Own

Web3 或是 DApp 的概念主要就是將產品建立在區塊鏈上,以去中心化為主軸建構網站、社群、或是其他去中心化金融商品等。在這個時代人們都是平等的,或者說在這個時代建構的產品主要是以個體為中心,將權力下放給所有的用戶,他們可以真正擁有自己的財產、權力。

而上述提到的 Web2 的缺點現在已經提供了很多解決方法,像是上面提到文章遭刪除的問題,可以透過上傳 InterPlantary File System (IPFS) 等分散式儲存系統,只要上傳後便會永遠的儲存在這個系統裡面無法被竄改、刪除了。

例如 Web3 版本的 medium:Matters,他們的每一篇貼文都會儲存在 IPFS 上 (所以一發布之後便無法更改),而創作者的獎勵機制是利用閱讀者的按讚作為收入。且在演算法方面也相對於創作者較友善,不會因為是新加入的創作者而有較少的閱讀的人數。

Front-end skills

簡單來說,Web3 世代所需要的技能其實跟 Web2 相差不遠,幾乎主要都是將產品建構在網站、網頁上運行,而實際上不同的只是網路的協議與底層運作的方式不同而已。因此學習 Web2 的網站建構能力對於 DApp 工程師是一件非常重要的事情!

下面會介紹一下前端技能的功能還有資源:

1. HTML & CSS

網頁基本上就是靠 html 完成架構,並利用 css 來調整成我們想要的模樣。

  • 基本語法: 在學習一個語言前,首先要做的是熟悉他的語法。YouTube 上其實很多教學影片,我最後選了這個聽起來很好懂,並會在最後帶著你做一個小型的 project!
  • codepen: 裡面有很多其他完成的 project,可以透過模仿別人的 css 撰寫方式來達成你想要的目的!(模仿總是學習的第一步,不要害怕模仿 XD)
  • Figma:Figma 大概是一個要學會網頁設計的人非常需要了解的,因為只有透過看這些設計稿並實際去思考要如何做出這樣的網站才可以讓你理解到你現在還缺乏的是什麼?

2. JavaScript

JS 也是非常重要的前端語言,在網頁互動、資料傳輸的時候很常會用到。

  • 基本語法:這個網站對於新手很友善,除了是免費的以外,教學影片直接就是 js 的編譯器,console.log 還可以直接在螢幕上跳出來!除此之外是利用 project 導向的方式教學,我覺得可以學到很多東西,但是對於有點程式基礎的人會太過於簡單。
  • W3School:也是一個很好的免費教學網站,裡面有各種語法使用、函式使用的方法與範例,遇到不會的就往這裡找就對了!

3. React

React 是一種 JS library 的框架,是以 component 為導向的前端開發工具。

  • Learn React for free:是一個免費的教學影片,也是以 project 導向的方式教學!
  • React Tutorial:這個網站基本上可以當作字典來查,裡面會有介紹和範例。
  • React Official Doc:React 的官方文件「據說」是寫得很不錯的了哈哈!它裡面也有一系列的教學!

Smart Contract

智能合約是儲存在以太鏈上,並可以透過以太坊的虛擬機 Ethereum Virtual Machine (EVM) 運作的一段程式。

solidity

在 Ethereum 撰寫智能合約的首要選擇應該就是 solidity ,它是一個高階的程式語言,在寫完之後可以透過用戶 deploy 在以太鏈上(也就是合約會儲存在鏈上),接著以太鏈會將 solidity 編譯並儲存成 EVM 可以看懂得 OPcode。隨後若是有其他人想要使用這個合約中的某個 function 時,EVM 就執行已經編譯好的 OPcode,完成程式的運作!

  • CryptoZombies:Ethereum 下出的一個教學網站,也是以 project 為導向的方式教學,裡面也有簡體中文版本!
  • Solidity Tutorial:他長得有點像是 W3School 的網站,有各種主題介紹與範例!
  • LearnWeb3 DAO:它們提供一些簡單的介紹、包含區塊鏈、前後端的知識、教學影片等,還有一些測驗,通過之後可以拿到相對應的 NFT!

Blockchain knowledge

bitcoin

做為一個區塊鏈的始祖,你當然最需要了解他到底在做什麼!像是比特幣的運行方式,了解雜湊函式在區塊鏈的應用 (連結會放在參考的部分),如果你更有興趣可以去看看比特幣的白皮書,不過我自己是沒有看啦。

Ethereum

而要做出一個 DApp,首要學習的鏈肯定是以太鏈,除了在以太鏈上所有的資源都是開源的,在他們網頁上具有不同語言版本的文件,甚至還有一個地方是專門放各式各樣的教學!此外可能需要學習以太坊上一些基本知識,如地址是什麼?交易的進行方式?或更深入一點的像是程式 deploy 到以太鏈上後會發生什麼事情,都是一些蠻有趣但是需要花時間理解的事情。

小結

除此上述提到的技能之外我覺得更為重要的有幾點:

self-teaching

現在網路上非常多教學影片,且又有像是 coursera 這種開放式教學 (Massive Open Online Course, MOOC)的教程,因此比起上述的前端技能,我認為自我學習的技能才是更不可或缺的!

implementation

另外我自己的習慣是會在學習一項技能的時候用一些小小的 project 讓自己熟悉。例如我在學 js 的時候,用教程中提到的一些函式如 Math.random() 來做出一個產生亂數密碼的小網頁,另外我想到產生密碼之後應該要可以使用複製的按鈕,在網頁中用 navigator.clipboard.writeText() 複製亂數密碼等。


  • 我做出的小小 demo

在做這些事情的時候,自然會有很多不會的地方,這時候就會去 StackOverflow 或 Geekforgeek 等網站上面尋找有沒有人問過同樣的問題。這個尋找答案過程本身就是一個最佳的學習方式,不僅可以加深自己的印象,也可以增強自己搜尋的能力。

choices

下面這些話給一些剛開始學程式的人們!

雖然現在網路上的資訊都非常的多,程式或是區塊鏈的教學影片與文章也很多,直接上 Google 找就有很多了,但是該怎麼選擇會比該如何尋找更為重要,選擇你現在正需要的才會讓你的學習過程更有效率,學習的成效也更大!

References:


若有文章內有任何錯誤的地方歡迎指點與討論!非常感謝!

歡迎贊助窮困潦倒大學生
0xd8538ea74825080c0c80B9B175f57e91Ff885Cb4


上一篇
【DAY1】 - DApp 工程師的成長之路
下一篇
【DAY3】- Side Project Breakdown
系列文
Road Map To DApp Developer30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言