日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约

發(fā)布時間:2025/3/21 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ETH:Windows搭建ETH(區(qū)塊鏈技術(shù))利用Web端和小程序端兩種方式調(diào)用ETH上的SC智能合約

?

?

目錄

1、Geth安裝、配置文件、與ETH節(jié)點交互

1.1、下載并安裝好geth客戶端

1.2、配置好genesis.json文件

1.3 、命令進(jìn)行初始化文件

1.4、啟動節(jié)點

2、基于Remix環(huán)境Solidity編程、發(fā)布、交互SC

2.1、solidty語言編寫個智能合約

2.2、右進(jìn)入在線Remix

2.3、會取出ETH上的賬號

2.4、然后對地址進(jìn)行解鎖

2.5 setMag右邊框輸入內(nèi)容信息

3、采用前端web調(diào)用ETH的SC

3.1、思路框架

3.2、實現(xiàn)代碼

4、采用微信小程序調(diào)用ETH的SC

4.1、思路框架

4.2、實現(xiàn)代碼

Geth節(jié)點的安裝

1、Geth 地址下載

2、安裝目錄下cmd,輸入geth -help看看是否可用geth命令


?

?

1、Geth安裝、配置文件、與ETH節(jié)點交互

1.1、下載并安裝好geth客戶端

并將exe路徑添加到環(huán)境變量中

?

1.2、配置好genesis.json文件

{"nonce": "0x0000000000000042","mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000","difficulty": "0x400","alloc": {},"coinbase": "0x0000000000000000000000000000000000000000","timestamp": "0x0","parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000","extraData": "0x","gasLimit": "0xffffffff","config": {"chainId": 4224,"homesteadBlock": 0,"eip155Block": 0,"eip158Block": 0} }

1.3 、命令進(jìn)行初始化文件

會自動生成兩個文件夾geth(存放區(qū)塊鏈數(shù)據(jù))、keystore(存放賬號信息),
?geth --datadir . init genesis.json

?

1.4、啟動節(jié)點

數(shù)據(jù)都會放在該節(jié)點上,該node也需要對外訪問(web.js)即需要占用一個端口(默認(rèn)8545),geth與web之間是rpc協(xié)議。
port區(qū)塊之間連接,rpc是否支持跨域,rpcapi提供幾個對象,包括net console控制臺(使win系統(tǒng)的dos變?yōu)榕c節(jié)點交互的控制臺),打印信息都放在log.txt文件內(nèi),
到此為止,節(jié)點都已啟好,但是因為我們通過genesis.json配置文件使其,沒有連接到主網(wǎng)。

geth --datadir . --networkid 4224 --rpc --rpcport 8545 --port 30303 --rpccorsdomain="*" -rpcapi eth,web3,personal,net console 2> log.txt

使用dos控制臺與節(jié)點進(jìn)行交互
如何知道賬戶名稱:幾個節(jié)點連接在一起,網(wǎng)絡(luò)ID唯一的,

#利用客戶端工具提供的api與節(jié)點進(jìn)行交互 eth.accounts #查看eth上是否有賬號,列表為空即無賬號 personal.newAccount("123456"); #創(chuàng)建賬號且指定密碼,不需要指定賬號名,會自動生成一個賬號的文件 personal.newAccount("123456"); #再生成一個賬號 eth.accounts #查看已有的賬號,有了賬號就可以挖礦了 miner.start(); #開始進(jìn)行挖礦,會返回null,挖的是自己節(jié)點上,因為沒有連接主網(wǎng)。即使上主網(wǎng)挖礦,一天也就挖個幾毛錢 eth.getBalance(""); #輸入賬戶名稱,查看賬戶余額

?

?

2、基于Remix環(huán)境Solidity編程、發(fā)布、交互SC

2.1、solidty語言編寫個智能合約

采用Remix工具編寫Solidty語言,操作Remix交互式操作按鈕(也可以編寫程序進(jìn)行發(fā)布)將智能合約發(fā)布上去。

pragma solidity ^0.4.18; //指定IDE版本//1、Solidty定義智能合約 contract Message{string msg; //定義全局變量,b變量值會保存在區(qū)塊鏈的節(jié)點上//寫數(shù)據(jù)的方法:public使其可被外部調(diào)用function setMsg(string _msg)public{msg=_msg;}//查看數(shù)據(jù)的方法:view只讀的方法(不需要gas花錢的)+返回string類型值//別的方法調(diào)用需要消耗gas即花錢,同步數(shù)據(jù)是需要消耗gas的,避免太多數(shù)據(jù)代碼即發(fā)布程序需要交錢function getMsg(string _msg)public view returns(string){return msg;} }

2.2、右進(jìn)入在線Remix

Setting欄設(shè)置編譯版本;
run欄設(shè)置Environment選擇Web3。點擊兩次ok即可,http://localhost:8545

2.3、會取出ETH上的賬號

然后點擊粉紅色的Deply進(jìn)行發(fā)布(發(fā)布到區(qū)塊鏈的geth節(jié)點上去),會彈出兩個信息框,


?

2.4、然后對地址進(jìn)行解鎖

解鎖后,再點擊發(fā)布Deploy,當(dāng)出現(xiàn)Message at ……,說明智能合約已經(jīng)發(fā)布上去
在控制臺輸入
personal.unlockAccount("") ? #對已有賬號進(jìn)行解鎖
Passphrase:123456 ? ? ? ? ? ? ? ? #返回true即解鎖成功!

?

2.5 setMag右邊框輸入內(nèi)容信息

先點擊setMsg按鈕,然后接著點擊getMsg按鈕,會取出輸入的內(nèi)容信

?

?

3、采用前端web調(diào)用ETH的SC

3.1、思路框架

3.2、實現(xiàn)代碼

搭建node.js 的基本環(huán)境,然后啟動 node.js var Web3=require("web3"); var web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545")); var abi=[{"constant": false,"inputs": [{"name": "_message","type": "string"}],"name": "setMessage","outputs": [],"payable": false,"stateMutability": "nonpayable","type": "function"},{"constant": true,"inputs": [],"name": "getMessage","outputs": [{"name": "","type": "string"}],"payable": false,"stateMutability": "view","type": "function"} ]; var address="0xd069af98379fe4326c33f6718e0ce820c0f63a55"; var message = new web3.eth.Contract(abi,address); router.get("/getMessage",function(req,resp){message.methods.getMessage().call(function(error,result){resp.send(result);}); });

?

?

4、采用微信小程序調(diào)用ETH的SC

4.1、思路框架

4.2、實現(xiàn)代碼

調(diào)用小程序提供的api 去請求中心化的服務(wù)器node.js 的數(shù)據(jù) wx.request({url: 'http://localhost:3000/user/getMessage', //僅為示例,并非真實的接口地址success: function (res) {console.log(res.data)_this.setData({message:res.data})} })

?

?

Geth節(jié)點的安裝

1、Geth 地址下載

https://www.ethereum.org/cl

?

?

2、安裝目錄下cmd,輸入geth -help看看是否可用geth命令

?

?

參考文章
區(qū)塊鏈+小程序
ETH編寫DAPP案例?EOS-Dapp

?

?

總結(jié)

以上是生活随笔為你收集整理的ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。