コード例 #1
0
        public INethermindApi Create()
        {
            ChainSpec chainSpec  = LoadChainSpec(_jsonSerializer);
            bool      wasCreated = Interlocked.CompareExchange(ref _apiCreated, 1, 0) == 1;

            if (wasCreated)
            {
                throw new NotSupportedException("Creation of multiple APIs not supported.");
            }

            SealEngineType engine        = chainSpec.SealEngineType;
            NethermindApi  nethermindApi = engine switch
            {
                SealEngineType.AuRa => new AuRaNethermindApi(_configProvider, _jsonSerializer, _logManager),
                _ => new NethermindApi(_configProvider, _jsonSerializer, _logManager)
            };

            nethermindApi.SealEngineType = engine;
            nethermindApi.SpecProvider   = new ChainSpecBasedSpecProvider(chainSpec);
            nethermindApi.ChainSpec      = chainSpec;

            SetLoggerVariables(chainSpec);

            return(nethermindApi);
        }
コード例 #2
0
        private NethermindApi Create(SealEngineType engine)
        {
            switch (engine)
            {
            case SealEngineType.Ethash:
                return(new EthashNethermindApi(_configProvider, _logManager));

            case SealEngineType.AuRa:
                return(new AuRaNethermindApi(_configProvider, _logManager));

            case SealEngineType.Clique:
                return(new CliqueNethermindApi(_configProvider, _logManager));

            case SealEngineType.NethDev:
                return(new NethDevNethermindApi(_configProvider, _logManager));

            case SealEngineType.None:
                return(new NethermindApi(_configProvider, _logManager));

            default:
                throw new ArgumentOutOfRangeException(nameof(engine), engine, "Unexpected engine.");
            }
        }
コード例 #3
0
 protected TestBlockchain(SealEngineType sealEngineType)
 {
     _sealEngineType = sealEngineType;
 }
コード例 #4
0
 public Builder(SealEngineType sealEngineType)
 {
     _blockchain = new TestRpcBlockchain(sealEngineType);
 }
コード例 #5
0
 public static Builder ForTest(SealEngineType sealEngineType)
 {
     return(new Builder(sealEngineType));
 }
コード例 #6
0
 protected TestRpcBlockchain(SealEngineType sealEngineType)
     : base(sealEngineType)
 {
 }
コード例 #7
0
 public Builder(SealEngineType sealEngineType)
 {
     _blockchain = new T {
         SealEngineType = sealEngineType
     };
 }
コード例 #8
0
 public static Builder <T> ForTest <T>(SealEngineType sealEngineType) where T : TestRpcBlockchain, new()
 {
     return(new Builder <T>(sealEngineType));
 }
コード例 #9
0
 public static Builder <TestRpcBlockchain> ForTest(SealEngineType sealEngineType) => ForTest <TestRpcBlockchain>(sealEngineType);