@@ -64,32 +64,36 @@ def decode_parameter(self, bytes_data, offset, param):
6464 if match :
6565 signed = match .group (1 ) == 'int'
6666 bits = int (match .group (2 ))
67- return self .decode_number (bytes_data , offset , bits , signed )
67+ return self .decode_number (bytes_data , offset , signed )
6868 if type_ == 'tuple' :
6969 return self .decode_tuple (bytes_data , offset , param )
7070 raise Exception ('Unsupported type: ' + type_ )
7171
72- def decode_address (self , bytes_data , offset ):
72+ @staticmethod
73+ def decode_address (bytes_data , offset ):
7374 data = bytes_data [offset :offset + 32 ]
7475 address_bytes = data [12 :32 ]
7576 address = '0x' + address_bytes .hex ()
7677 address = get_checksum_address (address )
7778 return address , 32
7879
79- def decode_bool (self , bytes_data , offset ):
80+ @staticmethod
81+ def decode_bool (bytes_data , offset ):
8082 data = bytes_data [offset :offset + 32 ]
8183 value = int .from_bytes (data , byteorder = 'big' ) != 0
8284 return value , 32
8385
84- def decode_number (self , bytes_data , offset , bits , signed ):
86+ @staticmethod
87+ def decode_number (bytes_data , offset , signed ):
8588 data = bytes_data [offset :offset + 32 ]
8689 value = int .from_bytes (data , byteorder = 'big' , signed = signed )
8790 return value , 32
8891
89- def decode_string (self , bytes_data , offset ):
90- data_offset = self .read_uint (bytes_data , offset )
92+ @classmethod
93+ def decode_string (cls , bytes_data , offset ):
94+ data_offset = cls .read_uint (bytes_data , offset )
9195 string_offset = offset + data_offset
92- length = self .read_uint (bytes_data , string_offset )
96+ length = cls .read_uint (bytes_data , string_offset )
9397 string_data = bytes_data [string_offset + 32 :string_offset + 32 + length ]
9498 value = string_data .decode ('utf-8' )
9599 return value , 32
@@ -140,6 +144,7 @@ def decode_tuple(self, bytes_data, offset, param):
140144 values [name ] = value
141145 return values , 32
142146
143- def read_uint (self , bytes_data , offset ):
147+ @staticmethod
148+ def read_uint (bytes_data , offset ):
144149 data = bytes_data [offset :offset + 32 ]
145150 return int .from_bytes (data , byteorder = 'big' )
0 commit comments