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

在Remix中編寫你的第一份智能合約

這篇具有很好參考價值的文章主要介紹了在Remix中編寫你的第一份智能合約。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

智能合約簡單來講就是:部署在去中心化區(qū)塊鏈上的一個合約或者一組指令,當(dāng)這個合約或者這組指令被部署以后,它就不能被改變了,并會自動執(zhí)行,每個人都可以看到合約里面的條款。更深層次的理解就是:這些代碼會被去中心化地執(zhí)行,就像一群人運(yùn)行了某個軟件,這意味著沒有一個人或者一個主體可以修改這些合約或者更改條款。

1.智能合約行業(yè)應(yīng)用

DeFi:代表去中心化金融,它讓用戶可以參與到金融市場,而不需要經(jīng)過中心化中介。
比如Robinhood,你不需要再信任Robinhood會持續(xù)給你提供服務(wù),讓你接入市場,相反,你可以直接查看智能合約,對,這樣就可以進(jìn)入市場?;蛘咴?008年金融危機(jī),你再也不用相信,這些集團(tuán)和機(jī)構(gòu)會在后臺給你提供正確的信息,你在區(qū)塊鏈上就可以看到所有的東西,它們都是透明的。你可以簡單,安全和高效的參與很多事情,像是貨幣市場和復(fù)雜的金融產(chǎn)品,截止到2022年為止,有大概2000億美元的資產(chǎn)在DeFi中被管理,并且還在快速增長。
Dao:去中心化自治組織,是另一個應(yīng)用。Dao是完全被去中心化管理的組織,它們被區(qū)塊鏈上的一組指令或者一個智能合約管理,這樣的管理方式很有優(yōu)勢,參與更加簡單,規(guī)則黑白分明,并且你可以直接在鏈上看到所有的事情。投票和治理,使用的是完全去中心化的技術(shù),區(qū)塊鏈?zhǔn)悄軌蜃屛覀兺苿又卫砑夹g(shù)進(jìn)步的重要技術(shù)之一。它讓治理更加的高效,公平和合理。
NFT:即非同質(zhì)化代幣,它在某種程度是一種電子藝術(shù)品,或者是一個獨(dú)一無二的資產(chǎn)。像是無聊猿和加密朋克這樣的項(xiàng)目,革新了人們獲得報(bào)酬的方式,人們可以通過工作,展示創(chuàng)造性和狀態(tài)而獲得報(bào)酬

2.Remix介紹

Remix是一個強(qiáng)大的工具,因?yàn)樗泻芏喙δ?,幫助我們查看和交互智能合約,雖然我們會漸漸脫離Remix,使用本地開發(fā)環(huán)境,但是Remix對學(xué)習(xí)智能合約基礎(chǔ)非常有幫助,Remix官網(wǎng)。
當(dāng)你進(jìn)入Remix頁面,你會發(fā)現(xiàn)有很多東西,還有很多Plugin,因?yàn)槲覀円褂肧olidity,也就是智能合約的語言。
remix 合約,區(qū)塊鏈,智能合約,區(qū)塊鏈

3.Solidity數(shù)據(jù)類型

Solidity有多種基礎(chǔ)數(shù)據(jù)類型,最基礎(chǔ)的四種數(shù)據(jù)類型是,boolean,uint,int和address。 還有數(shù)組(array)、結(jié)構(gòu)體(struct)和映射(mapping)或者還有bytes,它們是一種更底層的數(shù)據(jù)類型。
boolean定義true和false;
uint是無符號整數(shù),表示這個數(shù)字不是可正可負(fù),只能是正數(shù);uint比較特殊,我們可以決定給它分配的空間,這個數(shù)字一直可以大到uint256,uint默認(rèn)就是uint256。通常,把分配空間顯式的寫出來是一個好習(xí)慣。
int可以表示正數(shù)或負(fù)數(shù);同樣的,我們也可以決定分配給int變量的空間。
address表示地址,就像在MetaMask中看到的地址一樣。
具體在Remix定義的變量類型代碼如下所示:

// SPDX-License-Identifier: MIT
// 定義solidity的版本 此處允許0.8.8以上的版本,但不允許0.9.0以上的版本
pragma solidity ^0.8.8 <0.9.0;

contract SimpleStorage{
    bool hasFavoriteNumber = false;
    //uint允許分配的空間只能以byte的速度增長 uint8 uint16...uint256 最大只能到uint256
    uint256 favoriteNumber = 123;
    int64 favoriteInt = -5;
    string favoriteNumberInText = "five";//string類型變量只允許存儲文本
    address myAddress = 0x993CC624c1350D52cCbe32F77652362F82fc4D41;
}

4.Solidity函數(shù)

函數(shù)或者方法指的是獨(dú)立模塊,在我們調(diào)用的時候會執(zhí)行某些指令。Solidity中定義函數(shù)與JavaScript中類似,使用function關(guān)鍵字即可。
函數(shù)變量有四種可見度標(biāo)識符:
public:在外部和內(nèi)部都可見,任何與合約交互的人,都可以看到被public修飾的變量和函數(shù),給變量或函數(shù)加上public修飾符,實(shí)際上給給其創(chuàng)建了getter函數(shù),創(chuàng)建一個返回其值的函數(shù)。
private:private表示只有這個合約可以調(diào)用這個函數(shù),private表示只對合約內(nèi)部可見;
external:external表示只對合約外部可見
internal:internal表示只有這個合約或者繼承它的合約可以讀取
一般變量或函數(shù)的修飾符的默認(rèn)值是internal,表示只對本合約和繼承合約可見
另外,solidity中還有兩個關(guān)鍵字可以用來修飾函數(shù),標(biāo)識函數(shù)的調(diào)用不需要消耗gas,分別是view和pure,如果一個函數(shù)被view修飾,意味著我們只會讀取這個合約的狀態(tài)。被view修飾的函數(shù)不允許修改任何狀態(tài),你在其函數(shù)中不能修改任何狀態(tài),同理,pure函數(shù)也不允許修改狀態(tài),同時pure函數(shù)也不允許讀取區(qū)塊鏈數(shù)據(jù)。pure函數(shù)通常用于執(zhí)行數(shù)學(xué)運(yùn)算或其他不涉及狀態(tài)更改的計(jì)算。
具體關(guān)于函數(shù)實(shí)現(xiàn)的solidity代碼如下所示:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.8 <0.9.0;

contract SimpleStorage{
    //uint允許分配的空間只能以byte的速度增長 uint8 uint16...uint256 最大只能到uint256
    uint256 public favoriteNumber = 123;//設(shè)置公開可見
    function store(uint256 _favoriteNumber) public {
        favoriteNumber = _favoriteNumber;
    }

    function getFavoriteNumber() public view returns(uint256){
        return favoriteNumber;
    }
    function testPure() pure public returns(uint){
        return (1+1);
    }
}

5.Mapping映射

使用mapping映射比數(shù)組遍歷查找元素更加高效,可以達(dá)到O(1)級別,而數(shù)組遍歷是O(n)級別;
你可以簡單把映射想象成字典,它是一組鍵值對,每個key鍵返回與該鍵關(guān)聯(lián)的某個value值,我們創(chuàng)建一個映射變量的方式與創(chuàng)建其他所有變量的方式完全相同;具體如下所示:

mapping(string => uint256) public nameToFavoriteNumber

具體有關(guān)映射的定義以及添加元素的操作如下所示:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.8 <0.9.0;

contract SimpleStorage{
    //uint允許分配的空間只能以byte的速度增長 uint8 uint16...uint256 最大只能到uint256
    uint256 public favoriteNumber = 123;//設(shè)置公開可見
    struct People{
        string name;
        uint256 favoriteNumber;
    }//定義結(jié)構(gòu)體
    //定義映射
    mapping(string => uint256) public nameToFavoriteNumber;
    People[] public people;//定義結(jié)構(gòu)體數(shù)組(存儲多個結(jié)構(gòu)體的數(shù)組)

    function store(uint256 _favoriteNumber) public {
        favoriteNumber = _favoriteNumber;
    }
    //這里被view修飾的函數(shù)調(diào)用不消耗gas 表示只讀函數(shù) 不修改或改變區(qū)塊鏈已有的狀態(tài)
    function getFavoriteNumber() public view returns(uint256){
        return favoriteNumber;
    }
    //定義添加數(shù)組元素的函數(shù)
    function addPerson(string memory _name,uint _favoriteNumber) public{
        //這里由于string底層數(shù)bytes數(shù)組,因?yàn)樾枰褂胢emory關(guān)鍵字
        people.push(People(_name,_favoriteNumber));
        nameToFavoriteNumber[_name] = _favoriteNumber;
    }
}

這里需要注意,代碼里面有關(guān)于數(shù)組和結(jié)構(gòu)體的定義與實(shí)現(xiàn),由于其與Java和C++定義方式類似,這里讀者可以類比理解,所以并沒有做詳細(xì)闡述。

6.EVM介紹

前面我們通過solidity編寫的所有合約代碼,它都是在EVM(Ethereum Virtual Machine)上編譯的。
EVM(Ethereum Virtual Machine)就是往以太坊區(qū)塊鏈上部署智能合約的一個標(biāo)準(zhǔn),并且任何實(shí)現(xiàn)某種EVM的區(qū)塊鏈,你都可以把solidity代碼部署上,例如Avalanche,F(xiàn)antom,Polygon,它們都是與EVM兼容的,意思就是我們可以把編寫的solidity代碼部署到這些區(qū)塊鏈上。
回顧整個智能合約:
在智能合約中你要做的第一件事就是告訴solidity,你正在使用哪個版本的solidity,并且你得在首行添加// SPDX-License-Identifier: MIT,從而消除警告信息,接著你就要使用關(guān)鍵字contract創(chuàng)建你的合約對象并為它命名,solidity中的合約(contract)就類似與其他面向?qū)ο笳Z言中的class類,并且花括號{}內(nèi)的所有內(nèi)容都是該合約的組成部分。
solidity中有許多不同的數(shù)據(jù)類型,例如無符號整形uint,布爾值(boolean)、字符串(string)、字節(jié)(bytes32) 等等。如果你想創(chuàng)建一種新類型,可以創(chuàng)建一個所謂的結(jié)構(gòu)體(struct),也可以創(chuàng)建數(shù)組(array)或者說列表(list),也可以創(chuàng)建字典(dictionary)或者說映射(mapping),當(dāng)你給它一個鍵(key)時,它就會返回該鍵對應(yīng)的值(value)。我們還可以在solidity中創(chuàng)建函數(shù),以修改區(qū)塊鏈的狀態(tài),函數(shù)使用view和pure修飾便表示是不修改區(qū)塊鏈狀態(tài)的函數(shù),我們也可以在函數(shù)中指定不同的數(shù)據(jù)位置,calldata和memory的意思就是該數(shù)據(jù)只是臨時數(shù)據(jù),它們只在函數(shù)運(yùn)行期間存在,storage變量則是永久存在的,而函數(shù)參數(shù)由于是臨時變量因此不能使用storage變量,當(dāng)我們編寫好solidity代碼并在Remix點(diǎn)編譯(compile),它就會將代碼按照以太坊虛擬機(jī)的格式進(jìn)行編譯。
編寫好智能合約代碼后,在Remix可以直接使用快捷鍵Ctrl+S編譯,編譯成功后會在側(cè)邊欄出現(xiàn)一個綠色的小圖標(biāo),然后點(diǎn)擊側(cè)邊第四個圖標(biāo)進(jìn)入部署界面,首先選擇虛擬賬戶,因?yàn)槲覀兪遣渴鸬絉emix自帶的虛擬機(jī)中,然后設(shè)置gas limit限制,然后點(diǎn)擊部署按鈕即可,部署成功后便可以看到自動生成了一個合約賬戶,到此,你便完成了你的第一份智能合約。

remix 合約,區(qū)塊鏈,智能合約,區(qū)塊鏈文章來源地址http://www.zghlxwxcb.cn/news/detail-758555.html

到了這里,關(guān)于在Remix中編寫你的第一份智能合約的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Remix本地化,加載本地合約文件,本地鏈接Remix

    Remix本地化,加載本地合約文件,本地鏈接Remix

    智能合約IDE,在線的比較卡,而且切換網(wǎng)絡(luò)面臨文件丟失的風(fēng)險,選擇本地搭建Solidity本地編輯環(huán)境,Remix-IDE + Remixd組合,加載本地合約代碼。這里用到兩個工具: Remix IDE(本地IDE)+ Remixd (鏈接) Remix IDE 項(xiàng)目源碼:https://github.com/ethereum/remix-project 介紹: Remix IDE是一個本地部署運(yùn)

    2024年02月13日
    瀏覽(27)
  • remix 在線編譯部署合約示例

    remix 在線編譯部署合約示例

    一 準(zhǔn)備工作 1.打開 Remix - Ethereum IDE 2. 啟用或關(guān)閉需要的工具 1.選擇需要編譯的合約 2.進(jìn)入編譯頁面,版本號選擇必須大于等于當(dāng)前合約使用的版本,點(diǎn)擊Compile 3. 編譯成功頁面如圖 三.部署 頁面選擇injected web3 即可連接本機(jī)的metamask(前提matemask已連接)

    2024年02月05日
    瀏覽(18)
  • 如何在vscode、remix中結(jié)合hardhat編譯部署合約

    如何在vscode、remix中結(jié)合hardhat編譯部署合約

    首先創(chuàng)建 npm 空項(xiàng)目,注意這里要選擇合約項(xiàng)目對應(yīng)的文件目錄,比如這里的合約項(xiàng)目是 suchas 接著安裝 hardhat 環(huán)境,這里安裝的版本 2.11.1 接著創(chuàng)建 hardhat 工程,選擇你要創(chuàng)建的工程類型,這里我選的 TS 一般簡單的測試學(xué)習(xí)我們可以用 remix,更多時候是用專業(yè)的 vscode IDE 編寫

    2024年02月06日
    瀏覽(21)
  • FISCO BCOS十三、通過Truffle和remix實(shí)現(xiàn)合約自毀漏洞(以及修復(fù)方法)

    FISCO BCOS十三、通過Truffle和remix實(shí)現(xiàn)合約自毀漏洞(以及修復(fù)方法)

    上一篇我寫了通過Truffle和remix復(fù)現(xiàn)智能合約的溢出漏洞(以及修復(fù)方法),這一篇讓我們來了解一下合約另外一個漏洞--自毀漏洞。 我們先來了解 solidity 中能夠轉(zhuǎn)賬的操作都有哪些: transfer :轉(zhuǎn)賬出錯會拋出異常后面代碼不執(zhí)行; send :轉(zhuǎn)賬出錯不會拋出異常只返回 true/f

    2024年03月16日
    瀏覽(23)
  • Solidity入門:我的第一段智能合約

    以太坊是一個全球性的、去中心化的金融和新型應(yīng)用程序平臺。在以太坊,我們可以通過智能合約代碼來控制資產(chǎn),并建立世界上任何地方皆可訪問的應(yīng)用程序。今天我們自己動手來寫一段簡單的智能合約代碼,探索一下智能合約的奧秘。 【智能合約】 智能合約(英語:S

    2024年01月16日
    瀏覽(22)
  • 使用Ganache,web3js和remix在個人區(qū)塊鏈上部署并調(diào)用合約

    使用Ganache,web3js和remix在個人區(qū)塊鏈上部署并調(diào)用合約

    Ganache是一個運(yùn)行在本地的個人區(qū)塊鏈,適用于以太坊的開發(fā)者。 首先我們需要下載Ganache web3js的中文文檔 remix英文版的網(wǎng)址 有以上的準(zhǔn)備之后我們就可以開始了 首先啟動Ganache 這就是Ganache的主頁面,下面有10個供我們使用的賬號,上面有他們的地址以及余額,我們暫時需要

    2024年01月19日
    瀏覽(49)
  • Midjourney 【系列教程2】人工智能藝術(shù)創(chuàng)作從入門到精通·基礎(chǔ)篇2:生成你的第一幅 AI 作品

    Midjourney 【系列教程2】人工智能藝術(shù)創(chuàng)作從入門到精通·基礎(chǔ)篇2:生成你的第一幅 AI 作品

    這期的教程我想一定會令你感到興奮和激動。因?yàn)椋覀兗磳㈤_始生成屬于自己的第一幅 AI 作品了! 在這里,我將會按照一個真實(shí)的例子帶大家一步步進(jìn)行,重點(diǎn)步驟及注意事項(xiàng)部分我將用紅色文字或彩色文字為大家標(biāo)出。 首先,進(jìn)入你的 Discord 服務(wù)器,并在下面的對話框

    2024年02月08日
    瀏覽(27)
  • Ascend C保姆級教程:我的第一份Ascend C代碼

    本文分享自華為云社區(qū)《Ascend C保姆級教程:我的第一份Ascend C代碼》,作者:昇騰CANN 。 Ascend C是昇騰AI異構(gòu)計(jì)算架構(gòu)CANN針對算子開發(fā)場景推出的編程語言,原生支持C和C++標(biāo)準(zhǔn)規(guī)范,最大化匹配用戶開發(fā)習(xí)慣;通過多層接口抽象、自動并行計(jì)算、孿生調(diào)試等關(guān)鍵技術(shù),極大提

    2024年02月10日
    瀏覽(23)
  • 官方認(rèn)證,區(qū)塊鏈從業(yè)者秋天的第一份上崗證書來啦!

    官方認(rèn)證,區(qū)塊鏈從業(yè)者秋天的第一份上崗證書來啦!

    “人社證書已經(jīng)到了!” 10 月 8 日,《區(qū)塊鏈應(yīng)用操作員》證書正式下發(fā)到每一位通過區(qū)塊鏈應(yīng)用操作員技能考試的學(xué)員手中,他們從此有了官方認(rèn)證的從業(yè)“身份證”。 今年 7 月 31 日,浙江省第二批區(qū)塊鏈應(yīng)用操作員(四級)技能考試在浙江清華長三角研究院技能人才評

    2024年02月16日
    瀏覽(27)
  • Remix的使用

    Remix的使用

    最近在用remix寫智能合約,碰到了一些不會操作的地方,先記錄整理部署方式,后期再慢慢豐富內(nèi)容; 線上版Remix 待補(bǔ)充 待補(bǔ)充 參考文獻(xiàn): https://blog.csdn.net/weixin_33806509/article/details/91387634?utm_term=remix%E8%AE%BE%E7%BD%AEweb3%E7%89%88%E6%9C%ACutm_medium=distribute.pc_aggpage_search_result.none-task-

    2024年02月05日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包