@@ -836,22 +836,24 @@ def __repr__(self):
836836 % (self .challenge , self .solution )
837837
838838class DynaFedParamEntry :
839- __slots__ = ("m_serialize_type" , "m_signblockscript" , "m_signblock_witness_limit" , "m_fedpeg_program" , "m_fedpegscript" , "m_extension_space" )
839+ __slots__ = ("m_serialize_type" , "m_signblockscript" , "m_signblock_witness_limit" , "m_fedpeg_program" , "m_fedpegscript" , "m_extension_space" , "m_extra_root" )
840840
841841 # Constructor args will define serialization type:
842842 # null = 0
843843 # signblock-related fields = 1, required for m_current on non-epoch-starts
844844 # all fields = 2, required for epoch starts
845- def __init__ (self , m_signblockscript = b"" , m_signblock_witness_limit = 0 , m_fedpeg_program = b"" , m_fedpegscript = b"" , m_extension_space = []):
845+ def __init__ (self , m_signblockscript = b"" , m_signblock_witness_limit = 0 , m_fedpeg_program = b"" , m_fedpegscript = b"" , m_extension_space = [], m_extra_root = 0 ):
846846 self .m_signblockscript = m_signblockscript
847847 self .m_signblock_witness_limit = m_signblock_witness_limit
848848 self .m_fedpeg_program = m_fedpeg_program
849849 self .m_fedpegscript = m_fedpegscript
850850 self .m_extension_space = m_extension_space
851851 if self .is_null ():
852852 self .m_serialize_type = 0
853- elif m_fedpegscript == b"" and m_extension_space == []:
853+ elif m_fedpegscript == b"" and m_fedpeg_program == b"" and m_extension_space == []:
854854 self .m_serialize_type = 1
855+ # We also set the "extra root" in this case
856+ self .m_extra_root = m_extra_root
855857 else :
856858 self .m_serialize_type = 2
857859
@@ -862,6 +864,7 @@ def set_null(self):
862864 self .m_fedpegscript = b""
863865 self .m_extension_space = []
864866 self .m_serialize_type = 0
867+ self .m_extra_root = 0
865868
866869 def is_null (self ):
867870 return self .m_signblockscript == b"" and self .m_signblock_witness_limit == 0 and \
@@ -874,6 +877,7 @@ def serialize(self):
874877 if self .m_serialize_type == 1 :
875878 r += ser_string (self .m_signblockscript )
876879 r += struct .pack ("<I" , self .m_signblock_witness_limit )
880+ r += ser_uint256 (self .m_extra_root )
877881 elif self .m_serialize_type == 2 :
878882 r += ser_string (self .m_signblockscript )
879883 r += struct .pack ("<I" , self .m_signblock_witness_limit )
@@ -889,6 +893,7 @@ def deserialize(self, f):
889893 if self .m_serialize_type == 1 :
890894 self .m_signblockscript = deser_string (f )
891895 self .m_signblock_witness_limit = struct .unpack ("<I" , f .read (4 ))[0 ]
896+ self .m_extra_root = deser_uint256 (f )
892897 elif self .m_serialize_type == 2 :
893898 self .m_signblockscript = deser_string (f )
894899 self .m_signblock_witness_limit = struct .unpack ("<I" , f .read (4 ))[0 ]
0 commit comments