W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
讓我們從一個(gè)基本示例開始,該示例設(shè)置變量的值并將其公開以供其他合約訪問。如果您現(xiàn)在不了解所有內(nèi)容也沒關(guān)系,我們稍后會(huì)詳細(xì)介紹。
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;
contract SimpleStorage {
uint storedData;
function set(uint x) public {
storedData = x;
}
function get() public view returns (uint) {
return storedData;
}
}
第一行告訴您源代碼是在 GPL 3.0 版下獲得許可的。機(jī)器可讀的許可證說明符在默認(rèn)發(fā)布源代碼的設(shè)置中很重要。
下一行指定源代碼是為 Solidity 版本 0.4.16 或更高版本的語言編寫的,但不包括版本 0.9.0。這是為了確保合約不能與新的(破壞性的)編譯器版本一起編譯,因?yàn)樗男袨榭赡軙?huì)有所不同。 Pragma是編譯器關(guān)于如何處理源代碼的常用指令(例如pragma once)。
Solidity 意義上的合約是位于以太坊區(qū)塊鏈上特定地址的代碼(其功能)和數(shù)據(jù)(其狀態(tài))的集合。?uint storedData;
?行聲明了一個(gè)?uint
?類型(256位的無符號(hào)整數(shù))的狀態(tài)變量?storedData
?。您可以將其視為數(shù)據(jù)庫中的單個(gè)插槽,您可以通過調(diào)用管理數(shù)據(jù)庫的代碼的函數(shù)來查詢和更改它。在此示例中,合約定義了可用于修改或檢索變量值的函數(shù)?set
?和
get
。
要訪問當(dāng)前合約的成員(如狀態(tài)變量),通常不需要添加this.
前綴,只需通過名稱直接訪問即可。與其他一些語言不同,省略它不僅僅是風(fēng)格問題,它會(huì)導(dǎo)致訪問成員的方式完全不同,稍后會(huì)詳細(xì)介紹。
除了(由于以太坊構(gòu)建的基礎(chǔ)設(shè)施)允許任何人存儲(chǔ)世界上任何人都可以訪問的單個(gè)數(shù)字之外,該合約還沒有做太多事情,而沒有(可行的)方法來阻止你發(fā)布這個(gè)數(shù)字。任何人都可以用不同的值再次調(diào)用set
并覆蓋您的號(hào)碼,但該號(hào)碼仍存儲(chǔ)在區(qū)塊鏈的歷史記錄中。稍后,您將看到如何施加訪問限制,以便只有您可以更改號(hào)碼。
警告
使用 Unicode 文本時(shí)要小心,因?yàn)榭雌饋硐嗨疲ㄉ踔料嗤┑淖址赡苡胁煌拇a點(diǎn),因此被編碼為不同的字節(jié)數(shù)組。
筆記
所有標(biāo)識(shí)符(合約名稱、函數(shù)名稱和變量名稱)都僅限于 ASCII 字符集??梢詫?UTF-8 編碼的數(shù)據(jù)存儲(chǔ)在字符串變量中。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: