基于区块链技术的供应链金融平台

Posted biyezuopin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于区块链技术的供应链金融平台相关的知识,希望对你有一定的参考价值。

目录
一、项目背景 1
1.1 供应链+金融场景 1
1.2 功能需求分析 2
二、方案设计 2
2.1 存储设计 2
我们使用一个列表来保存所有的债权凭证 3
2.2 基本功能 3
企业注册(该方法仅限部署该合约的认证机构调用) 4
2.3 核心功能 9
2.4 前端实现 13
2.5后端实现 16
实现智能合约方法调用接口:使用前端传过来的方法名作为索引调用方法 17
2.6编译部署 18
三、功能测试 21
3.1 功能一 22
3.2 功能二 25
3.3 功能三 29
3.4 功能四 33
四、界面展示 37
一、项目背景
1.1 供应链+金融场景
供应链(Supply Chain)是指生产及流通过程中,涉及将产品或服务提供给最终用户活动的上游与下游企业所形成的网链结构。
金融机构对不同企业的的信用评级不同,核心企业有很大的风险承担的能力,故信用评级会高于一般企业。在供应链场景中,核心企业由于资金暂时短缺向下流普通公司签订了应收账款单据,约定某个时间后还款,这个过程可以由金融机构来作见证,从而确认这笔交易的真实性。在这段时间内,若掌握核心企业"欠条"的普通企业资金短缺需要融资,它可以凭借跟核心企业签订的应收账款单据向金融结构借款,但这样的信任关系并不会往下游传递。
这种不信任关系一直沿着下游的普通企业传播,需要金融机构不断往上验证真实性,导致这个过程增加很多经济成本。导致这个问题的根本原因是核心企业的信用无法在整个供应链中传递以及交易信息不透明化所导致的。
如果我们结合区块链技术,将供应链上的每一笔交易和应收账款单据上链,同时引入第三方可信机构来确认这些信息的交易,例如银行,物流公司等,确保交易和单据的真实性,同时支持应收账款的转让,融资,清算等,就可以让核心企业的信用可以传递到供应链的下游企业,减小中小企业的融资难度。
本项目针对这样一个应用场景,基于已有的开源区块链系统FISCO-BCOS,以联盟链为主,开发基于区块链或区块链智能合约的供应链金融平台, 实现供应链应收账款资产的溯源、流转。
1.2 功能需求分析
基本功能:
1.核心企业、普通企业、金融企业的注册。
2.通过账户查询余额、查询收款单据和欠款单据和查看历史交易记录。
核心功能:
1.实现采购商品—签发应收账款交易上链。例如车企从轮胎公司购买一批轮胎并签订应收账款单据。
2.实现应收账款的转让上链,本文转载自http://www.biyezuopin.vip/onews.asp?id=16716轮胎公司从轮毂公司购买一笔轮毂,便将于车企的应收账款单据部分转让给轮毂公司。轮毂公司可以利用这个新的单据去融资或者要求车企到期时归还钱款。
3.利用应收账款向银行融资上链,供应链上所有可以利用应收账款单据向银行申请融资。
4.应收账款支付结算上链,应收账款单据到期时核心企业向下游企业支付相应的欠款。

const Configuration = require('./nodejs-sdk/packages/api').Configuration;
const Web3jService = require('./nodejs-sdk/packages/api').Web3jService;
const createContractClass = require('./nodejs-sdk/packages/api/compile/contractClass').createContractClass;

let config = new Configuration('config.json');
let web3j = new Web3jService(config);

const fs = require('fs');

// 加载智能合约
console.log('Loading contract from compiled file ...');
let compiled = JSON.parse(fs.readFileSync('compiled/SupplyChain.json'))
let contract = createContractClass(
    compiled.name, compiled.abi, compiled.bin, config.encryptType
).newInstance();
console.log('Loading deployed contract address from deployed file ...');
let contractAddr = JSON.parse(fs.readFileSync('deployed/SupplyChain.json'))['contractAddress'];
contract.$load(web3j, contractAddr);
console.log('Done.');

// 准备HTTP服务
const express = require('express');
const bodyParser = require('body-parser');
const port = 9000;
var app = express();
app.use(bodyParser.json( limit: '10mb'));
app.use(express.static('web', index: '/index.html')); // 网页根目录
function getReqData(req) 
    if (req.body && Object.keys(req.body).length) 
        return req.body;
    
    if (req.query && Object.keys(req.query).length) 
        return req.query;
    
    if (req.params && Object.keys(req.params).length) 
        return req.params;
    
    return ;


// 合约方法调用接口参数如下
// account: 字符串,调用合约的账户名,必须是config.json中已有的账户
// method: 字符串,想要调用的合约方法名字
// parameters: 列表,合约方法调用参数
// 返回一个JSON对象字符串
// ok: 布尔值,调用是否成功
// msg: 字符串,如果调用成功,则设为'succeed',否则为错误信息
// data: 列表,合约方法调用的返回值
app.all('/contractMethod', async (req, res) => 
    let reqData = getReqData(req);
    console.log(`call 'contractMethod' from ip $req.ip, params: $JSON.stringify(reqData)`);

    if (typeof(reqData.account) != 'string' || typeof(reqData.method) != 'string' ||
        !Array.isArray(reqData.parameters)
    )  // 检查接口参数类型
        console.log('failed at parameter type checking.');
        res.json(ok: false, msg: 'Bad iterface call.', data: []);
        return;
    

    // 进行合约方法调用
    try 
        contract.$by(reqData.account);
        let retval = await contract[reqData.method](...reqData.parameters);
        console.log(`retval: $JSON.stringify(retval)`);
        res.json(ok: true, msg: 'succeed', data: retval);
     catch (err)  // 出错
        let errString = err.toString();
        console.log(errString);
        res.json(ok: false, msg: errString, data: []);
    
);

var server = app.listen(port);
console.log(`server started at port $port.`)




























腾讯云正式发布区块链金融级解决方案,全面推行区块链技术商业化

在2017腾讯全球合作伙伴大会上,腾讯云正式发布区块链金融级解决方案BaaS(Blockchain as a Service)。这套构建在腾讯金融云之上,并整合了腾讯在支付、社交网络、媒体网络、征信平台等众多业界领先领域的资源在内的解决方案,将在智能合约、互助保险、大数据交易及资产交易、供应链金融与供应链管理、跨境支付/清算/审计等场景下,为金融用户提供安全、可靠、灵活的区块链服务。

区块链本质是一种防篡改的、共享的分布式账本技术,其“去中心化”的信用创造方式,在金融行业转型中表现出很好的应用前景。腾讯金融云总经理胡利明表示,腾讯云区块链金融级解决方案立足金融行业业务场景,通过定义统一的标准规范,让金融机构可以轻松地构建服务,更好地驱动智能+金融业务发展。









腾讯云区块链解决方案,直击金融业场景痛点





在传统的跨境支付/清算/审计等金融场景下,银行间清结算步骤流转较多,导致清结算完成慢,支付时间长且投入的成本费用高;在传统保险业中,保险公司需要处理的理赔单据繁多,处理单据流程时间长,导致时间成本巨大;在传统的存证、电子合同票据与用户信息的记录保全过程中,存在出证慢、流程长、票据作假的风险,并致使维权成本较高。

在众筹领域互助保险在传统运作模式下,存在平台方作弊,监管难度大,公益善款与账目不透明等风险,导致公众缺乏信心,信任无法传递;而随着大数据的数字资产交易与积分流通兑换需求增强,行业也需要金融交易系统的规范和监督。

腾讯云区块链解决方案将帮助传统金融业重构底层架构,给这些业务痛点带来解决之道,为金融业务的高效发展提供助力。

据了解,腾讯云区块链解决方案将提供共享账本和智能合约能力,这套基于区块链的分布式账本,能够保证资金流向可追溯,信息公开透明,全网信息共享;而基于区块链技术的审计和监督,将使得数据可信、可追溯;在大数据数字资产交易场景下,腾讯云区块链解决方案提供价值流通能力,能够让区块链在数字资产发行与流通中扮演资产确权、交易确认、记账、对账和清算的角色;而区块链技术的防篡改能力,将有效防止数据篡改,规避内部作弊风险。






自主研发,四大优势帮助金融行业用好区块链





全球已经有24多个国家正在投资区块链技术,80%的银行将在2017年前启动区块链项目,90多个中央银行加入了区块链讨论,90多个公司加入了区块链联盟。2016年底,“区块链”首度被写入《“十三五”国家信息化规划》。

纷繁众多的区块链技术和平台驱动了区块链行业的整体发展,但也给企业的技术选型和业务构建带来了一定的困扰。依托于腾讯金融云的底层支撑,并借助腾讯十九年来积累的海量业务能力、高并发处理能力,以及多年在金融业务中积累的丰富经验,腾讯云区块链解决方案在建设周期、成本控制、接入灵活性等方面有着极大优势。

首先,更短的建设周期。基于腾讯金融云平台资产上链,可以按需、快速的获取腾讯数据中心、硬件和网络资源,加快搭建区块链平台速度,更快的将业务服务推向市场,在瞬息万变的市场竞争中获得优势。

其次,更低的成本。传统金融公司资产上链的系统建设一次性资源投入,通过腾讯区块链即服务的模式变成按照使用付费的模式,使金融公司变身轻资产公司,降低金融业务扩展的边际成本与时间周期,提升金融公司本身的资本市场估值。

再次,更灵活的接入。腾讯云秉承开放共享的原则,以构建大区块链生态为目的,提供端到端、多点连接等各种接入方式,不限定对端端节点的使用平台,用户可自由地接入腾讯云区块链服务。


目前,腾讯云与爱心人寿正在进行深度战略合作,探索将医疗机构、保险公司、卫生信息平台等组织成区块链联盟,打通诸多相关环节,将数字存证信息安全高效地保存在区块链上,力争从根本上解决医疗数字信息的安全性、关联性等应用技术问题,实现真正意义上的医疗、保险等信息安全共享和互联互通,同时通过快速理赔、智能理赔等目标。为客户提供高效直通安全优价的健康医疗和保险保障服务。

“区块链技术仍处于探索初期,但是在金融行业中已经表现出很好的应用前景。腾讯云期待与更多企业和机构携手,打造开放分享、能力全面,标准统一的区块链生态,推动这项技术更好地服务于金融行业发展和数字化信任社会的构建。”胡利明表示。

据了解,以云计算技术为依托,腾讯云还在不断探索金融科技能力,为金融机构和企业创新智能+金融业务模式提供更好助力。据了解,目前腾讯云在国内的金融客户超过5000家,覆盖银行、证券、保险等各大金融企业。在银行领域,腾讯金融云已覆盖了四大行、城商行、农商行等;在保险行业,领域内超过80%的保险公司采用腾讯云托管业务;在证券交易所领域,香港交易所在国内的交易中心就是采用腾讯云混合云的模式构建的创新型交易所。


以上是关于基于区块链技术的供应链金融平台的主要内容,如果未能解决你的问题,请参考以下文章

腾讯云正式发布区块链金融级解决方案,全面推行区块链技术商业化

区块链作为金融基础设施发展

基于区块链的供应链金融系统解决方案—我的程序员学院课程

区块链早餐:央行等多部门要求供应链金融各参与方合理运用区块链等技术(2020年9月23日,周三)

区块链技术在金融领域应用发展情况

区块链使能的供应链金融——区块链信息治理