大家好,关于企业短期融资工具详解:商业票据全解析很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
首先,MagnetoCorp 的员工Isabella 代表MagnetoCorp 发行商业票据。 DigiBank 员工Balaji 购买了这张商业票据,持有一段时间,然后以微薄的利润与MagnetoCorp 交换。
1. 前提条件
节点版本8.9.0 或更高版本
Docker 版本18.06 或更高版本
2. 下载样本
首先下载存储库。
创建一个相对于$GOPATH 安装位置的目录Fabric-samples:
$ mkdir -p $GOPATH/src/github.com/hyperledger/
$ cd $GOPATH/src/github.com/hyperledger/
使用命令将存储库复制到此位置
$ git clonehttps://github.com/hyperledger/fabric-samples.git
检查以下目录结构fabric-samples:
$ cd 面料样品
$ls
CODE_OF_CONDUCT.md 平衡传输结构-ca
CONTRIBUTING.md 基本网络第一网络
Jenkinsfile 链码高吞吐量
许可chaincode-docker-devmode 脚本
MAINTAINERS.md 商业论文README.md
法卡
商业票据是我们的样本所在的位置
三、创建网络
Hyperledger Fabric 基本网络包括节点及其账本数据库、订购者和证书颁发机构(CA)。这些组件中的每一个都作为Docker 容器运行。对等点、其账本、排序者和CA 都在自己的Docker 容器中运行。在生产环境中,组织经常使用与其他系统共享的CA。
使用fabric-samplesbasic-network 目录中包含的命令和配置来管理基本网络。使用start.shshell 脚本在本地计算机上启动网络:
$cd go/src/github.com/hyperledger/fabric/fabric-samples
$ cd 基本网络
$ ./start.sh
显示如下:
# 不要重写Windows Git Bash 用户的路径
导出MSYS_NO_PATHCONV=1
docker-compose -f docker-compose.yml down
删除网络net_basic
警告: 未找到网络net_basic。
docker-compose -f docker-compose.yml up -dca.example.comorderer.example.compeer0.org1.example.comcouchdb
使用默认驱动程序创建网络“net_basic”
创建orderer.example.com.完成
创建couchdb.完成
创建ca.example.com.完成
创建peer0.org1.example.com.完成
# 等待Hyperledger Fabric 启动
# 如果运行后续命令时出现错误,请发出export FABRIC_START_TIMEOUT=
导出FABRIC_START_TIMEOUT=10
#echo ${FABRIC_START_TIMEOUT}
睡眠${FABRIC_START_TIMEOUT}
#创建频道
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp"peer0.org1.example.compeer 通道创建-oorderer.example.com:7050-c mychannel -f /etc/hyperledger/configtx/channel.tx
2019-04-03 08:26:24.956 UTC [channelCmd] InitCmdFactory -INFO 001 背书者和排序者连接已初始化
2019-04-03 08:26:25.032 UTC [cli.common] readBlock -INFO 002 收到块: 0
# 加入peer0.org1.example.com 频道。
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp"peer0.org1.example.compeer 通道加入-b mychannel.block
2019-04-03 08:26:25.266 UTC [channelCmd] InitCmdFactory -INFO 001 背书者和排序者连接已初始化
2019-04-03 08:26:25.443 UTC [channelCmd]executeJoin -INFO 002 成功提交加入频道的提案
使用以下命令列出运行基本网络组件的docker 容器: dockerps
如上图所示:
对等peer0.org1.example.com正在容器99b62198d527中运行
排序者orderer.example.com 在容器中运行8c2f02a19878
CouchDB数据库couchdb正在容器460bef2fa1a7中运行
CAca.example.com 正在容器中运行c9ca1844db50
四、MagnetoCorp工作
要监控PaperNet 的MagnetoCorp 组件,管理员可以使用logspout 工具查看一组docker 容器的聚合输出。它将不同的输出流收集到一个地方,从而可以轻松查看单个窗口中发生的情况。以MagnetoCorp 管理员身份监控PaperNet。在fabric-samples目录中打开一个新窗口,找到并运行monitordocker.sh脚本,为与docker网络关联的PaperNet docker容器启动logspout工具net_basic:
$ cd go/src/github.com/hyperledger/fabric/fabric-samples
$ cd 商业票据/组织/magnetocorp/configuration/cli/
$ ./monitordocker.sh net_basic
这个命令会阻塞在这里,这个窗口会显示docker容器的输出,后续的操作会启动另一个终端窗口。
要与PaperNet 交互,MagnetoCorp 管理员需要使用Hyperledger Fabric 命令。使用docker-compose 命令为管理员启动MagnetoCorp 特定的docker 容器:
$ cd 商业票据/组织/magnetocorp/configuration/cli/
$ docker-compose -f docker-compose.yml up -d cliMagnetoCorp
$ 码头工人PS
MagnetoCorp 管理员将使用容器中的命令行bdd2b37483ab 与PaperNet 交互。
Logspout 容器68a74abda1e4 正在捕获monitordocker.sh 命令的所有其他docker 容器的输出。
五、智能合约
发行、购买和赎回是PaperNet智能合约的三大功能。应用程序使用它来相应地在分类账上提交商业票据的发行、购买和赎回交易。
检查这个智能合约:
代表MagnetoCorp 开发人员打开一个新的终端窗口,并切换到包含MagnetoCorp 智能合约副本的目录。
$ cd 商业票据/组织/magnetocorp/合同
$ 代码.
#使用VS Code 查看。在lib文件夹的目录中,papercontract.js文件包含商业票据智能合约。
关键程序行:
const{Contract,Context}=require("fabric-contract-api");
该声明涵盖了两个关键的Hyperledger Fabric 类Contract 和Context。
类CommercialPaperContractextendsContract{
这基于内置的FabricContract 类定义了CommercialPaperContract 智能合约类。该类定义了其实现的关键交易方法,即发行、购买和赎回商业票据。
asyncissue(ctx,发行人,paperNumber,issueDateTime,maturityDateTime.){
该方法定义了issuePaperNet 的商业票据交易。传递给此方法的参数将用于创建新的商业票据。
letpaper=CommercialPaper.createInstance(发行者,paperNumber,issueDateTime.);
在发行交易中,此语句使用CommercialPaper 类和提供的交易输入在内存中创建新的商业票据。
waitctx.paperList.addPaper(paper);
此语句使用PaperList 类ctx.paperList 的实例将新的商业票据添加到分类帐CommercialPaperContext 中,该实例是在初始化智能合约上下文时创建的。
returnpaper.toBuffer();
该语句返回一个二进制缓冲区作为对问题交易的响应,以供智能合约的调用者处理。
六、安装合同
在应用程序调用papercontract 之前,它必须安装在PaperNet 中相应的对等节点上。
MagnetoCorp 管理员使用此命令将智能合约从本地计算机的文件系统复制到目标对等方docker 容器中的文件系统。一旦智能合约安装在对等点上并在通道上实例化,应用程序就可以调用它,并通过putState() 和getState() Fabric API 与账本数据库进行交互。
现在为MagnetoCorp 管理员安装papercontract。在MagnetoCorp 管理员的命令窗口中,使用以下命令在容器中运行命令:
$docker exec cliMagnetoCorp 对等链码安装-n papercontract -v 0 -p /opt/gopath/src/github.com/contract-l 节点
cliMagnetCorp 容器的命令设置CORE_PEER_ADDRESS=peer0.org1.example.com:7051 指向peer0.org1.example.com,并指示该对等点已成功安装。
7. 实例化合约
MagnetoCorp 管理员实例化包含智能合约链码的纸质合约。将创建一个新的docker chaincode 容器来运行papercontract。
MagnetoCorp 管理员使用命令来实例化:
$ docker exec cliMagnetoCorp 对等链码实例化-n papercontract -v 0 -l 节点-c "{"Args":["org.papernet.commercialpaper:instantiate"]}" -C mychannel -P "AND ("Org1MSP.member")"
8. 应用结构
包括papercontract 在内的智能合约被MagnetoCorp 的应用程序称为issues.js。 Isabella 使用此应用程序将交易00001 提交到发行商业票据的分类账。
问题应用程序如何工作网关允许应用程序专注于事务生成、提交和响应。它协调不同网络组件之间的交易提议、排序和通知处理。 Isabella 首先从她的钱包中检索Isabella 的X.509 证书来提交发行交易。发行应用程序可以利用网关在通道上提交交易。 Hyperledger Fabric SDK 提供网关抽象,以便应用程序可以专注于应用程序逻辑,同时将网络交互委托给网关。
为Isabella 打开单独的终端窗口并找到MagnetoCorp/application 文件夹:
$ cd go/src/github.com/hyperledger/fabric/fabric-samples
$ cd 商业票据/组织/magnetocorp/application/
$ls
显示如下:
addToWallet.jsissue.jspackage.json
addToWallet.js 是Isabella 将使用其身份加载到钱包中的程序,issue.js 将使用此身份,00001 通过调用papercontract 代表MagnetoCorp。
切换到包含MagnetoCorp 应用程序副本的目录issues.js,并使用代码编辑器检查它:
$cd 商业票据/组织/magnetocorp/application
$ 代码问题.js
注意以下关键程序行issue.js
const{FileSystemWallet,网关}=require("fabric-network");
此声明将两个关键的Hyperledger Fabric SDK 类纳入范围- 钱包和网关。由于Isabella 的X.509 证书位于本地文件系统中,因此应用程序使用FileSystemWallet。
constwallet=newFileSystemWallet("./identity/user/isabella/wallet");
该语句标识应用程序isabella 在连接到区块链网络通道时将使用的钱包。该应用程序将在isabella 钱包中选择一个特定身份。 (钱包必须安装Isabella 的X.509 证书- 这就是addToWallet.js 的作用。)
waitgateway.connect(connectionProfile,connectionOptions);
这行代码使用ConnectionProfile 标识的网关连接到网络,并使用ConnectionOptions 中提到的身份。
constnetwork=awaitgateway.getNetwork("mychannel");
此连接适用于网络通道mychannel,其中papercontract 先前已实例化。
constissueResponse=awaitcontract.submitTransaction("问题","MagnetoCorp","00001".);
这行代码使用发行智能合约中定义的交易将交易提交到网络。 MagnetoCorp,00001.是发行交易用于创建新商业票据的价值。
letpaper=CommercialPaper.fromBuffer(issueResponse);
该语句处理来自问题事务的响应。
9.安装应用程序依赖项
使用命令安装这些包
$ cd 商业票据/组织/magnetocorp/application/
$ npm 安装
10. 钱包
将身份信息添加到Isabella 的钱包中:
$ 节点addToWallet.js
$ ls ./身份/用户/伊莎贝拉/钱包/
$ ls ./identity/user/isabella/wallet/User1@org1.example.com
查看Isabella 身份信息-User1@org.example.com。
c75bd6911a.-priv—— 伊莎贝拉用于签署交易的私钥。
公钥c75bd6911a.-pub 完全包含在Isabella 的X.509 证书中。
证书User1@org.example.com 包含Isabella 的公钥以及证书颁发机构在创建证书时添加的其他X.509 属性。该证书将被分发到网络上,以便不同的参与者在不同的时间可以通过密码验证伊莎贝拉的私钥创建的信息。
十一、发行申请
Isabella 现在可以使用issues.js 提交交易00001 以发行MagnetoCorp 商业票据:
$nodeissue.js
12. DigiBank 工作
现在,00001MagnetoCorp已经发行了商业票据。创建一个配置为与PaperNet 交互的控制台。最终用户Balaji 然后使用Digibank 的购买应用程序购买商业票据00001。
打开一个单独的终端。在织物样品目录中:
$ cd go/src/github.com/hyperledger/fabric/fabric-samples
$ cd 商业票据/组织/digibank/configuration/cli/
$ docker-compose -f docker-compose.yml up -d cliDigiBank
为Balaji 打开一个单独的终端窗口。
$ cd go/src/github.com/hyperledger/fabric/fabric-samples
$ cd 商业票据/组织/digibank/application/
DigiBank 的buy.js 应用程序在结构上与MagnetoCorp 非常相似,其中issues.js 有两个重要的区别:
身份:用户是DigiBank 用户Balaji,而不是MagnetoCorpIsabella
交易:称为买入而不是发行的交易
安装应用程序依赖项:
$ npm 安装
在Balaji 的终端窗口中,运行addToWallet.js 程序将身份信息添加到他的钱包中:
$ 节点addToWallet.js
购买申请
buy.js 现在可以使用Balaji 来提交将MagnetoCorp 商业票据00001 的所有权转让给DigiBank 的交易。
$ 节点buy.js
赎回票据
商业票据生命周期中的最后一笔交易00001 是DigiBank 与MagnetoCorp 对其进行的赎回。 Balaji 在redeem.js 中用于提交交易以执行智能合约中的兑换逻辑。
关于企业短期融资工具详解:商业票据全解析的内容到此结束,希望对大家有所帮助。
【企业短期融资工具详解:商业票据全解析】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
商业票据这种金融工具对于公司资金周转真是太重要了!
有5位网友表示赞同!
我是在银行上班,经常看到客户来办理商业票据业务。
有7位网友表示赞同!
不知道怎么搞懂利率和期限?商业票据的计算还挺复杂的。
有10位网友表示赞同!
买方卖方都应该好好了解商业票据的风险才行啊。
有16位网友表示赞同!
商业票据是很多企业融资的重要途径,对经济发展很有贡献。
有15位网友表示赞同!
感觉交易便利性高不高啊,商业票据使用起来方便吗?
有8位网友表示赞同!
听朋友说商业票据可以抵押贷款,是真的吗?
有16位网友表示赞同!
网上现在都有交易平台可以用吗,可以直接买卖吗?
有16位网友表示赞同!
听说最近商业票据的价格波动较大,是吧?
有19位网友表示赞同!
商业票据市场规模有多大啊?国内外有没有比较?
有6位网友表示赞同!
学习一下商业票据的相关知识,提升自己真材实料。
有5位网友表示赞同!
不同类型的商业票据有什么区别吗?
有10位网友表示赞同!
办理商业票据需要准备哪些资料?是不是很麻烦?
有14位网友表示赞同!
有没有哪个行业普遍使用商业票据啊?
有6位网友表示赞同!
商业票据的风险控制怎么做啊?可以有效规避掉 吗?
有17位网友表示赞同!
商业票据与其他融资方式的区别是什么?
有11位网友表示赞同!
对企业来说,商业票据的成本是多少?
有19位网友表示赞同!
想了解一下商业票据的发展趋势,未来会怎么样发展?
有20位网友表示赞同!
想知道商业票据在实际操作中有什么需要注意的事项吗?
有5位网友表示赞同!
学习商业票据知识真真切切地能帮助我创业吧!
有13位网友表示赞同!