mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 12:32:48 +01:00
561ec27683
78214588d
Use for-loop instead of list comprehension (practicalswift)823979436
Use the variable name _ for unused return values (practicalswift)2e6080bbf
Remove unused variables and/or function calls (practicalswift)9b94054b7
Avoid reference to undefined name: stderr does not exist, sys.stderr does (practicalswift)51cb6b822
Use print(...) instead of undefined printf(...) (practicalswift)25cd520fc
Use sys.exit(...) instead of exit(...): exit(...) should not be used in programs (practicalswift) Pull request description: Python cleanups: * Avoid reference to undefined name: `stderr` does not exist, `sys.stderr` does * Use `print(...)` instead of undefined `printf(...)` * Avoid redefinition of variable (`tx`) in list comprehension * Remove unused variables and/or function calls * Use `sys.exit(...)` instead of `exit(...)`: [`exit(...)` should not be used in programs](https://github.com/bitcoin/bitcoin/pull/10753#discussion_r125935027) Tree-SHA512: 1238dfbc1d20f7edadea5e5406a589f293065638f6234809f0d5b6ba746dffe3d276bc5884c7af388a6c798c61a8759faaccf57f381225644754c0f61914eb4b
59 lines
1.2 KiB
Python
59 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
#
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
"""Big number routines.
|
|
|
|
This file is copied from python-bitcoinlib.
|
|
"""
|
|
|
|
import struct
|
|
|
|
|
|
# generic big endian MPI format
|
|
|
|
def bn_bytes(v, have_ext=False):
|
|
ext = 0
|
|
if have_ext:
|
|
ext = 1
|
|
return ((v.bit_length()+7)//8) + ext
|
|
|
|
def bn2bin(v):
|
|
s = bytearray()
|
|
i = bn_bytes(v)
|
|
while i > 0:
|
|
s.append((v >> ((i-1) * 8)) & 0xff)
|
|
i -= 1
|
|
return s
|
|
|
|
def bn2mpi(v):
|
|
have_ext = False
|
|
if v.bit_length() > 0:
|
|
have_ext = (v.bit_length() & 0x07) == 0
|
|
|
|
neg = False
|
|
if v < 0:
|
|
neg = True
|
|
v = -v
|
|
|
|
s = struct.pack(b">I", bn_bytes(v, have_ext))
|
|
ext = bytearray()
|
|
if have_ext:
|
|
ext.append(0)
|
|
v_bin = bn2bin(v)
|
|
if neg:
|
|
if have_ext:
|
|
ext[0] |= 0x80
|
|
else:
|
|
v_bin[0] |= 0x80
|
|
return s + ext + v_bin
|
|
|
|
# bitcoin-specific little endian format, with implicit size
|
|
def mpi2vch(s):
|
|
r = s[4:] # strip size
|
|
r = r[::-1] # reverse string, converting BE->LE
|
|
return r
|
|
|
|
def bn2vch(v):
|
|
return bytes(mpi2vch(bn2mpi(v)))
|