protected override Keccak Handle(TransactionForRpc transaction, IWeb3EthApi api) { var deltaWithCid = api.GetLatestDeltaWithCid(); var parentDelta = deltaWithCid.Delta; Keccak root = parentDelta.StateRoot.ToKeccak(); var publicEntry = api.ToPublicEntry(transaction, root); return(api.SendTransaction(publicEntry)); }
public static CallOutputTracer CallAndRestore(this IWeb3EthApi api, TransactionForRpc transactionCall, DeltaWithCid deltaWithCid) { var parentDelta = deltaWithCid.Delta; Keccak root = parentDelta.StateRoot.ToKeccak(); if (transactionCall.Gas == null) { transactionCall.Gas = parentDelta.GasLimit; } var publicEntry = api.ToPublicEntry(transactionCall, root); var newDelta = deltaWithCid.CreateOneOffDelta(publicEntry); CallOutputTracer callOutputTracer = new CallOutputTracer(); api.StateProvider.StateRoot = root; api.Executor.CallAndReset(newDelta, callOutputTracer); api.StateProvider.Reset(); api.StorageProvider.Reset(); return(callOutputTracer); }