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

news2024/9/21 20:40:21

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

任务一:环境准备

1.启动区块链网络

目录: /root/xuperchain/output/

启动区块链网络

bash constrol.sh start

在这里插入图片描述

2.创建钱包账户

目录: /root/xuperchain/output/

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

bin/xchain-cli account newkeys --output data/tenant

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

在这里插入图片描述

3.向钱包账户转账

目录: /root/xuperchain/output/

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

cat data/tenant/address

cat 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1994391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 SpringBoot 的 会员制医疗预约服务管理信息系统

开发技术 JavaMySQLSpringBoot 系统分析 需求分析 会员制医疗预约服务管理信息系统的作用&#xff0c;可以提高会员制医疗预约服务管理的工作人员的效率&#xff0c;协助他们对会员制医疗预约服务信息进行统一管理&#xff0c;为管理者提供信息储存和查询搜索系统。一个良好…

【LVS】部署DR模式集群

一、配置实验环境 每台主机的防火墙和SELinux都要关掉 systemctl stop firewalld setenforce 0 1、client(eth0为nat模式) 配置好网卡IP和网关IP&#xff0c;然后重启网卡 nmcli connection reload nmcli connection up eth0 [rootclient ~]# cat /etc/NetworkManager/syst…

AI赋能周界安防:智能视频分析技术构建无懈可击的安全防线

周界安全防范是保护机场、电站、油库、监狱、工业园区等关键设施免受非法入侵和破坏的重要措施。传统的周界安防手段主要依靠人员巡查和物理屏障&#xff0c;但这种方式不仅人力成本高&#xff0c;而且效率较低&#xff0c;难以满足日益复杂多变的安全需求。随着AI技术的引入&a…

3 个关键让你的 Matplotlib 图表高效发布

文章缩略图&#xff08;作者提供的图片&#xff09; 数据可视化比查看原始数字数据提供了更深刻的见解。 然而&#xff0c;创建吸引人的图表需要时间和精力。Matplotlib 是 Python 中数据可视化的事实标准库。它很简单&#xff0c;已经使用了几十年&#xff0c;而且你正在寻找…

数字IC验证基础知识

1. 形式验证 利用数学分析的方式&#xff0c;对设计的状态空间进行穷举分析的验证&#xff0c;数据静态验证&#xff0c;不需要灌注激励&#xff0c;对设计进行检查&#xff1b; 参考&#xff1a; Formal Verification (一) 形式验证的分类、发展、适用场景

在 Django 表单中传递自定义表单值到视图

在Django中&#xff0c;我们可以通过表单的初始化参数initial来传递自定义的初始值给表单字段。如果我们想要在视图中设置表单的初始值&#xff0c;可以在视图中创建表单的实例时&#xff0c;传递一个字典给initial参数。 1、问题背景 我们遇到了这样一个问题&#xff1a;在使…

安卓默认混淆规则文件的区别

在 Android 项目中&#xff0c;ProGuard 是一个优化和混淆代码的工具。proguard-android-optimize.txt 和 proguard-android.txt 是两个用于配置 ProGuard 的默认规则文件&#xff0c;如图下 它们有以下区别&#xff1a; proguard-android-optimize.txt: 优化&#xff1a;这个配…

基于Hadoop的北京市二手房价数据分析与可视化

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍总结每文 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 随着中国经济的快速发展和城市化进程的加速&#xff0c;房地产市场已成为国民经…

基于Java中的SSM框架实现在线网上书店系统项目【项目源码+论文说明】

基于Java中的SSM框架实现在线网上书店系统演示 摘要 本文介绍了利用JSP技术实现动态网上书店的发展概况、技术特点、应用原理和方法&#xff0c;充分突出了JSP技术的优越性。 本文简要论述了电子商务的优势、对社会的影响以及建立电子商务网站应注意的问题&#xff0c;并介绍了…

喜报|热烈祝贺超维WO—100室外轮式巡检机器人取得中国电力科学研究院产品检测合格证书

近日&#xff0c;超维WO—100室外轮式巡检机器人顺利通过中国电力科学研究院&#xff08;武汉高压研究所&#xff09;的资料审查、测试、及综合评估&#xff0c;并取得产品检测合格证书&#xff01; 中国电力科学研究院是中国最权威的实验室认可机构&#xff0c;其认证结果得到…

代码随想录——判断子序列(Leetcode 392)

题目链接 双指针 思路&#xff1a; 初始化两个指针 i 和 j&#xff0c;分别指向 s 和 t 的初始位置。每次贪心地匹配&#xff0c;匹配成功则 i 和 j 同时右移&#xff0c;匹配 s 的下一个位置&#xff0c;匹配失败则 j 右移&#xff0c;i 不变&#xff0c;尝试用 t 的下一个字…

《Techporters架构搭建》-Day04 基础架构

功能权限代码 从代码分层开始分层设计是什么&#xff1f;有什么好处&#xff1f;分层设计带来的好处项目分层的目的阿里分层建议DDD分层 代码编写实体类Mapper层结构设计 Service层结构设计 Controller层结构设计 规范及设计遵循Restful API遵循领域模型规约对象拷贝统一接口返…

H20 GPU算力评估分析

H20算力秘密: GPU算力评估 一、从H20谈起 NVIDIA国内热销H20显卡&#xff0c;TFLOPS达标&#xff0c;却声称能媲美A800/A100&#xff0c;究竟凭何底气&#xff1f;揭秘其背后的性能奥秘。 看下表&#xff1a; H20的FP16 TFLOPS为148&#xff0c;虽不及A800的312&#xff0c;但…

Pandas DataFrame 多条件索引

问题背景 在数据分析和处理中&#xff0c;经常需要根据特定条件过滤数据&#xff0c;以提取感兴趣的信息。Pandas DataFrame 提供了多种灵活的方式来索引数据&#xff0c;其中一种是使用多条件索引&#xff0c;它允许使用逻辑条件组合来选择满足所有条件的行。 解决方案 可以…

Web开发-CSS篇-上

CSS的发展历史 CSS&#xff08;层叠样式表&#xff09;最初由万维网联盟&#xff08;W3C&#xff09;于1996年发布。CSS1是最早的版本&#xff0c;它为网页设计提供了基本的样式功能&#xff0c;如字体、颜色和间距。随着互联网的发展&#xff0c;CSS也不断演进&#xff1a; C…

AI人工智能 强化学习

AI人工智能 强化学习基础 强化学习基础 这种类型的学习被用来加强或加强基于评论者信息的网络。 也就是说&#xff0c;在强化学习下训练的网络从环境中获得一些反馈。 但是&#xff0c;反馈是评价性的&#xff0c;并且不像监督式学习的情况那样具有启发性。 基于这种反馈&…

Python自动化水印处理:让你的图像版权保护更高效

在这个数字化时代&#xff0c;图像和照片已成为我们日常生活和工作中的重要组成部分。然而&#xff0c;随着互联网的普及&#xff0c;版权保护变得越来越具有挑战性。 在这个数字化时代&#xff0c;图像和照片已成为我们日常生活和工作中的重要组成部分。然而&#xff0c;随着…

在线音频剪辑免费工具哪个好用?推荐这6款新手必备的工具

在这个声音无处不在的时代&#xff0c;音频剪辑不仅是专业音乐人的专利&#xff0c;更是每个新媒体运营者不可或缺的利器。 无论是制作引人入胜的短视频背景音乐&#xff0c;还是编辑动人心弦的播客内容&#xff0c;一款强大的音频剪辑工具都能让你的作品如虎添翼。 今天&…

Linux系统之ls命令的基本使用

Linux系统之ls命令的基本使用 一、ls命令介绍二、ls命令的使用帮助2.1 命令格式2.2 命令选项2.3 使用帮助 三、ls命令的基本使用3.1 列出当前目录中的所有文件和目录3.2 列出指定目录中的所有文件和目录3.3 显示文件的详细信息3.4 列出所有文件和目录3.5 显示目录本身&#xff…

临床必备!常用的营养评估量表分享,附操作步骤与评分标准

常笑医学整理了3个临床常用的营养评估量表&#xff0c;支持下载和在线使用&#xff0c;供临床医护工作人员参考。 01 营养风险筛查评分简表 &#xff08;完整量表请点击量表名称查看&#xff09; NRS2002&#xff08;Nutrition Risk Screening 2002, NRS2002&#xff09;是欧洲…