@@ -38,6 +38,16 @@ func (api *APIImpl) GetBalance(ctx context.Context, address common.Address, bloc
3838 return nil , fmt .Errorf ("getBalance cannot open tx: %w" , err1 )
3939 }
4040 defer tx .Rollback ()
41+
42+ blockNumber , _ , _ , err := rpchelper .GetBlockNumber (ctx , blockNrOrHash , tx , api ._blockReader , api .filters )
43+ if err != nil {
44+ return nil , err
45+ }
46+ err = rpchelper .CheckBlockExecuted (tx , blockNumber )
47+ if err != nil {
48+ return nil , err
49+ }
50+
4151 reader , err := rpchelper .CreateStateReader (ctx , tx , api ._blockReader , blockNrOrHash , 0 , api .filters , api .stateCache , api ._txNumReader )
4252 if err != nil {
4353 return nil , err
@@ -74,6 +84,16 @@ func (api *APIImpl) GetTransactionCount(ctx context.Context, address common.Addr
7484 return nil , fmt .Errorf ("getTransactionCount cannot open tx: %w" , err1 )
7585 }
7686 defer tx .Rollback ()
87+
88+ blockNumber , _ , _ , err := rpchelper .GetBlockNumber (ctx , blockNrOrHash , tx , api ._blockReader , api .filters )
89+ if err != nil {
90+ return nil , err
91+ }
92+ err = rpchelper .CheckBlockExecuted (tx , blockNumber )
93+ if err != nil {
94+ return nil , err
95+ }
96+
7797 reader , err := rpchelper .CreateStateReader (ctx , tx , api ._blockReader , blockNrOrHash , 0 , api .filters , api .stateCache , api ._txNumReader )
7898 if err != nil {
7999 return nil , err
@@ -93,6 +113,16 @@ func (api *APIImpl) GetCode(ctx context.Context, address common.Address, blockNr
93113 return nil , fmt .Errorf ("getCode cannot open tx: %w" , err1 )
94114 }
95115 defer tx .Rollback ()
116+
117+ blockNumber , _ , _ , err := rpchelper .GetBlockNumber (ctx , blockNrOrHash , tx , api ._blockReader , api .filters )
118+ if err != nil {
119+ return nil , err
120+ }
121+ err = rpchelper .CheckBlockExecuted (tx , blockNumber )
122+ if err != nil {
123+ return nil , err
124+ }
125+
96126 reader , err := rpchelper .CreateStateReader (ctx , tx , api ._blockReader , blockNrOrHash , 0 , api .filters , api .stateCache , api ._txNumReader )
97127 if err != nil {
98128 return nil , err
@@ -127,6 +157,15 @@ func (api *APIImpl) GetStorageAt(ctx context.Context, address common.Address, in
127157 }
128158 defer tx .Rollback ()
129159
160+ blockNumber , _ , _ , err := rpchelper .GetBlockNumber (ctx , blockNrOrHash , tx , api ._blockReader , api .filters )
161+ if err != nil {
162+ return hexutil .Encode (common .LeftPadBytes (empty , 32 )), err
163+ }
164+ err = rpchelper .CheckBlockExecuted (tx , blockNumber )
165+ if err != nil {
166+ return hexutil .Encode (common .LeftPadBytes (empty , 32 )), err
167+ }
168+
130169 reader , err := rpchelper .CreateStateReader (ctx , tx , api ._blockReader , blockNrOrHash , 0 , api .filters , api .stateCache , api ._txNumReader )
131170 if err != nil {
132171 return hexutil .Encode (common .LeftPadBytes (empty , 32 )), err
@@ -152,6 +191,15 @@ func (api *APIImpl) Exist(ctx context.Context, address common.Address, blockNrOr
152191 }
153192 defer tx .Rollback ()
154193
194+ blockNumber , _ , _ , err := rpchelper .GetBlockNumber (ctx , blockNrOrHash , tx , api ._blockReader , api .filters )
195+ if err != nil {
196+ return false , err
197+ }
198+ err = rpchelper .CheckBlockExecuted (tx , blockNumber )
199+ if err != nil {
200+ return false , err
201+ }
202+
155203 reader , err := rpchelper .CreateStateReader (ctx , tx , api ._blockReader , blockNrOrHash , 0 , api .filters , api .stateCache , api ._txNumReader )
156204 if err != nil {
157205 return false , err
0 commit comments