本文整理汇总了Python中bitcoin.core方法的典型用法代码示例。如果您正苦于以下问题:Python bitcoin.core方法的具体用法?Python bitcoin.core怎么用?Python bitcoin.core使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bitcoin
的用法示例。
在下文中一共展示了bitcoin.core方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: from_pubkey
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def from_pubkey(cls, pubkey, accept_invalid=False):
"""Create a P2PKH bitcoin address from a pubkey
Raises CBitcoinAddressError if pubkey is invalid, unless accept_invalid
is True.
The pubkey must be a bytes instance; CECKey instances are not accepted.
"""
if not isinstance(pubkey, bytes):
raise TypeError('pubkey must be bytes instance; got %r' % pubkey.__class__)
if not accept_invalid:
if not isinstance(pubkey, bitcoin.core.key.CPubKey):
pubkey = bitcoin.core.key.CPubKey(pubkey)
if not pubkey.is_fullyvalid:
raise CBitcoinAddressError('invalid pubkey')
pubkey_hash = bitcoin.core.Hash160(pubkey)
return P2PKHBitcoinAddress.from_bytes(pubkey_hash)
示例2: generate_multisig_address
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def generate_multisig_address(redeemscript: str, testnet: bool = False) -> str:
"""
Generates a P2SH-multisig Bitcoin address from a redeem script
Args:
redeemscript: hex-encoded redeem script
use generate_multisig_redeem_script to create
the redeem script from three compressed public keys
testnet: Should the address be testnet or mainnet?
Example:
TODO
"""
if testnet:
bitcoin.SelectParams('testnet')
redeem_script = CScript(bitcoin.core.x(redeemscript))
addr = P2SHBitcoinAddress.from_redeemScript(redeem_script)
return str(addr)
示例3: set_tx
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def set_tx(self, tx):
self.version_edit.setText(str(tx.nVersion))
self.inputs_tree.model.set_tx(tx)
self.outputs_tree.model.set_tx(tx)
self.locktime_edit.set_locktime(tx.nLockTime)
for name, w in self.field_widgets.items():
# We already handle these four.
if name in ['nVersion', 'vin', 'vout', 'nLockTime']:
continue
if not name in [field[0] for field in tx.fields]:
continue
value = getattr(tx, name)
w.setText(str(value))
self.tx_properties.set_tx(tx)
self.tx_id.setText(bitcoin.core.b2lx(tx.GetHash()))
示例4: build_transaction
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def build_transaction(self):
self.tx_widget.clear()
self.sighash_widget.clear()
self.tx = tx = Transaction()
tx.nVersion = self.version_edit.get_amount()
tx.vin = self.inputs_tree.get_inputs()
tx.vout = self.outputs_tree.get_outputs()
tx.nLockTime = self.locktime_edit.get_amount()
for name, w in self.tx_field_widgets:
if not name in [field[0] for field in tx.fields]:
continue
value = str(w.text())
default = getattr(tx, name)
if isinstance(default, int):
value = w.get_amount()
setattr(tx, name, value)
self.raw_tx.setText(bitcoin.core.b2x(tx.serialize()))
self.tx_widget.set_tx(tx)
self.sighash_widget.set_tx(tx)
示例5: test_checkblock
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def test_checkblock(self):
# (No witness) coinbase generated by Bitcoin Core
str_coinbase = '01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03520101ffffffff0100f2052a01000000232102960c90bc04a631cb17922e4f5d80ac75fd590a88b8baaa5a3d5086ac85e4d788ac00000000'
# No witness transaction
str_tx = '0100000001e3d0c1d051a3abe79d5951dcab86f71d8926aff5caed5ff9bd72cb593e4ebaf5010000006b483045022100a28e1c57e160296953e1af85c5034bb1b907c12c50367da75ba547874a8a8c52022040682e888ddce7fd5c72519a9f28f22f5164c8af864d33332bbc7f65596ad4ae012102db30394fd5cc8288bed607b9382338240c014a98c9c0febbfb380db74ceb30a3ffffffff020d920000000000001976a914ad781c8ffcc18b2155433cba2da4601180a66eef88aca3170000000000001976a914bacb1c4b0725e61e385c7093b4260533953c8e1688ac00000000'
# SegWit transaction
str_w_tx = '0100000000010115e180dc28a2327e687facc33f10f2a20da717e5548406f7ae8b4c811072f8560100000000ffffffff0100b4f505000000001976a9141d7cd6c75c2e86f4cbf98eaed221b30bd9a0b92888ac02483045022100df7b7e5cda14ddf91290e02ea10786e03eb11ee36ec02dd862fe9a326bbcb7fd02203f5b4496b667e6e281cc654a2da9e4f08660c620a1051337fa8965f727eb19190121038262a6c6cec93c2d3ecd6c6072efea86d02ff8e3328bbd0242b20af3425990ac00000000'
witness_nonce = _bytes(random.getrandbits(8) for _ in range(32))
coinbase = CMutableTransaction.deserialize(x(str_coinbase))
coinbase.wit = CTxWitness([CTxInWitness(CScriptWitness([witness_nonce]))])
tx_legacy = CTransaction.deserialize(x(str_tx))
tx_segwit = CTransaction.deserialize(x(str_w_tx))
witness_merkle_root = CBlock.build_witness_merkle_tree_from_txs((coinbase, tx_legacy, tx_segwit))[-1]
commitment = Hash(witness_merkle_root + witness_nonce)
commitment_script = bitcoin.core.WITNESS_COINBASE_SCRIPTPUBKEY_MAGIC + commitment
coinbase.vout.append(CTxOut(0, CScript(commitment_script)))
block = CBlock(2, b'\x00'*32, b'\x00'*32, 0, 0, 0, (coinbase, tx_legacy, tx_segwit))
CheckBlock(block, False, True)
示例6: __init__
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def __init__(self, secret, compressed=True):
self._cec_key = bitcoin.core.key.CECKey()
self._cec_key.set_secretbytes(secret)
self._cec_key.set_compressed(compressed)
self.pub = bitcoin.core.key.CPubKey(self._cec_key.get_pubkey(), self._cec_key)
示例7: __init__
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def __init__(self, protover=bitcoin.net.PROTO_VERSION):
super(msg_ix, self).__init__(protover)
self.tx = bitcoin.core.CTransaction()
示例8: msg_deser
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def msg_deser(cls, f, protover=bitcoin.net.PROTO_VERSION):
c = cls()
c.tx = bitcoin.core.CTransaction.stream_deserialize(f)
return c
示例9: deserialize
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def deserialize(self):
self.tx_widget.set_tx(self.tx)
self.inputs_table_model.set_tx(self.tx)
self.info('Deserialized transaction %s' % bitcoin.core.b2lx(self.tx.GetHash()))
示例10: do_verify_input
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def do_verify_input(self, tx, in_idx):
if tx.is_coinbase():
self.result_edit.setText('Error: Cannot verify coinbase transactions.')
self.error('Attempted to verify coinbase transaction.')
return False
raw_prev_tx = None
tx_in = tx.vin[in_idx]
txid = b2lx(tx_in.prevout.hash)
prev_out_n = tx_in.prevout.n
try:
raw_prev_tx = self.handler.download_blockchain_data('raw_transaction', txid)
except Exception as e:
self.error(str(e))
return False
try:
prev_tx = Transaction.deserialize(raw_prev_tx.decode('hex'))
result = bitcoin.core.scripteval.VerifyScript(tx_in.scriptSig, prev_tx.vout[prev_out_n].scriptPubKey, tx, in_idx)
self.result_edit.setText('Successfully verified input {}'.format(in_idx))
self.inputs_table_model.set_verified(in_idx, True)
except Exception as e:
self.result_edit.setText(str(e))
self.inputs_table_model.set_verified(in_idx, False)
self.error(str(e))
return False
return True
示例11: from_scriptPubKey
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def from_scriptPubKey(cls, scriptPubKey, accept_non_canonical_pushdata=True, accept_bare_checksig=True):
"""Convert a scriptPubKey to a P2PKH address
Raises CBitcoinAddressError if the scriptPubKey isn't of the correct
form.
accept_non_canonical_pushdata - Allow non-canonical pushes (default True)
accept_bare_checksig - Treat bare-checksig as P2PKH scriptPubKeys (default True)
"""
if accept_non_canonical_pushdata:
# Canonicalize script pushes
scriptPubKey = script.CScript(scriptPubKey) # in case it's not a CScript instance yet
try:
scriptPubKey = script.CScript(tuple(scriptPubKey)) # canonicalize
except bitcoin.core.script.CScriptInvalidError:
raise CBitcoinAddressError('not a P2PKH scriptPubKey: script is invalid')
if (len(scriptPubKey) == 25
and _bord(scriptPubKey[0]) == script.OP_DUP
and _bord(scriptPubKey[1]) == script.OP_HASH160
and _bord(scriptPubKey[2]) == 0x14
and _bord(scriptPubKey[23]) == script.OP_EQUALVERIFY
and _bord(scriptPubKey[24]) == script.OP_CHECKSIG):
return cls.from_bytes(scriptPubKey[3:23], bitcoin.params.BASE58_PREFIXES['PUBKEY_ADDR'])
elif accept_bare_checksig:
pubkey = None
# We can operate on the raw bytes directly because we've
# canonicalized everything above.
if (len(scriptPubKey) == 35 # compressed
and _bord(scriptPubKey[0]) == 0x21
and _bord(scriptPubKey[34]) == script.OP_CHECKSIG):
pubkey = scriptPubKey[1:34]
elif (len(scriptPubKey) == 67 # uncompressed
and _bord(scriptPubKey[0]) == 0x41
and _bord(scriptPubKey[66]) == script.OP_CHECKSIG):
pubkey = scriptPubKey[1:65]
if pubkey is not None:
return cls.from_pubkey(pubkey, accept_invalid=True)
raise CBitcoinAddressError('not a P2PKH scriptPubKey')
示例12: from_scriptPubKey
# 需要导入模块: import bitcoin [as 别名]
# 或者: from bitcoin import core [as 别名]
def from_scriptPubKey(cls, scriptPubKey, accept_non_canonical_pushdata=True, accept_bare_checksig=True):
"""Convert a scriptPubKey to a P2PKH address
Raises CBitcoinAddressError if the scriptPubKey isn't of the correct
form.
accept_non_canonical_pushdata - Allow non-canonical pushes (default True)
accept_bare_checksig - Treat bare-checksig as P2PKH scriptPubKeys (default True)
"""
if accept_non_canonical_pushdata:
# Canonicalize script pushes
scriptPubKey = script.CScript(scriptPubKey) # in case it's not a CScript instance yet
try:
scriptPubKey = script.CScript(tuple(scriptPubKey)) # canonicalize
except bitcoin.core.script.CScriptInvalidError:
raise CBitcoinAddressError('not a P2PKH scriptPubKey: script is invalid')
if scriptPubKey.is_witness_v0_keyhash():
return cls.from_bytes(scriptPubKey[2:22], bitcoin.params.BASE58_PREFIXES['PUBKEY_ADDR'])
elif scriptPubKey.is_witness_v0_nested_keyhash():
return cls.from_bytes(scriptPubKey[3:23], bitcoin.params.BASE58_PREFIXES['PUBKEY_ADDR'])
elif (len(scriptPubKey) == 25
and _bord(scriptPubKey[0]) == script.OP_DUP
and _bord(scriptPubKey[1]) == script.OP_HASH160
and _bord(scriptPubKey[2]) == 0x14
and _bord(scriptPubKey[23]) == script.OP_EQUALVERIFY
and _bord(scriptPubKey[24]) == script.OP_CHECKSIG):
return cls.from_bytes(scriptPubKey[3:23], bitcoin.params.BASE58_PREFIXES['PUBKEY_ADDR'])
elif accept_bare_checksig:
pubkey = None
# We can operate on the raw bytes directly because we've
# canonicalized everything above.
if (len(scriptPubKey) == 35 # compressed
and _bord(scriptPubKey[0]) == 0x21
and _bord(scriptPubKey[34]) == script.OP_CHECKSIG):
pubkey = scriptPubKey[1:34]
elif (len(scriptPubKey) == 67 # uncompressed
and _bord(scriptPubKey[0]) == 0x41
and _bord(scriptPubKey[66]) == script.OP_CHECKSIG):
pubkey = scriptPubKey[1:65]
if pubkey is not None:
return cls.from_pubkey(pubkey, accept_invalid=True)
raise CBitcoinAddressError('not a P2PKH scriptPubKey')