当前位置:首页 » 《资源分享》 » 正文

BTC源码分析 交易(一)_u013434801的博客

1 人参与  2021年11月01日 09:23  分类 : 《资源分享》  评论

点击全文阅读


概念

在《比特币:一种点对点的电子现金系统》中,电子货币被定义为:每一位所有者通过对前一次交易和下一位拥有者的公钥(Public key) 签署一个随机散列的数字签名,并将这个签名附加在这枚电子货币的末尾,电子货币就发送给了下一位所有者。
在这里插入图片描述
据此,我们可以理解到,电子货币被设计成以交易为载体表现,而实际上,在源码中,电子货币确实无实体类。
交易拥有交易输入交易输出两个重要的属性。交易输入包含着上一笔交易的信息,及所有者的所有权证明。交易输出则包含着接收者的信息,以及转账数量。
电子货币的所有者发起一笔交易时,可在交易输入使用此前收到交易信息、附上所有权证明,并在交易输出中填写转账数量及接收者的信息。输入数量与输出数量相比,多的部分则被当作手续费(Fee)。

疑问

  1. 为何电子货币不以实体类进行表示,而要间接通过交易表示?

数据结构

在bitcoin-0.1.5中,与交易相关的数据结构主要集中在main.h文件中,类图如下:

CTransaction int nVersion vector<CTxIn> vin; vector<CTxOut> vout; int nLockTime CTxIn COutPoint prevout CScript scriptSig unsigned int CTxOut int64 nValue CScript scriptPubKey COutPoint uint256 hash unsigned int

CScript是脚本类,可暂时抽象理解为存放所有权证明。
CTransaction包含一组CTxIn及一组CTxOut。CTxOut较为简单,仅包含数量和凭证。而CTxIn同样包含凭证,但却用COutPoint定位到属于自己的交易输出
COutPoint仅包含一份哈希值及非负整数n,其中哈希值是交易哈希,而非负整数n则用于定位交易输出中的第n个输出。

链上数据

在Block 181中,有一份交易
a16f3ce4dd5deb92d98ef5cf8afeaf0775ebca408f708b2146c4fb42b41e14be,是传说中2009 年1月12日,中本聪发送了 10 个比特币给密码学专家哈尔芬尼。
在区块链浏览器中,我们可以看到这比交易的详细情况。
在这里插入图片描述
该笔交易有一个输入,两个输出,其中第二个输出地址与输入地址相同,手续费为0BTC,而顺着输入地址往上溯源,最终可发现12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S用于交易的BTC源自Block9的挖矿收入。
在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/30350.html

交易  输出  货币  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1