当前位置:   article > 正文

基于区块链的合同存证应用开发_java使用区块链保存合同文件

java使用区块链保存合同文件

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

任务一:环境准备

1.启动区块链网络

目录: /root/xuperchain/output/

启动区块链网络

bash constrol.sh start
  • 1

在这里插入图片描述

2.创建钱包账户

目录: /root/xuperchain/output/

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

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

bin/xchain-cli account newkeys --output data/landlord
  • 1
  • 2
  • 3

在这里插入图片描述

3.向钱包账户转账

目录: /root/xuperchain/output/

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

cat data/tenant/address

cat daata/landlord/address
  • 1
  • 2
  • 3

在这里插入图片描述

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

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

查看账余额,命令如下:

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

在这里插入图片描述

任务二:前端工程编码

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
  • 1

2.解压前端工程

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

unzip front.zip
  • 1

3.启动前端项目

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

安装依赖:

npm install --unsafe-perm
  • 1

启动:

npm run serve
  • 1

在这里插入图片描述

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

在这里插入图片描述

任务三:配置数据库

1.连接数据库

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

mysql -uroot  -p
  • 1

2.创建数据库

创建test数据库

create database test;
  • 1

查看所有数据库

show databases;
  • 1

在这里插入图片描述

3.创建数据表

使用test数据库

use test;
  • 1

创建表

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述

任务四:编写后端程序

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>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

编辑项目配置文件 /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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

在这里插入图片描述

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

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

在/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
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/1009784
推荐阅读
相关标签
  

闽ICP备14008679号