def pb_bytes(self): vt_txn_bytes = concat([ pb_field(field_number=2, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.value_transfer_txns]) \ if len(self.value_transfer_txns) > 0 else b'' commit_txn_bytes = concat([ pb_field(field_number=4, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.commit_txns]) \ if len(self.commit_txns) > 0 else b'' reveal_txn_bytes = concat([ pb_field(field_number=5, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.reveal_txns])\ if len(self.reveal_txns) > 0 else b'' tally_txn_bytes = concat([ pb_field(field_number=6, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.tally_txns]) \ if len(self.tally_txns) > 0 else b'' return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.mint.pb_bytes()), vt_txn_bytes, commit_txn_bytes, reveal_txn_bytes, tally_txn_bytes, ])
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.dr_pointer.pb_bytes()), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.commitment.pb_bytes()), pb_field(field_number=3, tag=LENGTH_DELIMITED, value=self.proof.pb_bytes()), concat([ pb_field(field_number=4, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.collateral ]), concat([ pb_field(field_number=5, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.outputs ]), pb_field(field_number=6, tag=LENGTH_DELIMITED, value=self.bn256_public_key.pb_bytes()), ])
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=VAR_INT, value=self.epoch), concat([ pb_field(field_number=2, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.outputs ]) ])
def pb_field(field_number: int, tag: int, value): _data = [] if tag == VAR_INT: _data = concat([var_int_serializer(value=value)]) elif tag == LENGTH_DELIMITED: _data = bytes_serializer(value=value) else: ... return concat([make_tag_bytes(field_number=field_number, tag=tag), _data])
def pb_bytes(self) -> bytes: filter_bytes = pb_field(field_number=1, tag=LENGTH_DELIMITED, value=concat([ x.pb_bytes() for x in self.filters ])) if (len(self.filters) > 0) else b'' reducer_bytes = pb_field(field_number=2, tag=VAR_INT, value=self.reducer) return concat([filter_bytes, reducer_bytes])
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.body.to_json()), concat([ pb_field(field_number=2, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.signatures ]) ])
def pb_bytes(self) -> bytes: return concat([ concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.inputs ]), concat([ pb_field(field_number=2, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.outputs ]) ])
def pb_bytes(self) -> bytes: kind_bytes = pb_field(field_number=1, tag=VAR_INT, value=self.kind.value) url_bytes = pb_field(field_number=2, tag=LENGTH_DELIMITED, value=str_to_bytes(self.url)) script_bytes = pb_field(field_number=3, tag=LENGTH_DELIMITED, value=self.script) if self.kind.value == 0: return concat([url_bytes, script_bytes]) else: return concat([kind_bytes, url_bytes, script_bytes])
def test_sign_and_verify(self): data = hex_to_bytes(concat(['ab' for _ in range(32)])) secret_key = WitPrivateKey.from_hex(concat(['cd' for _ in range(32)])) public_key = secret_key.to_public() local_signature = secret_key.sign_hash(data) expected_signature = '3044' \ '0220' \ '3dc4fa74655c21b7ffc0740e29bfd88647e8dfe2b68c507cf96264e4e7439c1f' \ '0220' \ '7aa61261b18eebdfdb704ca7bab4c7bcf7961ae0ade5309f6f1398e21aec0f9f' recovered_signature = Signature.from_hex(expected_signature) assert local_signature.verify_hash(data, public_key) assert recovered_signature.verify_hash(data, public_key)
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=VAR_INT, value=self.checkpoint), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.hash_prev_vrf.pb_bytes()) ])
def pb_bytes(self) -> bytes: timelock_bytes = pb_field( field_number=1, tag=VAR_INT, value=self.time_lock) if (self.time_lock > 0) else b'' retrieve_bytes = concat([ pb_field(field_number=2, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.retrieve ]) aggregate_bytes = pb_field(field_number=3, tag=LENGTH_DELIMITED, value=self.aggregate.pb_bytes()) tally_bytes = pb_field(field_number=4, tag=LENGTH_DELIMITED, value=self.tally.pb_bytes()) return concat( [timelock_bytes, retrieve_bytes, aggregate_bytes, tally_bytes])
def pb_bytes(self): if self.public_key is None: return b'' return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.public_key) ])
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.mint_hash.pb_bytes()), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.vt_hash_merkle_root.pb_bytes()), pb_field(field_number=3, tag=LENGTH_DELIMITED, value=self.dr_hash_merkle_root.pb_bytes()), pb_field(field_number=4, tag=LENGTH_DELIMITED, value=self.commit_hash_merkle_root.pb_bytes()), pb_field(field_number=5, tag=LENGTH_DELIMITED, value=self.reveal_hash_merkle_root.pb_bytes()), pb_field(field_number=6, tag=LENGTH_DELIMITED, value=self.tally_hash_merkle_root.pb_bytes()), ])
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.highest_block_checkpoint.pb_bytes()), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.highest_superblock_checkpoint.pb_bytes()), ])
def pb_bytes(self) -> bytes: return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.signature.pb_bytes()), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.public_key.pb_bytes()) ])
def pb_bytes(self) -> bytes: time_lock_bytes = pb_field( field_number=3, tag=VAR_INT, value=self.time_lock) if (self.time_lock > 0) else None if time_lock_bytes is None: return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.pkh.pb_bytes()), pb_field(field_number=2, tag=VAR_INT, value=self.value) ]) else: return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.pkh.pb_bytes()), pb_field(field_number=2, tag=VAR_INT, value=self.value), time_lock_bytes ])
def pb_bytes(self) -> bytes: output_index_bytes = pb_field( field_number=2, tag=VAR_INT, value=self.output_index) if (self.output_index > 0) else b'' return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.transaction_id.pb_bytes()), output_index_bytes ])
def var_int(value: int): """ Write unsigned `VarInt` to a file-like object. """ if isinstance(value, str): value = int(value) tmp = [] while value > 0x7F: tmp.append(bytes((value & 0x7F | 0x80, ))) value >>= 7 tmp.append(bytes((value, ))) return concat(tmp)
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.dr_pointer.pb_bytes()), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.tally), concat([ pb_field(field_number=3, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.outputs ]), concat([ pb_field(field_number=4, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.out_of_consensus ]), concat([ pb_field(field_number=5, tag=LENGTH_DELIMITED, value=x.pb_bytes()) for x in self.error_committers ]), ])
def pb_bytes(self) -> bytes: return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.block_header.pb_bytes()), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.block_sig.pb_bytes()), pb_field(field_number=3, tag=LENGTH_DELIMITED, value=self.txns.pb_bytes()), ])
def pb_bytes(self) -> bytes: return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.data_request.pb_bytes()), pb_field(field_number=2, tag=VAR_INT, value=self.witness_reward), pb_field(field_number=3, tag=VAR_INT, value=self.witnesses), pb_field(field_number=4, tag=VAR_INT, value=self.commit_and_reveal_fee), pb_field(field_number=5, tag=VAR_INT, value=self.min_consensus_percentage), pb_field(field_number=6, tag=VAR_INT, value=self.collateral), ])
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=VAR_INT, value=self.signals), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.beacon.pb_bytes()), pb_field(field_number=3, tag=LENGTH_DELIMITED, value=self.merkle_roots.pb_bytes()), pb_field(field_number=4, tag=LENGTH_DELIMITED, value=self.proof.pb_bytes()), pb_field(field_number=5, tag=LENGTH_DELIMITED, value=self.bn256_public_key.pb_bytes()), ])
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=VAR_INT, value=self.signing_committee_length), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.ars_root.pb_bytes()), pb_field(field_number=3, tag=LENGTH_DELIMITED, value=self.data_request_root.pb_bytes()), pb_field(field_number=4, tag=VAR_INT, value=self.index), pb_field(field_number=5, tag=LENGTH_DELIMITED, value=self.last_block.pb_bytes()), pb_field(field_number=6, tag=LENGTH_DELIMITED, value=self.last_block_in_previous_superblock.pb_bytes()), pb_field(field_number=7, tag=LENGTH_DELIMITED, value=self.tally_root.pb_bytes()), ])
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=bytes(self.proof)), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.public_key.pb_bytes()), ])
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.proof.pb_bytes()) ])
def pb_bytes(self) -> bytes: op_bytes = pb_field(field_number=1, tag=VAR_INT, value=self.op) args_bytes = pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.args) return concat([op_bytes, args_bytes])
def bytes_serializer(value: bytes): return concat([var_int(len(value)), value])
def hash(self): return sha256(concat([self.data_poi_hash(), self.rest_poi_hash()]))
def pb_bytes(self): return concat([ pb_field(field_number=1, tag=LENGTH_DELIMITED, value=self.dr_pointer.pb_bytes()), pb_field(field_number=2, tag=LENGTH_DELIMITED, value=self.reveal), pb_field(field_number=3, tag=LENGTH_DELIMITED, value=self.pkh.pb_bytes()) ])
def pb_bytes(self) -> bytes: return pb_field(field_number=1, tag=LENGTH_DELIMITED, value=concat( [int_to_bytes(self.compressed), self._bytes]))