예제 #1
0
    def generate_hash(self):
        if self.contains_transaction:

            if self.extrinsic_length:
                extrinsic_data = self.data.data
            else:
                # Fallback for legacy version, prefix additional Compact<u32> with length
                extrinsic_length_type = CompactU32(ScaleBytes(bytearray()))
                extrinsic_length_type.encode(self.data.length)
                extrinsic_data = extrinsic_length_type.data.data + self.data.data

            return blake2b(extrinsic_data, digest_size=32).digest().hex()
        else:
            return None
예제 #2
0
    def test_compact_u32_larger_than_4bytes(self):

        obj = CompactU32()
        obj.encode(150000000000000)
        self.assertEqual(str(obj.data), "0x0b0060b7986c88")
예제 #3
0
    def test_compact_u32_4bytes(self):

        obj = CompactU32()
        obj.encode(1000000)
        self.assertEqual(str(obj.data), "0x02093d00")