3.7 智慧合約與solidity簡介

尹成發表於2018-11-08
  1. 智慧合約簡介 
    1. 什麼是智慧合約:在電腦科學領域,智慧合約是指一種計算機協議。 這類協議一旦部署就能自我執行和自我驗證,不再需要人為干預
    2. 智慧合約的優點: 
      1. 高效的實時更新
      2. 準確執行
      3. 較低的人為干預風險
      4. 去中心化權威
      5. 較低的執行成本
    3. 缺點: 
      1. The DAO攻擊事件:合約存在漏洞導致大量以太幣被盜,而且因為智慧合約的去人為干預特性,使得漏洞無法線上修復。最終採用的辦法是分叉。所以,智慧合約需要保證合約程式碼的邏輯完整性和安全性,否則一旦受到攻擊,後果會非常嚴重
  2. 智慧合約的部署流程 
    1. 啟動一個以太坊節點
    2. 使用solidity編寫智慧合約
    3. 編譯智慧合約
    4. 將編譯好的合約程式碼部署到以太坊上
    5. 使用web3.js庫所提供的js api呼叫合約
  3. solidity詳解 
    1. 概述 
      1. 以太坊擁有多種高階語言,可用於編寫智慧合約。最流行的一種叫做Solidity,它基於JavaScript。Solidity是迄今為止最成熟的以太坊語言,也是社群大力鼓勵開發人員現在使用的語言。
    2. 語法特點:它的語法接近於Javascript,是一種物件導向的語言。 但作為一種真正意義上執行在網路上的支援支付屬性的去中心合約語言,它與傳統程式語言相比、又有很多不同之處。 
      1. 以太坊底層是基於帳戶,賬戶分為外部賬戶與合約賬戶,有一個特殊的Address的型別。用於定位使用者,定位合約,定位合約的程式碼(合約本身也是一個帳戶)
      2. 鑑於以太坊本身的支付屬性,因此在其內部框架中支援支付、擁有payable關鍵字,可以在語言層面直接支付
      3. 分為狀態變數(storage)和記憶體變數(memory),其中狀態變數會永久儲存在合約的儲存空間
      4. 可見性,solidity可見性不像其它程式設計一樣只分為private以及public等,它還有叫做internal以及external的可見性宣告方式
      5. 異常機制,使用solidty程式設計,一旦出現異常,所有的執行都將會被回滾,這主要是為了保證合約執行的原子性,以避免中間狀態出現的資料不一致
    3. 由於Solidity是一個靜態型別的語言,所以編譯時需明確指定變數的型別(包括本地變數或狀態變數),Solidity程式語言提供了一些基本型別(elementary types)可以用來組合成複雜型別

 

相關文章