iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 1
2

因為區塊鏈 (blockchain) 涵蓋範圍非常的廣,這次主題會著重於智能合約 (smart contract) 開發的部分。偏理論的部份,坊間已有不少書可以閱讀,將不包含在這次分享的內容範圍。

30 篇的文章會分成三大部分

  1. 介紹區塊鏈基本知識:交易、區塊、帳戶、區塊鏈網路、用戶端、Gas、Remix。
  2. 實際開發智能合約程式:編譯、發佈、執行智能合約、Solidity 程式語言基礎、Oraclize。
  3. 實戰練習

文章撰寫風格

  • 整系列的文章都在講智能合約,若每次都與用全名會太繞舌,偶而直接使用「合約」字眼來替代「智能合約」。
  • 關於專有名詞或英文原文,僅會在第一次出現時標示英文跟 highlight,以保持文章的簡潔。

作者介紹

劉艾霖 (AILIN LIOU) 從 2009 年開始投入於軟體開發的領域,是一名軟體技術顧問兼講師,研究領域有 API 設計、後端架構設計、自動化軟體測試、網頁開發、開發智能合約與 DApp。

同時也是遠距工作者在台灣社團的創辦人,致力於推廣遠距工作模式。

曾參與的技術型會議和工作坊

  • 2018 DISTRIBUTED HEALTH in Nashville 工作坊:編寫智能合約教材與範例程式
  • 2018 wizardamigos in berlin 線上講師
  • 2018 資策會中區教育培訓中心講師
  • 2017 IThome Workshop 講師
  • 2017 Testing Day 講師
  • 2016 & 2018 Modern Web 講師
  • 2016 JSDC 講師
  • 2016 ~ 2018 創科資訊教育訓練中心講師

合作洽談,請來信至 alincode@gmail.com

一般傳統的合約?

在進入到主題之前,我們先瞭解一下什麼是合約?下面這張圖片是我在網路上找到的合約範例。

讓我們先看看傳統合約需要具備哪些基本條件:

  1. 甲、乙方資訊
  2. 合約條款:記載著大家必須遵守的商業邏輯
  3. 合約效期
  4. 不可變動性:約合簽訂後,雙方各執一份,若未來有任何修改需求,要重新定義一份新的合約,並將舊的合約作廢。

除了上面列的最基本條件外,可能還會有其他附註條件,例如付款辦法、驗收條件等資訊。

付款項目 付款日期 付款金額(含稅)
第一期:簽約金 107/01/01 XXX
第二期:期中款 107/03/01 XXX
第三期:尾款 107/05/01 XXX

從上面的資訊中,若要把整個合約流程自動化,需要做哪些事?

  • 我們需要一個平台,甲乙雙方都需要有帳號,帳號要具有可辨識性,並確保帳號的安全性,不容易被盜用,這樣大家才會認可這個合約的有效性。
  • 我們需要寫一些程式邏輯,來處理合約內容的商業邏輯。
  • 程式邏輯就如同,合約內容簽訂後,沒有人可以在任意再修改。
  • 有一些公司會用支票支付,所以我們也必須要有類似銀行的服務,確保支票可以兌現。

說到著,大家是不是開始覺得頭昏眼花了。是的,如果在沒有基礎建設的情況下,要自己從頭實作自動化的合約是非常困難的,但好在有了以太坊 (Ethereum) 的基礎建設,我們不需要從頭開始。

什麼是智能合約?

用一句話來說,它就是可以在「區塊鏈上執行的程式」。

目前發布智能合約最大宗的平台是以太坊,但能開發智能合約的平台不是只有一個,像是後起之秀 EOS 也是可以開發智能合約。

智能合約和一般程式的差異

1. 整合金流容易

每個智能合約發布後都內建一個合約帳戶,程式透過以太坊內建機制,很容易可以做到收款、付款等操作。

2. 寫入資料需要成本

在智能合約裡需要儲存資料,需要透過礦工將資料寫入至區塊鏈上,區塊鏈的資料是以點對點的方式,儲存在世界各地以太坊的節點,所以成本非常的昂貴,所以就定義了 Gas 機制,讓使用資源的人付費。

gas 是程式執行的成本,付給礦工努力工作的報酬。會有一篇獨立的篇幅,做更詳細的解釋。

3. 部署之後不能修改

一般程式上線之後,還是可以持續進行多次改版,但智能合約部署之後,程式邏輯就會固定,屏除了人為操縱的因素,所以與智能合約整合開發出的應用程式,又稱為去中心化應用程式 (DApp)。

4. 不需要有固定主機

當我們需要發布程式時,普遍認知我們會將程式執行在一台永不關機的主機。但智能合約運作原理是透過以太坊網路上眾多的節點,幫我們執行程式,而不是只靠一台主機。

常見應用

  • 發行 ICO
  • 博弈、卡牌、寵物遊戲
  • 交易所

ICO (Initial Coin Offering):數位貨幣首次公開募資

小結

今天我們稍微了解了什麼是智能合約,它跟我們熟悉的程式有什麼不同,接下來會先從與開發相關的區塊鏈的基礎概念講起。

參考來源


下一篇
開發智能合約 - 交易 (Day02)
系列文
Smart Contract 開發 - 使用 Solidity31

尚未有邦友留言

立即登入留言