4.2 Hyperledger Fabric - 应用程序开发 - 分析

应用程序开发 - 分析

让我们更详细地分析商业票据。诸如 MagnetoCorp 和 DigiBank 之类的 PaperNet 参与者使用商业票据交易来实现其业务目标 – 让我们研究一下商业票据的结构以及随着时间的推移会影响商业票据的交易。我们还将基于网络中各组织之间的信任关系,考虑 PaperNet 中的哪些组织需要在交易上签名。稍后,我们将集中讨论买卖双方之间的资金流动方式。现在,让我们集中讨论 MagnetoCorp 发行的第一份票据。

1. 商业票据生命周期

MagnetoCorp 在 5 月 31 日发布了票据 00001。花一些时间看一下本所的初始状态,其不同的性质和值:

Issuer = MagnetoCorp
Paper = 00001
Owner = MagnetoCorp
Issue date = 31 May 2020
Maturity = 30 November 2020
Face value = 5M USD
Current state = issued

此票据状态是发行交易的结果,它使 MagnetoCorp 的第一份商业票据成为现实!请注意,本文的面值为 500 万美元,要在今年晚些时候进行赎回。查看在发行票据 00001 时发行者和所有者如何相同。请注意,票据可以唯一标识为 MagnetoCorp00001 – 由 Issuer 和 Paper 属性组成。最后,了解 "Current state = issued" 属性如何快速识别 MagnetoCorp 票据 00001 在其生命周期中的阶段。

发行后不久,该票据被 DigiBank 购买。花一些时间来看看同一笔商业票据由于此次购买交易而发生了怎样的变化:

Issuer = MagnetoCorp
Paper = 00001
Owner = DigiBank
Issue date = 31 May 2020
Maturity date = 30 November 2020
Face value = 5M USD
Current state = trading

最重要的变化是 Owner 的变化 – 看看 MagnetoCorp 最初拥有的票据现在如何由 DigiBank 拥有。我们可以想象一下,随后如何将票据出售给 BrokerHouse 或 HedgeMatic,并将相应的更改赋值给 Owner。请注意,Current state 如何使我们能够轻松地识别出该票据正在交易中。

6 个月后,如果 DigiBank 仍然持有该商业票据,MagnetoCorp 则可以赎回它:

Issuer = MagnetoCorp
Paper = 00001
Owner = MagnetoCorp
Issue date = 31 May 2020
Maturity date = 30 November 2020
Face value = 5M USD
Current state = redeemed

最后的赎回交易已经结束了商业票据的生命周期 - 可以视为已完成。保留赎回商业票据的记录通常是强制性的,并且赎回状态使我们能够快速识别这些票据。通过将所有者与交易创建者的身份进行比较,可以将票据所有者的值用于对赎回交易执行访问控制。Fabric 通过 getCreator() 链码 API 对此提供了支持。如果将 golang 用作链码语言,则可以使用 客户端身份链码库 来检索交易创建者的其他属性。

2. 交易

我们已经看到,票据 00001 的生命周期相对简单 - 作为发行,购买或赎回交易的结果,它在已发行,交易和赎回之间移动。

这三笔交易是由 MagnetoCorp 和 DigiBank 发起的 (两次),并推动了票据 00001 的状态变化。让我们更详细地了解影响票据的交易:

2.1 交易

检查由 MagnetoCorp 发起的第一笔交易:

Txn = issue
Issuer = MagnetoCorp
Paper = 00001
Issue time = 31 May 2020 09:00:00 EST
Maturity date = 30 November 2020
Face value = 5M USD

了解发行交易如何具有带有属性和值的结构。该交易结构与票据 00001 的结构不同,但紧密匹配。这是因为它们是不同的东西 – 票据 00001 反映了由于发行交易而产生的 PaperNet 状态。拥有这些属性并创建此票据的发行交易(我们看不到)背后的逻辑。由于交易是通过票据进行的,因此这意味着这些结构之间存在非常密切的关系。

涉及发行交易的唯一组织是 MagnetoCorp。自然,MagnetoCorp 需要签署该交易。通常,票据发行人需要在发行新票据的交易上签名。

2.2 购买

接下来,检查将票据 00001 的所有权从 MagnetoCorp 转移到 DigiBank 的购买交易:

Txn = buy
Issuer = MagnetoCorp
Paper = 00001
Current owner = MagnetoCorp
New owner = DigiBank
Purchase time = 31 May 2020 10:00:00 EST
Price = 4.94M USD

看看购买交易如何具有较少的属性,这最终在此票据中得出。那是因为这项交易只会修改票据。唯一的 Neww owner = DigiBank 因此次交易而发生变化;其他一切都一样。没关系 – 关于购买交易,最重要的是所有权的变更,实际上,在此交易中,已经确认了票据的当前所有者 MagnetoCorp。

你可能会问,为什么没有在票据 00001 中记录 "Purchase time" 和 "Price" 属性?这又回到了交易与票据之间的区别。494 万美元的价格标签实际上是交易的财产,而不是票据的财产。花一点时间思考这种差异;它并不像看起来那样明显。稍后我们将看到帐将本记录这两条信息 - 影响票据的所有交易的历史记录及其最新状态。明确区分信息非常重要。

还需要记住的是,票据 00001 可能会被多次买卖。尽管我们在方案中略有提前,但让我们来看看如果票据 00001 更改所有权时我们可能会看到哪些交易。

如果我们有 BigFund 购买:

Txn = buy
Issuer = MagnetoCorp
Paper = 00001
Current owner = DigiBank
New owner = BigFund
Purchase time = 2 June 2020 12:20:00 EST
Price = 4.93M USD

随后由 HedgeMatic 购买:

Txn = buy
Issuer = MagnetoCorp
Paper = 00001
Current owner = BigFund
New owner = HedgeMatic
Purchase time = 3 June 2020 15:59:00 EST
Price = 4.90M USD

查看票据所有者如何变化,以及示例中价格如何变化。你能想到 MagnetoCorp 商业票据价格可能下跌的原因吗?

直觉上,购买交易要求卖方和购买组织都必须签署此类交易,以便有证据证明作为交易一部分的双方之间的相互协议。

2.3 赎回

票据 00001 的兑换交易表示其生命周期的结束。在我们相对简单的示例中,HedgeMatic 发起了交易,该交易将商业票据转移回了 MagnetoCorp:

Txn = redeem
Issuer = MagnetoCorp
Paper = 00001
Current owner = HedgeMatic
Redeem time = 30 Nov 2020 12:00:00 EST

同样,请注意赎回交易的属性很少。赎回交易逻辑可以对票据 00001 进行所有更改来计算数据:发行者将成为新所有者,而当前状态将变为赎回。在我们的示例中指定了 "Current owner" 属性,以便可以根据纸张的当前所有者检查该属性。

从信任的角度来看,购买交易的相同理由也适用于赎回指令:交易中涉及的两个组织都必须在该交易上签字。

帐本

在本主题中,我们了解了交易和产生的票据状态是 PaperNet 中两个最重要的概念。实际上,我们将在任何 Hyperledger Fabric 分布式 帐本 中看到这两个基本元素 - 一个世界状态,其中包含所有对象的当前值;一个区块链,它记录了导致当前世界状态的所有交易的历史记录。

交易所需的签字通过规则强制执行,在将交易添加到帐本之前对其进行评估。仅当存在必需的签名时,Fabric 才会接受有效的交易。

你现在处于一个绝佳的位置,可以将这些想法转化为智能合约。如果你的程序设计有些生锈,请不要担心,我们将提供技巧和指导来理解程序代码。掌握商业票据智能合约是设计你自己的应用程序的第一步。或者,如果你是对一些编程感到满意的业务分析师,请不要害怕继续深入研究!

Reference

项目源代码

项目源代码会逐步上传到 Github,地址为 https://github.com/windstamp

Contributor

  1. Windstamp, https://github.com/windstamp
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容