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文件

1. {
2.   "nonce": "0x0000000000000042",
3.   "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
4.   "difficulty": "0x400",
5.   "alloc": {},
6.   "coinbase": "0x0000000000000000000000000000000000000000",
7.   "timestamp": "0x0",
8.   "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
9.   "extraData": "0x",
10.   "gasLimit": "0xffffffff",
11.   "config": {
12.       "chainId": 4224,
13.       "homesteadBlock": 0,
14.       "eip155Block": 0,
15.       "eip158Block": 0
16.   }
17. }

1.3 、命令进行初始化文件

会自动生成两个文件夹geth(存放区块链数据)、keystore(存放账号信息),

geth --datadir . init genesis.json

image.png

 

1.4、启动节点

数据都会放在该节点上,该node也需要对外访问(web.js)即需要占用一个端口(默认8545),geth与web之间是rpc协议。

port区块之间连接,rpc是否支持跨域,rpcapi提供几个对象,包括net console控制台(使win系统的dos变为与节点交互的控制台),打印信息都放在log.txt文件内,

到此为止,节点都已启好,但是因为我们通过genesis.json配置文件使其,没有连接到主网。

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

image.png

使用dos控制台与节点进行交互

如何知道账户名称:几个节点连接在一起,网络ID唯一的,

1. #利用客户端工具提供的api与节点进行交互
2. eth.accounts                      #查看eth上是否有账号,列表为空即无账号
3. personal.newAccount("123456");   #创建账号且指定密码,不需要指定账号名,会自动生成一个账号的文件
4. personal.newAccount("123456");   #再生成一个账号
5. eth.accounts                      #查看已有的账号,有了账号就可以挖矿了
6. miner.start();                    #开始进行挖矿,会返回null,挖的是自己节点上,因为没有连接主网。即使上主网挖矿,一天也就挖个几毛钱
7. eth.getBalance("");               #输入账户名称,查看账户余额


 image.png

 

2、基于Remix环境Solidity编程、发布、交互SC

2.1、solidty语言编写个智能合约

采用Remix工具编写Solidty语言,操作Remix交互式操作按钮(也可以编写程序进行发布)将智能合约发布上去。

1. pragma solidity ^0.4.18;  //指定IDE版本
2. 
3. //1、Solidty定义智能合约
4. contract Message{
5.     string msg;   //定义全局变量,b变量值会保存在区块链的节点上
6.     //写数据的方法:public使其可被外部调用
7.     function setMsg(string _msg)public{
8.         msg=_msg;
9.     }
10.     //查看数据的方法:view只读的方法(不需要gas花钱的)+返回string类型值
11.     //别的方法调用需要消耗gas即花钱,同步数据是需要消耗gas的,避免太多数据代码即发布程序需要交钱
12.     function getMsg(string _msg)public view returns(string){
13.         return msg;
14.     }
15. }

2.2、右进入在线Remix

Setting栏设置编译版本;

run栏设置Environment选择Web3。点击两次ok即可,http://localhost:8545

image.png

2.3、会取出ETH上的账号

然后点击粉红色的Deply进行发布(发布到区块链的geth节点上去),会弹出两个信息框,


 image.png

2.4、然后对地址进行解锁

解锁后,再点击发布Deploy,当出现Message at ……,说明智能合约已经发布上去

在控制台输入

personal.unlockAccount("")   #对已有账号进行解锁

Passphrase:123456                 #返回true即解锁成功!

image.png

 

2.5 setMag右边框输入内容信息

先点击setMsg按钮,然后接着点击getMsg按钮,会取出输入的内容信

image.png

 

 

3、采用前端web调用ETH的SC

3.1、思路框架

image.png

3.2、实现代码

1. 搭建node.js 的基本环境,然后启动 node.js
2. var Web3=require("web3");
3. var web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
4. var abi=[
5.     {
6. "constant": false,
7. "inputs": [
8.             {
9. "name": "_message",
10. "type": "string"
11.             }
12.         ],
13. "name": "setMessage",
14. "outputs": [],
15. "payable": false,
16. "stateMutability": "nonpayable",
17. "type": "function"
18.     },
19.     {
20. "constant": true,
21. "inputs": [],
22. "name": "getMessage",
23. "outputs": [
24.             {
25. "name": "",
26. "type": "string"
27.             }
28.         ],
29. "payable": false,
30. "stateMutability": "view",
31. "type": "function"
32.     }
33. ];
34. var address="0xd069af98379fe4326c33f6718e0ce820c0f63a55";
35. var message = new web3.eth.Contract(abi,address);
36. router.get("/getMessage",function(req,resp){
37.     message.methods.getMessage().call(function(error,result){
38.                 resp.send(result);
39.         });
40. });

 

 

4、采用微信小程序调用ETH的SC

4.1、思路框架

image.png

4.2、实现代码

1. 调用小程序提供的api 去请求中心化的服务器node.js 的数据
2. wx.request({
3.       url: 'http://localhost:3000/user/getMessage', //仅为示例,并非真实的接口地址
4.       success: function (res) {
5.         console.log(res.data)
6.         _this.setData({
7.             message:res.data
8.         })
9.       }
10. })

 

 

Geth节点的安装

1、Geth 地址下载

https://www.ethereum.org/cl


image.png

 

 

2、安装目录下cmd,输入geth -help看看是否可用geth命令

image.png

image.png



相关文章
|
9天前
|
消息中间件 编译器 API
Windows窗口程序
Windows窗口程序
|
10天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
18天前
|
存储 传感器 监控
未来智能城市中的区块链技术应用
随着城市化进程不断加速,智能城市成为了未来城市发展的主要趋势之一。区块链技术作为一种去中心化、安全可靠的数据传输和存储方式,将在智能城市建设中发挥关键作用。本文将探讨区块链技术在智能城市中的应用场景,并分析其对城市管理、信息共享和安全保障等方面的积极影响。
14 2
|
25天前
|
存储 供应链 区块链
区块链技术在供应链管理中的应用与展望
随着区块链技术的不断发展,其在供应链管理领域的应用愈发广泛。本文将深入探讨区块链技术在供应链管理中的具体应用及未来发展趋势,分析其对供应链透明度、可追溯性和安全性的影响,并展望区块链技术在未来供应链管理中的潜在作用和挑战。
17 0
|
27天前
|
存储 安全 物联网
未来技术纵横谈:区块链、物联网和虚拟现实的革新之路
在科技不断进步的今天,新兴技术正以前所未有的速度改变着我们的生活和工作方式。本文将深入探讨区块链、物联网(IoT)以及虚拟现实(VR)这三项技术的发展趋势与潜在应用场景,揭示它们如何塑造一个更加智能、互联和沉浸式的未来世界。通过对这些技术的综合分析,我们旨在提供一个全面的视角,以理解它们在未来社会结构中的重要性及影响。
24 7
|
28天前
|
供应链 安全 区块链
区块链技术在供应链管理中的应用与挑战
传统的供应链管理面临着信息不对称、数据共享困难等问题,而区块链技术的出现为供应链管理带来了新的解决方案。本文将介绍区块链技术在供应链管理中的应用情况,探讨其优势和挑战,并提出未来发展的方向。
41 2
|
28天前
|
存储 监控 安全
区块链技术机遇和挑战
区块链技术在数据安全和信息共享中发挥关键作用,提供去中心化、透明、安全和智能合约等优势,促进数据交易。然而,技术成熟度、数据效率、隐私保护、标准和监管以及用户接受度等挑战仍需克服,以构建安全、高效的数据共享环境。
29 1
|
28天前
|
存储 人工智能 供应链
区块链技术在供应链管理中的应用
传统的供应链管理系统存在着诸多问题,如信息不对称、数据可信度低等。区块链技术作为一种分布式账本技术,在供应链管理中具有独特优势。本文将探讨区块链技术在供应链管理中的应用,介绍其原理和优势,并分析实际案例以及未来发展趋势。
|
7天前
|
供应链 算法 安全
区块链技术的应用与前景展望
区块链技术的应用与前景展望
|
12天前
|
存储 供应链 物联网
未来技术纵横谈:区块链、物联网与虚拟现实的融合革新
【4月更文挑战第7天】 在数字化浪潮推动下,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正不断重塑我们的工作、生活方式及商业模式。本文将深入探讨这些技术的发展趋势,以及它们如何相互交织,共同构建一个更加智能、互联和沉浸式的未来世界。区块链技术以其不可篡改的数据记录和去中心化特性,为安全性和透明度设立了新标准;物联网通过使设备智能化和网络化,推动了自动化和效率的飞跃;而虚拟现实则在娱乐、教育和医疗等领域开辟了前所未有的交互体验。文章还将剖析这些技术在实际应用中的案例,展示它们如何联合起来推动创新。
11 0

热门文章

最新文章