# ucom 2020區塊鍊
###### tags: `ucom`,`blockchain`,`syllabus`
## 區塊鍊與智慧合約實戰演練(5天35hr)
### 課程目標
* 智慧合約(smart contract)是一種依照著多方協議或者是同意的事項而能夠交易執行的電腦程式, 經由這種交易的自主性可以達到在不需要中間監控或審核單位的介入下即能夠符合規範的交易. 所以可以強制預算花費的方式, 減少詐欺的可能, 並且減少交易過程中不小心的意外或惡意所造成的損失.
* 而區塊鍊主要的二個主流, 目前大概是以ethereum和hyperledger為主. 在bitcoin的架構區塊鍊上面, Ethereum增加了商業邏輯和資源的概念, 並且增加了交易成本與智慧合約等等的功能, 而hyperledger是IBM/Linux所共同建立的生態系, 並且提倡了許多金融和物聯網的應用, 這兩者皆是受到開發者社群的歡迎.
* 在本課程中我們將一邊學習學習區塊鍊的背景與能力,搭配ethereum和hyperledger的實作, 配合智慧合約的語法與實作,以及利用solidity的運用來進行智慧合約的操作, 進而能夠實務上手的進行開發
### 適合對象
* 想了解區塊鍊與智慧合約的工程師與專案經理
* 想理解智慧合約的實作
### 預備知識
* 任一程式語言的基礎
* 基本網路知識
### 課程內容
* BlockChain歷史與簡介
* 加解密演算法
* hash tree/merkle tree雜湊樹
* 非對稱加解密
* BlockChain生態系
* Ethereum V.S. Hyperledger
* 智慧合約與Solidity簡介
* Solidity與Solidity相關檔案
* Pragma, 註解與import
* 合約本體
* state變數, struct與修飾子
* 事件, 列舉與函數
* 資料型態
* 參照型態
* 陣列與對應
* Solidity語法
* 函數與修飾子
* view, 常數與pure function
* address function
* fallback function
* 例外處理, 事件和summary
* Ethereum
* EVM (Ethereum Virtual Machine)
* Ethereum (smart contract)
* Truffle框架的設定與使用
* 合約的偵錯
* HyperLedgre Fabric & Composer
* HyperLedger的架構與元件
* HyperLedger的環境架設
* chaincode的生命周期
* Composer SDK
* 網路組態的工具
* 多組織時的考量
* 使用Docker進行組態
* 在雲端的部署
### 學會技能
* 理解blockchain在不同的框架中實作的方式
* 將商業邏輯撰寫成實際的智慧合約
* 深入理解智慧合約的語法
### 備註事項
## 區塊鍊與Dapp去中心化應用程式Full Stack全棧開發實戰演練(5天35hr)
### 課程目標
* 去中心化應用程式(DApp,dApp,Dapp,dapp)是指執行在分散式系統的應用程式, 因為ethereum形式區塊鍊的風行而開始流行起來, 通常這種應用程式都是在智慧合約之下運行的。由於它背後運行的環境是區塊鍊, 所以是運行在去中心化的網路架構中, 這和一般client/server的傳統架構大為不同.
* 而Truffle framework是一個被microsoft, vmware, amazon, JP Morgan等各大公司所採用的一套區塊鍊開發工具, 主要的Truffle太妃糖可以用來發展智慧合約, 可以在Ethereum的虛擬機(EVM)環境下串流的執行開發與測試的工作, 讓開發的工作比較簡易, 而ganache可以很快速的建構一個區塊鍊並且部署智慧合約執行並且進行測試.除了是一個有GUI的桌面程式之外, 它也可以用command line執行, 且在windows, linux跟mac OSX下執行.
* 本課程將使用Truffle, React建立full stack Ethereum區塊鍊的去中心化分散式程式開發
### 適合對象
* 想要開發區塊鍊應用程式的工程師
* 想學習ethereum的區塊鍊實作的工程師
* 軟體架構師想要了解區塊鍊
### 預備知識
* 基礎網路知識
* 對javascript基礎認識
* 了解Node.JS, React為佳
### 課程內容
* Ethereum網路架構
* Blockchain的基本架構
* Blockchain的演化
* Ether, GAS和EVM
* 使用wallet錢包和區塊鍊網路溝通
* 網頁錢包的安裝
* 連線與使用
* Geth的使用與環境安裝和架設
* 設置Geth
* Geth_CLI的操作
* Geth的JS Api
* web3.js
* 帳戶列表和餘額api使用
* 交易與合約api呼叫
* 交易物件傳送
* 事件與日誌
* 過濾監控API
* Truffle Framework與solidity智慧合約
* 智慧合約設計樣式
* 前端分散式應用程式的考量
* Truffle與React/Redux
* 建立前端應用程式專案
* 部署合約
* 使用react進行前前端開發
### 學會技能
* 不止是紙上談兵而是實際實作應用程式和區塊鍊互動
* 使用各種套件如web3, metamask,truffle, geth和區塊鍊互動
* 在full stack全端應用程式中套用區塊鍊作資訊的後端平台
### 備註事項