@ -683,7 +683,7 @@ type CallArgs struct {
Data hexutil . Bytes ` json:"data" `
Data hexutil . Bytes ` json:"data" `
}
}
func ( s * PublicBlockChainAPI ) doCall ( ctx context . Context , args CallArgs , blockNr rpc . BlockNumber , vmCfg vm . Config , timeout time . Duration ) ( [ ] byte , uint64 , bool , error ) {
func ( s * PublicBlockChainAPI ) doCall ( ctx context . Context , args CallArgs , blockNr rpc . BlockNumber , timeout time . Duration ) ( [ ] byte , uint64 , bool , error ) {
defer func ( start time . Time ) { log . Debug ( "Executing EVM call finished" , "runtime" , time . Since ( start ) ) } ( time . Now ( ) )
defer func ( start time . Time ) { log . Debug ( "Executing EVM call finished" , "runtime" , time . Since ( start ) ) } ( time . Now ( ) )
state , header , err := s . b . StateAndHeaderByNumber ( ctx , blockNr )
state , header , err := s . b . StateAndHeaderByNumber ( ctx , blockNr )
@ -724,7 +724,7 @@ func (s *PublicBlockChainAPI) doCall(ctx context.Context, args CallArgs, blockNr
defer cancel ( )
defer cancel ( )
// Get a new instance of the EVM.
// Get a new instance of the EVM.
evm , vmError , err := s . b . GetEVM ( ctx , msg , state , header , vmCfg )
evm , vmError , err := s . b . GetEVM ( ctx , msg , state , header )
if err != nil {
if err != nil {
return nil , 0 , false , err
return nil , 0 , false , err
}
}
@ -748,7 +748,7 @@ func (s *PublicBlockChainAPI) doCall(ctx context.Context, args CallArgs, blockNr
// Call executes the given transaction on the state for the given block number.
// Call executes the given transaction on the state for the given block number.
// It doesn't make and changes in the state/blockchain and is useful to execute and retrieve values.
// It doesn't make and changes in the state/blockchain and is useful to execute and retrieve values.
func ( s * PublicBlockChainAPI ) Call ( ctx context . Context , args CallArgs , blockNr rpc . BlockNumber ) ( hexutil . Bytes , error ) {
func ( s * PublicBlockChainAPI ) Call ( ctx context . Context , args CallArgs , blockNr rpc . BlockNumber ) ( hexutil . Bytes , error ) {
result , _ , _ , err := s . doCall ( ctx , args , blockNr , vm . Config { } , 5 * time . Second )
result , _ , _ , err := s . doCall ( ctx , args , blockNr , 5 * time . Second )
return ( hexutil . Bytes ) ( result ) , err
return ( hexutil . Bytes ) ( result ) , err
}
}
@ -777,7 +777,7 @@ func (s *PublicBlockChainAPI) EstimateGas(ctx context.Context, args CallArgs) (h
executable := func ( gas uint64 ) bool {
executable := func ( gas uint64 ) bool {
args . Gas = hexutil . Uint64 ( gas )
args . Gas = hexutil . Uint64 ( gas )
_ , _ , failed , err := s . doCall ( ctx , args , rpc . PendingBlockNumber , vm . Config { } , 0 )
_ , _ , failed , err := s . doCall ( ctx , args , rpc . PendingBlockNumber , 0 )
if err != nil || failed {
if err != nil || failed {
return false
return false
}
}