@@ -77,10 +77,6 @@ func ConvertHashesToProto(hashes []evmtypes.Hash) [][]byte {
7777}
7878
7979func convertTopicsToProto (topics [][]evmtypes.Hash ) ([]* Topics , error ) {
80- if topics == nil {
81- return nil , fmt .Errorf ("topics can't be nil" )
82- }
83-
8480 protoTopics := make ([]* Topics , 0 , len (topics ))
8581 for i , topic := range topics {
8682 if topic == nil {
@@ -216,11 +212,6 @@ func ConvertTransactionFromProto(protoTx *Transaction) (*evmtypes.Transaction, e
216212 return nil , ErrEmptyTx
217213 }
218214
219- var data []byte
220- if protoTx .GetData () != nil {
221- data = protoTx .GetData ()
222- }
223-
224215 toAddress , err := ConvertOptionalAddressFromProto (protoTx .GetTo ())
225216 if err != nil {
226217 return nil , fmt .Errorf ("failed to convert 'to' address: %w" , err )
@@ -233,7 +224,7 @@ func ConvertTransactionFromProto(protoTx *Transaction) (*evmtypes.Transaction, e
233224
234225 return & evmtypes.Transaction {
235226 To : toAddress ,
236- Data : data ,
227+ Data : protoTx . GetData () ,
237228 Hash : txHash ,
238229 Nonce : protoTx .GetNonce (),
239230 Gas : protoTx .GetGas (),
@@ -261,21 +252,25 @@ func ConvertCallMsgFromProto(protoMsg *CallMsg) (*evmtypes.CallMsg, error) {
261252 return nil , ErrEmptyMsg
262253 }
263254
264- fromAddress , err := ConvertAddressFromProto (protoMsg .GetFrom ())
265- if err != nil {
266- return nil , fmt .Errorf ("failed to convert 'from' address: %w" , err )
267- }
268-
269255 toAddress , err := ConvertOptionalAddressFromProto (protoMsg .GetTo ())
270256 if err != nil {
271257 return nil , fmt .Errorf ("failed to convert 'to' address: %w" , err )
272258 }
273259
274- return & evmtypes.CallMsg {
275- From : fromAddress ,
260+ callMsg := & evmtypes.CallMsg {
276261 Data : protoMsg .GetData (),
277262 To : toAddress ,
278- }, nil
263+ }
264+
265+ // fromAddress is optional
266+ if ValidateAddressBytes (protoMsg .GetFrom ()) != nil {
267+ callMsg .From , err = ConvertAddressFromProto (protoMsg .GetFrom ())
268+ if err != nil {
269+ return nil , fmt .Errorf ("failed to convert 'from' address: %w" , err )
270+ }
271+ }
272+
273+ return callMsg , nil
279274}
280275
281276var ErrEmptyFilter = errors .New ("filter can't be nil" )
@@ -346,7 +341,7 @@ var ErrTopicsConversion = errors.New("failed to convert topics")
346341func ConvertFilterToProto (filter evmtypes.FilterQuery ) (* FilterQuery , error ) {
347342 topics , err := convertTopicsToProto (filter .Topics )
348343 if err != nil {
349- return nil , errors . Join ( ErrTopicsConversion , err )
344+ return nil , fmt . Errorf ( "%w: %w" , ErrTopicsConversion , err )
350345 }
351346
352347 return & FilterQuery {
@@ -359,10 +354,6 @@ func ConvertFilterToProto(filter evmtypes.FilterQuery) (*FilterQuery, error) {
359354}
360355
361356func ConvertLogsToProto (logs []* evmtypes.Log ) ([]* Log , error ) {
362- if logs == nil {
363- return nil , fmt .Errorf ("logs are nil" )
364- }
365-
366357 protoLogs := make ([]* Log , 0 , len (logs ))
367358 for i , log := range logs {
368359 if log == nil {
@@ -390,7 +381,7 @@ func ConvertFilterFromProto(protoFilter *FilterQuery) (evmtypes.FilterQuery, err
390381
391382 topics , err := ConvertTopicsFromProto (protoFilter .GetTopics ())
392383 if err != nil {
393- return evmtypes.FilterQuery {}, errors . Join ( ErrTopicsConversion , err )
384+ return evmtypes.FilterQuery {}, fmt . Errorf ( "%w: %w" , ErrTopicsConversion , err )
394385 }
395386
396387 return evmtypes.FilterQuery {
@@ -403,10 +394,6 @@ func ConvertFilterFromProto(protoFilter *FilterQuery) (evmtypes.FilterQuery, err
403394}
404395
405396func ConvertLogsFromProto (protoLogs []* Log ) ([]* evmtypes.Log , error ) {
406- if protoLogs == nil {
407- return nil , fmt .Errorf ("logs can't be nil" )
408- }
409-
410397 logs := make ([]* evmtypes.Log , 0 , len (protoLogs ))
411398 var errs []error
412399
@@ -442,7 +429,7 @@ func convertLogFromProto(protoLog *Log) (*evmtypes.Log, error) {
442429
443430 topics , err := ConvertHashesFromProto (protoLog .GetTopics ())
444431 if err != nil {
445- return nil , errors . Join ( ErrTopicsConversion , err )
432+ return nil , fmt . Errorf ( "%w: %w" , ErrTopicsConversion , err )
446433 }
447434
448435 eventSigs , err := ConvertHashFromProto (protoLog .GetEventSig ())
@@ -475,10 +462,6 @@ func convertLogFromProto(protoLog *Log) (*evmtypes.Log, error) {
475462}
476463
477464func ConvertTopicsFromProto (protoTopics []* Topics ) ([][]evmtypes.Hash , error ) {
478- if protoTopics == nil {
479- return nil , fmt .Errorf ("topics can't be nil" )
480- }
481-
482465 topics := make ([][]evmtypes.Hash , 0 , len (protoTopics ))
483466 var errs []error
484467
@@ -752,23 +735,23 @@ func ConvertSubmitTransactionRequestFromProto(txRequest *SubmitTransactionReques
752735}
753736
754737func ConvertAddressFromProto (protoAddress []byte ) (evmtypes.Address , error ) {
755- if err := validateAddressBytes (protoAddress ); err != nil {
738+ if err := ValidateAddressBytes (protoAddress ); err != nil {
756739 return evmtypes.Address {}, err
757740 }
758741
759742 return evmtypes .Address (protoAddress ), nil
760743}
761744
762745func ConvertOptionalAddressFromProto (b []byte ) (evmtypes.Address , error ) {
763- if len (b ) == 0 || b == nil {
746+ if len (b ) == 0 {
764747 return evmtypes.Address {}, nil
765748 }
766749
767750 return ConvertAddressFromProto (b )
768751}
769752
770753func ConvertOptionalHashFromProto (b []byte ) (evmtypes.Hash , error ) {
771- if len (b ) == 0 || b == nil {
754+ if len (b ) == 0 {
772755 return evmtypes.Hash {}, nil
773756 }
774757
@@ -782,7 +765,7 @@ func ConvertHashFromProto(b []byte) (evmtypes.Hash, error) {
782765 return evmtypes .Hash (b ), nil
783766}
784767
785- func validateAddressBytes (b []byte ) error {
768+ func ValidateAddressBytes (b []byte ) error {
786769 if b == nil {
787770 return fmt .Errorf ("address can't be nil" )
788771 }
0 commit comments