Transaction
69d3bdae1fe46ab62f855d027a53a673867b978e13293a51f41bb22ffa95c648
Timestamp (utc)
2016-01-23 14:49:59
Fee Paid
0.00040000 BSV
(0.05969996 BSV
- 0.05929996 BSV
)Locktime
2016-01-23 14:27:26 UTC
Fee Rate
10,340 sat/KB
Version
1
Confirmations
1,078,923
Size Stats
3,866 B
1 Input
Total Input:
0.05969996 BSV
3 Outputs
Total Output:
0.05929996 BSV
- #1OP_RETURN0.00000001 BSVj#!/usr/bin/env python3 class UInt: __slots__ = ('val',) def __init__(self, value: int): if value < 0: raise ValueError("Value must be 0 or more than 0.") self.val = value def to_bstring(self, unit: int): if unit not in (8, 16, 32, 64): raise ValueError("2nd argument unit must be 8 or 16 or 32 or 64.") arr = bytearray() val = self.val while val > 0: arr.append(val % 256) val = int(val / 256) size = int(unit / 8) if len(arr) > size: raise ValueError("%d is too large to uint%d_t" % (self.val, unit)) while len(arr) < size: arr.append(0) return bytes(arr) @staticmethod def from_bstring(bstring: bytes, unit: int): if unit not in (8, 16, 32, 64): raise ValueError("2nd argument unit must be 8 or 16 or 32 or 64.") size = int(unit / 8) val = 0 for i in range(0, size, 1): v = int(bstring[i]) << (8 * i) val |= v return UInt(val), bstring[size:] class Int: __slots__ = ('val',) def __init__(self, value): self.val = value @staticmethod def from_bstring(bstring: bytes, unit: int): if unit not in (8, 16, 32, 64): raise ValueError("2nd argument unit must be 8 or 16 or 32 or 64.") uint, bstring = UInt.from_bstring(bstring, unit) val = uint.val size = int(unit / 8) most_significant_bit = 1 << (unit - 1) if val & most_significant_bit: return Int(val - (1 << unit)), bstring else: return Int(val), bstring def to_bstring(self, unit: int): if unit not in (8, 16, 32, 64): raise ValueError("2nd argument unit must be 8 or 16 or 32 or 64.") if self.val >= 0: return UInt(self.val).to_bstring(unit) min_bound = -1 * (1 << (unit - 1)) max_bound = (1 << (unit - 1)) + 1 if self.val < min_bound or max_bound < self.val: raise ValueError('%d is out of range for int%d_t.' % (self.val, unit)) return UInt((1 << unit) + self.val).to_bstring(unit) class VLInt: __slots__ = ('val',) def __init__(self, value: int): if value < 0: raise ValueError("Value must be 0 or larger than 0.") self.val = value @staticmethod def from_bstring(bstring: bytes): uint = None if bstring[0] == 0xff: uint, bstring = UInt.from_bstring(bstring[1:], 64) elif bstring[0] == 0xfe: uint, bstring = UInt.from_bstring(bstring[1:], 32) elif bstring[0] == 0xfd: uint, bstring = UInt.from_bstring(bstring[1:], 16) else: uint, bstring = UInt.from_bstring(bstring, 8) return VLInt(uint.val), bstring def to_bstring(self): if self.val < 0xfd: uint = UInt(self.val) return uint.to_bstring(8) if self.val <= 0xffff: uint = UInt(self.val) return b'\xfd' + uint.to_bstring(16) if self.val <= 0xffffffff: uint = UInt(self.val) return b'\xfe' + uint.to_bstring(32) else: uint = UInt(self.val) return b'\xfe' + uint.to_bstring(64) class VLString(bytes): @staticmethod def from_bstring(bstring: bytes): size, bstring = VLInt.from_bstring(bstring) return VLString(bstring[0:size.val]), bstring[size.val:] def to_bstring(self): size = VLInt(len(self)) return size.to_bstring() + selfhttps://whatsonchain.com/tx/69d3bdae1fe46ab62f855d027a53a673867b978e13293a51f41bb22ffa95c648