📜 [專欄新文章] 2021 區塊鏈開發入門
✍️ Johnson Chen
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
在我大學的時候,除了學習網頁前端之外,因為課程報告的需要接觸到以太坊(Ethereum),於是開始學寫智能合約,包括它使用的程式語言 solidity。
工作以後鮮少再碰以太坊的相關技術,直到最近想重新把以太坊學起來,故而決定寫這篇文章,讓初次接觸區塊鏈與智能合約的人更好地進入開發者的世界。這篇文章不只面向開發者,同時也希望能夠給對區塊鏈有興趣的人,指引一條清晰的學習路線。
關於區塊鏈
區塊鏈會被廣為人知,無非是因為虛擬貨幣的出現,而虛擬貨幣的鼻祖就是比特幣。在比特幣出現以前,沒有一個能夠在全球網路上通用的數位貨幣;在比特幣出現之後,才真的實現了數位化的貨幣,能夠在全球網路上流通。
這樣的技術性突破,blockchain 的名字從比特幣白皮書中被萃取出來,而這項技術也被更多人拿去做研發以及創新。
區塊鏈這項技術的特性可以簡單概括為兩點:去中心化(decentralized)與不可竄改(immutable)。去中心化有程度上的差別,在公共網路上由世界各地的節點共同維護的區塊鏈,去中心化程度較高;相較之下,私人企業開發由特定節點來驗證交易的區塊鏈,去中心化程度較低。
為什麼是以太坊?
這年頭區塊鏈三個字大行其道,大部分都是為區塊鏈而區塊鏈的商業炒作。容許我獨斷地說,以太坊才是區塊鏈應用的大門。
以太坊由全球最大的區塊鏈社群組成,提供一個去中心化的虛擬機器(Ethereum Virtual Machine)來處理「智能合約」,它是一個公共的區塊鏈平台,逛逛以太坊的官網吧!
智能合約
在以太坊區塊鏈中有所謂的智能合約,智能合約能夠部屬到以太坊區塊鏈上,合約即程式碼,放到區塊鏈上就不能再更新,只能執行合約上的程式,持有以太幣的人能夠與合約進行交易。把智能合約想像成是一台自動販賣機,把錢(以太幣)投進去,飲料會掉出來(合約上的程式會被執行)。
在現實生活中,簽訂合約的雙方認為合約有效而且可以被信任,是因為有國家法律來保障,違反合約可能會受到法律制裁;而用以太幣與智能合約互動,認為智能合約可以被信任,是因為智能合約的不可竄改性 — 以太坊虛擬機會毫無偏袒、完全中立、冰冷不帶任何感情地執行智能合約上已經寫好的程式碼。
建立在智能合約之上的虛擬貨幣
事實上,以太坊擴大了區塊鏈這項技術的應用層面。回頭想想,比特幣來自區塊鏈技術,某個人若想打造一款同比特幣一樣的虛擬貨幣,就得模仿比特幣去建造一個自己的虛擬貨幣區塊鏈,一個區塊鏈網路要能夠有效運作並非易事,還需要節點、需要靠人挖礦去驗證交易。此時,若使用以太坊的智能合約,撰寫虛擬貨幣需要的程式碼,將合約部屬到以太坊區塊鏈上,叮咚!他就可以發行自己的虛擬貨幣,根本不必再去建造底層的區塊鏈,也不用想挖不挖礦了。
此時會發現以太坊就像是一個區塊鏈平台,你不需要親手打造區塊鏈網路,即可享有區塊鏈去中心化與不可竄改的特性。與其他智能合約的開發者共同使用以太坊虛擬機 EVM(Ethereum Virtual Machine),在 EVM 上部屬無上限個智能合約。
以太坊是一項基礎建設,底層區塊鏈幫你架設好,開發者便有更多時間去發想應用到網頁、手機、或物連網設備上,以下是一段簡單的智能合約,該合約創造了一個虛擬貨幣簡稱 MAT…
直接進入開發領域 — 線上編輯器 Remix
Remix 是開發智能合約的線上編輯器,進入Remix官網,點選 Create New File 以後,把上方程式碼複製貼上。在左側欄位中有 solidity compiler 的選項,確認一下左側欄第一列顯示的版本,調成 0.7.0 (上方程式碼使用的版本),就可以按下下方 compile 的按鈕,將智能合約「編譯」成 bytecode(給機器讀的語言)。
接著我們要部屬合約到區塊鏈上,首先到左側欄位點選 DEPLOY & RUN TRANSACTIONS 的選項,可以看到環境是 javascript VM,這是指現在要部屬到的測試用虛擬機。按下下方的按鈕 Deploy 即可將合約「部屬」到 javascript VM 上。成功部屬後,你會發現 ACCOUNT 所持有的以太幣,從 100 變成 99.9999…,我們得知部屬智能合約需要花費一點點以太幣。
左側下方會有 Deployed Contracts,點開來就會列出合約上可供呼叫的函式,點那些函式就能與剛剛部屬上去的智能合約進行互動了。
有些函式呼叫會引發交易,所以需要以太幣,有些則不用。在 ACCOUNT 的地方可以展開來,它提供許多的地址 (address),也就是錢包,每個錢包裡面預設給你 100 顆以太幣,試著用那些地址去操作智能合約,你就能慢慢體會什麼是建立在以太坊之上的虛擬貨幣了。
真正的開發者世界
實際上開發智能合約只能算是以太坊開發的其中一部分,其他包括以太坊區塊鏈擴容方案、節點驗證等等又是另一個開發領域了,那部份我就沒有研究太多。而智能合約的開發是比較接近應用層面的,透過網頁前端或手機應用程式,與智能合約進行互動,稱作 Dapp(Decentralized App) 的開發,也象徵著網際網路走向 web3.0 的時代。
學習 solidity 語言,除了看硬生生的官方文件之外,我推薦去玩cryptozombies,我本身就是從這款網頁遊戲中學習這門語言,聽說是連小孩子都能輕易學習的教材。
除了學 solidity 之外,網路上還有很多方便的開發工具,開發者主要是運用這些工具做測試、自動化部屬、串接前端等等。許多網路上的教學文章會使用 Truffle + Ganache + web3.js 來建置開發環境。但我在這裡推薦另一款開發環境的架構,如果是新手直接從 hardhat 開始也是非常適合的,hardhat 的教學文章寫得清楚完整,本篇文章使用的程式碼也是從 hardhat-hackathon-boilerplate 這個專案而來。hardhat 使用的開發環境是 Waffle + Hardhat + ethers,它幫你把開發環境處理的簡單又舒服,讓開發者可以專注在開發智能合約上。
OpenZeppelin 是很有名的智能合約套件庫,開發時可以引入它的智能合約。智能合約很講究安全性,稍微沒寫好就可能被駭客鑽漏洞,虛擬貨幣就被盜走了!OpenZeppelin 提供的 SafeMath 很常被引入到專案,對新手來說看 OpenZeppelin 的合約也是很好的學習管道。此外,官方也建了一個學習網站ethernaut,主要在教導如何寫出安全性夠強的智能合約,可惜網站在我寫這篇文章的時間一直處於維修不能用的狀態。
最後再介紹一款實際上線的智能合約專案:Argent。它是一款運用智能合約來做虛擬貨幣錢包的公司,除了使用他們的錢包之外,也可以看看他們的智能合約是怎麼寫的,感受一下專業的程式碼架構與寫法。
小結
這篇文章希望能幫助到想了解區塊鏈這項技術的人,同時也想呈現一個智能合約的開發生態系,你大可以不必花太多力氣去了解密碼學、挖礦、節點、共識機制等等五花八門的專有名詞;反之,你可以專注在智能合約的開發,或回到本質去思考去中心化的用意、以及為什麼不可竄改的特性那麼重要。
智能合約除了做虛擬貨幣之外,也能夠做投票系統,原本以貨幣為起始點的區塊鏈技術,是智能合約的出現擴大了區塊鏈更具彈性的用途,這圈子需要更多的開發者來探勘這片新大陸。
尤其鼓勵人文社會科學的人才,無論是哲學、政治、經濟、法律或社會等各方領域,試著撇開人工智慧將主導未來社會的發展路線,與之截然不同的另一種形式:人類社會能否依靠科技的力量,促成彼此之間的合作,創造更有效率的市場、更公平的治理方式?
延伸閱讀:激進市場(Radical Markets: Uprooting Capitalism and Democracy for a Just Society)
2021 區塊鏈開發入門 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有28部Youtube影片,追蹤數超過1,320的網紅Today is my day,也在其Youtube影片中提到,訂閱《Today is my day》👉https://bit.ly/2Roz2qd #宇宙人外信 全收錄:https://bit.ly/3wO4KwA 來IG找我們玩吧:https://bit.ly/2PNGJ8J 哈利梅根和Spotify、Netflix天價簽約發展內容,卻又因生小孩停擺,英文...
「truffle教學」的推薦目錄:
- 關於truffle教學 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於truffle教學 在 Elle Onni Facebook 的最讚貼文
- 關於truffle教學 在 Fullfoodie Facebook 的最讚貼文
- 關於truffle教學 在 Today is my day Youtube 的最佳解答
- 關於truffle教學 在 PanMen Kitchen Youtube 的最讚貼文
- 關於truffle教學 在 PanMen Kitchen Youtube 的最佳解答
- 關於truffle教學 在 又香又滑讓人一口接一口的松露巧克力|Chocolate Truffle ... 的評價
- 關於truffle教學 在 Homemade Popcorn with Truffle Salt - Pinterest 的評價
truffle教學 在 Elle Onni Facebook 的最讚貼文
今天的午餐和晚餐😃
午餐做西餐
很高級這樣做了黑鬆露 Pizza 和黑鬆露Mushroom Soup
講真的 Thermomix 做 Pizza 真的很容易而且很好吃!
真的好吃過外面很多,不要講我騙你😂
而且食材那麼滿的不懂外面可以賣多少錢
覺得自己又省了很多錢
Pizza 麵團跟著cookidoo 食譜做
它自己揉自己清洗,基本上你只是需要整形而已
等發酵的同時再用 Thermomix做個 番茄口味披薩醬
用真實番茄🍅做成
不用再擔心買外面的防腐劑sauce貴桑桑又不健康😃
想吃多少做多少,很新鮮!
麵團發酵好幹平后塗上一層 truffle oil 和Pizza sauce 🍕
放上自己喜歡的材料
熏鴨,香腸,洋蔥,蘑菇,番茄,baby spinach
再撒上黑鬆露醬
然後滿滿的cheese
烤的時候10分鐘順便做了一碗黑鬆露蘑菇湯🍄
那個味道OMG!😱
人間天堂!
因為吃太飽晚餐隨便炒個扣肉米粉
還順便在IG 上直播炒米粉教學😃
同時用氣炸鍋炸了雞翅膀✌🏻
把做pizza剩下的食材全部丟下去一起炒
超級好吃!
自己做就是可以料多多滿滿!
開心😁 吃飽飽真的是滿足的一天!❤️
truffle教學 在 Fullfoodie Facebook 的最讚貼文
❣️超有heart手工意粉店!😍
不惜工本人手搓意粉團💪🏻
嚴選優質意大利食材🇮🇹
喺屋企都嘆到高級餐廳質素🌹
CP值爆燈呀!🤩
.
黑松露芝士小帽子餃子🍝 ($70)
濃厚杰稠的松露忌廉醬
緊緊黏附在Cappletti上🥰
粒粒圓潤飽滿。色澤金黃
賣相完全拍得住高級餐廳呀!👏🏻
.
甫上枱便傳來陣陣黑松露香氣🌬
由於每粒為人手新鮮搓製
小帽子餃子入口煙韌。嚼勁十足👄
咬開爆出馥郁芝士香
配上非常足料的黑松露餡料😍
令人欲罷不能呀!❤️
.
小店除了主打手工意粉外
仲精心炮製足料意粉醬汁🍝
加埋示範教學短片
想喺屋企做抗疫廚神?👨🏻🍳
Easy汁啦!😎
.
***
@eatery90s
網店 (可提供送貨服務)
.
#fullfoodie #香港 #手工 #意粉 #90後 #pasta #homemade #truffle #blacktruffle #cheese #yummy #tasty #美食 #吃貨 #食貨 #朝聖 #相機食先 #食好西 #hkfoodie #like4like #hkig #iger #food #foodie #eat #hongkong #hongkongfood #foodie #hkiger #kol
. eatery90s
truffle教學 在 Today is my day Youtube 的最佳解答
訂閱《Today is my day》👉https://bit.ly/2Roz2qd
#宇宙人外信 全收錄:https://bit.ly/3wO4KwA
來IG找我們玩吧:https://bit.ly/2PNGJ8J
哈利梅根和Spotify、Netflix天價簽約發展內容,卻又因生小孩停擺,英文報導用了哪些單字和說法?合約、預告、育嬰假、產假,英日韓文一次學
00:23 truffle 松露
03:58 contract 合約
04:38 deal 合約
05:01 契約 Keiyaku
05:18 계약 gyeyag
06:29 trailer 預告
07:43 teaser 廣告前的下段預告
07:47 tease 嘲弄、撥弄
08:55 予告編 Yokokuhen
09:09 예고 yego
11:16 content is king 內容為王
12:48 content 內容
13:07 content 滿意、滿足
13:43 eat to your heart’s content 吃到你滿意為主
14:05 content creator 內容創作者
15:24 コンテンツ Kontentsu
15:33 콘텐츠 kontencheu
16:51 parent 家長
17:12 personal leave 事假
17:20 parental leave 育嬰假
17:59 apply for 申請
18:09 apply for parental leave 請育嬰假
18:18 maternity leave 產假
19:06 育児休業 Ikuji kyuugyou
19:20 육아휴직 yug-a hyujig
19:28 육아 yug-a
20:42 contract 合約
20:57 契約 Keiyaku
21:01 계약 gyeyag
21:10 trailer 預告
21:18 teaser 廣告前的下段預告
21:24 予告編 Yokokuhen
21:30 예고 yego
21:39 content 內容
21:44 コンテンツ Kontentsu
21:50 콘텐츠 kontencheu
21:58 parental leave 育嬰假
22:02 育児休業 Ikuji kyuugyou
22:13 육아휴직 yug-a hyujig
中英日韓四聲道
🌍英文主播:Ethan &國際編譯:Ryan/隔壁老王
📺從時事新聞教你英日韓單字
🗣 閒話家常學微知識
💬讓你輕鬆掌握生活用語
想聲歷其境,來收聽高音質Podcast
搜尋訂閱★宇宙人外信
《Apple Podcast》: http://apple.co/3eSztCS
《Spotify》:http://spoti.fi/3cEwlrF
《SoundOn》:http://bit.ly/3bUeVYU
《KKBOX》:http://bit.ly/2OzeQ42
《Google Podcast》:https://bit.ly/3vUvBr1
#英國王室 #哈利梅根 #Podcast
truffle教學 在 PanMen Kitchen Youtube 的最讚貼文
大啡菇,黑松露雜菌意大利飯
Wild Mushroom Risotto with Portobello in Truffle Cream Sauce
內容物:
1. 意大利米(已預製)
2. 大啡菇(已預製) 1隻
3. 炒雜菌 1份
4. 忌廉
5. 松露醬
6. 白酒
7. Parmesan Cheese碎
8. 洋蔥粒粒
9. 蒜蓉
10. 雞湯
11. 牛油
12. 意大利番茜碎
煮食步驟
約5-10分鐘
先將油加入平底鍋中,先中火爆香大啡菇、雜菌、洋蔥粒粒、蒜蓉,然後加入白酒,待酒精都揮發後,先拿起大啡菇備用,再倒進少量雞湯,加入約1茶匙鹽和糖,再加入意大利米,全情用大火攪拌著煮,每次加入雞湯都不能多過意大利米面太多,直到合適軟硬度就停止加入雞湯,在意大利飯還剩少許水份時關火,最後加入Parmesan Cheese碎、牛油、松露醬、忌廉、意大利番茜碎攪拌均勻便可上碟,再大啡菇放面裝飾。
(視乎軟硬度,雞湯不夠可以加清水,味道不會變)
IG: panmenkitchen
FB: Panmen Kitchen
Store: panmenkitchen.boutir.com
truffle教學 在 PanMen Kitchen Youtube 的最佳解答
63ºC 溫泉蛋配松露忌廉汁炒雜菌
63ºC Onsen Egg with Sauteed Mushrooms in Truffle Cream Sauce
內寄物:
1. 溫泉蛋
2. 炒雜菌
3. 松露忌廉汁
4. Croutons
製作:
約5-10分鐘
先將油加入平底鍋中,中火煎香雜菌,關火加入松露忌廉汁攪拌均勻即可上碟,再將溫泉蛋打進雜菌中間,再加上Croutons即可享用。
IG: panmenkitchen
FB: Panmen Kitchen
Store: panmenkitchen.boutir.com
truffle教學 在 Homemade Popcorn with Truffle Salt - Pinterest 的美食出口停車場
... organic coconut oil and truffle infused sea salt, it's our family favorite movie treat! ... 清爽無負擔香蕉鬆餅——教學影片熱愛美食的人,一定更熱愛生活。 ... <看更多>
truffle教學 在 又香又滑讓人一口接一口的松露巧克力|Chocolate Truffle ... 的美食出口停車場
... <看更多>