|
|
@@ -35,7 +35,19 @@ func NewPublicBlockChainAPI(b Backend) *PublicBlockChainAPI {
|
|
|
//
|
|
|
// Note, this function 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, blockNrOrHash rpc.BlockNumberOrHash, overrides *StateOverride) (CallResult, error) {
|
|
|
+func (s *PublicBlockChainAPI) Call(ctx context.Context, args CallArgs, blockNrOrHash rpc.BlockNumberOrHash, overrides *StateOverride) (hexutil.Bytes, error) {
|
|
|
+ result, err := DoCall(ctx, s.b, args, blockNrOrHash, overrides, vm.Config{}, 5*time.Second, s.b.RPCGasCap())
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ // If the result contains a revert reason, try to unpack and return it.
|
|
|
+ if len(result.Revert()) > 0 {
|
|
|
+ return nil, newRevertError(result)
|
|
|
+ }
|
|
|
+ return result.Return(), result.Err
|
|
|
+}
|
|
|
+
|
|
|
+func (s *PublicBlockChainAPI) NewCall(ctx context.Context, args CallArgs, blockNrOrHash rpc.BlockNumberOrHash, overrides *StateOverride) (CallResult, error) {
|
|
|
result, err := DoCall(ctx, s.b, args, blockNrOrHash, overrides, vm.Config{}, 5*time.Second, s.b.RPCGasCap())
|
|
|
if err != nil {
|
|
|
return CallResult{Success: false, Msg: err.Error()}, nil
|