區塊鏈 教學資源 一、Teaching Materials 0-1.圈外人也聽得懂的區塊鏈「幣、礦、鏈」三圈運作 https://www.thenewslens.com/article/120857 0-2. https://www.ithome.com.tw/news/105374 0-3.比特幣區塊鏈挖礦原理入門由淺到深 https://medium.com/turing-chain-institute-%E5%9C%96%E9%9D%88%E9%8F%88%E5%AD%B8%E9%99%A2/%E5%8D%80%E5%A1%8A%E9%8F%88-%E6%AF%94%E7%89%B9%E5%B9%A3%E6%8C%96%E7%A4%A6%E6%B5%81%E7%A8%8B-eae8a0ca5362 1.Smart Contract 開發 - 使用 Solidity 系列 Day01~Day 30 Liou, Ailin (2018) https://ithelp.ithome.com.tw/users/20092025/ironman/1759
開發智能合約 - 序 (Day01)
開發智能合約 - 交易 (Day02)
開發智能合約 - 區塊 (Day03)
開發智能合約 - 帳戶的基本概念 (Day04)
開發智能合約 - MetaMask 加密貨幣錢包 (Day05)
開發智能合約 - 什麼是 Gas (Day06)
開發智能合約 - 網路 (Day07)
開發智能合約 - 用戶端 Geth, Parity (Day08)
開發智能合約 - 線上版 IDE 之 Remix 基礎篇 (Day09)
開發智能合約 - 線上版 IDE 之 Remix 進階篇 (Day10)
開發智能合約 - 介紹 Solidity 語言 (Day11)
開發智能合約 - 合約的結構 (Day12)
開發智能合約 - Solidity 型別 (Day13)
開發智能合約 - 表達 式 與流程控制 (Day14)
開發智能合約 - 函式與修飾標記 (Day15)
開發智能合約 - mapping 型別 (Day16)
開發智能合約 - 可見度和自動生成 getter 函示 (Day17)
開發智能合約 - 單位和全域變數 (Day18)
開發智能合約 - 實戰練習「簡易版 King of the Ether (1/2) 」 (Day19)
開發智能合約 - 實戰練習「簡易版 King of the Ether (2/2) 」 (Day20)
開發智能合約 - 繼承、抽象合約 (Day21)
開發智能合約 - 介面 (Day22)
開發智能合約 - 實戰練習「 Rinkeby Faucet 」 (Day23)
開發智能合約 - 函式庫 (Day24)
開發智能合約 - 介紹 Oraclize 與資料來源 (Day25)
開發智能合約 - Oraclize request (Day26)
開發智能合約 - Oraclize 可靠證明 (Day27)
開發智能合約 - Oraclize 的 computation 資料來源 (Day28)
開發智能合約 - Solidity 代碼檢查工具 Solium (Day29)
開發智能合約 - 附錄 (Day30)
2. 四、Syllabuses 1. 台大 資訊系統訓練班 https://train.csie.ntu.edu.tw/train/course.php?id=2813
乙太坊智能合約(Solidity)實作班
本課程之設計以乙太坊(Ethereum)上之智能合約的初學者為出發,從區塊鏈與Ethereum的發展跟Gas的介紹談起,接著帶入Solidity的語法與寫作,最後談到智能合約上的資訊安全課題,課程目標是讓學生具有基本智能合約的撰寫與審計能力(本門課10小時不含Web3.js的教學)。Class 1:區塊鏈與乙太坊簡介、Geth使用、環境介紹 Class 2:Solidity的合約架構、變數型別、運算、修飾詞、函式 Class 3:Visibility、enum、struct、繼承、變數屬性 Class 4:錯誤處理、存取其他合約、常見函式庫與關鍵字 Class 5:乙太坊上的資訊安全
2.智能合約開發超級入門 ( 胡耀傑 Jeff)
https://www.tibame.com/course/347
(1).
從零開始寫第一份智能合約
初學開發工具介紹 20:23
智能合約 ( 一 )- 區塊鏈數據存儲 32:31
(2).
初階智能合約技巧
智能合約 ( 二 )- 加減器 16:09
智能合約 ( 三 )- 安全加減器 / 外部模組調用 19:12
智能合約 ( 四 )- 亂數器 / 區塊鏈高度查看 / 哈希亂數器 20:44
(3).
第一份發幣合約
智能合約 ( 五 )- 帳本 / 簡易安全防禦 29:41
(4).
[Bonus 彩蛋解鎖成功 ] ERC20 相容的完整發幣合約 ( 破 50 人加碼演出 )
速寫 ERC20 相容的發幣合約 + 利用 MyEtherWallet 直接操作轉幣 20:50
沒寫過程式也能輕鬆上手! 智能合約(一):你的第一份智能合約
帶你從最基礎理解智能合約撰寫,學習撰寫智能合約語言Solidity的基本語法、程式註解、相容版本宣告、合約本體、無符號整數變數宣告...等概念。寫過程式的同學可以很快上手,沒學過程式的同學也能一步一步學習。
智能合約(二):加減器
從上一份合約延伸更多修改區塊鏈上的數據的方式,這們課將教你非公開變數宣告,以及變數增減,學習如何合理有效的更新區塊鏈上的數據。
智能合約(三):安全加減器
第二份智能合約的加減器存在著執行上的漏洞,有很大機會被駭客利用。 因此第三門合約將教大家如何調用外部模組來修正不安全的函數。
智能合約(四):亂數器
想要寫遊戲或是一份比較生動彈性的智能合約,產生亂數的機制是不可或缺的。 第四個合約將帶大家寫出一個產生亂數的函數,其中使用到區塊鏈高度查看、區塊鏈高度調用、區塊鏈時間調用來完成這個簡易隨機數產生器。
智能合約(五):第一份發幣合約
談到區塊鏈,就會聯想到現今已知超過1500個幣種,這讓金融世界變得非常活躍、豐富也 充滿挑戰。這門課就將帶大家自己動手完成一份極度簡易發幣合約,讓大家瞭解完成一次發幣並不是那麼難的一件事!
3. https://www.tibame.com/course/492
5. 東海大學推廣教育區塊鏈在智能合約的建置
1.區塊鏈介紹*發展歷程介紹※比特幣與區塊鏈概觀*智能合約:以太坊 ※區塊鏈技術與智能合約的應用2.共識演算法分析與討論*共識演算法整理與分析 ※深入淺出共識演算法理論*Bitcoin Blockchain 共識演算法介紹2.1共識演算法分析與討論*Hyperledger Fabric 1.0 共識演算法介紹*Ethereum 共識演算法介紹3.以太坊私有鏈建置教學由教師進行以太坊用戶端安裝教學,讓所有學員加入同一個私有鏈中,接著在私有鏈上進行挖礦與交易的測試4.Bitcoin 到 Blockchain 基礎概念*Bitcoin 與 Blockchain 的運作流程剖析*Blockchain 為什麼比 Bitcoin 更重要*認識分散式帳冊 (Distributed Ledger)*Peer-to-Peer 與 Decentralized 概念*Bitcoin Blockchain 的 Proof-of-Work 流程5.Blockchain 商業模式與 Use Case*區塊鏈1.0:Blockchain 在 Cryptocurrency 與 Fintech 的應用探討*區塊鏈2.0:Blockchain 在 Non-fintech 的應用探討*區塊鏈3.0:Blockchain 在 IoT 的應用探討*熱門創新應用探討-Assets 與 Property*混合區塊鏈產品規劃(Hybrid Blockchain)6.Blockchain 開源與安全議題*Hyperledger、R3 與 Ethereum 生態*看懂「hard-fork」與全球區塊鏈安全事件*認識社群-AltCoin、Colored Coin 與 LiteCoin*交易安全性探討 (Transactions and Consensus)*深入 Block Size 與 Fork 安全議題7.智能合約規劃*認識智能合約的本質與應用*從共識算法到認識智能合約原理*智能合約區塊鏈平台使用介紹 (Hyperledger 與 Ethereum)8.智能合約實習*讓學員私有鏈平台,練習撰寫區塊鏈應用的智能合約(Smart Contracts)*請學員利用範例網頁程式呼叫區塊鏈以及智能合約,將網頁交易寫入區塊鏈並觀察寫入狀況 6. 南台科大 區塊鏈技術 https://flip.stust.edu.tw/course/26514/intro
區塊鏈是一種點對點網路形式的分散式資料庫,可實現去中心化(decentralized)、資料無法被片面竄改(indelible ledger)以及透明公開的交易(Transparent)。去中心化不僅能取代第三方的昂貴費用以及風險,如惡性倒閉與捲款潛逃,而資料無法被片面竄改與透明公開性,可確保交易的真實與公平。目前區塊鏈已經從數位貨幣,逐漸發展到智能合約與分散式帳本的相關應用,更是Fintech與物聯網(IoT)等產業不可或缺的應用趨勢,本課程將介紹如何利用區塊鏈相關技術,來實現更多創新應用。
課程大綱 1. 區塊鏈基本概念與相關密碼學 2. Bitcoin比特幣以及其他數位貨幣 3. 區塊鏈平台Etherum建置、錢包、挖礦及驗證流程 4. Etherum上私有鏈的建置 5. Etherum上智能合約的撰寫與佈建 6. 智能合約在金融科技上與應用實務(集保、證卷) 7. 智能合約在共享經濟上與應用實務(電子書、共享單車) 8. Hyperledger基礎架構布建 9. Hyperledger上分散式帳本建置 10. 分散式帳本在資料紀錄上的應用實務 11. 分散式帳本在行動支付的應用實務 12. 分散式帳本在務聯網上的應用實務 13. 區塊鏈安全議題(一)- 共識演算法PoW PoS (Consensus Algorithm) 與常見的區塊鏈威脅 14. 區塊鏈安全議題(二) – 交易內容的隱私與Hawk,Zcoin的介紹 15. 區塊鏈安全議題(三) –隱私保護技術 Zero Knowledge Proof、非交互式零知識證明
7.Mokoversity 開放創新學院 2017 區塊鏈高階實務班:共識機制與智能合約
https://www.moko365.com/enterprise/blockchain-distilled完整學習區塊鏈最核心的技術:智能合約、共識演算法、挖礦機制與商業思維。透過零碎的新聞報導,感覺無法接收完整的 Blockchain 知識嗎?這門課程是你搭上這波區塊鏈列車的關鍵課程,除了能得到完整的知識外,也能深入理解 Blockchain 的知識與技術內涵。 課程內容 Proof-of-Work Proof-of-Stake 與 Virtual Mining 共識算法的設計與實作範例 Smart Contract 區塊鍊 3.0 與應用領域 Use Case 研究 學習重點 使用 Hyperledger Fabric 上機演練 使用 Ethereum 上機演練 共識演算法的類型與使用 建立系統化的區塊鏈知識 第 1 天 13:30-17:30 第 1 課:共識演算法分析與討論 (1 Hour) • 共識演算法整理與分析 • 深入淺出共識演算法理論 • Bitcoin Blockchain 共識演算法介紹 • Hyperledger Fabric 1.0 共識演算法介紹 • Ethereum 共識演算法介紹 • 拜占庭共識演算法 (PBFT) 研究 • DoS attack 防範 • Real-time 共識演算法設計 全球首發 第 2 課:智能合約規劃 (1 Hours) • 認識智能合約的本質與應用 • 從共識算法到認識智能合約原理 • 智能合約區塊鏈平台使用介紹 (Hyperledger 與 Ethereum) 第 3 課:智能合約實習 (2 Hours)由學員自選 Hyperledger Fabric 或 Ethereum 平台,練習撰寫 Anti-Counterfeit 區塊鏈應用的 Smart Contracts
Jollen 第 2 天 13:30-17:30 第 4 課:Bitcoin 到 Blockchain 基礎概念 (1 Hour) • Bitcoin 與 Blockchain 的運作流程剖析 • Blockchain 為什麼比 Bitcoin 更重要 • 認識分散式帳冊 (Distributed Ledger) • Peer-to-Peer 與 Decentralized 概念 • Bitcoin Blockchain 的 Proof-of-Work 流程 第 5 課:Blockchain 商業模式與 Use Case (1.5 Hour) • Blockchain 在 Cryptocurrency 與 Fintech 的應用探討 • Blockchain 在 Non-fintech 的應用探討 • Blockchain 在 IoT 的應用探討 • 熱門創新應用探討-Assets 與 Property • 混合區塊鏈產品規劃(Hybrid Blockchain) • 實例研究-區塊鏈在 Digital Property 應用實作研究 • 實例研究-區塊鏈在 Supply Chain 應用實作研究 第 6 課:Blockchain 開源與安全議題 (0.5 Hour) • Hyperledger、R3 與 Ethereum 生態 • 看懂「hard-fork」與全球區塊鏈安全事件 • 認識社群-AltCoin、Colored Coin 與 LiteCoin • 交易安全性探討 (Transactions and Consensus) • 深入 Block Size 與 Fork 安全議題 第 7 課:上機實習討論與檢討 (1 Hour)檢討第 1 天的智能合約實習功課,並討論範例程式碼
五、學習資源 1.
區塊鏈學習資源 PecuLab https://www.peculab.org/2019/06/19/%E5%8D%80%E5%A1%8A%E9%8F%88%E5%AD%B8%E7%BF%92%E8%B3%87%E6%BA%90/ 2. BLOCK TEMPO
文組也該知道的區塊鏈技術知識《2》:一次搞懂「以太坊智能合約」如何運作 https://www.blocktempo.com/understand-how-smart-contract-works/ 3. Blockchain Demo (17'49")by Anders Brownworth BTC: 1K3NvcuZzVTueHW1qhkG2Cm3viRkh2EXJp ETH: 0x84a90e21d9d02e30ddcea56d618aa75ba90331ff https://andersbrownworth.com/blockchain/ Blockchain Demo: Public/ Private Keys & Signing (08'53") https://andersbrownworth.com/blockchain/public-private-keys/ 4.
【程式課程】零基礎邁向區塊鏈工程師 - Solidity智能合約 (03'12") https://www.youtube.com/watch?v=GQx-MRszenA 5.
3分鐘了解什麼是智能合約與其運作方式 Ho, Jason (2020) https://blockbar.io/blockchain-breaknews/blockchain-applications/%E4%BB%80%E9%BA%BC%E6%98%AF%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-what-is-a-smart-contract/
現代社會藉由科技,自動化成為了一項趨勢,智能合約能確保自動化的過程安全可信任,智能合約是以區塊鏈為基礎運行的,建議讀者先速瞭解區塊鏈。 閱讀 : 五分鐘了解區塊鏈
讓我們先用一個例子了解智能合約。架設你要出售房屋,不論哪個國家過程大多相當複雜,需要大量的文書工作、與不同公司和人員溝通以及其他各種信任風險,因此大部分房屋銷售商直接找房地產經紀人接手,經紀人會負責所有文書工作、銷售財產並在談判開始時扮演中介人的角色,監督及促進交易直到交易完成。成功達成交易後,賣方和買方的代理商、中介人將分擔銷售價格%作為佣金。這對賣方而言是相當大的財務損失。
針對上述情形,智能合約將派上用場,可以讓冗長複雜的流程自動化,流程的進行資訊公開透明並且不會受到人為干預或竄改,能改變整個相關產業的效率,同時減輕流程成本負擔,最重要的是解決信任問題。智能合約遵循著「如果-則」(If-Then)的原則工作,例如 : (If)只有當議定的金額發送到系統後,(Then)房屋的所有權才會自動轉移給買家。
智能合約還能應用於託管服務,透過將金錢和物件所有權都將存儲在區塊鏈系統中,每筆交易都將經過數百人的見證和驗證,可以確保無誤交付。由於 區塊鏈的特性 ,雙方之間的信任不再是問題,所以不需中介機構。房地產經紀人的大部分作業都可以預先編程為智能合約,這將為買賣雙方節省大量資金。
以上房產只是用例之一,智能合約能夠促進貨幣、無形及有形資產和其他任何有價值標的的交易,確保完全透明,減少中間商的服務成本,並消除交易雙方的信任問題。特定智能合約的代碼包括各方約定的所有條款和條件、交易的信息記錄都記錄在區塊鏈中,即去中心化的分散式帳本。
智能合約是運行在區塊鏈上的執行協議,滿足預先定義的規則時,將自動執行該協議。智能合約提供了有效管理鏈上資產和使用權限的機制,透過區塊鏈透明的共享帳本,保護資訊免受刪除、篡改和修訂的風險。
智能合約用例可簡單可復雜。其經常用於簡單的經濟交易,例如從A到B匯款。智能合約還可用於註冊任何種類的所有權和知識產權,並設計使用授權機制,未來可能革新各產業的系統,例如銀行、保險、能源、政務、電信、音樂、藝術,汽車、教育等領域。
使用智能合約,每個協議、流程、任務和付款都可以建立數位記錄和簽名( 數位簽章 ),可以對其進行識別、驗證、存儲和共享。此外,智能合約還可用於商品或服務供應鏈中更複雜的協議,或在無傳統集中機構的情況下管理一群擁有相同利益和目標的人,分散式自治組織(DAO)就是這樣的一個例子,雖然複雜,但智能合約確實可以規範治理準則(組織的章程,治理法規,議事規則或組織章程),並用自我執行的代碼代替日常運營管理。
優勢 : 智能合約的自動化流程,可以消除人工參與,提高合約中規定業務之交易速度,同時以區塊鏈特性為基礎,消除了第三方參與的需求和信任風險。此外區塊鏈上的數據無法竄改或刪除,所以當一方未履行其義務時,另一方將受到智能合約的保護,該自動交易機制消除了潛在的人為錯誤率,確保了合約執行的準確性。
缺點 : 智能合約的技術目前發展仍未成熟,容易出現問題。例如構成合約的代碼必須完美無誤因為無法更動。這可能會導致運行錯誤,甚至有些騙子利用這些錯誤,ex :The DAO黑客一樣,透過存入錯誤代碼的智能帳戶盜取資金。 此外,針對這新穎技術,政府該如何監管?如何徵稅?如果合約內容有問題或發生其他意外情況,如何補救?傳統合約發生這些狀況時,可以在法庭上廢除、更動,但智能合約無法。期望隨著時代演進,該技術能得到完善應用,讓智能合約成為社會不可或缺的一部分。