当前位置: 首页 > news >正文

基于区块链的合同存证应用开发

基于区块链的合同存证应用开发

任务一:环境准备

1.启动区块链网络

目录: /root/xuperchain/output/

启动区块链网络

bash constrol.sh start

在这里插入图片描述

2.创建钱包账户

目录: /root/xuperchain/output/

创建tenant, landlord钱包账户,命令如下:

bin/xchain-cli account newkeys --output data/tenantbin/xchain-cli account newkeys --output data/landlord

在这里插入图片描述

3.向钱包账户转账

目录: /root/xuperchain/output/

通过data/tenant/address,data/landlord/address文件拿到钱包地址

cat data/tenant/addresscat daata/landlord/address

在这里插入图片描述

分别给两个地址分别转账,命令如下:

bin/xchain-cli transfer -to (address) --amount 10000000 --keys data/keys/ -H 127.0.0.1:37101

查看账余额,命令如下:

bin/xchain-cli account balance -- keys () -H 127.0.0.1:37101

在这里插入图片描述

任务二:前端工程编码

1.下载前端工程

目录: /root/Desktop

下载路径:http://res.handge.cn:8999/blockchain-6/blockchain-device-Part.3/09/front.zip

wget http://res.handge.cn:8999/blockchain-6/blockchain-devicePart.3/09/front.zip

2.解压前端工程

将下载好的 front.zip 拖到桌面, 解压

unzip front.zip

3.启动前端项目

在项目根目录下运行命令:

安装依赖:

npm install --unsafe-perm

启动:

npm run serve

在这里插入图片描述

运行成功弹出项目访问地址

在这里插入图片描述

任务三:配置数据库

1.连接数据库

终端输入如下命令,连接 mysql 数据库,密码为 123456

mysql -uroot  -p

2.创建数据库

创建test数据库

create database test;

查看所有数据库

show databases;

在这里插入图片描述

3.创建数据表

使用test数据库

use test;

创建表

CREATE TABLE `house_leasing_contract` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
`landlord` varchar(255) NOT NULL COMMENT '房东的账户公钥',
`tenant` varchar(255) NOT NULL COMMENT '租客的账户公钥',
`rent_amount` bigint NOT NULL COMMENT '每月租金金额',
`deposit_amount` bigint NOT NULL COMMENT '押金金额',
`rent_due_date` int NOT NULL COMMENT '租金到期日',
`lease_start_date` datetime NOT NULL COMMENT '租赁开始日期',
`lease_end_date` datetime NOT NULL COMMENT '租赁开始日期',
`lease_duration` int NOT NULL COMMENT '租赁期限',
`contract_hash` varchar(255) NULL COMMENT '租赁协议的哈希值',
`property_hash` varchar(255) NULL COMMENT '租赁物业信息的哈希值',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;

在这里插入图片描述

任务四:编写后端程序

1.构建 Java 项目

打开Intellij IDEA, 点击新建项目,设置项目名为:house-leasing,项目位置:~/Desktop,语言: Java, 构建系统:Maven,JDK: 11, 点击创建。

在这里插入图片描述

修改包路径,将[org.example]改为[src],右键选中包名,依次选中【重构】–>【重命名】,重命 名软件包,如下图所示:

在这里插入图片描述

在这里插入图片描述

修改Maven依赖 文件地址:/root/Desktop/house-leasing/pom.xml 修改内容为:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.11</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zhonghui</groupId>
<artifactId>house-leasing</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>house-leasing</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baidu.xuper</groupId>
<artifactId>xuper-java-sdk</artifactId>
<version>0.3.0</version>
</dependency
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

编辑项目配置文件 /root/Desktop/house-leasing/src/main/resources 目录下创建application.properties文件

在这里插入图片描述

编辑配置文件内容:

server.port=8090
spring.datasource.url: jdbc:mysql://localhost:3306/test
spring.datasource.username: root
spring.datasource.password: 123456
spring.datasource.driver-class-name: com.mysql.cj.jdbc.Driver
mybatis.type-aliases-package: src/entity
mybatis.mapper-locations: classpath:/mapper/*.xml

最后将桌面上的合约和编译文件拖入/root/Desktop/house-leasing/src/main/resources目录下, 如下图所示:

在这里插入图片描述

使用solc编译合约,进入 /root/Desktop/houseLeasing/src/main/resources目录下执行如下命令

./solc --abi --bin RentalAgreement.sol -o --output-dir

在/root/Desktop/HouseLeasing/src/main/resources/–output-dir目录下生成的abi和bin文件:

在这里插入图片描述

2. 编写代码

以下代码文件路径均为/root/Desktop/houseLeasing/src/main/的相对路径,完整的项目文件如下图所 示。

在这里插入图片描述

代码一

代码文件路径:java/src/HouseLeasingApplication.java

新建HouseLeasingApplication.java文件,实现构建xuperchain客户端, 获取账户,解决跨域请求, 时 间格式化等功能。代码如下

package src;
import com.baidu.xuper.api.Account;
import com.baidu.xuper.api.XuperClient;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import

相关文章:

基于区块链的合同存证应用开发

基于区块链的合同存证应用开发 任务一:环境准备 1.启动区块链网络 目录: /root/xuperchain/output/ 启动区块链网络 bash constrol.sh start2.创建钱包账户 目录: /root/xuperchain/output/ 创建tenant, landlord钱包账户,命令如下: bin/xchain-cli account newke…...

每日一题~ abc 365 E 异或运算(拆位+贡献)

处理位运算常用的方法&#xff1a; 拆位法&#xff08;一位一位的处理&#xff0c;通常题目中会给出元素的最大是2的的多少次幂&#xff0c;当然也有给10的次幂的&#xff0c;自己注意一下就可以了&#xff09; 常用的思想 &#xff1a; 算贡献。 异或的性质&#xff1a; A^A0 …...

前端八股文笔记【三】

JavaScript 基础题型 1.JS的基本数据类型有哪些 基本数据类型&#xff1a;String&#xff0c;Number&#xff0c;Boolean&#xff0c;Nndefined&#xff0c;NULL&#xff0c;Symbol&#xff0c;Bigint 引用数据类型&#xff1a;object NaN是一个数值类型&#xff0c;但不是…...

AI学习记录 - transformer的Embedding层

创作不易&#xff0c;免费的赞 前面有介绍了GPT2如何进行token化的过程&#xff0c;现在讲下transformer的Embedding层 Embedding层就是一个巨大的矩阵&#xff0c;边长分别是词汇表长度和词向量维度&#xff0c;矩阵里面的每一个数字都是一个随机初始化的&#xff0c;或者是…...

23-PCB封装名称的统一添加与管理

1.进入封装管理器 2. 选择对象&#xff0c;点击右侧添加按钮 3. 搜索所需要的封装 4.接受创建变更 5.执行变更 6.关闭...

【Python从入门到进阶】62、Pandas中DataFrame对象案例实践

接上篇《61、Pandas中DataFrame对象的操作&#xff08;二&#xff09;》 上一篇我们讲解DataFrame对象的统计分析、可视化以及数据导出与保存相关内容。本篇我们延续之前学习的DataFrame对象的知识&#xff0c;结合一个数据案例进行实践操作。 一、案例说明 我们将通过一个股…...

使用Python实现深度学习模型:智能环境监测与预警

介绍 智能环境监测与预警是保护生态环境和人类健康的重要手段。通过深度学习技术,我们可以实时获取环境数据,分析环境变化趋势,及时发出预警。本文将介绍如何使用Python和深度学习库TensorFlow与Keras来构建一个简单的环境监测与预警模型。 环境准备 首先,我们需要安装必…...

ThreadLocal的使用场景是什么

ThreadLocal 是 Java 中用于实现线程局部变量的工具&#xff0c;它提供了每个线程独立的变量副本&#xff0c;使得不同线程对该变量的操作不会相互干扰。以下是 ThreadLocal 的常见使用场景&#xff1a; 线程安全的对象共享&#xff1a; ThreadLocal 可以用来避免线程间共享状…...

【网络爬虫篇】逆向实战—某东:滑块验证码(逆向登录)2024.8.7最新发布,包干货,包详细

【网络爬虫篇】更多优秀文章借鉴&#xff1a; 1. 使用Selenium实现黑马头条滑块自动登录 2. 使用多线程采集爬取豆瓣top250电影榜 3. 使用Scrapy爬取去哪儿网游记数据 4. 数据采集技术综合项目实战1&#xff1a;国家水稻网数据采集与分析 5. 数据采集技术综合项目实战2&#x…...

为什么优质的酱香白酒都会带点苦味?

大家好&#xff0c;我是酱酒亮哥&#xff0c;不知大家有没有发现&#xff0c;在制作一杯美味的咖啡或是烘焙一块香脆的面包时&#xff0c;制作过程中都会有一些独特的味道和香气产生&#xff0c;对吧&#xff1f;同样地&#xff0c;酱香白酒的酿造过程也是一个复杂而精细的化学…...

软件测试常见面试题

软件测试阶段分为单元测试&#xff0c;集成测试&#xff0c;系统测试&#xff0c;验收测试。单元测试策略为对代码中的函数方法进行测试&#xff0c;目的是发现代码的问题。集成测试策略是模块中组合起来进行测试&#xff0c;要求发现与接口有关的问题。系统测试策略是子系统的…...

面试经典算法150题系列-接雨水

接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,…...

【C++】 类型转换深度探索:揭开类型转换的奥秘

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 一&#xff1a; &#x1f680; C语言中的类型转换 二&#xff1a; &#x1f525; 为什么C需要四种类型转换 三&#xff1a; &#x1f525; C强制类型转换 &#x1f95d; 3.1 st…...

深入探索Webkit的Web Authentication API:安全与便捷的融合

Web Authentication API&#xff0c;通常被称为WebAuthn&#xff0c;是一个新兴的Web标准&#xff0c;旨在通过提供更安全、更便捷的认证方式来改善用户的在线体验。随着Webkit对WebAuthn的支持日益增强&#xff0c;本文将深入探讨这一API的功能、实现方式以及如何在Webkit浏览…...

Vue - 关于v-wave 波浪动画组件

Vue - 关于v-wave 波浪动画组件 这个动画库可以在标签中添加新的v-wave属性&#xff0c;来让点击标签元素后添加漂亮的波纹效果&#xff0c;并且可以根据父元素自动形成波纹的颜色&#xff0c;也可以自定义波纹颜色&#xff0c;持续时间&#xff0c;透明度&#xff0c;触发的对…...

计算机网络408考研 2019

计算机网络408考研2019年真题解析_哔哩哔哩_bilibili 2019 1 1 1 1...

实时捕捉与追溯:得物基于 eBPF 打造云上网络连接异常摄像头

近期我们容器 SRE 团队基于 eBPF 技术建设网络连接异常感知能力&#xff0c;灰度上线过程中发现了生产环境 10 以上的应用配置错误、程序 Bug 等问题。在和应用负责同学同步风险过程中&#xff0c;大家都挺好奇我们如何实现在对应用无侵入的情况下发现服务连接异常的。本篇文档…...

ubuntu14.04图形界面配置

Ubuntu系统启动&#xff0c;输入用户密码后&#xff0c;屏幕显示彩色背景&#xff0c;但是始终不能进入图形界面。 如果你也遇到过这种情况&#xff0c;可以参照以下方法解决&#xff08;在 ubuntu14.04 验证&#xff09;。 同时按下 alt ctrl F1&#xff0c;屏幕出现 tty1&a…...

51单片机-第八节-蜂鸣器

一、什么是蜂鸣器&#xff1f; 蜂鸣器是一种将电信号转换为声音信号的器件&#xff0c;常用来产生设备的按键音、报警音等提示信号。 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器&#xff1a; 有源蜂鸣器&#xff1a;内部自带振荡源&#xff0c;将正负极接上直流电压即可…...

Windows命令查看WiFi密码

查看所有已保存的WiFi网络 &#xff08;以管理员身份&#xff09;输入以下命令 netsh wlan show profiles查看某个WiFi网络的密码 netsh wlan show profile name"你的网络名" keyclear在输出中&#xff0c;在关键内容&#xff08;Key Content&#xff09;字段下找…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...