国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【區(qū)塊鏈-智能合約工程師】第二篇:Solidity入門(mén)

這篇具有很好參考價(jià)值的文章主要介紹了【區(qū)塊鏈-智能合約工程師】第二篇:Solidity入門(mén)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

參考文章:一文速覽2022十大智能合約開(kāi)發(fā)工具

資料地址:WTF學(xué)院

Solidity極簡(jiǎn)入門(mén)

HelloWorld

remix:在線(xiàn)智能合約開(kāi)發(fā)IDE(Integrated Development Environment,集成開(kāi)發(fā)環(huán)境),可以在瀏覽器中快速部署測(cè)試智能合約。

合約HelloWorld:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract HelloWeb3{
    string public hi = "Hello World!";
}
事項(xiàng) 說(shuō)明
代碼所用的軟件許可(license) 不寫(xiě)許可的話(huà)編譯時(shí)會(huì)警告(warning)
聲明源文件所用的solidity版本 將不允許小于 0.8.4 版本或大于等于 0.9.0 版本的編譯器編譯
Solidity語(yǔ)句分隔符 ; 結(jié)尾

在合約目錄新建 HelloWorld.sol,點(diǎn)擊編譯然后再點(diǎn)擊部署。部署在測(cè)試鏈上以后,點(diǎn)擊我們的變量名就能調(diào)用成功。
【區(qū)塊鏈-智能合約工程師】第二篇:Solidity入門(mén)

數(shù)值類(lèi)型
類(lèi)型 說(shuō)明
數(shù)值類(lèi)型 布爾型bool
整數(shù)型 包括整數(shù)int、正整數(shù)uint、大正整數(shù)uint256
地址類(lèi)型address和payable 其中payable的地址擁有balance和transfer()兩個(gè)成員
定長(zhǎng)字節(jié)數(shù)組 byte, bytes8, bytes32,其中數(shù)字是長(zhǎng)度
枚舉enum 類(lèi)似python的集合類(lèi)型,enum ActionSet { Buy, Hold, Sell }
- 可以顯式的和uint相互轉(zhuǎn)換,并會(huì)檢查轉(zhuǎn)換的正整數(shù)是否在枚舉的長(zhǎng)度內(nèi)
三種函數(shù)類(lèi)型

[pure|view|payable]:決定函數(shù)權(quán)限/功能的關(guān)鍵字。payable(可支付的)很好理解,帶著它的函數(shù),運(yùn)行的時(shí)候可以給合約轉(zhuǎn)入ETH。

合約的狀態(tài)變量存儲(chǔ)在鏈上,gas fee 很貴,如果不改變鏈上狀態(tài),就不用付gas。包含pure跟view關(guān)鍵字的函數(shù)是不改寫(xiě)鏈上狀態(tài)的,因此用戶(hù)直接調(diào)用他們是不需要付gas的(合約中非pure/view函數(shù)調(diào)用它們則會(huì)改寫(xiě)鏈上狀態(tài),需要付gas)。

在以太坊中,以下語(yǔ)句被視為修改鏈上狀態(tài):

  1. 寫(xiě)入狀態(tài)變量。
  2. 釋放事件。
  3. 創(chuàng)建其他合同。
  4. 使用selfdestruct.
  5. 通過(guò)調(diào)用發(fā)送以太幣。
  6. 調(diào)用任何未標(biāo)記view或pure的函數(shù)。
  7. 使用低級(jí)調(diào)用(low-level calls)。
  8. 使用包含某些操作碼的內(nèi)聯(lián)匯編。

小結(jié):

  • pure 類(lèi)型的函數(shù)不能讀取也不能寫(xiě)入存儲(chǔ)在鏈上的狀態(tài)變量,只能傳入形參進(jìn)行處理。

  • view 類(lèi)型的函數(shù)能讀取但也不能寫(xiě)入狀態(tài)變量,可以調(diào)用合約變量返回給一個(gè)新的變量。

函數(shù)輸出

函數(shù)輸出包括:返回多種變量、命名式返回、以及利用解構(gòu)式賦值讀取全部和部分返回值。

Solidity有兩個(gè)關(guān)鍵字與函數(shù)輸出相關(guān):return和returns,區(qū)別在于:

  • returns加在函數(shù)名后面,用于聲明返回的變量類(lèi)型及變量名;
  • return用于函數(shù)主體中,返回指定的變量。

命名式返回:通過(guò)在 returns 標(biāo)明返回變量的名稱(chēng),solidity 會(huì)自動(dòng)初始化并返回這些變量,無(wú)需 return 語(yǔ)句。

解構(gòu)式賦值:solidity使用解構(gòu)式賦值的規(guī)則,支持讀取函數(shù)的全部或部分返回值。

變量作用域

引用類(lèi)型(Reference Type):包括數(shù)組(array),結(jié)構(gòu)體(struct)和映射(mapping),這類(lèi)變量占空間大,賦值時(shí)候直接傳遞地址(類(lèi)似指針)。由于這類(lèi)變量比較復(fù)雜,占用存儲(chǔ)空間大,我們?cè)谑褂脮r(shí)必須要聲明數(shù)據(jù)存儲(chǔ)的位置。

solidity數(shù)據(jù)存儲(chǔ)位置有三類(lèi):storage,memory和calldata。不同存儲(chǔ)位置的gas成本不同。

storage類(lèi)型的數(shù)據(jù)存在鏈上,類(lèi)似計(jì)算機(jī)的硬盤(pán),消耗gas多;memory和calldata類(lèi)型的臨時(shí)存在內(nèi)存里,消耗gas少。大致用法:

  • storage:合約里的狀態(tài)變量默認(rèn)都是storage,存儲(chǔ)在鏈上。
  • memory:函數(shù)里的參數(shù)和臨時(shí)變量一般用memory,存儲(chǔ)在內(nèi)存中,不上鏈。
  • calldata:和memory類(lèi)似,存儲(chǔ)在內(nèi)存中,不上鏈。與memory的不同點(diǎn)在于calldata變量不能修改(immutable),一般用于函數(shù)的參數(shù)。

賦值規(guī)則:只有兩種同類(lèi)型變量的賦值是創(chuàng)建地址引用

  • storage(合約的狀態(tài)變量)賦值給本地storage(函數(shù)里的)時(shí)候,會(huì)創(chuàng)建引用,改變新變量會(huì)影響原變量。
  • storage賦值給memory,會(huì)創(chuàng)建獨(dú)立的復(fù)本,修改其中一個(gè)不會(huì)影響另一個(gè);反之亦然。
  • memory賦值給memory,會(huì)創(chuàng)建引用,改變新變量會(huì)影響原變量。
  • 其他情況,變量賦值給storage,會(huì)創(chuàng)建獨(dú)立的復(fù)本,修改其中一個(gè)不會(huì)影響另一個(gè)

變量的作用域:按作用域劃分有三種,分別是狀態(tài)變量(state variable),局部變量(local variable)和全局變量(global variable)

  • 狀態(tài)變量是數(shù)據(jù)存儲(chǔ)在鏈上的變量,所有合約內(nèi)函數(shù)都可以訪問(wèn) ,gas消耗高。狀態(tài)變量在合約內(nèi)、函數(shù)外聲明
  • 局部變量是僅在函數(shù)執(zhí)行過(guò)程中有效的變量,函數(shù)退出后,變量無(wú)效。局部變量的數(shù)據(jù)存儲(chǔ)在內(nèi)存里,不上鏈,gas低
  • 全局變量是指 solidity 的預(yù)留關(guān)鍵字
引用類(lèi)型

數(shù)組 Array 分為固定長(zhǎng)度數(shù)組和可變長(zhǎng)度數(shù)組兩種:

  • 固定長(zhǎng)度數(shù)組:在聲明時(shí)指定數(shù)組的長(zhǎng)度。用T[k]的格式聲明
  • 可變長(zhǎng)度數(shù)組(動(dòng)態(tài)數(shù)組):在聲明時(shí)不指定數(shù)組的長(zhǎng)度。用T[]的格式聲明

創(chuàng)建數(shù)組有一些固定規(guī)則:

  • 對(duì)于memory修飾的動(dòng)態(tài)數(shù)組,可以用new操作符來(lái)創(chuàng)建,但是必須聲明長(zhǎng)度,并且聲明后長(zhǎng)度不能改變,例如 new uint[](5)
  • 數(shù)組字面常數(shù)(Array Literals)是寫(xiě)作表達(dá)式形式的數(shù)組,用方括號(hào)包著來(lái)初始化array的一種方式

數(shù)組成員:

length: 數(shù)組有一個(gè)包含元素?cái)?shù)量的length成員,memory數(shù)組的長(zhǎng)度在創(chuàng)建后是固定的。
push(): 動(dòng)態(tài)數(shù)組和bytes擁有push()成員,可以在數(shù)組最后添加一個(gè)0元素。
push(x): 動(dòng)態(tài)數(shù)組和bytes擁有push(x)成員,可以在數(shù)組最后添加一個(gè)x元素。
pop(): 動(dòng)態(tài)數(shù)組和bytes擁有pop()成員,可以移除數(shù)組最后一個(gè)元素。

結(jié)構(gòu)體:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-493015.html

// 結(jié)構(gòu)體
    struct Student{
        uint256 id;
        uint256 score; 
    }

到了這里,關(guān)于【區(qū)塊鏈-智能合約工程師】第二篇:Solidity入門(mén)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 區(qū)塊鏈智能合約編程語(yǔ)言 Solidity

    上文介紹了區(qū)塊鏈生態(tài)發(fā)展,我們知道以太坊的到來(lái)可以使開(kāi)發(fā)人員基于區(qū)塊鏈開(kāi)發(fā)DApp,本文介紹 Solidity 編程語(yǔ)言的使用,然后基于 Solidity 編寫(xiě)一個(gè)簡(jiǎn)單的智能合約。 Solidity 是以太坊開(kāi)發(fā)人員使用的編程語(yǔ)言,用來(lái)編寫(xiě)智能合約,運(yùn)行在以太坊虛擬機(jī)(EVM)上。 有開(kāi)發(fā)經(jīng)

    2024年02月12日
    瀏覽(29)
  • 【區(qū)塊鏈實(shí)戰(zhàn)】Solidity 智能合約如何給賬戶(hù)充值

    【區(qū)塊鏈實(shí)戰(zhàn)】Solidity 智能合約如何給賬戶(hù)充值

    目錄 一、實(shí)戰(zhàn)場(chǎng)景 二、知識(shí)點(diǎn) 智能合約 智能合約函數(shù) 智能合約充值 payable 智能合約部署地址 智能合約的運(yùn)行 合約 this 對(duì)象 三、菜鳥(niǎo)實(shí)戰(zhàn) 四、運(yùn)行結(jié)果 Solidity 智能合約如何給賬戶(hù)充值 1、充值金額 2、充值并查看結(jié)果

    2024年02月09日
    瀏覽(23)
  • 陪伴成長(zhǎng)|區(qū)塊鏈工程師能力認(rèn)證項(xiàng)目啟動(dòng)BSV獎(jiǎng)勵(lì)計(jì)劃

    陪伴成長(zhǎng)|區(qū)塊鏈工程師能力認(rèn)證項(xiàng)目啟動(dòng)BSV獎(jiǎng)勵(lì)計(jì)劃

    由可一科技與CSDN聯(lián)合運(yùn)營(yíng)的BSV區(qū)塊鏈開(kāi)發(fā)工程師能力認(rèn)證項(xiàng)目于2022年6月6日發(fā)布了首門(mén)正式課程《區(qū)塊鏈原理初級(jí)》,并于6月27日正式啟動(dòng)了區(qū)塊鏈工程師能力初級(jí)認(rèn)證。 為鼓勵(lì)廣大區(qū)塊鏈愛(ài)好者積極學(xué)習(xí)課程、獎(jiǎng)勵(lì)優(yōu)秀學(xué)員,今天我們正式推出“陪伴成長(zhǎng)?BSV獎(jiǎng)勵(lì)計(jì)劃”

    2024年02月16日
    瀏覽(29)
  • 區(qū)塊鏈智能合約solidity的中的一些關(guān)鍵字

    區(qū)塊鏈智能合約solidity的中的一些關(guān)鍵字

    目? 錄 pragma mapping msg對(duì)象 block對(duì)象 contract constructor struct 數(shù)據(jù)地址 地址類(lèi)型 address payable revert 以下場(chǎng)景使用 revert() : require 以下場(chǎng)景使用 require() : assert 以下場(chǎng)景使用 assert(): 訪問(wèn)權(quán)限 internal public private external function returns return view pure constant event emit modifier pragma ??

    2024年01月16日
    瀏覽(27)
  • 區(qū)塊鏈web3智能合約Solidity學(xué)習(xí)資源整理

    Solidity 是一門(mén)面向合約的、為實(shí)現(xiàn)智能合約而創(chuàng)建的高級(jí)編程語(yǔ)言。這門(mén)語(yǔ)言受到了 C++,Python 和 Javascript 語(yǔ)言的影響,設(shè)計(jì)的目的是能在以太坊虛擬機(jī)(EVM)上運(yùn)行。 Solidity中文官方文檔: https://solidity-cn.readthedocs.io/zh/develop/ https://learnblockchain.cn/docs/solidity/index.html 在線(xiàn)rem

    2024年03月19日
    瀏覽(30)
  • 系統(tǒng)集成項(xiàng)目管理工程師 軟考中級(jí) 第三章重點(diǎn)匯總筆記(書(shū)本參照 第二版)

    第三章 信息系統(tǒng)的生命周期(p133) (1)立項(xiàng)階段:即概念階段或需求階段,這一階段根據(jù)用戶(hù)業(yè)務(wù)發(fā)展和經(jīng)營(yíng)管理的需要,提出建設(shè)信息系統(tǒng)的初步構(gòu)想;然后對(duì)企業(yè)信息系統(tǒng)的需求進(jìn)行深入調(diào)研和分析,形成《需求規(guī)格說(shuō)明書(shū)》并確定立項(xiàng)。 (2)開(kāi)發(fā)階段:以立項(xiàng)階段所做的需

    2023年04月22日
    瀏覽(89)
  • 機(jī)器學(xué)習(xí)工程師在人工智能時(shí)代的角色

    機(jī)器學(xué)習(xí)工程師在人工智能時(shí)代的角色

    在當(dāng)今的數(shù)字時(shí)代,人工智能(AI)已成為許多行業(yè)不可或缺的一部分。從流程自動(dòng)化到增強(qiáng)客戶(hù)體驗(yàn),人工智能具有改變企業(yè)的巨大潛力。這一變革性技術(shù)的核心是機(jī)器學(xué)習(xí),該領(lǐng)域?qū)W⒂陂_(kāi)發(fā)算法,使計(jì)算機(jī)系統(tǒng)能夠在無(wú)需明確編程的情況下學(xué)習(xí)并做出預(yù)測(cè)或決策。 機(jī)器

    2024年01月24日
    瀏覽(29)
  • 《NFT區(qū)塊鏈進(jìn)階指南二》Etherscan驗(yàn)證Solidity智能合約(Remix插件驗(yàn)證)

    《NFT區(qū)塊鏈進(jìn)階指南二》Etherscan驗(yàn)證Solidity智能合約(Remix插件驗(yàn)證)

    前置參考文檔:https://blog.csdn.net/sinat_34104446/article/details/130557703 合約驗(yàn)證是上傳合約源代碼到etherscan過(guò)程,在智能合約項(xiàng)目中,通常都是提供源碼驗(yàn)證,增加項(xiàng)目信任度 驗(yàn)證合約后可以直接在etherscan上執(zhí)行獲取和設(shè)置方法,方便日常的管理員維護(hù) 以下使用remix進(jìn)行驗(yàn)證并使用

    2024年02月05日
    瀏覽(18)
  • AIGC文本生成智能應(yīng)用(ChatGPT)提示工程師技巧

    AIGC文本生成智能應(yīng)用(ChatGPT)提示工程師技巧

    我是荔園微風(fēng),作為一名在IT界整整25年的老兵,今天來(lái)看一下AIGC文本生成智能提示工程師技巧。 當(dāng)你在使用類(lèi)似于ChatGPT這樣的AIGC文本生成智能應(yīng)用時(shí),有沒(méi)有想過(guò),你所問(wèn)的問(wèn)題中的每一個(gè)詞語(yǔ)對(duì)AIGC文本生成智能應(yīng)用給你的回答的好與不好都有著很重要的聯(lián)系。 我們?cè)谑?/p>

    2024年02月13日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包