@@ -156,7 +156,10 @@ func (v *VM) AccountExists(address core.Address) (bool, error) {
156
156
// GetNonce returns expected next nonce for the address.
157
157
func (v * VM ) GetNonce (address core.Address ) (core.Nonce , error ) {
158
158
account , err := accounts .Latest (v .db , address )
159
- if err != nil {
159
+ switch {
160
+ case errors .Is (err , sql .ErrNotFound ):
161
+ return 0 , nil
162
+ case err != nil :
160
163
return 0 , err
161
164
}
162
165
return account .NextNonce , nil
@@ -165,7 +168,10 @@ func (v *VM) GetNonce(address core.Address) (core.Nonce, error) {
165
168
// GetBalance returns balance for an address.
166
169
func (v * VM ) GetBalance (address types.Address ) (uint64 , error ) {
167
170
account , err := accounts .Latest (v .db , address )
168
- if err != nil {
171
+ switch {
172
+ case errors .Is (err , sql .ErrNotFound ):
173
+ return 0 , nil
174
+ case err != nil :
169
175
return 0 , err
170
176
}
171
177
return account .Balance , nil
@@ -501,9 +507,12 @@ func parse(
501
507
return nil , nil , nil , fmt .Errorf ("%w: failed to decode method selector %w" , core .ErrMalformed , err )
502
508
}
503
509
account , err := loader .Get (principal )
504
- if err != nil {
510
+ switch {
511
+ case errors .Is (err , core .ErrNotFound ):
512
+ account = types.Account {Address : principal }
513
+ case err != nil :
505
514
return nil , nil , nil , fmt .Errorf (
506
- "%w: failed load state for principal %s - %w" ,
515
+ "%w: failed load state for principal %s: %w" ,
507
516
core .ErrInternal ,
508
517
principal ,
509
518
err ,
0 commit comments