10000000迷你币无限激活码2021年,2021年怎么领取十万迷你币激活码

  

     

  

  简单地说,事务输入是指向UTXO的指针。它们指向一个特定的UTXO,并由事务哈希和区块链中记录的UTXO序列号引用。如果要支付UTXO,一个交易的输入还需要包含一个解锁脚本,以满足UTXO的支付条件。解锁脚本通常是一个签名,用来证明锁定脚本中比特币地址的所有权。   

  

  当用户支付时,他的钱包通过选择可用的UTXO来构建交易。例如,要支付0.015比特币,钱包应用程序将选择一个0.01 UTXO和一个0.005 UTXO,并使用它们相加,以获得所需的支付金额。   

  

  在例5-3中,我们展示了一个贪婪算法来选择可用的UTXO,以便得到一个特定的支付金额。在该示例中,可用的UTXO在一个常数数组中提供。但实际上,可用的UTXO是通过调用比特币核心的远程过程来检索的,或者是通过第三方API来检索的,如例5-1所示。   

  

  例5-3 一个计算会被发送的比特币总量的脚本   

  

  #使用贪婪算法从UTXO列表中选择输出。from sys import argv class output info : def _ _ init _ _(self,tx_hash,tx_index,value)3360 self . tx _ hash=tx _ hash self.tx_index=tx _ index self . value=value def _ _ repr _ _(self)3360 return“% s 3360% s with % s satoshis“%(self . tx _ hash,self . tx _ index,self.value) #为了发送,从未使用的输出列表中选择最佳输出。#返回输出列表并将其他更改发送到更改地址。select _ outputs _ greedy(unsettled,min _ value) 3360 #如果为空,则认为失败。未用完3360 Return None #拆分成两个列表。ers=greaters=key _ func=lambda utxo 3360 utxo . value如果greaters: #不为空。寻找最小的更大的。min _ greaters=min(greats)change=min _ greater . value-min _ value return,change #未找到greats。再试几个小一点的。#从大到小排序。我们需要使用尽可能少的输入。lessers.sort(key=key_func,reverse=True)result=Accum=0 for utxo in lesser s : result . append(utxo)Accum=utxo . valueifaccum=min _ value 3360 change=Accum-min _ value return result,' change3360% d satoshis'% change #未找到。return None,0 def main(): unspent=output info(' EBA DFA 92 f1 FD 29 e 2 Fe 296 EDA 702 c 48 BD 11 ffd 52313 e 986 e 99 ddad 9084062167 ',1,8000000),output info(' 6596 FD 070679 de 96 e 405d 52 b 51 b 8e 1d 644029108 C4 cbfe 451455   

2a0709cf0725e80a7350fdb22d7b8ec6", 17, 5470541), OutputInfo("12b6a7934c1df821945ee9ee3b3326d07ca7a65fd6416ea44ce8c3db0c078c64", 0, 10000000), OutputInfo("7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818", 0, 16100000), > if len(argv) > 1: target = long(argv<1>) else: target = 55000000 print "For transaction amount %d Satoshis (%f bitcoin) use: " % (target, target/ 10.0**8) print select_outputs_greedy(unspent, target) if __name__ == "__main__": main()如果我们不使用参数运行select-utxo.py脚本,它会试图为一笔五千五百万聪(0.55比特币)的付款构造一组UTXO。如果你提供一个指定的付款额作为参数,脚本会选择UTXO来完成指定的付款额。在例5-4中,我们运行脚本来试着完成一笔0.5比特币,或者说是五千万聪的付款。

  

例5-4 运行select-utxo.py

  

$ python select-utxo.py 50000000For transaction amount 50000000 Satoshis (0.500000 bitcoin) use:(<<7dbc497969c7475e45d952c4a872e213fb15d45e5cd3473c386a71a1b0c136a1:0 with 25000000Satoshis>, <7f42eda67921ee92eae5f79bd37c68c9cb859b899ce70dba68c48338857b7818:0 with 16100000 Satoshis>,<6596fd070679de96e405d52b51b8e1d644029108ec4cbfe451454486796a1ecf:0 with 16050000 Satoshis>>, 'Change: 7150000 Satoshis')一旦UTXO被选中,钱包会为每个UTXO生成包含签名的解锁脚本,由此让它们变得可以通过满足锁定脚本的条件来被支付。钱包把这些UTXO作为参考,并且连同解锁脚本一起作为输入加到交易中。表5-3展示了交易输入的结构。

  

表5-3 交易输入的结构

  

尺寸

  

字段

  

说明

  

32个字节

  

交易

  

指向交易包含的被花费的UTXO的哈希指针

  

4个字节

  

输出索引

  

被花费的UTXO的索引号,第一个是0

  

1–9个字节(可变整数)

  

解锁脚本尺寸

  

用字节表示的后面的解锁脚本长度

  

变长

  

解锁脚本

  

一个达到UTXO锁定脚本中的条件的脚本

  

4个字节

  

序列号

  

目前未被使用的交易替换功能,设成0xFFFFFFFF

  

序列号是用来覆盖在交易锁定时间之前失效的交易,这是一项目前没有在比特币中用到的功能。大多数交易把这个值设置成最大的整数(0xFFFFFFFF)并且被比特币网络忽略。如果一次交易有非零的锁定时间,那么它至少需要有一个序列号比0xFFFFFFFF低的输入来激活锁定时间。

  

  

#欧易OKEx##比特币<超话>##数字货币#

相关文章