Cardano SL中的交易

本文由币乎社区(bihu.com)内容支持计划奖励。

概括

一个交易(tx)就是一组特殊的数据,代表着节点间价值转移的行为(从用户的角度来看就是钱包之间价值的转移)。因此,当用户 Alice 汇款给用户 Bob 时,新的交易就产生了。让我们称该交易为Tx1,Alice 钱包下的节点称为N1,Bob 钱包下的节点称为N2

节点N1会执行下面的步骤:

  • 创建一个Tx1交易然后用自己的私钥给交易签名
  • 将该交易发送给所有的节点(也就是相邻节点)
  • 将该交易保存到本地的数据中

N1的每个相邻节点也会将Tx1发送给自己相邻的节点,以此类推。然后某个领导者会将该笔交易放入到账本中的某个区块里面。请注意,如果网络处理高负荷的状态,可能需要很长的时间才能让交易真正的加入到某个区块中。

设计

每个交易都包含了一系列的输入和一系列的输出。交易Tx0的输出可以被用来当做其他交易如Tx1交易的输入,以此类推:

            Tx0                           Tx1
  +----------------------+      +----------------------+
  |                      |      |                      |
  |  Inputs     Outputs  |      |  Inputs     Outputs  |
  | +------+   +-------+ |      | +------+   +-------+ |
  | | In0  |   | Out0  + |      | | In0  |   | Out0  | |
  | +------+   +-------+ |      | +------+   +-------+ |
  | | In1  |   | Out1  | |      | | In1  |   | Out1  | |
  | +------+   +-------+ |      | +------+   +-------+ |
  | | ...  |   | ...   | |      | | ..   |   | ...   | |
  | +------+   +-------+ |      | +------+   +-------+ |
  | | InN  |   | OutM  | |      | | InN  |   | OutM  | |
  | +------+   +-------+ |      | +------+   +-------+ |
  |                      |      |                      |
  +----------------------+      +----------------------+    
 ...

输入和输出携带着关于金钱走向的信息:输入告知金钱是从哪里来的,输出告知金钱往哪里去。请注意上面有NM,是因为实际的情况输入和输出的个数可能并不相同。

每个输入包含:

  • 交易TxN的ID,TxN的输出就是该输入(每笔交易的输出就是另一笔交易的输入)
    交易ID是一个交易BLAKE2b-256哈希值,大概就像这样:
    f9bcbe752aee4512457f1fd350200cf870906b7e6e836688c9a3779645c86c01.
  • TxN的输出中使用的输出的索引

每个输出包含:

  • 节点N的地址,该节点就是我们想要发送价值给它的节点。一个地址就是节点N的公钥哈希值的BLAKE2b-224哈希值。大概像这样:
    1fsAhhf4E1LQDB8agSds8teuD4E7U8JsRESngEX52kinBhi
    请阅读Cardano SL中的地址来获取更多关于地址的信息。
  • 我们想要汇款的金额。是一个64位无符号的整形数字,最大值为45000000000000000

例如:

  Tx 891971a4cc31e32..                           Tx f9bcbe752aee4512..
------------------------+           +----------------------------------------------+
\                       |           |                                              |
/        Outputs        |           |       Inputs                  Outputs        |
\  +------------------+ |           | +-----------------+     +------------------+ |
/  | Out0             | |           | | In0             |     | Out0             | |
\  | +--------------+ | |           | | +-------------+ |     | +--------------+ | |
/  | | Value        | | |           | | | Tx id       | |     | | Value        | | |
\  | | 100 ADA      | | |           | | | 891971a4c.. | |     | | 100 ADA      | | |
/  | +--------------+------->>  ------>>+-------------+ |     | +--------------+------->>
\  | | Node address | | |           | | | Out index   | |     | | Node address | | |
/  | | a00e4bb2..   | | |           | | | 0           | |     | | 88ca7f79..   | | |
\  | +--------------+ | |           | | +-------------+ |     | +--------------+ | |
/  | ...              | |           | | ...             |     | ...              | |
\  +------------------+ |           | +-----------------+     +------------------+ |
/                       |           |                                              |
------------------------+           +----------------------------------------------+

节点a00e4bb2..产生交易f9bcbe752aee4512..,这个交易告诉我们:

  • 我们想要从地址为a00e4bb2..的当前节点发送100 ADA到地址为88ca7f79...的节点
  • 这笔钱对应于上笔ID为 891971a4c..的交易的第0个输出

验证

就像上面提到的那样,一个交易的输出会变成另一个交易的输入。在这种情况下我们就把这种输出称为花费的交易输出。因此,交易891971a4cc31e32..的一个输出Out0是一个花费输出,因为它已经是交易f9bcbe752aee4512..的输入。

但是这种花费不会立刻发生。所以一个还不是其他交易输入的输出就被称为未花费的交易输出,为了防止双花
,只有未花费的输出才能被用来当做其他交易的输入。

所以在网络中的每个节点不仅仅接收交易,还会验证它们。为了验证交易,每个节点都必须保持着对未花费输出的跟踪,这样就可以验证发布的交易中的输入是未花费的输出。所有未花费的输出叫做 UTXO。它也是一个叫做全球状态的特殊key-value数据库的一部分。

交易合法的证明

在Cardano SL中的每笔交易都有一个证明(也叫做见证)来表示这笔交易是合法的。即使输出是一个未花费的输出,我们也需要证明我们有权利来花费它。由于一个TxN交易可以有多个输入,那么它的见证就包含了TxN中所有输入的见证,如果所有的输入都是合法的,TxN就是合法的。如果某个交易不是合法的,那么网络就会拒绝这笔交易。

因为有两种可用的节点地址类型所以我们使用两个对应的见证版本:基于公钥的和基于脚本的。

例如,公钥PK与交易签名使用基于公钥的见证:合法的输入必须使用与PK相对应的私钥进行签名。所以就可以检查这个签名是被接收了还是被拒绝了。

见证被存储在区块链中,每个人都可以看见,也可以检查和独立的验证它们。但是经过一段时间之后,节点为了节省空间可能会删除老的证明。分开存储交易和证明的技术被称为隔离见证(你可能听到过它,最近在比特币中实现了)。在这种策略下,交易和证明被存储在区块两个分开的地方,而且可以独立的进行处理。

权益分配

权益分配是Cardano SL的另一个组成部分,虽然和代理者没有直接的关系, 但都可以通过它来获取相应的利润分红。

有些地址有多个拥有者,这也产生了一个权益计算的问题,因为每个追随中本聪算法的每个币对于每个股东的总权益而言只能计数一次。与余额(余额中币真正的数量)不同,权益赋予用户权利去控制不同的算法部分:成为领导者、进行投票更新系统、参加MPC/SSC。

权益分配是一个关联了每个地址的值。技术上说该值其实是地址属性的一部分,该值对应于下面三种情况下的某一种:

  • Bootstrap时代分配。这是一个特殊的值,它是Bootstrap时代里面的受托者,但是它在Bootstrap时代之后还可以使用。
  • 单个钥匙分配,这是指所有的权益会被分配给一个指定的股东。在这种分配情况下会包含股东的身份
  • 多个钥匙分配,这是指权益会被分配给多个股东(最少两个)。在这种分配情况下包含一对"股东们的身份 - 一个输出的部分"信息。交易的输出都有一个值,该值的一部分就是权益

领导者选举处理过程富人计算两者都考虑到了权益分配。

这个特征可以以类似的方式用在委托中,但是有点区别:

  • 这里没有凭证:要撤销委托A必须要移动基金,提供不同的权益分配
  • A的部分权益可以通过分配来委托。相反的是,委托需要你同时委托全部地址的基金

翻译作者: 许莉
原文地址: TRANSACTIONS IN CARDANO SL

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

推荐阅读更多精彩内容