全球区块链监管查询平台

简体中文
下载WikiBit

比特币交易的输入输出例题_关于比特币guiminer挖矿软件的问题

比特币交易的输入输出例题_关于比特币guiminer挖矿软件的问题 WikiBit 2024-01-28 13:39

本资讯是关于关于比特币guiminer挖矿软件的问题,全网近4万人爆仓比特币价格走高投资时仍需要注意哪些问题,当你向朋友转了两个比特币,在交易的过程中你提交了哪些信息给矿工,比特币挖矿究竟在计算一个什么问题手动验证区块链给出答案

  ❶ 比特币交易构成 你知道多少

  交易类型

  产量交易(Generation)

  每个Block都对应一个产量交易(Generation TX),该类交易是没有输入交易的,挖出的新币是所有币的源头。

  合成地址交易(Script Hash)

  该类交易的接收地址不是通常意义的地址,而是一个合成地址,以3开头,需要几对公私钥一起生成合成地址,在生成过程中可以指定,几对公私钥中的几个签名以后,就可以消费该地址的比特币。

  通用地址交易(Pubkey Hash)

  该类是最常见的交易类型,由N个输入、M个输出构成。

  输入和输出可以御桥旦简单的理解成,发出币的地址就是输入,收到币的地址就是输出。

  数据结构

  字镇扰段

  数据类型

  字段大小

  字段描述

  versionuint32_t

  4交易数据结构的版本号tx_in countvar_int1+输入交易的数量tx_intx_in[]41+输入交易的数组,每个输入=41字节

  tx_out countvar_int1+输出地址的数量tx_outtx_out[]9+输入地址的数组,每个输入=9字节lock_timeuint32_t4

  lock_time是一个多意字段,表示在某个高度的Block之前或某个时间点之前该交易处于锁消慎定态,无法收录进Block。

  值

  含义

  0立即生效 500000000含义为Block高度,处于该Block之前为锁定(不生效)= 500000000含义为Unix时间戳,处于该时刻之前为锁定(不生效)

  若该笔交易的所有输入交易的sequence字段,均为INT32最大值(0xffffffff),则忽略lock_time字段。否则,该交易在未达到Block高度或达到某个时刻之前,是不会被收录进Block中的。

  示例

  为了演示方便,我们读取稍早期的块数据,以高度116219 Block为例。

  # ~ bitcoind getblock

  {

  hash : ,

  confirmations : 144667,

  size : 1536,

  height : 116219,

  version : 1,

  merkleroot : ,

  tx : [

  ,

  ,

  ,

  ,

  ],

  time : 1301705313,

  nonce : 1826107553,

  bits : 1b00f339,

  difficulty : 68977.78463021,

  previousblockhash : ,

  nextblockhash :

  }

  该Block里面有5笔交易,第一笔为Generation TX,解析出来看一下具体内容:

  # ~ bitcoind getrawtransaction 1

  {

  hex : ,

  txid : ,

  version : 1,

  locktime : 0,

  vin : [

  {

  coinbase : 0439f3001b0134,

  sequence : 4294967295

  }

  ],

  vout : [

  {

  value : 50.01000000,

  n : 0,

  scriptPubKey : {

  asm : OP_CHECKSIG,

  hex : 41ac,

  reqSigs : 1,

  type : pubkey,

  addresses : [

  ]

  }

  }

  ],

  blockhash : ,

  confirmations : 145029,

  time : 1301705313,

  blocktime : 1301705313

  }

  Generation TX的输入不是一个交易,而带有coinbase字段的结构。该字段的值由挖出此Block的人填写,这是一种“特权”:可以把信息写入货币系统(大家很喜欢用系统中的数据结构字段名来命名站点,例如blockchain、coinbase等,这些词的各种后缀域名都被抢注一空)。中本聪在比特币的第一个交易中的写入的coinbase值是:

  coinbase:722062616e6b731

  将该段16进制转换为ASCII字符,就是那段著名的创世块留言:

  The Times 03/Jan/2009 Chancellor on brink of second lout for banks1

  接下来展示的是一个三个输入、两个输出的普通交易:

  # ~ bitcoind getrawtransaction 1

  {

  hex : ,

  txid : ,

  version : 1,

  locktime : 0,

  vin : [

  {

  txid : ,

  vout : 0,

  scriptSig : {

  asm : 01 ,

  hex :

  },

  sequence : 4294967295

  },

  {

  txid : ,

  vout : 1,

  scriptSig : {

  asm : 01 ,

  hex :

  },

  sequence : 4294967295

  },

  {

  txid : ,

  vout : 1,

  scriptSig : {

  asm : 1d01 ,

  hex :

  },

  sequence : 4294967295

  }

  ],

  vout : [

  {

  value : 0.84000000,

  n : 0,

  scriptPubKey : {

  asm : OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG,

  hex : 76a91488ac,

  reqSigs : 1,

  type : pubkeyhash,

  addresses : [

  ]

  }

  },

  {

  value : 156.83000000,

  n : 1,

  scriptPubKey : {

  asm : OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG,

  hex : 76a91488ac,

  reqSigs : 1,

  type : pubkeyhash,

  addresses : [

  ]

  }

  }

  ],

  blockhash : ,

  confirmations : 147751,

  time : 1301705313,

  blocktime : 1301705313

  }5859606162636465666768

  字段hex记录了所有相关信息,后面显示的是hex解析出来的各类字段信息。下面把逐个分解hex内容(hex可以从上面的直接看到):

  01000000 // 版本号,UINT32

  03 // Tx输入数量,变长INT。3个输入。

  /*** 第一组Input Tx ***/

  // Tx Hash,固定32字节

  00000000 // 消费的Tx位于前向交易输出的第0个,UINT32,固定4字节

  8a // 签名的长度, 0x8A = 138字节

  // 138字节长度的签名,含有两个部分:公钥+签名

  47 // 签名长度,0x47 = 71字节

  01

  41 // 公钥长度,0x41 = 65字节

  ffffffff // sequence,0xffffffff = 4294967295, UINT32, 固定4字节

  /*** 第二组Input Tx。与上同理,省略分解 ***/

  ffff

  /*** 第三组Input Tx ***/

  2fffffffff

  02 // Tx输出数量,变长INT。两个输出。

  /*** 第一组输出 ***/

  00bd010500000000 // 输出的币值,UINT64,8个字节。字节序需翻转,~= 0x000000000501bd00 = 84000000 satoshi

  19 // 输出目

  ❷ 关于比特币guiminer挖矿软件的问题

  比特币是个好点子吗?不,比特币是个滑稽的坏主意。这是个骗局。骗局。它不是货币,作为比特币生态系统基础的经济学假设是可笑的,而且忽略了数百年来累积的不同货币如何协调运作的知识。

  幸运的是这是一个如此漏洞百出的系统,因此它大概永远不会成长到一个足以对世界经济产生导致不良效应或影响的地步。

  然而,我觉得有必要指出问题所在。

  所宣扬的比特币,更类似于数据传输系统而不是现金交易系统。好吧,,问题在于它达成交易并不是提供一个以美元计价的数字现金交易,而是通过导入一个全新的货币。那么这里我们就会问,这真的是可取的吗?

  致命症结之一:分配初始财富

  美联储印钞票时,它不会给成千上万的美国人随机签发百万美元支票。它做的工作,要么是:1,在自由市场上购买一些其他的资产(通常是美国国债),以此为系统注入比以前更多的现金;或者,2,借贷资金给银行,银行再贷款给其他人,最后花掉这些钱。

  重要的在于,这些人并不是免费获取金钱的。他们要么出售资产换取现金,要么借钱花并最终还回来(也付利息)。

  比特币系统没有一个中央银行发行货币,它有个“算法”,通过颇为费解的机制让比特币被“挖掘”出来。基本上是随机分配给了早进入尝鲜的人们。这是一个对早期进入者非常有利的系统(免费的金钱!)。对真实的货币而言这是个荒谬的制度,更不用说这明显的缺少扩展性(如果每一个人都终日挖矿会后果怎么样?)为了解决这个问题,比特币的供应在算法上被加以限制,这再一次地给早期进入者带来实惠,但是这一点通向第二个问题:

  致命症结之二:内生的通货紧缩

  经济学课程时间了!通货紧缩现象产生于货币相对于其他商品升值(比如商品价格下降了)。更直接地说,通货紧缩产生于当人们期望货币相对其他商品升值,物价趋势持续下降的时候。

  问题:如果预期钱要升值,为什么你要花掉它?答案:一般而言,你就不会去花钱了。

  比特币的供给被设定为一个速率可知的减速发行。最终达到大约2100万。如图。

  速率可知 — 好吧,我同意,如果说是可预见的通货膨胀,从经济学角度来看未必可取,但是还说得过去。然而如果说是减速发行的话,假如你来设计一种要颠覆世界秩序的货币,你更愿意看到的其实是这种图:

  那么如果说至少有恒定的增长率呢?你也许愿意那么做,因为那是适应更多人使用它的唯一途径。

  但是比特币不是设计来成为一种实用货币的,它被设计来让早期进入者发家致富。这再一次地表明这是个骗局。

  作一个快速思考实验,我们假定对比特币的需求增长,更多的人们使用它,这样一来,可以预期比特币的美元标价就快速上升。现在假设我有一个比特币,我也有一张美钞,我愿意买一瓶百事可乐,我会使用哪种支付手段?显然贬值中的美元更应该被花掉,而不是快速升值的比特币。

  在最好的情况下,比特币供给的限制会造成严重的通货紧缩,榨取掉多数比特币计价的商业行为,纵容交易市场上的投机买卖。假如你都不愿意使用,别人也不愿意使用,所谓透明度与低交易费的好处不会带给你任何实惠。

  致命症结之三:缺少可兑换性

  人们对所谓货币内在价值的认定有个误解,其实没有什么所谓的货币内在价值。钞票名义上的价值仅仅止于他们能交易换取的别的钞票。一美元价值等同于一定数额的欧元,一欧元等价于一定量的日元,一日元等价于一定量的美元。1美元可以存在银行,换个存款证明,存款证明随后就能再换成1美元。它可以变成商业或个人支票,然后再变为现金或者存起来。你旅行时它可以变成旅行支票换成日元或欧元。如果你要花钱买三明治,三明治店收钱也是因为钱能转换成别的东西。这是美妙的循环平衡。

  ❸ 比特币挖矿究竟在计算一个什么问题手动验证区块链给出答案

  简单回顾下挖矿的流程。

  首先先要对所有的交易做验证,剔除有问题的,然后通过一套自定义的标准来选择哪些交易希望打包进区块,比如说提供的交易费与交易占用的字节大小的比值超过某个门槛,这样的交易才被认为有利可图。当然,节点也可以特意选择要加入某条交易,或者故意忽略某些交易。如果是通过矿池挖矿的话,矿池的服务器会去筛选交易,然后分配给每个参与的矿机一个独立的任务。

  一旦筛选好交易数据,层层约减,通过这些交易就可以计算出一棵Merkle树,可以确定一个唯一的摘要,这就是Merkl树的根。

  然后我们再依次获取挖矿需要的其他信息,这些信息组成一个区块的头。

   区块头的字节分配

  区块头只有80个字节,挖矿只需要对区块头进行运算即可。交易数据都通过merkle树固定了下来,不需要再包含进来。

  这些信息中大部分已经是固定下来的,或者是可计算的。

  我们以区块277316为例,其信息来自网站 https://blockchain.info

  Bitcoin Block #277316blockchain.info

  选择这个区块的原因是在《Mastering Bitcoin》一书中,中文社区译本和英文原版在介绍这部分内容时有出入,而且作者Antonopoulos并没有提到一个关键点,就是字节顺序的问题,相信很多人可能会踩这个坑。这里还原的细节可以帮助读者与书籍做相互参考。

   请大家注意下面的每个步骤,注意每一个变化,这是比特币最核心的算法。

  转换时间,记住,一定要转为utc的时间戳,此处遇到过坑,小心。

  这一步的发现异常艰辛,耗费了大量的查询,大坑,大坑,谨记。发明人中本聪可能为了让机器计算更快,而变为了更接近机器的编码方式little-endian.

  最终得到的结果就是

  16进制下前面15个0,然后是1; 而难度目标对应的数字是

  16进制下前面15个0,然后是3. 计算结果小于难度目标,符合要求。这个结果与网站上公布的数字一致。

  在挖矿时,nonce随机数是未知的,要从0试到2^32,但是这个数字其实不大,只有4294967296,以现在的矿机动辄14T每秒的算力,全部算完到上限也不需要一秒。刚才提到在这种情况下,需要使用创币交易中的附带信息,额外的字符串成为extra nonce。

  另外,创世区块也可以通过上面的方法来验证,有好奇的朋友可以尝试下。

  提示:

  ❹ 当你向朋友转了两个比特币,在交易的过程中你提交了哪些信息给矿工

  地址、金额、手续费、比特币签名

  传统转账是在银行账户之间进行的。同样,比特币转账就是把比特币从一个比特币地址转移到另一个比特币地址上的过程。它的转账过程也类似:

  ①登陆钱包:你需要登陆你的钱包,类似登陆银行的网银、支付宝、微信等;

  ②选择钱包地址:你先选好要从自己哪个比特币地址转币给你的朋友,也就是自己的银行卡号(或者支付宝账号微信账号)。

  ③填写转账钱包地址、金额、手续费、比特币签名、矿工记账:填写好朋友收币的比特币钱包地址,填写转账的数额、比如100个然后写下你想付出的交易手续费金额,签上你的比特币签名,提交给比特币网络,然后就等矿工们来处理记账了。

  ④转账确认:确定支付后交易信息会在比特币网络进行全网广播,矿工每隔10分钟会将比特币网络中未被记账的交易打包进一个区块,这就完成了一次确认,此时比特币已转到对方账户。通常需要经过6次确认,确保交易记录不能被任何人窜改,转账才算真正完成。

  ❺ 交易及记账(上) | 小白学比特币之二

  在 精读「Mastering Bitcoin」1 中, 提到比特币不仅是一个 电子现金 (系统),也是一个公开的账本,这账本上记录了每笔交易的信息。用比特币交易,其实就跟我们用人民币或者美元交易买卖东西一样。作者给比特币交易行为的定义是:

  那么,在比特币系统里,是以什么样的形式将这些交易记录下来的呢?

  跟传统记账一样,在比特币系统中也对交易采用复式记账的方法 (double-entry bookkeeping ledger),直白点翻译就是双入口记账。复式记账,简单理解就是以下两点 [1] :

   每一笔交易都要至少在两个账户上进行记录 ,在会计记账中有三个基本账户也就是资产账户、负债账户以及所有者权益账户,跟会计等式 资产(Assets) = 负债 (Liabiliteis) + 所有者权益 (Equity) 是一一对应的。那么单独每个账户又是以怎么样的方式呈现出来的呢?方法是每个账户都需要记录这个账户的debits和credits(见上图):

  说完复式记账,再回到《Mastering Bitcoin》(精通比特币) ,在书中,作者给出的记账例子如下面那张截图;一笔交易中可以包含多个Input和output。这里的Input和output如何理解呢?

  总结一下:

  通过作者这句话, 可以看到比特币系统其实执行的是价值交易。更进一步地,可以理解为价值的输入和输出。

  上笔交易和下笔交易之间会形成一个“无形的链”:

  作者用一张图形象的说明了什么是“交易链”。

  对于同一个地址而言,上一笔交易中的output将会作为下一笔交易的输入,这样就形成了一个交易链。

  在上面的交易截图中,我们可以看到这几笔交易里有 spent unspent change change 为找零地址,为什么会有找零地址呢?

  比特币系统中的找零概念和平时用现金交易的找零概念是一样的,如果你要买一个1块钱的包子,但是你身上只有一张20块钱的纸币,这个时候就需要包子铺老板找给你19元零钱。

  在比特币系统中,每一个input就相当于一定面值的纸币。如果一笔交易中只包含一个Input,为20个BTC,当这个地址向其他地址支付1个BTC时候,就需要对方找还19个BTC。不同的是,比特币不像纸币那样只有几种面值固定的纸币,比特币系统可以随时创建“新面值”。

  出于保护隐私的考虑,找零地址没必要跟原先的付款地址一样,通常钱包会生成一个新的找零地址。

  在真实应用中,并不会在找零地址旁边标注 change 的字样,如下图显示(截图来自blockchain.info上的某笔交易),

  比特币系统可以随时创建“新面值”来用于找零,而且这“零钱”可以用于下次交易。在每个输出(output)记录里,可消费的比特币数量会被标记成 unspent ,这样的输出有一个专门的名字叫做 Unspent Transaction Outputs (UTXO)。可以把unspent的输出理解为面值不同的、可用于下次消费的纸币,就好像10元面值纸币、100元面值纸币那样。

  [1] Mastering Bitcoin 第二版 https://github.com/bitcoinbook/bitcoinbook

  [2] https://learnmeabitcoin.com

  ❻ 全网近4万人爆仓,比特币价格走高,投资时仍需要注意哪些问题

  全网近4万人爆仓,比特币价格走高,这些不禁让我想到了贰零一八年的金融暴雷事件,一夜之间,P2P暴雷,让无数人感受到了黑暗。现在比特币这种情况,真的不知道该如何评价。投资,也希望大家都在保证正常生活的前提下投资,省的出现了岔子没有办法收场。

  三、花出去的钱才是自己的钱。

  虽然我知道这句话的价值观不一定正确,看似在鼓励大家消费,事实不就是如此吗?辛辛苦苦的血汗钱,一夜之前什么都没有了。但是欠银行的房贷,确实真实的,银行的存款,也一直在缩水,不知道怎么评价这种病态的消费观,到处都在鼓动着我们花钱,但是钱从哪里挣呢?没有一点点存款,遇到危急的时刻我们还不是一样的走投无路。投资,还是老老实实的存款吧,实在不行,风险分摊。

免责声明:

本文观点仅代表作者个人观点,不构成本平台的投资建议,本平台不对文章信息准确性、完整性和及时性作出任何保证,亦不对因使用或信赖文章信息引发的任何损失承担责任

  • 通证换算
  • 汇率换算
  • 购汇计算
/
当前汇率
可兑换金额

0.00