예제 #1
0
 def parse(self, raw_data):
     deserializer = Deserializer(raw_data)
     self.input = deserializer.parse_hash()
     self.number = deserializer.parse_u32() #TODO we made input number contain more bytes just for coinbase
     
     output_count = deserializer.parse_u8()
     self.outputs = []
     for _ in range(output_count):
         self.outputs.append(deserializer.parse_hash())
     
     self.amounts = []
     for _ in range(output_count): #amount count must be the same as output count
         self.amounts.append(deserializer.parse_u32())
     self.len = deserializer.len
예제 #2
0
    def parse(self, raw_data):
        deserializer = Deserializer(raw_data)

        self.timestamp = deserializer.parse_u32()

        hash_count = deserializer.parse_u16()

        self.prev_hashes = []
        for i in range(0, hash_count):
            prev_hash = deserializer.read_and_move(32)
            self.prev_hashes.append(prev_hash)

        system_tx_count = deserializer.parse_u8()
        self.system_txs = []
        for i in range(0, system_tx_count):
            tx = TransactionParser.parse(
                deserializer.data
            )  # TODO: (is) Better to deserialize passing deserializer directly
            self.system_txs.append(tx)
            deserializer.read_and_move(tx.get_len() + 1)  # one byte for type

        payment_tx_count = deserializer.parse_u8()
        self.payment_txs = []
        for i in range(0, payment_tx_count):
            tx = TransactionParser.parse(
                deserializer.data
            )  # TODO: (is) Better to deserialize passing deserializer directly
            self.payment_txs.append(tx)
            deserializer.read_and_move(tx.get_len() + 1)  # one byte for type
예제 #3
0
 def parse(self, raw_data):
     deserializer = Deserializer(raw_data)
     self.signature = deserializer.parse_signature()
     self.pubkey = deserializer.parse_pubkey()
     self.timestamp = deserializer.parse_timestamp()
     self.number_of_block = deserializer.parse_u32()
     self.len = deserializer.get_len()
예제 #4
0
 def parse(self, raw_data):
     deserializer = Deserializer(raw_data)
     self.signatre = self.signature = deserializer.parse_signature()
     block_length = deserializer.parse_u32()
     raw_block = deserializer.read_and_move(block_length)
     self.block = chain.block.Block()
     self.block.parse(raw_block)
     return self
 def parse(self, raw_data):
     deserializer = Deserializer(raw_data)
     self.signature = deserializer.parse_signature()
     self.pubkey_index = deserializer.parse_u32()
     self.pieces = []
     pieces_len = deserializer.parse_u16()
     for _ in range(0, pieces_len):
         piece_size = deserializer.parse_u8()
         piece = deserializer.read_and_move(piece_size)
         self.pieces.append(piece)
     self.len = deserializer.get_len()
 def parse(self, raw_data):
     deserializer = Deserializer(raw_data)
     self.generated_pubkey = deserializer.parse_pubkey()
     self.pubkey_index = deserializer.parse_u32()
     self.signature = deserializer.parse_signature()
     self.len = deserializer.get_len()
예제 #7
0
 def parse(self, raw_data):
     deserializer = Deserializer(raw_data)
     self.rand = deserializer.parse_encrypted_data()
     self.pubkey_index = deserializer.parse_u32()
     self.signature = deserializer.parse_signature()
     self.len = deserializer.get_len()