22 solidity的簡單合約

一、solidity(上)
1、Solidity是什麼

  • Solidity 是一門面向合約的、爲實現智能合約而創建的高級編程語言。這門語言受到了 C++,Python 和 Javascript 語言的影響,設計的目的是能在以太坊虛擬機(EVM)上運行。
  • Solidity 是靜態類型語言,支持繼承、庫和複雜的用戶定義類型等特性。
  • 內含的類型除了常見編程語言中的標準類型,還包括 address 等以太坊獨有的類型,Solidity 源碼文件通常以 .sol 作爲擴展名
  • 目前嘗試 Solidity 編程的最好的方式是使用 Remix。Remix 是一個基於 Web 瀏覽器的 IDE,它可以讓你編寫 Solidity 智能合約,然後部署並運行該智能合約。

2、Solidity語言特性
Solidity的語法接近於JavaScript,是一種面向對象的語言。但作爲一種真正意義上運行在網絡上的去中心合約,它又有很多的不同:

  • 以太坊底層基於帳戶,而不是 UTXO,所以增加了一個特殊的 address 的數據類型用於定位用戶和合約賬戶。
  • 語言內嵌框架支持支付。提供了 payable 等關鍵字,可以在語言層面直接支持支付。
  • 使用區塊鏈進行數據存儲。數據的每一個狀態都可以永久存儲,所以在使用時需要確定變量使用內存,還是區塊鏈存儲。
  • 運行環境是在去中心化的網絡上,所以需要強調合約或函數執行的調用的方式。
  • 不同的異常機制。一旦出現異常,所有的執行都將會被回撤,這主要是爲了保證合約執行的原子性,以避免中間狀態出現的數據不一致。

3、Solidity源碼和智能合約
Solidity 源代碼要成爲可以運行在以太坊上的智能合約需要經歷如下的步驟:

  • 用 Solidity 編寫的智能合約源代碼需要先使用編譯器編譯爲字節碼(Bytecode),編譯過程中會同時產生智能合約的二進制接口規範(Application Binary Interface,簡稱爲 ABI);
  • 通過交易(Transaction)的方式將字節碼部署到以太坊網絡,每次成功部署都會產生一個新的智能合約賬戶;
  • 使用 Javascript 編寫的 DApp 通常通過 web3.js + ABI去調用智能合約中的函數來實現數據的讀取和修改。

4、Solidity編譯器

  • Remix
    Remix 是一個基於 Web 瀏覽器的 Solidity IDE;可在線使用而無需安裝任何東西
    http://remix.ethereum.org
  • solcjs
    solc 是 Solidity 源碼庫的構建目標之一,它是 Solidity 的命令行編譯器
    使用 npm 可以便捷地安裝 Solidity 編譯器 solcjs
    npm install -g solc

在這裏插入圖片描述

5、一個簡單的智能合約
在這裏插入圖片描述
6、智能合約概述
Solidity中合約

  • 一組代碼(合約的函數 )和數據(合約的狀態 ),它們位於以太坊區塊鏈的一個特定地址上
  • 代碼行 uint storedData; 聲明一個類型爲 uint (256位無符號整數)的狀態變量,叫做 storedData
  • 函數 set 和 get 可以用來變更或取出變量的值

二、solidity(下)
1、加法
在這裏插入圖片描述
2、車
在這裏插入圖片描述
3、不清楚爲什麼改過之後會報錯。
在這裏插入圖片描述
4、定義初始值
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章