> For the complete documentation index, see [llms.txt](https://chihaolu.gitbook.io/all-in-one-solidity/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chihaolu.gitbook.io/all-in-one-solidity/part-i-basic/chapter-1-ji-ben-jie-shao-introduction.md).

# | Chapter 1 | 基本介紹  Introduction

最好學習 Solidity 的方法其實就是直接寫一次！

#### 智能合約

智能合約的概念最早由 Nick Szabo 於 1994 年提出，作為區塊鏈的一部分，他是一個狀態機（state machine）的存在，需要「交易（transactions）」來更改狀態（state），同時也可以做任何的邏輯運算（logic operation）。

透過智能合約修改區塊鏈上的各種「狀態」都需要透過交易和挖礦打包這兩個動作。同時其是圖靈完備的，所以可以解決任何的電腦問題。

智能合約的運作過程為：Smart Contract code(programming language) -> compiler -> EVM bytecode，這個部分在未來章節會做解釋！

#### Solidity

Solidity是目前針對以太坊虛擬機設計中，最知名的智能合約編輯語言。屬於編譯型語言，而非直譯型語言。最早在2014年由撰寫以太坊黃皮書的 Gavin James Wood 提出，設計參考了 *ECMAScript* ，所以也會有人認為寫過 JavaScript 的工程師對 Solidity 較為上手。

撰寫智能合約並不單只有 Solidity，還有其他的智能合約語言像是：

* Serpent: 基於 python的智能合約語言
* LLL: 類似 Low-Level 的組合語言
* Mutan: 已經被棄用的類似 Go 的語言
* Viper: 類似 python的實驗型語言
