基于区块链的金融凭证应用开发

基于区块链的金融凭证应用开发

这个项目旨在开发一个基于区块链技术的金融凭证应用平台,用于提升供应链金融中应收账款管理的效率和透明度。通过将应收账款资产上链,并利用智能合约实现债权凭证的转让与拆分,项目目标是降低融资成本、增强信用分析能力,并推动供应链金融的数字化转型。核心功能包括资产上链、凭证管理、信用分析与报告以及确保安全与合规性。

任务一:环境准备

1. 搭建并启动区块链网络

目录:/root/tools/ 搭建区块链网络

bash buil_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -e /root/tools/fisco-bcos

在这里插入图片描述

启动区块链网络

bash nodes/127.0.0.1/start_all.sh

配置前置平台环境变量

目录:/root/tools/webase-front

配置环境变量

cp nodes/127.0.0.1/sdk/* webase-front/conf/

echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/" >> /etc/profile

source /etc/profile

启动webase平台

bash start.sh

在这里插入图片描述

在浏览器访问webase-front 地址为:http://127.0.0.1:5002/WeBASE-Front

在这里插入图片描述

2.编译合约文件

新建user、bank、company用户

在这里插入图片描述

在这里插入图片描述

上传合约

在这里插入图片描述

编译SupplyChainFin合约

在这里插入图片描述

部署SupplyChainFin合约,参数随便填,得到合约地址

在这里插入图片描述

部署成功得到合约地址

在这里插入图片描述

任务二:前端工程编码

1.下载前端工程

目录:/root/Desktop

wget http://res.zhonghui.vip/blockchain-3/综合实训2/front.zip

2.解压前端工程

unzip front.zip

3.打开前端工程

将front工程拖入vscod

4.下载依赖包

打开终端Terminal

npm install

在这里插入图片描述

5.启动前端工程

在vue.config,js中修改后端代理接口地址target为:http://localhost:8080/并保存

在这里插入图片描述

启动项目

npm run serve

在这里插入图片描述

6.访问项目地址

http://localhost:8020/

在这里插入图片描述

任务三:编写后端程序

1.构建Java项目

打开Intellij IDEA, 点击新建项目,设置项目名为:finance,项目位置:~/Desktop,语言:Java, 构建 系统:gradle,JDK: 11, gradle版本:6.6,点击创建。

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

可选择删除Main.java示例文件

在这里插入图片描述

修改gradle依赖 将项目生成的build.gradle.kts和settings.gradle.kts重构为build.gradle和settings.gradle

在这里插入图片描述

修改build.gradle文件内容为

buildscript {
repositories {
mavenCentral()
maven { url "https://maven.aliyun.com/nexus/content/groups/public/"}
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
mavenLocal()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradleplugin:2.1.1.RELEASE")
}
}
plugins {
id 'org.springframework.boot' version '2.1.1.RELEASE'
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'maven-publish'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
sourceCompatibility = 1.8
targetCompatibility = 1.8
group = 'org.example'
version = '1.0.0-SNAPSHOT'
repositories {
mavenLocal()
mavenCentral()
maven { url "https://maven.aliyun.com/nexus/content/groups/public/"}
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
maven { url "https://dl.bintray.com/ethereum/maven/" }
maven { url "https://oss.sonatype.org/service/local/staging/deploy/maven2"}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
all {
resolutionStrategy.cacheDynamicVersionsFor 24000, 'hours'
resolutionStrategy.cacheChangingModulesFor 24000, 'hours'
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.slf4j:slf4j-api:1.7.5'
implementation 'org.junit.jupiter:junit-jupiter:5.7.0'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
implementation ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:2.8.0') {
exclude group: 'org.slf4j'
}
implementation 'io.springfox:springfox-swagger2:2.6.1'
implementation 'io.springfox:springfox-swagger-ui:2.6.1'
implementation 'cn.hutool:hutool-all:5.7.9'
implementation group: 'org.springframework.boot', name: 'spring-boot-starterdata-redis', version: '2.5.3'
implementation group: 'org.freemarker', name: 'freemarker', version:
'2.3.29'
implementation 'org.apache.httpcomponents:httpclient:4.5.13'
}
sourceSets {
main {
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/main/resources'
}
}
}
test {
useJUnitPlatform()
}
bootJar {
destinationDir file('dist')
archiveName project.name + '-exec.jar'
doLast {
copy {
from file('src/main/resources')
into 'dist'
}
}
}
clean {
println "delete ${projectDir}/dist"
delete "${projectDir}/dist"
}

修改项目配置文件 /root/Desktop/finance/src/main/resources 目录下创建application.properties文件

在这里插入图片描述

编辑配置文件内容

### Please fill this address if you want to use related service
system.contract.supplyChainFinAddress=0xca530a7595a314d7dba921311d1263dceebe575d
### ### Springboot server config
server.port=8080
server.session.timeout=60
banner.charset=UTF-8
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
#WeBASE-Front URL
project.webase-url=http://127.0.0.1:5002/WeBASE-Front/trans/handle

在/root/Desktop/finance/src/main/resources 目录下创建conf目录

在这里插入图片描述

新建终端,将节点SDK证书拷贝到conf目录下

在这里插入图片描述

在/root/Desktop/finance/src/main/resources 目录下创建abi目录

在这里插入图片描述

在abi目录下创建SupplyChainFin.abi文件

在这里插入图片描述

编辑SupplyChainFin.abi,回到webase-front节点控制台,在SupplyChainFin合约部署界面找到abi并 复制

在这里插入图片描述

复制至SupplyChainFin.abi

在这里插入图片描述

至此,项目resource配置文件已经完成,目录结构如下:

在这里插入图片描述

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

在这里插入图片描述

代码一

代码文件路径:/root/Desktop/finance/src/main/java/org/example/finance/model/bo/LoginBO.java

新建LoginBO.java文件,实现创建用户登录信息的业务对象,提供访问和修改用户地址和用户类型的方 法等功能

代码如下:

package org.example.finance.model.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(value = "用户登录 BO")
public class LoginBO {
@ApiModelProperty(value = "用户地址")
String address;
@ApiModelProperty(value = "用户类型")
Integer orgType;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Integer getOrgType() {
return orgType;
}
public void setOrgType(Integer orgType) {
this.orgType = orgType;
}
}

代码二

代码文件路径:/root/Desktop/finance/src/main/java/org/example/finance/model/bo/RegisterBo.java

新建RegisterBo.java文件,实现创建用于表示用户注册信息的业务对象,提供访问和修改用户名,组织 类型和区块链账户地址的方法 代码如下:

package org.example.finance.model.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(value = "注册BO")
public class RegisterBO {
@ApiModelProperty(value = "用户名")
String username;
@ApiModelProperty(value = "组织类型")
Integer orgType;
@ApiModelProperty(value = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么都想学。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值