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

WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi

這篇具有很好參考價值的文章主要介紹了WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

好 各位 經(jīng)過我們上文 WEB3 solidity 帶著大家編寫測試代碼 操作訂單 創(chuàng)建/取消/填充操作 我們自己寫了一個測試訂單業(yè)務(wù)的腳本 沒想到運(yùn)行的還挺好的

那么 今天開始 我們就可以開始操作我們前端 Dapp 的一個操作了

在整個過程中 確實是沒有我們后端的操作 或者說 我們自己就是后端 solidity 就是服務(wù)端
雖然我個人并不是很開好 WEB3的前景 我覺得很可能無法推廣 但是 如果之后WEB3真的起來了 那么 可能會延伸成 前端開發(fā)Dapp工程師 和 新的 solidity 開發(fā)工程師 而我們這種從一開始就一直在做學(xué)習(xí)的 也很可能成為這一領(lǐng)域的 全棧開發(fā)工程師
我們還是先將 ganache 的環(huán)境起起來
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
然后 部署一下我們的合約
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
然后呢 這年頭 我們寫前端 不用個框架 都會讓人笑話 所以 我們用目前大家用的比較多的 React

可能這種很多人會覺得vue會更平易近人 或者是 可能很多人不太了解React 但WEB3在國外比較火 所以做這塊基本都是React的 我要是用vue寫給你們 搞不好你們拿出去會被別人笑話啊

正好我這也有很多React的文章 大家也可以補(bǔ)補(bǔ)基礎(chǔ)
我們在本地創(chuàng)建一個文件夾 作為項目目錄
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
然后 我們終端執(zhí)行

create-react-app webdapp

前提你電腦要安裝了 React
創(chuàng)建一個 叫 webdapp的react項目
項目可能要創(chuàng)建有點久

WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
創(chuàng)建好之后 我們用編輯器打開這個項目
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
然后 我們嘗試在終端輸入

npm start

能夠運(yùn)行起這個React 項目的歡迎界面 我們就算成功了
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
然后 這里 因為 我們是 前端和solidity一起寫 我們完全可以做一個框架的整合
這里 我們知道 每次部署合約 json都會有一定變化,而這個Abi是前端鏈接合約的途徑
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
那么 我們開發(fā)過程中 總不想重新部署一次合約 前端就要重新復(fù)制一次
其實我們完全可以將這些東西搬到前端項目中

然后 我們來到智能合約項目的所在目錄下
然后 將除了 node_modules 依賴包 package-lock.json 如果你的項目中有package.json 則也不要
其他的文件都復(fù)制過來
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
然后扔掉 我們react項目的根目錄下
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
但是 之前我們也說了 沒有帶一切有關(guān)依賴的工具和文件
那么 我們此時 合約項目是沒有依賴 執(zhí)行不起來的
我們可以在react項目 終端下執(zhí)行

npm i openzeppelin-solidity

引入 openzeppelin-solidity 這是 一個開源的 solidity 庫
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
好 安裝好之后 為了證明這是沒問題的 我們在react項目下執(zhí)行

truffle migrate --reset

嘗試部署智能合約
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
但這里顯然報錯了 他說 我們之前用的這個 WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
找不到 我們終端輸入

npm install @openzeppelin/contracts

安裝一下依賴
然后 再次部署合約
這樣 我們的合約就部署成功了
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
然后 我們將 scripts 目錄下的 test.js 測試文件代碼更改如下

//指定以token grtoken合約
const GrToken = artifacts.require("grToken.sol")
//交易所合約
const Exchange = artifacts.require("Exchange.sol")
//定義E代理地址
const ETHER_ADDRESS = '0x0000000000000000000000000000000000000000';

const fromWei = (bn) => {
  return web3.utils.fromWei(bn, "ether");
}
const toWei = (bn) => {
    return web3.utils.toWei(bn.toString(), "ether");
}

module.exports = async function(callback) {
    const grTokenDai = await GrToken.deployed();
    const exchage = await Exchange.deployed();
    //獲取用戶列表
    const accounts = await web3.eth.getAccounts();
    //第一個賬戶 調(diào)用transfer 發(fā)送100000 grtoken給第二個用戶 accounts[1]
    await grTokenDai.transfer(accounts[1],toWei(100000),{
        from: accounts[0]
    })
    //通過 exchage 交易所提供的  depositEther 函數(shù) accounts[0] 第一個用戶往交易所存入 100 E
    await exchage.depositEther({
        from: accounts[0],
        value: toWei(100)
    })

    //給第一個用戶 accounts[0] 交易所 授權(quán) 100000 GRTOKEN 就是我自己定義的token
    await grTokenDai.approve(exchage.address,toWei(100000),{
        from: accounts[0]
    })

    //第一個用戶 accounts[0] 通過交易所提供的 depositToken函數(shù) 存入100000 grToken
    await exchage.depositToken(grTokenDai.address,toWei(100000),{
        from: accounts[0]
    })

    //通過 exchage 交易所提供的  depositEther 函數(shù) accounts[1] 第二個用戶往交易所存入 50 E
    await exchage.depositEther({
        from: accounts[1],
        value: toWei(50)
    })

    //給第二個用戶 accounts[1] 交易所 授權(quán) 50000 GRTOKEN 就是我自己定義的token
    await grTokenDai.approve(exchage.address,toWei(50000),{
        from: accounts[1]
    })

    //第二個用戶 accounts[1] 通過交易所提供的 depositToken函數(shù) 存入50000 grToken
    await exchage.depositToken(grTokenDai.address,toWei(50000),{
        from: accounts[1]
    })

    //存儲訂單id
    let orderId = 0;
    //存儲創(chuàng)建訂單返回結(jié)果
    let res ;
    //調(diào)用交易所創(chuàng)建訂單  兩千 gr 對 0.2E 由第一個用戶發(fā)布
    res = await exchage.makeOrder(grTokenDai.address,toWei(2000), ETHER_ADDRESS ,toWei(0.2),{
        from: accounts[0]
    });
    //接收創(chuàng)建完成的訂單id
    orderId = res.logs[0].args.id
    //告訴我們訂單創(chuàng)建好了
    console.log("創(chuàng)建成功"+res.logs[0].args.id)
    //通過id取消訂單
    await exchage.cancelorder(orderId,{
        from: accounts[0]
    })
    console.log(orderId,"取消訂單成功")


    //調(diào)用交易所創(chuàng)建訂單  一千 gr 對 0.1E 由第一個用戶發(fā)布
    res = await exchage.makeOrder(grTokenDai.address,toWei(1000), ETHER_ADDRESS ,toWei(0.1),{
        from: accounts[0]
    });
    //接收創(chuàng)建完成的訂單id
    orderId = res.logs[0].args.id
    //告訴我們訂單創(chuàng)建好了
    console.log("創(chuàng)建成功"+res.logs[0].args.id)
    //利用用戶 accounts[1] 來完成這個訂單
    await exchage.fillorder(orderId,{from: accounts[1]})
    console.log("完成訂單")

    // 獲取第一個用戶在交易所中的E數(shù)值
    let res1 = await exchage.tokens(ETHER_ADDRESS,accounts[0])
    console.log(fromWei(res1)+":E");
    //獲取第一個用戶 在交易所中 grtoken的數(shù)量
    let res2 = await exchage.tokens(grTokenDai.address,accounts[0])
    console.log(fromWei(res2)+":grtoken");

    // 獲取第二個用戶在交易所中的E數(shù)值
    let res3 = await exchage.tokens(ETHER_ADDRESS,accounts[1])
    console.log(fromWei(res3)+":第二個用戶 E");
    // 獲取第二個用戶的 grtoken 并輸出
    let res4 = await exchage.tokens(grTokenDai.address,accounts[1])
    console.log(fromWei(res4)+":第二個用戶 grtoken");

    callback()
}

然后我們終端執(zhí)行

truffle exec .\scripts\test.js

嘗試運(yùn)行測試文件
運(yùn)行上也是沒有任何問題 那就OK了唄
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
但是 這不代表完全成功 大家可以嘗試一下 你用react組件嘗試導(dǎo)入 src目錄外的文件 是會報錯的
所以 我們還得想辦法將 build/contracts 內(nèi)的json拿到src里面來
但是 這里 我們不能手動移 因為之后你重新部署 他還是在那個位置
我們?nèi)绻€要每次發(fā)不完手動將文件夾放到src里面 那還不如不要給他們合在一起 每次去復(fù)制 abi 就好了

這里 我們需要研究一個問題 合約json的生成位置是誰配置的?
其實這些內(nèi)容 我們都是可以在 truffle-config.js 中配置的
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
我們加一個字段

"contracts_build_directory" : "./src/build"

WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
指定他將編譯好的json 放到 當(dāng)前目錄下的 src下的 build 目錄下面

然后 我們重寫終端執(zhí)行

truffle migrate --reset

部署智能合約
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
此時 可以看到 我們的目錄就成功的生成出來了 里面的json也沒什么問題
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
那么 我們就可以將原來最外面的這個
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
build 直接給它干掉了 已經(jīng)沒用了

然后 我們用 App.js 引入一個json合約 并控制臺輸出一下內(nèi)容試試
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js
然后 我們再次運(yùn)行項目 打開控制臺 你就會發(fā)現(xiàn) 這個json 內(nèi)容就被成功輸出在控制臺了
WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi,前端,web3,react.js文章來源地址http://www.zghlxwxcb.cn/news/detail-728200.html

到了這里,關(guān)于WEB3 創(chuàng)建React前端Dapp環(huán)境并整合solidity項目,融合項目結(jié)構(gòu)便捷前端拿取合約 Abi的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • web3 React dapp中編寫balance組件從redux取出并展示用戶資產(chǎn)

    web3 React dapp中編寫balance組件從redux取出并展示用戶資產(chǎn)

    好啊 上文WEB3 在 React搭建的Dapp中通過redux全局獲取并存儲用戶ETH與自定義token與交易所存儲數(shù)量中 我們拿到了用戶的一個本身 和 交易所token數(shù)量 并放進(jìn)了redux中做了一個全局管理 然后 我們繼續(xù) 先 起來ganache的一個模擬環(huán)境 然后 我們啟動自己的項目 順手發(fā)布一下合約 然后

    2024年02月05日
    瀏覽(32)
  • 6.DApp-用Web3實現(xiàn)前端與智能合約的交互

    6.DApp-用Web3實現(xiàn)前端與智能合約的交互

    題記 ????????用Web3實現(xiàn)前端與智能合約的交互,以下是操作流程和代碼。 準(zhǔn)備ganache環(huán)境 ? ? ? ? 文章地址:4.DApp-MetaMask怎么連接本地Ganache-CSDN博客? 準(zhǔn)備智能合約? ? ? ? ? 文章地址:?2.DApp-編寫和運(yùn)行solidity智能合約-CSDN博客 編寫index.html文件 ???????? !DOCTYPE htm

    2024年02月08日
    瀏覽(23)
  • web3 React dapp項目通過事件從區(qū)塊鏈中拿到 已取消 已完成 和所有的訂單數(shù)據(jù) 并存入redux中

    web3 React dapp項目通過事件從區(qū)塊鏈中拿到 已取消 已完成 和所有的訂單數(shù)據(jù) 并存入redux中

    好 上文web3通過antd 在React dapp中構(gòu)建訂單組件基本結(jié)構(gòu)我們算是把一個基本的訂單組件展示做出來了 然后 我們繼續(xù) 起一下環(huán)境先 ganache 終端運(yùn)行 MetaMask 登錄一下 然后 打開項目 發(fā)布一下合約 然后 運(yùn)行一下 測試腳本 轉(zhuǎn)入交易所 ETH和grToken 還創(chuàng)建兩個訂單 然后 運(yùn)行起 dapp項

    2024年02月05日
    瀏覽(36)
  • 【W(wǎng)eb3 系列開發(fā)教程——創(chuàng)建你的第一個 NFT(7)】創(chuàng)建一個 NFT DApp,給你的 NFT 賦予屬性,例如圖片

    在本文中,你將構(gòu)建一個 NFT 鑄幣機(jī),并學(xué)習(xí)如何通過使用 Metamask 和 Web3 工具將你的智能合約連接到 React 前端,來創(chuàng)建一個NFT dApp。 我認(rèn)為,對于具備 Web2 開發(fā)背景的開發(fā)者來說,最大的挑戰(zhàn)之一是 弄清楚如何將你的智能合約連接到前端項目并與之交互。 通過構(gòu)建 NFT 鑄幣

    2024年01月16日
    瀏覽(35)
  • WEB3 在 React搭建的Dapp中通過redux全局獲取并存儲用戶ETH與自定義token與交易所存儲數(shù)量

    WEB3 在 React搭建的Dapp中通過redux全局獲取并存儲用戶ETH與自定義token與交易所存儲數(shù)量

    上文 web3 在React dapp中全局管理web3當(dāng)前登錄用戶/智能合約等信息中 我們簡單操作,將web3的公共信息都存在了window對象上 然后 我們先來啟動一下環(huán)境 終端輸入 打開項目 終端輸入 在區(qū)塊鏈上發(fā)布一下智能合約 然后 我們在 src下的 components 目錄下創(chuàng)建兩個組件 分別是 余額組件

    2024年02月05日
    瀏覽(30)
  • web3簡述Dapp組成部分

    好啊 都說光說不練 會感覺很空啊 那 我們就來進(jìn)入真正的這個操作過程啊 區(qū)塊鏈這種東西 我們肯定是無法從零開始搭建的 我們在這里說 是通過 以太坊提供的公有鏈的應(yīng)用開發(fā)平臺來做的 就可以理解為 以太坊是一個大的公共平臺 人家給我們把地基搭好了 我們只需要在上面

    2024年02月09日
    瀏覽(23)
  • DAPP開發(fā)(一)——web3.0和智能合約

    web1.0~3.0,很多年前,互聯(lián)網(wǎng)沒有那么發(fā)達(dá),剛出來的時候,僅僅只能在網(wǎng)上瀏覽觀看信息,這就是1.0,后來出現(xiàn)了很多的軟件,人們不僅可以瀏覽還可以發(fā)表自己的看法,手機(jī)app百花齊放,每個應(yīng)用都有自己的數(shù)據(jù)庫,存儲數(shù)據(jù),這就是2.0,現(xiàn)如今出現(xiàn)了3.0,去中心化的思想

    2024年02月05日
    瀏覽(22)
  • 【區(qū)塊鏈】走進(jìn)web3的世界-DApp如何快速接入wall

    【區(qū)塊鏈】走進(jìn)web3的世界-DApp如何快速接入wall

    在web3中,wall是您進(jìn)入?yún)^(qū)塊鏈的一個標(biāo)識,每個用戶使用的wall都不近相同,因此接入更多的wall是很有必要的,從用戶角度來說,非必要情況下,我是不愿意去額外下載wall的。因此今天我們來聊一下,DApp如何快速的接入wall。 1、基于wagmi 1.1 在wagmi中內(nèi)置了很多 wall 的連接,可

    2024年02月04日
    瀏覽(27)
  • Web3.0 DApp(去中心化應(yīng)用程序)設(shè)計架構(gòu)

    Web3.0 DApp(去中心化應(yīng)用程序)設(shè)計架構(gòu)

    先來回顧下 Web2.0 應(yīng)用程序架構(gòu),一圖勝千言: ? 圖示是對大多數(shù) Web 2.0 應(yīng)用程序如何工作的一個很好的抽象總結(jié)。以一個博客平臺為例: 首先 ,必須有一個地方來存儲基本數(shù)據(jù),也就是數(shù)據(jù)庫; 其次 ,要有后端代碼(用 Node.js、Java 或 Python 等語言編寫),用于定義業(yè)務(wù)邏

    2024年02月02日
    瀏覽(24)
  • 關(guān)于區(qū)塊鏈、Web3.0、智能合約、DApp、DAO一文解釋清楚

    關(guān)于區(qū)塊鏈、Web3.0、智能合約、DApp、DAO一文解釋清楚

    區(qū)塊鏈簡單理解就是, 所有數(shù)據(jù)變成區(qū)塊組成的鏈條,一個區(qū)塊里保存著一條數(shù)據(jù)。 一筆支付、一個評論、一次查看、一條短信、一袋蘋果都能保存為一個數(shù)據(jù)區(qū)塊。 由于區(qū)塊通過鏈條環(huán)環(huán)相扣,這確保了鏈上的數(shù)據(jù)是不可被篡改的。 鏈條復(fù)制了多條副本放置到多臺互不相

    2024年02月02日
    瀏覽(60)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包