ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约
ETH:Windows搭建ETH(區塊鏈技術)利用Web端和小程序端兩種方式調用ETH上的SC智能合約
?
?
目錄
1、Geth安裝、配置文件、與ETH節點交互
1.1、下載并安裝好geth客戶端
1.2、配置好genesis.json文件
1.3 、命令進行初始化文件
1.4、啟動節點
2、基于Remix環境Solidity編程、發布、交互SC
2.1、solidty語言編寫個智能合約
2.2、右進入在線Remix
2.3、會取出ETH上的賬號
2.4、然后對地址進行解鎖
2.5 setMag右邊框輸入內容信息
3、采用前端web調用ETH的SC
3.1、思路框架
3.2、實現代碼
4、采用微信小程序調用ETH的SC
4.1、思路框架
4.2、實現代碼
Geth節點的安裝
1、Geth 地址下載
2、安裝目錄下cmd,輸入geth -help看看是否可用geth命令
?
?
1、Geth安裝、配置文件、與ETH節點交互
1.1、下載并安裝好geth客戶端
并將exe路徑添加到環境變量中
?
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 、命令進行初始化文件
會自動生成兩個文件夾geth(存放區塊鏈數據)、keystore(存放賬號信息),
?geth --datadir . init genesis.json
?
1.4、啟動節點
數據都會放在該節點上,該node也需要對外訪問(web.js)即需要占用一個端口(默認8545),geth與web之間是rpc協議。
port區塊之間連接,rpc是否支持跨域,rpcapi提供幾個對象,包括net console控制臺(使win系統的dos變為與節點交互的控制臺),打印信息都放在log.txt文件內,
到此為止,節點都已啟好,但是因為我們通過genesis.json配置文件使其,沒有連接到主網。
使用dos控制臺與節點進行交互
如何知道賬戶名稱:幾個節點連接在一起,網絡ID唯一的,
?
?
2、基于Remix環境Solidity編程、發布、交互SC
2.1、solidty語言編寫個智能合約
采用Remix工具編寫Solidty語言,操作Remix交互式操作按鈕(也可以編寫程序進行發布)將智能合約發布上去。
pragma solidity ^0.4.18; //指定IDE版本//1、Solidty定義智能合約 contract Message{string msg; //定義全局變量,b變量值會保存在區塊鏈的節點上//寫數據的方法:public使其可被外部調用function setMsg(string _msg)public{msg=_msg;}//查看數據的方法:view只讀的方法(不需要gas花錢的)+返回string類型值//別的方法調用需要消耗gas即花錢,同步數據是需要消耗gas的,避免太多數據代碼即發布程序需要交錢function getMsg(string _msg)public view returns(string){return msg;} }2.2、右進入在線Remix
Setting欄設置編譯版本;
run欄設置Environment選擇Web3。點擊兩次ok即可,http://localhost:8545
2.3、會取出ETH上的賬號
然后點擊粉紅色的Deply進行發布(發布到區塊鏈的geth節點上去),會彈出兩個信息框,
?
2.4、然后對地址進行解鎖
解鎖后,再點擊發布Deploy,當出現Message at ……,說明智能合約已經發布上去
在控制臺輸入
personal.unlockAccount("") ? #對已有賬號進行解鎖
Passphrase:123456 ? ? ? ? ? ? ? ? #返回true即解鎖成功!
?
2.5 setMag右邊框輸入內容信息
先點擊setMsg按鈕,然后接著點擊getMsg按鈕,會取出輸入的內容信
?
?
3、采用前端web調用ETH的SC
3.1、思路框架
3.2、實現代碼
搭建node.js 的基本環境,然后啟動 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、采用微信小程序調用ETH的SC
4.1、思路框架
4.2、實現代碼
調用小程序提供的api 去請求中心化的服務器node.js 的數據 wx.request({url: 'http://localhost:3000/user/getMessage', //僅為示例,并非真實的接口地址success: function (res) {console.log(res.data)_this.setData({message:res.data})} })?
?
Geth節點的安裝
1、Geth 地址下載
https://www.ethereum.org/cl
?
?
2、安裝目錄下cmd,輸入geth -help看看是否可用geth命令
?
?
參考文章
區塊鏈+小程序
ETH編寫DAPP案例?EOS-Dapp
?
?
總結
以上是生活随笔為你收集整理的ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CV:计算机视觉技术之图像基础知识—以p
- 下一篇: keras-yolo3:python库之