# 区块链原理与技术
# 一、项目背景
某车企(宝马)因为其造车技术特别牛,消费者口碑好,所以其在同行业中占据绝对优势 地位。因此,在金融机构(银行)对该车企的信用评级将很高,认为他有很大的风险承担的 能力。在某次交易中,该车企从轮胎公司购买了一批轮胎,但由于资金暂时短缺向轮胎公司 签订了 1000 万的应收账款单据,承诺 1 年后归还轮胎公司 1000 万。这个过程可以拉上金融机构例如银行来对这笔交易作见证,确认这笔交易的真实性。在接下里的几个月里,轮胎公司因为资金短缺需要融资,这个时候它可以凭借跟某车企签订的应收账款单据向金融结构借款,金融机构认可该车企(核心企业)的还款能力,因此愿意借款给轮胎公司。但是,这样的信任关系并不会往下游传递。在某个交易中,轮胎公司从轮毂公司购买了一批轮毂,但由于租金暂时短缺向轮胎公司签订了 500 万的应收账款单据,承诺 1 年后归还轮胎公司500万。当轮毂公司想利用这个应收账款单据向金融机构借款融资的时候,金融机构因为不认可 轮胎公司的还款能力,需要对轮胎公司进行详细的信用分析以评估其还款能力同时验证应收 账款单据的真实性,才能决定是否借款给轮毂公司。这个过程将增加很多经济成本,而这个 问题主要是由于该车企的信用无法在整个供应链中传递以及交易信息不透明化所导致的实现功能:
功能一:实现采购商品—签发应收账款易上链。例如车企从轮胎公司购买一批轮胎并签订应收账款单据。
功能二:实现应收账款的转让上链,轮胎公司从轮毂公司购买一笔轮毂,便将于车企的应收账款单据部分转让给轮毂公司。轮毂公司可以利用这个新的单据去融资或者要求车企到期时归还钱款。
功能三:利用应收账款向银行融资上链,供应链上所有可以利用应收账款单据向银行申请融资。
功能四:应收账款支付结算上链,应收账款单据到期时核心企业向下游企业支付相应的欠款。
# 二、方案设计
一个简单的数据流图如下(手绘版,画的比较草)
![](https://www.writebug.com/myres/static/uploads/2021/11/8/97eb1b273d06020075fbca281ba0d639.writebug)
在阶段二中,我们已经编写了合约成功实现了本次作业所需要的功能,但由于一些原因,阶段二的合约不能够直接拿到这里面来用其中有一个地方就是在阶段二中,我们可以直接在浏览器中进行用户的注册,但是在这里面不行,需要自己来搞用户的注册在这里,我参照了 FISCO BCOS 官网教程里面的例子,他的例子里面存储结构使用了一个表,表的内容有两项,分别是账户名以及资产,(我原本想把债务加上去,但是在改变表的过程中会出现一些莫名其妙的问题,所以我就把债务按照阶段二的方法单拿出来了) 注册的过程其实就是往表里面添加一项关键代码如下
![](https://www.writebug.com/myres/static/uploads/2021/11/8/b9cc03dd507ff71dd6747875f20044b8.writebug)
Loan 函数遵循了阶段二中的思路,先检测 AB 两厂之间有没有借过钱,有的话就直接在旧的债务上添加金额就可以了,没有的话就新建债务账单核心代码如下
![](https://www.writebug.com/myres/static/uploads/2021/11/8/648a3ce8caec300a951a52821061a174.writebug)
Partsend 函数:这个函数可以说是本次作业中最复杂的一个函数了,涉及到部分合约转让,这里依旧延续了阶段二中相关合约的设计
**当前需要借钱的数目小于当前账单的额度**
这种情况就需要在当前的账单中将相应的额度减掉,然后再给 receiver 以及账单的原债务人各添加一份相应的合约
![](https://www.writebug.com/myres/static/uploads/2021/11/8/89cbb1e3e7d71caade248d8fd6284bf4.writebug)
当前需要借钱的数目大于当前账单的额度
这种情况跟刚才的情况是类似的,只不过将当前账单直接归 0,然后给 receiver 以及账单的原债务人各添加一份相应的合约,并继续遍历
![](https://www.writebug.com/myres/static/uploads/2021/11/8/0a4929b3ff518da61a2c5dc3c74563d6.writebug)
最后是 pay 函数,这个函数的功能是偿还债务,这里也有些麻烦,因为不但要在债务数额上变化,在资产上也要有相应的变化,资产方面也要有相应的更改,在资产方面我遵循了网站上样例的设计,在表中检索到合约之后对资产进行增加/减少,而在合约方面我遵照了阶段二的思路: 总体思路就是先通过遍历找到相应的合约,如果 money 大于账单上面的数额,则返回错误,小于等于的话就在相应账单中减去相应数额
![](https://www.writebug.com/myres/static/uploads/2021/11/8/657eeed6bdaa483f49625b1fb6e21b0d.writebug)
# 三、功能测试
首先对合约进行编译和部署
![](https://www.writebug.com/myres/static/uploads/2021/11/8/eb9c7c2c7657e79cb46cf10484ea10fa.writebug)
然后进行资产的注册
![](https://www.writebug.com/myres/static/uploads/2021/11/8/c7cc710f7854077c34dd677822223daf.writebug)
可见注册资产成功,汽车厂,轮胎厂,轮毂厂都注册了 1000W loan 函数:宝马厂购买轮胎,向轮胎厂贷款 500W
![](https://www.writebug.com/myres/static/uploads/2021/11/8/caee1cc8f591c328f7f2f088f8f212f5.writebug)
queryloan 函数:用来查询债务,比如前面汽车厂向轮胎厂借了 500W
![](https://www.writebug.com/myres/static/uploads/2021/11/8/43e3c58725cec21d9e0ebd5da97c4117.writebug)
然后还需要进行的是债务的转让
轮胎厂向轮毂厂借了 200W 当然轮胎厂手里还有汽车厂 500W 的账,所以它大可以拿着这 500W 的账来支付这 200W
![](https://www.writebug.com/myres/static/uploads/2021/11/8/8cd4447198d05cb9da8de084f90936ad.writebug)
这样就完成了债务的转让,那么这时候应该是汽车厂有两笔债务,一共 500W,轮胎厂 300W,轮毂厂 200W
![](https://www.writebug.com/myres/static/uploads/2021/11/8/3e1a8cfc08d6804f92ed95d1ff0674a7.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/11/8/4ffdf85a91d5cd7583a796fa3e5b4562.writebug)
接下来测试偿还函数现在汽车厂欠轮胎厂 300W,在这里先偿还 200W
![](https://www.writebug.com/myres/static/uploads/2021/11/8/3eee06ac0bd2b3142b01c982d3ae7806.writebug)
还了钱以后,两边资产数量都有变化,汽车厂资产为 800W,轮胎厂资产为 1200W,查询一下两厂之间的债务发现只剩下了 100W
# 四、界面设计
UI 是自己糊的,没用模板,所以特别丑,仅仅是能用登录界面
![](https://www.writebug.com/myres/static/uploads/2021/11/8/0acc98a36136522cdb3c1c8e8186067b.writebug)
登录之后切到这个界面来
![](https://www.writebug.com/myres/static/uploads/2021/11/8/b28dcf3c8be32bd951b85650e46a1b77.writebug)
这就是 4 个功能,贷款,转让合约,查询,付款贷款界面
![](https://www.writebug.com/myres/static/uploads/2021/11/8/032d0748c55de3030034e0d8b430f161.writebug)
转让合约
![](https://www.writebug.com/myres/static/uploads/2021/11/8/97e1c3b6fca77fdb06a0b488ced2d79e.writebug)
支付
![](https://www.writebug.com/myres/static/uploads/2021/11/8/3ebfa7f84bea71b7084644f75d8d2c1c.writebug)
# 五、心得体会
对我来说这次大作业难度还是挺大的,因为这次作业是要求做全栈,方方面面都要考虑到,网上的参考资料也不多,所以有些时候会遇到很多困难,这里面涉及的绝大多数内容都得从头学起,之前从来都没有接触过,从 FISCO-BCOS 的环境,再到用 solidity 语言编写合约,把合约编译成 Java,再到第三阶段用 JDK 将链端和后
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
功能一:实现采购商品—签发应收账款易上链。例如车企从轮胎公司购买一批轮胎并签订应收账款单据。 功能二:实现应收账款的转让上链,轮胎公司从轮毂公司购买一笔轮毂,便将于车企的应收账款单据部分转让给轮毂公司。轮毂公司可以利用这个新的单据去融资或者要求车企到期时归还钱款。 功能三:利用应收账款向银行融资上链,供应链上所有可以利用应收账款单据向银行申请融资。 功能四:应收账款支付结算上链,应收账款单据到期时核心企业向下游企业支付相应的欠款。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java进行区块链原理实验【100013103】 (130个子文件)
.classpath 1KB
sdk.crt 2KB
node.crt 2KB
ca.crt 1KB
.gitignore 18B
build.gradle 1KB
gradlew 6KB
login.html 1KB
loan.html 1KB
trans.html 1KB
start.html 1KB
paymoney.html 1017B
query.html 436B
solcJ-all-0.4.25.jar 11MB
bcprov-jdk15on-1.60.jar 4MB
netty-all-4.1.32.Final.jar 3.73MB
byte-buddy-1.9.0.jar 3.02MB
netty-tcnative-boringssl-static-2.0.20.Final.jar 2.88MB
guava-28.1-jre.jar 2.63MB
rxjava-2.2.2.jar 2.22MB
druid-1.0.29.jar 2.05MB
web3sdk-2.1.0.jar 1.55MB
jackson-databind-2.9.9.2.jar 1.29MB
spring-context-4.3.25.RELEASE.jar 1.09MB
rxjava-1.2.4.jar 1.09MB
spring-core-4.3.25.RELEASE.jar 1.08MB
httpclient-4.5.5.jar 748KB
spring-beans-4.3.25.RELEASE.jar 747KB
jnr-ffi-2.1.2.jar 662KB
fastjson-1.2.60.jar 637KB
jffi-1.2.14-native.jar 620KB
commons-collections4-4.0.jar 596KB
mockito-core-2.23.0.jar 552KB
log4j-1.2.17.jar 478KB
spring-aop-4.3.25.RELEASE.jar 371KB
commons-configuration-1.10.jar 354KB
jnr-constants-0.9.6.jar 338KB
jackson-core-2.9.9.jar 318KB
httpcore-4.4.9.jar 318KB
commons-lang3-3.1.jar 308KB
junit-4.12.jar 308KB
commons-lang-2.6.jar 278KB
commons-codec-1.10.jar 278KB
spring-expression-4.3.25.RELEASE.jar 269KB
spring-tx-4.3.25.RELEASE.jar 262KB
picocli-3.6.0.jar 237KB
jnr-posix-3.0.33.jar 221KB
jnr-x86asm-1.0.2.jar 215KB
checker-qual-2.8.1.jar 196KB
commons-io-2.4.jar 181KB
jffi-1.2.14.jar 146KB
Java-WebSocket-1.3.8.jar 114KB
javapoet-1.7.0.jar 86KB
jackson-annotations-2.9.0.jar 65KB
commons-logging-1.2.jar 60KB
objenesis-2.6.jar 54KB
gradle-wrapper.jar 54KB
asm-5.0.3.jar 52KB
scrypt-1.4.0.jar 49KB
hamcrest-core-1.3.jar 44KB
jnr-unixsocket-0.15.jar 44KB
asm-util-5.0.3.jar 42KB
byte-buddy-agent-1.9.0.jar 42KB
asm-commons-5.0.3.jar 41KB
slf4j-api-1.7.25.jar 40KB
system-rules-1.18.0.jar 38KB
asm-tree-5.0.3.jar 28KB
jnr-enxio-0.14.jar 27KB
asset-app.jar 27KB
netty-tcnative-2.0.25.Final.jar 26KB
asm-analysis-5.0.3.jar 20KB
jsr305-3.0.2.jar 19KB
error_prone_annotations-2.3.2.jar 13KB
slf4j-log4j12-1.7.25.jar 12KB
j2objc-annotations-1.3.jar 9KB
failureaccess-1.0.1.jar 5KB
animal-sniffer-annotations-1.18.jar 3KB
listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar 2KB
reactive-streams-1.0.2.jar 2KB
Asset.java 40KB
Stage3.java 9KB
sdk.key 237B
node.key 237B
LICENSE 1KB
demo_debug.log 57KB
demo_error.log 0B
README.md 10KB
区块链.pdf 878KB
17343023董宸宇.pdf 878KB
6-1dbffe361b89e24720f10df2c92fb37a.png 141KB
1-ef6d7f074df4a8a7ddb5e975d0cd255c.png 86KB
14-61342fef8cb794fde6fbb78e1156b568.png 86KB
3-922eb507c33e3a47eee5a4712e31ce55.png 85KB
8-30375adf647e5d3c384ab7237b2a11c1.png 82KB
7-a88383ddde3c70bfbdaf9dc86530b115.png 60KB
4-5a2065e84325e37a888f719d0742f1a5.png 60KB
5-c728f8d583cff8c84454027de2efb7c2.png 44KB
2-5fd7017fc31c3957c6e9a0b0090994b5.png 29KB
9-e7ed2c69b1bab36cb4ff2a43b08c50c8.png 29KB
12-17c2fa189009cb2e25c61bf5359474f7.png 26KB
共 130 条
- 1
- 2
资源评论
神仙别闹
- 粉丝: 2687
- 资源: 7642
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- TG-2024-05-23-204718255.mp4
- 候志强@181 5428 8938_20240420112107.amr
- spispispispispi
- 实验二:IP协议分析.zip
- 驱动代码驱动代码驱动代码驱动代码
- SVID_20240523_141155_1.mp4
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功