Beispiel #1
0
 def stream_serialize(self, f):
     VarStringSerializer.stream_serialize(self.name.encode('utf-8'), f)
     self.schema_ver.stream_serialize(f)
     self.prev_schema.stream_serialize(f)
     VectorSerializer.stream_serialize(FieldType, self.field_types, f)
     VectorSerializer.stream_serialize(SealType, self.seal_types, f)
     VectorSerializer.stream_serialize(ProofType, self.proof_types, f)
Beispiel #2
0
 def msg_ser(self, f):
     f.write(struct.pack(b"<i", self.nVersion))
     f.write(struct.pack(b"<Q", self.nServices))
     f.write(struct.pack(b"<q", self.nTime))
     self.addrTo.stream_serialize(f, True)
     self.addrFrom.stream_serialize(f, True)
     f.write(struct.pack(b"<Q", self.nNonce))
     VarStringSerializer.stream_serialize(self.strSubVer, f)
     f.write(struct.pack(b"<i", self.nStartingHeight))
     f.write(struct.pack('?', self.relay))
Beispiel #3
0
 def msg_ser(self, f):
     f.write(struct.pack(b"<i", self.nVersion))
     f.write(struct.pack(b"<Q", self.nServices))
     f.write(struct.pack(b"<q", self.nTime))
     self.addrTo.stream_serialize(f, True)
     self.addrFrom.stream_serialize(f, True)
     f.write(struct.pack(b"<Q", self.nNonce))
     VarStringSerializer.stream_serialize(self.strSubVer, f)
     f.write(struct.pack(b"<i", self.nStartingHeight))
     f.write(struct.pack('?', self.relay))
Beispiel #4
0
    def stream_serialize_value(self, value, f):
        if value is None:
            if self.type is FieldType.Type.str or self.type is FieldType.Type.bytes:
                f.write(bytes([0x00]))
            elif self.type is FieldType.Type.fvi:
                f.write(bytes([0xFF]))
            elif self.type in [FieldType.Type.sha256, FieldType.Type.sha256d]:
                f.write(bytes([0]*32))
            elif self.type in [FieldType.Type.ripmd160, FieldType.Type.hash160]:
                f.write(bytes([0]*20))
            elif self.type is FieldType.Type.pubkey:
                f.write(bytes([0x00]))
            elif self.type is FieldType.Type.ecdsa:
                f.write(bytes([0x00]))
            return

        lut = {
            FieldType.Type.u8: lambda x: f.write(bytes([x])),
            FieldType.Type.u16: lambda x: f.write(struct.pack(b'<H', x)),
            FieldType.Type.u32: lambda x: f.write(struct.pack(b'<I', x)),
            FieldType.Type.u64: lambda x: f.write(struct.pack(b'<Q', x)),
            FieldType.Type.i8: lambda x: f.write(bytes([x])),
            FieldType.Type.i16: lambda x: f.write(struct.pack(b'<h', x)),
            FieldType.Type.i32: lambda x: f.write(struct.pack(b'<i', x)),
            FieldType.Type.i64: lambda x: f.write(struct.pack(b'<q', x)),
            FieldType.Type.vi: lambda x: VarIntSerializer.stream_serialize(x, f),
            FieldType.Type.fvi: lambda x: FlagVarIntSerializer.stream_serialize((x, False), f),
            FieldType.Type.str: lambda x: VarStringSerializer.stream_serialize(x.encode('utf-8'), f),
            FieldType.Type.bytes: lambda x: BytesSerializer.stream_serialize(x, f),
            FieldType.Type.sha256: lambda x: x.stream_serealize(f),
            FieldType.Type.sha256d: lambda x: x.stream_serealize(f),
            FieldType.Type.ripmd160: lambda x: x.stream_serealize(f),
            FieldType.Type.hash160: lambda x: x.stream_serealize(f),
            FieldType.Type.pubkey: lambda x: x.stream_serealize(f),
            FieldType.Type.ecdsa: lambda _: None,
        }
        if self.type in lut.keys():
            if self.type in [FieldType.Type.sha256, FieldType.Type.sha256d,
                             FieldType.Type.ripmd160, FieldType.Type.hash160] and not issubclass(value, HashId):
                raise ValueError('in order to serialize hash value you need to provide an instance of HashId class')
            lut[self.type](value)
        else:
            raise NotImplementedError('ECDSA serialization is not implemented')
Beispiel #5
0
 def stream_serialize(self, f):
     assert len(self.nonce) == HASH_LENGTH
     f.write(self.nonce)
     VarStringSerializer.stream_serialize(self.strPaymentInfo, f)
     VarStringSerializer.stream_serialize(self.host, f)
     f.write(struct.pack(b">H", self.port))
 def stream_serialize(self, f):
     VarStringSerializer.stream_serialize(self.vchMsg, f)
     VarStringSerializer.stream_serialize(self.vchSig, f)
Beispiel #7
0
 def stream_serialize(self, f):
     VarStringSerializer.stream_serialize(self.vchMsg, f)
     VarStringSerializer.stream_serialize(self.vchSig, f)
Beispiel #8
0
 def stream_serialize(self, f, **kwargs):
     VarStringSerializer.stream_serialize(self.name.encode('utf-8'), f)
     f.write(bytes([self.type]))
Beispiel #9
0
 def stream_serialize(self, f):
     VarStringSerializer.stream_serialize(self.name.encode('utf-8'), f)
     VectorSerializer.stream_serialize(TypeRef, self.fields, f)
     VectorSerializer.stream_serialize(
         TypeRef, [] if self.unseals is None else self.unseals, f)
     VectorSerializer.stream_serialize(TypeRef, self.seals, f)