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

什么是Dapp?帶你從零開始搭建一個(gè)Dapp

這篇具有很好參考價(jià)值的文章主要介紹了什么是Dapp?帶你從零開始搭建一個(gè)Dapp。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

什么是Dapp?零基礎(chǔ)帶你搭建一個(gè)Dapp

前言:Dapp就是去中心化應(yīng)用,它和我們平時(shí)使用的App(微信,支付寶等)只差了一個(gè)去中心化,如何理解這一去中心化?從體驗(yàn)層面來說:Dapp中并沒有管理者,大家都是平等的,互相監(jiān)督;而從技術(shù)層面來說:傳統(tǒng)的App和部署在服務(wù)器的后端產(chǎn)生交互,而Dapp則是和部署在區(qū)塊鏈上的智能合約產(chǎn)生交互。

本篇文章帶大家實(shí)現(xiàn)一個(gè)簡(jiǎn)單Dapp的搭建,通過實(shí)戰(zhàn)讓你進(jìn)一步了解Dapp,跟著做就行了!

1.DApp實(shí)現(xiàn)之合約編寫

  • 打開Remix編輯器
  • 新建InfoContract.sol文件,并將下面合約內(nèi)容Copy上去

編寫InfoContract合約

// SPDX-License-Identifier: GPL-3.0

pragma solidity 0.8.0;

contract InfoContract{
    string name;
    uint256 age;

    function setInfo(string memory _name,uint256 _age) public {
        name = _name;
        age = _age;

    }

    function getInfo() public view returns(string memory,uint){
        return (name,age);
    }
}

2.DApp實(shí)現(xiàn)之前端編寫

2.1創(chuàng)建一個(gè)新文件夾Dapp

并用VScode或者Atom打開該文件夾(選擇你自己使用的編輯器即可)

2.2Dapp中創(chuàng)建index.htmlindex.css

index.html

<html>

<head>
    <title>Dapp Demo</title>
    <link rel="stylesheet" type="text/css" href="index.css">
</head>

<body>
    <div class="container">
        <h1>
            First Dapp
        </h1>

        <h2 id="info"></h2>

        <label>姓名:</label>
        <input id="name" type="text">

        <label>年齡:</label>
        <input id="age" type="text">

</body>

</html>

index.css

body {
    background-color: #f0f0f0;
    padding: 2em;
    font-family: 'Raleway','Source Sans Pro','Arial';

}

.container{
    width: 40%;
    margin: 0 auto;
}

label{
    display: block;
    margin-bottom:10px;
}

input{
    padding: 10px;
    width: 50%;
    margin-bottom: 1em;
}

button{
    margin: 2em 0;
    padding: 1em 4em;
    display: block;
}

#info{
    padding: 1em;
    background-color: #fff;
    margin: 1em 0;
    border: 1px solid;
}

2.3效果圖預(yù)覽

什么是Dapp?帶你從零開始搭建一個(gè)Dapp

3. DApp實(shí)現(xiàn)之Web3與合約交互

3.1安裝web3庫

推薦使用第三種方法,因?yàn)椴挥冒惭b任何環(huán)境

- Node
npm install web3
- Yarn
yarn add web3
- CDN

由于以太坊舍棄了web3的腳本使用方法,所以這里我們臨時(shí)使用替代腳本

<!-- The legacy-web3 script must run BEFORE your other scripts. -->
    <script src="https://unpkg.com/@metamask/legacy-web3@latest/dist/metamask.web3.min.js"></script>
    <!-- 或者用 -->
    <script src="https://unpkg.com/@metamask/legacy-web3@latest/dist/metamask.web3.js"></script>

Tip: 若web3難以安裝,建議參考這篇文章解決npm安裝web3模塊失敗問題

3.2 Web3調(diào)用合約

參考文檔:web3.eth.contract

3.2.1獲取合約的abi

什么是abi?可以去復(fù)習(xí)之前的課程

  • 回到Remix編輯器的編譯器界面
  • 點(diǎn)擊右下角的Compilation Details按鈕

什么是Dapp?帶你從零開始搭建一個(gè)Dapp

  • 復(fù)制abi內(nèi)容

什么是Dapp?帶你從零開始搭建一個(gè)Dapp

3.2.2部署合約

需要保證你的小狐貍錢包里有bnb余額

  1. 選擇Injected Web3環(huán)境,點(diǎn)擊Deploy部署

什么是Dapp?帶你從零開始搭建一個(gè)Dapp

  1. 在小狐貍錢包中點(diǎn)擊確認(rèn),交上部署合約的gas費(fèi)
  1. 部署成功!

什么是Dapp?帶你從零開始搭建一個(gè)Dapp

  1. 在左側(cè)已部署合約中Copy合約地址

什么是Dapp?帶你從零開始搭建一個(gè)Dapp

我的合約地址是0x528f48F5EbCbf25061e8814328A0073294ED58Cb

3.2.3編寫Script腳本
<script>
    
        console.log(web3)
        web3.setProvider('ws://localhost:8545');
        //獲取介紹內(nèi)容
        const introduction = document.getElementById('info')
       
         //通過abi初始化合約
        var infoContract = web3.eth.contract(
            [{
                    "inputs": [],
                    "name": "getInfo",
                    "outputs": [{
                            "internalType": "string",
                            "name": "",
                            "type": "string"
                        },
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [{
                            "internalType": "string",
                            "name": "_name",
                            "type": "string"
                        },
                        {
                            "internalType": "uint256",
                            "name": "_age",
                            "type": "uint256"
                        }
                    ],
                    "name": "setInfo",
                    "outputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function"
                }
            ]
        );

        //通過地址實(shí)例化合約
        var info = infoContract.at('0x528f48F5EbCbf25061e8814328A0073294ED58Cb')

        //從合約獲取消息
        info.getInfo(function (error, result) {
            if (!error) {
                //修改介紹內(nèi)容
                introduction.innerHTML = result[0] + '(' + result[1] + 'years old)'
            }
        })
      
        
    </script>
3.2.4 更改合約信息

注意仍要在injected web3環(huán)境下更改,并且這將會(huì)收取一定的gas費(fèi)用,小狐貍錢包上點(diǎn)擊確認(rèn)即可!

什么是Dapp?帶你從零開始搭建一個(gè)Dapp

更改成功!

什么是Dapp?帶你從零開始搭建一個(gè)Dapp

3.2.5前端顯示

什么是Dapp?帶你從零開始搭建一個(gè)Dapp

恭喜你!至此你已經(jīng)實(shí)現(xiàn)了人生中第一次與智能合約的交互!

??舉一反三

我們通過調(diào)用該合約的getInfo()的方法,獲取了我們?cè)O(shè)置的信息,并讓它在前端顯示出來。那么該如何通過前端去更新我們智能合約的信息呢?

index.html全部代碼

index.css無需改動(dòng),用之前的即可

<html>

<head>
    <title>Dapp Demo</title>
    <link rel="stylesheet" type="text/css" href="index.css">
    <script src="https://unpkg.com/@metamask/legacy-web3@latest/dist/metamask.web3.min.js"></script>
</head>

<body>
    <div class="container">
        <h1>
            First Dapp
        </h1>

        <h2 id="info"></h2>

        <label>姓名:</label>
        <input id="name" type="text">

        <label>年齡:</label>
        <input id="age" type="text">

        <button id="button">更新</button>
    </div>
    <script>
        console.log(web3)
        web3.setProvider('ws://localhost:8545');
        //獲取介紹內(nèi)容
        const introduction = document.getElementById('info') 
        
        //通過abi初始化合約
        var infoContract = web3.eth.contract(
            [{
                    "inputs": [],
                    "name": "getInfo",
                    "outputs": [{
                            "internalType": "string",
                            "name": "",
                            "type": "string"
                        },
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function"
                },
                {
                    "inputs": [{
                            "internalType": "string",
                            "name": "_name",
                            "type": "string"
                        },
                        {
                            "internalType": "uint256",
                            "name": "_age",
                            "type": "uint256"
                        }
                    ],
                    "name": "setInfo",
                    "outputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function"
                }
            ]
        );
        
        //通過地址實(shí)例化合約
        var info = infoContract.at('0x528f48F5EbCbf25061e8814328A0073294ED58Cb')

        //從合約獲取消息
        info.getInfo(function (error, result) {
            if (!error) {
                //修改介紹內(nèi)容
                introduction.innerHTML = result[0] + '(' + result[1] + 'years old)'
            }
        })
      
        
    </script>

</body>

</html>

??歡迎關(guān)注個(gè)人博客(區(qū)塊鏈方向)

77Brother的技術(shù)小棧文章來源地址http://www.zghlxwxcb.cn/news/detail-453702.html

到了這里,關(guān)于什么是Dapp?帶你從零開始搭建一個(gè)Dapp的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(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)文章

  • 教你從零開始畫echarts地圖

    教你從零開始畫echarts地圖

    離線地圖下載地址https://datav.aliyun.com/tools/atlas/index.html echarts文檔地址https://echarts.apache.org/zh/option.html 基于VUE編寫,其他框架請(qǐng)自行轉(zhuǎn)換,大同小異 先讓地圖內(nèi)容出來,npm安裝步驟省略,請(qǐng)參考官方文檔,創(chuàng)建的div必須設(shè)置寬度和高度,關(guān)于圖表的寬高自適應(yīng),參考我的另一

    2023年04月17日
    瀏覽(319)
  • 教你從零開始準(zhǔn)備美賽!這些問題你都清楚了嗎?

    教你從零開始準(zhǔn)備美賽!這些問題你都清楚了嗎?

    寫在前面 離2024年的數(shù)學(xué)建模美賽越來越近啦,大家都準(zhǔn)備的怎么樣呢?對(duì)于備賽還沒有頭緒的同學(xué),今天,島主就為大家介紹一下 如何從零開始準(zhǔn)備美賽! 本期推文包括 數(shù)學(xué)建模的組隊(duì)篇、練習(xí)篇和競(jìng)賽篇 ,是不可多得的數(shù)學(xué)建模保姆級(jí)教程,手把手教你怎么從零開始準(zhǔn)

    2024年02月01日
    瀏覽(98)
  • React--》從零開始搭建一個(gè)文章后臺(tái)管理系統(tǒng)

    React--》從零開始搭建一個(gè)文章后臺(tái)管理系統(tǒng)

    目錄 項(xiàng)目準(zhǔn)備 項(xiàng)目搭建 scss預(yù)處理器的使用 配置基礎(chǔ)路由 組件庫antd的使用 開發(fā)者工具的安裝 登錄模塊 基本樣式搭建 創(chuàng)建表單結(jié)構(gòu) 獲取表單數(shù)據(jù)并進(jìn)行相關(guān)登錄操作 對(duì)登錄模塊的token進(jìn)行相關(guān)處理 路由鑒權(quán)實(shí)現(xiàn) 后臺(tái)頁面模塊 基本頁面結(jié)構(gòu)搭建 菜單高亮顯示 展示個(gè)人信

    2023年04月17日
    瀏覽(25)
  • 從零開始,搭建一個(gè)簡(jiǎn)單的UVM驗(yàn)證平臺(tái)(四)

    從零開始,搭建一個(gè)簡(jiǎn)單的UVM驗(yàn)證平臺(tái)(四)

    UVM前置基礎(chǔ): 1.UVM基礎(chǔ)-factory機(jī)制、phase機(jī)制 2.UVM基礎(chǔ)-組件(driver、monitor、agent...) 3.UVM基礎(chǔ)-TLM通信機(jī)制(一) 4.UVM基礎(chǔ)-TLM通信機(jī)制(二) ...還在更新 從零搭建一個(gè)UVM驗(yàn)證平臺(tái): 從零開始,搭建一個(gè)簡(jiǎn)單的UVM驗(yàn)證平臺(tái)(一) 從零開始,搭建一個(gè)簡(jiǎn)單的UVM驗(yàn)證平臺(tái)(二) 從

    2023年04月14日
    瀏覽(33)
  • 熱門項(xiàng)目、創(chuàng)意應(yīng)用觸手可及!大模型AIGC主題月帶你從零玩轉(zhuǎn)創(chuàng)意項(xiàng)目~

    熱門項(xiàng)目、創(chuàng)意應(yīng)用觸手可及!大模型AIGC主題月帶你從零玩轉(zhuǎn)創(chuàng)意項(xiàng)目~

    2023年5月,飛槳開發(fā)者說 AIGC 大模型學(xué)習(xí)月勁爆來襲。14 場(chǎng)直播帶你從零開始玩轉(zhuǎn)大模型~ 首場(chǎng)直播《飛槳開發(fā)者說|AIGC 專題直播》明日閃耀開啟! 當(dāng)前,大模型層出不窮,AIGC 應(yīng)用刷爆眼球。機(jī)遇與危機(jī)并存,開發(fā)者如何摸準(zhǔn)時(shí)代的脈象創(chuàng)新求勝?新的技術(shù)時(shí)代背景下,

    2024年02月09日
    瀏覽(19)
  • 開發(fā)那點(diǎn)事(十六)從零開始搭建一個(gè)NFT數(shù)字藏品平臺(tái)

    開發(fā)那點(diǎn)事(十六)從零開始搭建一個(gè)NFT數(shù)字藏品平臺(tái)

    寫在前面的話 從6月初到七月研究了將近一個(gè)月NFT 區(qū)塊鏈這方面的東西,從啥都不會(huì)到了解原理,總算是有點(diǎn)成果了,在這里分享給大家。 核心大綱 百度超級(jí)鏈開放網(wǎng)絡(luò)(Solidity語言) 集成openzeppelin中的ERC721合約快速完成合約開發(fā) Springboot 作為后臺(tái)開發(fā)語言調(diào)用線上合約 通

    2024年01月16日
    瀏覽(37)
  • 從零開始搭建游戲服務(wù)器 第一節(jié) 創(chuàng)建一個(gè)簡(jiǎn)單的服務(wù)器架構(gòu)

    從零開始搭建游戲服務(wù)器 第一節(jié) 創(chuàng)建一個(gè)簡(jiǎn)單的服務(wù)器架構(gòu)

    由于現(xiàn)在java web太卷了,所以各位同行可以考慮換一個(gè)賽道,做游戲還是很開心的。 本篇教程給新人用于學(xué)習(xí)游戲服務(wù)器的基本知識(shí),給新人們一些學(xué)習(xí)方向,有什么錯(cuò)誤的地方歡迎各位同行進(jìn)行討論。 本篇教程預(yù)計(jì)使用Java+Redis+Mongo 本著先完成再完美的原則,從最簡(jiǎn)單的

    2024年02月10日
    瀏覽(18)
  • Spring-WebFlux使用,一文帶你從0開始學(xué)明白Spring-WebFlux,學(xué)明白響應(yīng)式編程

    Spring-WebFlux使用,一文帶你從0開始學(xué)明白Spring-WebFlux,學(xué)明白響應(yīng)式編程

    傳統(tǒng)的基于Servlet的Web框架,如Spring MVC,在本質(zhì)上都是阻塞和多線程的,每個(gè)連接都會(huì)使用一個(gè)線程。在請(qǐng)求處理的時(shí)候,會(huì)在線程池中拉取一個(gè)工作者( worker )線程來對(duì)請(qǐng)求進(jìn)行處理。同時(shí),請(qǐng)求線程是阻塞的,直到工作者線程提示它已經(jīng)完成為止。 在Spring5中,引入了一個(gè)新

    2024年02月03日
    瀏覽(25)
  • Kubernetes超詳細(xì)教程,一篇文章幫助你從零開始學(xué)習(xí)k8s,從入門到實(shí)戰(zhàn)

    Kubernetes超詳細(xì)教程,一篇文章幫助你從零開始學(xué)習(xí)k8s,從入門到實(shí)戰(zhàn)

    k8s github地址:https://github.com/kubernetes/kubernetes 官方文檔:https://kubernetes.io/zh-cn/docs/home/ k8s,全程是 kubernetes,這個(gè)名字源于希臘語,意為\\\"舵手\\\"或\\\"飛行員” k8s 這個(gè)縮寫是因?yàn)?k 和 s 之間有八個(gè)字符 Google 在2014年開源了 k8s 項(xiàng)目,k8s 是一個(gè)用于 自動(dòng)化部署、擴(kuò)展和管理容器化

    2024年04月14日
    瀏覽(57)
  • 從零開始在 Linux 上搭建 Hadoop 平臺(tái):一個(gè)詳細(xì)的教程和必備配置文件

    在信息時(shí)代,大數(shù)據(jù)處理是企業(yè)發(fā)展必不可少的一部分。Hadoop 是一種分布式計(jì)算平臺(tái),能夠高效地處理大數(shù)據(jù)集。然而,搭建 Hadoop 集群可以相當(dāng)復(fù)雜,需要正確配置和調(diào)整多個(gè)組件。本文將向您展示如何從零開始在 Linux 上搭建 Hadoop,以及如何配置 Hadoop 的必備文件。 選擇

    2024年02月08日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包