羅德興老師的教學歷程檔案 - 112-2 Blockchain - 智能合約
 

企業資訊與管理系
助理教授/日導
羅德興


歷程檔案 Portfolio

    智能合約

    一、Articles
    1. 智能合約的發展與應用 陳 恭 (2017) [download]

    二、Slides
    1. 以太坊智能合約撰寫簡單教學 (林修平,2016)
         簡單的介紹以太方智能合約撰寫的基礎及注意事項,使用Solidity語言撰寫

    https://www.slideshare.net/NicholasLin15/ss-69279815




    2. 

    三、Teaching Materials
    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. 

    踏入區塊鏈第一步,使用 Golang 寫出自己的智能合約

    https://www.tibame.com/course/492



    4.

    區塊鏈以太坊 (09D364 科管局免費課程)

    https://www.sharecourse.net/sharecourse/course/view/courseInfo/2257

    Section 1
    1. 課程介紹
    2. 什麼是區塊鏈
    3. 區塊鏈展示
    4. 什麼是共識協定
    5. 去中心化應用程式架構介紹

    Section 2
    1. 乙太坊區塊鏈
    2. 介紹乙太坊錢包-metamask
    3. 安裝乙太坊錢包-metamask
    4. 如何使用乙太坊錢包-metamask
    5. 乙太坊錢包-metamask與去中心化應用程式

    Section 3
    1. 介紹開發環境與工具
    2. 安裝visual Studio Code
    3. 安裝NodeJS和 Truffle
    4. 安裝Ganache 
    5. 介紹truffle使用方式
    6. 編寫智能合約及編譯智能合約
    7. 佈署智能合約及使用智能合約

    Section 4
    1. Pet shop 專案介紹
    2. Pet shop 傳案資料夾介紹與撰寫智能合約
    3. 佈署智能合約
    4. 智能合約單元測試
    5. 介紹pet shop如何運作
    6. 撰寫pet shop前台
    7. MetaMask 設定及如何與petshop互動
    8. 佈署 Pet shop智能合約在Ropsten測試鏈上



    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 天的智能合約實習功課,並討論範例程式碼






    8.
    DAppICO智能合約開發
    https://www.tibame.com/course/345

    課程目標

    1. 快速學會串接區塊鏈上智能合約的DApp程式開發。
    2. 能夠
    創建一個ERC20 token的智能合約。
    3. 學會如何
    撰寫網頁錢包串接自己發行的ERC20加密貨幣。
    4. 擁有串接
    博弈合約之高級DApp程式開發能力。
    5. 能夠
    創建帶有鎖倉功能、銷毀功能的發行ERC20加密貨幣合約。



     

    課程大綱


    • 1.理論講解Dapp設計架構
    • 1-0 本課程開課引言介紹:DApp為什麼重要?

      06:12

      1-1 Dapp與傳統的Client Server有何不同?

      16:12

      1-2-1 準備開發DApp的環境-DApp開發工具與套件環境

      15:29

      1-2-2 準備開發DApp的環境-nodejs的開發環境-web3的安裝

      21:44

      1-2-3 準備開發DApp的環境-補充重要觀念:同步與異步及阻塞與非阻塞

      08:21

      1-2-4 準備開發DApp的環境-在Nodejs下實作DEMO

      14:37

      1-2-5 準備開發DApp的環境-在Nodejs上發出能查詢票數及投票的DApp指令

      13:08

      1-2-6 準備開發DApp的環境-跳脫Nodejs回到前端Javascript開發DApp方式

      08:50

      1-3-1 最佳快速開發 Smart Contract工具介紹-Remix線上編譯環境、MetaMask、Ropsten測試網路、水龍頭網站的介紹與示範

      14:53

      1-3-2 最佳快速開發 Smart Contract工具介紹-智能合約的編譯與部署、ABI接口、如何在Remix下調用與測試智能合約

      15:12
    • 2.實作如何設計串接區塊鏈上智能合約的DApp程式開發
    • 2-1 講解一個去中心化投票的智能合約內容

      33:51

      2-2 使用html+javascript 完成去中心化投票網站的DApp設計與實作

      13:55

      2-3 將去中心化投票智能合約的DApp部署到有域名的伺服器上-以Github為例

      11:57
    • 3.實作如何創建一個ERC20 token的智能合約
    • 3-1 ERC20標準的介紹

      06:59

      3-2 符合ERC20標準的Token開發與實作

      27:58

      3-3-1 一份重新設計的進階版 ERC20 Token 的實作

      17:12

      3-3-2 多簽錢包地址的合約設計

      17:22

      3-3-3 多簽錢包的Dapp

      13:07

      3-3-4 ERC20-token + Multi-sig Wallet操作示範(無聲音錄製)

      11:50

      3-3-5 Multi-sig wallet +Dapp的示範(無聲音錄製)

      05:30
    • 4.深入探究智能合約遊戲 -加密貓 CryptoKitties
    • 4-1 Cryptokitties 遊戲特色與發展解說

      28:08

      4-2 詳解Cryptokitties的 遊戲框架與細部合約

      43:48
    • 5.實作串接 博弈合約之高級DApp程式開發
    • 5-1 講解一個去中心化博奕的智能合約內容

      23:28

      5-2 將去中心化博奕智能合約部署到以太坊的測試鏈上

      10:04

      5-3 使用html+javascript 完成去中心化博奕網站的DApp設計與實作

      20:04
    • 6.實作創建帶有鎖倉功能、銷毀功能的發行ERC20加密貨幣合約
    • 6-1 實作鎖倉功能的ERC20代幣的開發

      36:25

      6-2 實作銷毀功能的合約開發

      12:50

      6-3 實務操作一份發行ERC20代幣的合約部署與如何造幣、鎖倉及銷毀的實作

      28:23









    五、學習資源
    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黑客一樣,透過存入錯誤代碼的智能帳戶盜取資金。 此外,針對這新穎技術,政府該如何監管?如何徵稅?如果合約內容有問題或發生其他意外情況,如何補救?傳統合約發生這些狀況時,可以在法庭上廢除、更動,但智能合約無法。期望隨著時代演進,該技術能得到完善應用,讓智能合約成為社會不可或缺的一部分。




     





    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應