Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 4
0
        protected override TransactionForRpc Handle(Keccak deltaHash, int positionIndex, IWeb3EthApi api)
        {
            var delta = api.GetDeltaWithCid(deltaHash.ToCid());

            return(api.ToTransactionForRpc(delta, positionIndex));
        }