@@ -56,7 +56,6 @@ def MurmurHash3(nHashSeed, vDataToHash):
5656 # tail
5757 k1 = 0
5858 j = (len (vDataToHash ) // 4 ) * 4
59- import sys
6059 bord = ord
6160 if sys .version > '3' :
6261 # In Py3 indexing bytes returns numbers, not characters
@@ -123,6 +122,7 @@ def bloom_hash(self, nHashNum, vDataToHash):
123122 return MurmurHash3 (((nHashNum * 0xFBA4C795 ) + self .nTweak ) & 0xFFFFFFFF , vDataToHash ) % (len (self .vData ) * 8 )
124123
125124 __bit_mask = bytearray ([0x01 , 0x02 , 0x04 , 0x08 , 0x10 , 0x20 , 0x40 , 0x80 ])
125+
126126 def insert (self , elem ):
127127 """Insert an element in the filter.
128128
@@ -164,18 +164,20 @@ def IsRelevantAndUpdate(tx, tx_hash):
164164 raise NotImplementedError
165165
166166 __struct = struct .Struct (b'<IIB' )
167+
167168 @classmethod
168169 def stream_deserialize (cls , f ):
169- vData = bitcoin .core .serialize .BytesSerializer .stream_deserialize (f )
170+ vData = bytearray ( bitcoin .core .serialize .BytesSerializer .stream_deserialize (f ) )
170171 (nHashFuncs ,
171172 nTweak ,
172- nFlags ) = self .__struct .unpack (_ser_read (f , self .__struct .size ))
173- self = cls ()
174- self .vData = vData
175- self .nHashFuncs = nHashFuncs
176- self .nTweak = nTweak
177- self .nFlags = nFlags
178- return self
173+ nFlags ) = CBloomFilter .__struct .unpack (bitcoin .core .ser_read (f , CBloomFilter .__struct .size ))
174+ # These arguments can be fake, the real values are set just after
175+ deserialized = cls (1 , 0.01 , 0 , CBloomFilter .UPDATE_ALL )
176+ deserialized .vData = vData
177+ deserialized .nHashFuncs = nHashFuncs
178+ deserialized .nTweak = nTweak
179+ deserialized .nFlags = nFlags
180+ return deserialized
179181
180182 def stream_serialize (self , f ):
181183 if sys .version > '3' :
0 commit comments