中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Solidity是什么

發布時間:2021-12-07 15:22:38 來源:億速云 閱讀:199 作者:iii 欄目:互聯網科技

本篇內容主要講解“Solidity是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Solidity是什么”吧!


什么是Solidity

Solidity是一種類似Javascript的高級語言。它被設計成以編譯的方式生成以太坊虛擬機的代碼

一個簡單的例子

contract SimpleStorage {
    uint storedData;

    function set(uint x) {
        storedData = x;
    }

    function get() constant returns (uint retVal) {
        return storedData;
    }
}

這是一段最簡單的Solidity合約,聲明了一個變量storedData,以及一個set一個get兩個方法去進行讀寫。Solidity中訪問變量不需要this關鍵字

合約的結構

Solidity的合約的定義與面向對象語言的類的定義有些相似。每個合約包括了狀態變量,函數,函數修飾符,事件,結構類型和枚舉類型,且合約也能從其他合約那里繼承。

  • 狀態變量是在合約存儲器中永久存儲的值

  • 函數是合約中可執行單位的代碼

  • 函數修飾符可以在聲明中補充函數的語義

  • 事件是和evm日志設施的方便接口

  • 結構類型是一組用戶定義的變量

  • 枚舉是用來創建一個特定值的集合類型

類型

Solidity是一種靜態語言,也就是說每個變量在編譯的時候必須要定義類型。Solidity還支持通過組合提供的幾種簡單類型構建復雜類型。

布爾類型

與其他語言一樣布爾類型的值就是真或假,支持的操作符有!,&&,||,==,!=

整型

整型分int以及uint,其中支持長度為8-256,步長為8,即存在uint8,uint16....uint256 另外int = int256 uint=uint8 支持的操作符有<=,>=,==,<,>,!=,&,|,^,~,+,-,*,/,%,**,+=,-=

地址

地址即Ethereum地址,也可以擁有成員,長度為20字節,是所有合約的base 支持的操作符 <=,>=,>,<,==,!= 十六進制字符串凡是通過地址合法性驗證就會被認為是地址。需要注意的是39到41位長的沒有通過地址合法性驗證 的會得到一個警告,但會被視為普通的有理數字面量 地址的成員有balance以及send,即賬戶余額以及發送 如果想要獲得當前合約的balance可以直接通過this.balance來獲取,因為對于合約來說,地址代表的就是合約本身,合約對象默認繼承自地址對象 地址有一個send方法用來向某個地址發送貨幣(貨幣單位為wei),需要注意的是:

  • 調用遞歸的深度不能超過1024

  • 如果gas不夠,執行會失敗

  • 執行該操作需要判斷是否成功

字節數組

bytes1...bytes32,允許值以1為步長遞增,byte默認表示byte1 支持的操作符<=,<,>=,>,==,!=,&,|,^,~以及序號訪問 字節數組存在一個成員變量length,表示這個字節數組的長度,且只讀

小數

小數還未被完全支持,可以被定義但不能被引用或傳遞 小數分為fixed以及ufixed,有符號小數與無符號小數 支持操作符<=,<,>=,>,==,!=,+,-,*,/,%,+=,-+等操作符

十六進制字面量

由hex關鍵字打頭,后面緊跟單引號或雙引號字符串,內部會被表示成二進制流 由于一個字節為8位,因此一個hex是由兩個[0-9a-f]字符組成的 hex可以隱式轉為bytes

函數類型

可以將一個函數賦值給一個變量,一個函數類型的變量,還可以將函數作為參數進行傳遞,也可以在函數調用中返回一個函數。該類型分為兩類:internal以及extrnal internal只能在當前合約的上下文環境意外的地方執行 external包括地址與函數方法簽名兩部分,可作為外部函數調用的參數或有外部函數返回 完整的函數定義:

默認函數為internal
如果沒有返回值則必須省略returns
function (<parameters types>){internal|external}[constant][payable][returns (<return types>)]
數組

數組聲明時可以是變長的也可以指定長度,對于storage數組來說元素類型可以是任意的,而對于memory數組來說,如果函數對外可見,那么函數參數不能是映射類型,只能支持ABI類型 聲明多維數組時,solidity的長度聲明與其他語言是相反的,例如我聲明一個長度為5的二維數組,每個元素是變長數組,那么我的聲明應是uint[][5] x 類型為數組的狀態變量可以標記public類型,從而讓Solidity來構造一個訪問器 變長數組可以通過修改length來調整數組長度

注意

在eth中調用方法進行寫操作時使用sendTransaction來請求,且需要在參數中寫入操作賬戶以及gas,讀操作使用call,并且執行完寫操作之后需要進行一次挖礦將數據保存。

contract.funcName.sendTransaction(args...,{from:eth.accounts[0],gas:200000})

到此,相信大家對“Solidity是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

分宜县| 镇坪县| 上饶市| 江津市| 乐山市| 察雅县| 洪湖市| 淄博市| 安多县| 新野县| 阿图什市| 隆昌县| 漠河县| 常德市| 曲周县| 鹤峰县| 江油市| 墨江| 宝坻区| 如皋市| 瓦房店市| 湘阴县| 宜春市| 广德县| 海林市| 育儿| 凯里市| 吉首市| 泰宁县| 建平县| 社会| 利津县| 宁蒗| 万宁市| 乌海市| 桐梓县| 宁化县| 英吉沙县| 宝丰县| 苗栗市| 肇源县|