智慧合約與可程式化

Solidity

Solidity 是在以太坊及類似網路上撰寫智慧合約時使用最廣泛的程式語言。電腦最終執行的是位元組碼那種微小而晦澀的指令,人直接去寫會非常痛苦。Solidity 居於中間,是一種可讀、對人友好的語言,有點像用平白的句子去寫食譜,而不是一條條列出每塊肌肉的動作。開發者用 Solidity 表達合約的規則,再由一種叫編譯器的工具把它翻譯成網路的虛擬機真正執行的位元組碼。

它的風格刻意貼近人們熟悉的網站和應用程式開發語言,從而降低了新手的門檻。在 Solidity 裡,你描述合約保存的資料(比如誰擁有多少),以及讀取或改動這些資料的功能(比如轉帳或投票)。這門語言還內建了一些區塊鏈特有的概念:當前這次呼叫是誰發起的、隨之附帶了多少價值,以及用來攔截不被允許的操作的權限檢查。程式碼寫好後會被編譯並部署,此後它通常就一成不變地留在鏈上,向任何人公開可讀。

Solidity 的重要性在於,它是通往智慧合約平台開發的入口;絕大多數知名應用都是用它寫成的,圍繞它也累積了大量的教學、程式庫和經過稽核的範例。由於這些程式碼掌管著真實的價值,而且部署後通常無法再編輯,安全地撰寫它是一門嚴肅的手藝,重複使用那些久經考驗、經過審查的現成模組,是一種普遍而穩妥的習慣。

contract Counter {
    uint public count;
    function increment() public {
        count = count + 1;
    }
}

一份極小的 Solidity 合約:它保存一個數字,並讓任何人給它加一。編譯器會把它變成虛擬機執行的位元組碼。

Solidity 並非唯一選擇;有些平台使用別的語言,例如以太坊上的 Vyper,或某些其他鏈上的 Rust。

又稱
Solidity 语言Solidity 語言