本文整理汇总了Python中transaction.Transaction.addInput方法的典型用法代码示例。如果您正苦于以下问题:Python Transaction.addInput方法的具体用法?Python Transaction.addInput怎么用?Python Transaction.addInput使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类transaction.Transaction
的用法示例。
在下文中一共展示了Transaction.addInput方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
# 需要导入模块: from transaction import Transaction [as 别名]
# 或者: from transaction.Transaction import addInput [as 别名]
#.........这里部分代码省略.........
# the first byte in case any future changes to bitcoind require a valid pubkey)
bitcoin_message_pieces = []
for i in range(0, len(encrypted_message), PIECE_SIZE[VERSION]):
piece = encrypted_message[i:i+PIECE_SIZE[VERSION]]
bitcoin_message_pieces.append(b'\xff' + piece)
if len(bitcoin_message_pieces) == 1 and len(bitcoin_message_pieces[0]) < 33:
# This is the only case where we need padding in version 2 messages.
padding = 33 - len(bitcoin_message_pieces[0])
bitcoin_message_pieces[0] = bitcoin_message_pieces[0] + bytes([padding] * padding)
# We have to adjust the header 'padding' value
bitcoin_message_pieces[0] = bitcoin_message_pieces[0][:4] + bytes([padding]) + bitcoin_message_pieces[0][5:]
elif len(bitcoin_message_pieces) > 1 and len(bitcoin_message_pieces[-1]) < 33:
# We shift however many bytes out of the 2nd to last block and into the last one
# to make sure it's at least 33 bytes long
req = 33 - len(bitcoin_message_pieces[-1])
bitcoin_message_pieces[-1] = bytes([bitcoin_message_pieces[-1][0]]) + bitcoin_message_pieces[-2][-req:] + bitcoin_message_pieces[-1][1:]
bitcoin_message_pieces[-2] = bitcoin_message_pieces[-2][:-req]
assert 120 >= len(bitcoin_message_pieces[-2]) >= 33 and 120 >= len(bitcoin_message_pieces[-1]) >= 33
# start building the transaction
tx = Transaction()
# setup the inputs
for n, k in enumerate(selected_inputs):
unspent = unspent_outputs[k]
tx_input = TransactionInput(tx_hash=Bitcoin.hexstring_to_bytes(unspent['tx_hash'], reverse=False),
tx_output_n=unspent['tx_output_n'],
scriptPubKey=Bitcoin.hexstring_to_bytes(unspent['script'], reverse=False),
amount=unspent['value'],
signing_key=private_key)
print('...input {} is {} BTC from {}'.format(n, Bitcoin.format_money(unspent['value']), bitcoin_input_address))
tx.addInput(tx_input)
# setup the outputs. a trigger address isn't really needed, since the encryption
# key can actually be used as the trigger (only those interested will be able to find
# the message, anyway)
# cost of the transaction is (targets + pieces/3 + sacrifice) * SPECIAL_SATOSHI
# peices/3 because we include 3 pieces per output
outputs_count = (len(bitcoin_delivery_addresses) + math.ceil(len(bitcoin_message_pieces) / 3))
approx_tx_cost = MINIMUM_SACRIFICE + outputs_count * SPECIAL_SATOSHI
if approx_tx_cost > total_input_amount:
raise Exception("not enough inputs provided")
tx_change_output = None
tx_change_output_n = None
if total_input_amount > approx_tx_cost:
print('...output (change) to {}'.format(bitcoin_change_address))
tx_change_output = TransactionOutput(bitcoin_change_address, amount=total_input_amount - approx_tx_cost)
tx_change_output_n = tx.addOutput(tx_change_output)
# The recipient will know how to handle this if they see their key...
for i, bitcoin_delivery_address in enumerate(bitcoin_delivery_addresses):
print('...output (target) to {}'.format(bitcoin_delivery_address))
tx_output = TransactionOutput(bitcoin_delivery_address, amount=SPECIAL_SATOSHI)
tx.addOutput(tx_output)
for i in range(0, len(bitcoin_message_pieces), 3):
pieces = bitcoin_message_pieces[i:i+3]
d = b''.join([p[1:] for p in pieces])
header = None
if i == 0:
header = d[:5]