public static bool TryGetDeltaWithCid(this IWeb3EthApi api, BlockParameter block, out DeltaWithCid delta) { Cid cid; switch (block.Type) { case BlockParameterType.Earliest: cid = api.DeltaCache.GenesisHash; break; case BlockParameterType.Latest: cid = api.DeltaResolver.LatestDelta; break; case BlockParameterType.Pending: cid = api.DeltaResolver.LatestDelta; break; case BlockParameterType.BlockNumber: var blockNumber = block.BlockNumber.Value; if (!api.DeltaResolver.TryResolve(blockNumber, out cid)) { delta = default; return(false); } break; default: throw new ArgumentOutOfRangeException(); } delta = api.GetDeltaWithCid(cid); return(true); }
protected override BlockForRpc Handle(BlockParameter block, IWeb3EthApi api) { Cid deltaHash; long blockNumber; IDeltaCache deltaCache = api.DeltaCache; IDeltaResolver deltaResolver = api.DeltaResolver; switch (block.Type) { case BlockParameterType.Earliest: deltaHash = deltaCache.GenesisHash; blockNumber = 0; break; case BlockParameterType.Latest: deltaHash = deltaResolver.LatestDelta; blockNumber = deltaResolver.LatestDeltaNumber; break; case BlockParameterType.Pending: deltaHash = deltaResolver.LatestDelta; blockNumber = deltaResolver.LatestDeltaNumber; break; case BlockParameterType.BlockNumber: blockNumber = block.BlockNumber.Value; if (!deltaResolver.TryResolve(blockNumber, out deltaHash)) { return(null); } break; default: throw new ArgumentOutOfRangeException(); } DeltaWithCid deltaWithCid = api.GetDeltaWithCid(deltaHash); return(BuildBlock(deltaWithCid, blockNumber, api.HashProvider)); }
protected override BlockForRpc Handle(Keccak deltaHash, IWeb3EthApi api) { DeltaWithCid deltaWithCid = api.GetDeltaWithCid(deltaHash.ToCid()); return(BuildBlock(deltaWithCid, deltaWithCid.Delta.DeltaNumber, api.HashProvider)); }
protected override TransactionForRpc Handle(Keccak deltaHash, int positionIndex, IWeb3EthApi api) { var delta = api.GetDeltaWithCid(deltaHash.ToCid()); return(api.ToTransactionForRpc(delta, positionIndex)); }