public async Task StopAsync(OsBlockchainNodeContext blockchainNodeContext) { await _networkServer.StopAsync(false); await _blockchainNodeContextService.StopAsync(blockchainNodeContext.BlockchainNodeContext); foreach (var nodePlugin in _nodePlugins) { var _ = nodePlugin.ShutdownAsync(); } }
private async Task StartNodeAsync() { var dto = new OsBlockchainNodeContextStartDto { ZeroSmartContract = typeof(BasicContractZero), ChainId = _chainOptions.ChainId }; dto.SmartContractRunnerCategory = KernelConstants.CodeCoverageRunnerCategory; dto.InitializationSmartContracts.AddGenesisSmartContract( ConsensusContractCode, ConsensusSmartContractAddressNameProvider.Name); var ownAddress = await _accountService.GetAccountAsync(); var callList = new SystemContractDeploymentInput.Types.SystemTransactionMethodCallList(); callList.Add(nameof(TokenContractContainer.TokenContractStub.Create), new CreateInput { Symbol = "ELF", TokenName = "ELF_Token", TotalSupply = TokenTotalSupply, Decimals = 2, Issuer = ownAddress, IsBurnable = true }); callList.Add(nameof(TokenContractContainer.TokenContractStub.SetPrimaryTokenSymbol), new SetPrimaryTokenSymbolInput { Symbol = "ELF" }); callList.Add(nameof(TokenContractContainer.TokenContractStub.Issue), new IssueInput { Symbol = "ELF", Amount = TokenTotalSupply, To = ownAddress, Memo = "Issue" }); callList.Add(nameof(TokenContractContainer.TokenContractStub.InitialCoefficients), new Empty()); dto.InitializationSmartContracts.AddGenesisSmartContract( ElectionContractCode, ElectionSmartContractAddressNameProvider.Name); dto.InitializationSmartContracts.AddGenesisSmartContract( TokenContractCode, TokenSmartContractAddressNameProvider.Name, callList); _blockchainNodeCtxt = await _osBlockchainNodeContextService.StartAsync(dto); }
public async Task <OsBlockchainNodeContext> StartAsync(OsBlockchainNodeContextStartDto dto) { var transactions = new List <Transaction>(); transactions.Add(GetTransactionForDeployment(dto.ZeroSmartContract, ZeroSmartContractAddressNameProvider.Name, dto.SmartContractRunnerCategory)); transactions.AddRange(dto.InitializationSmartContracts .Select(p => GetTransactionForDeployment(p.Code, p.SystemSmartContractName, dto.SmartContractRunnerCategory, p.ContractInitializationMethodCallList))); if (dto.InitializationTransactions != null) { transactions.AddRange(dto.InitializationTransactions); } // Add transaction for initialization transactions.Add(GetTransactionForGenesisOwnerInitialization(dto)); var blockchainNodeContextStartDto = new BlockchainNodeContextStartDto() { ChainId = dto.ChainId, ZeroSmartContractType = dto.ZeroSmartContract, Transactions = transactions.ToArray() }; var context = new OsBlockchainNodeContext { BlockchainNodeContext = await _blockchainNodeContextService.StartAsync(blockchainNodeContextStartDto), AElfNetworkServer = _networkServer }; await _networkServer.StartAsync(); foreach (var nodePlugin in _nodePlugins) { await nodePlugin.StartAsync(dto.ChainId); } return(context); }
private async Task StartNodeAsync() { var dto = new OsBlockchainNodeContextStartDto { ZeroSmartContract = typeof(BasicContractZero), ChainId = _chainOptions.ChainId }; dto.SmartContractRunnerCategory = KernelConstants.CodeCoverageRunnerCategory; var consensusContractDto = new GenesisSmartContractDto { Code = ConsensusContractCode, SystemSmartContractName = ConsensusSmartContractAddressNameProvider.Name, ContractInitializationMethodCallList = new List <ContractInitializationMethodCall>() }; dto.InitializationSmartContracts.Add(consensusContractDto); var tokenContractDto = new GenesisSmartContractDto { Code = TokenContractCode, SystemSmartContractName = TokenSmartContractAddressNameProvider.Name, ContractInitializationMethodCallList = new List <ContractInitializationMethodCall>() }; var ownAddress = await _accountService.GetAccountAsync(); tokenContractDto .AddGenesisTransactionMethodCall(new ContractInitializationMethodCall { MethodName = nameof(TokenContractContainer.TokenContractStub.Create), Params = new CreateInput { Symbol = "ELF", TokenName = "ELF_Token", TotalSupply = TokenTotalSupply, Decimals = 2, Issuer = ownAddress, IsBurnable = true }.ToByteString() }); tokenContractDto.AddGenesisTransactionMethodCall(new ContractInitializationMethodCall { MethodName = nameof(TokenContractContainer.TokenContractStub.SetPrimaryTokenSymbol), Params = new SetPrimaryTokenSymbolInput { Symbol = "ELF" }.ToByteString() }); tokenContractDto.AddGenesisTransactionMethodCall(new ContractInitializationMethodCall { MethodName = nameof(TokenContractContainer.TokenContractStub.Issue), Params = new IssueInput { Symbol = "ELF", Amount = TokenTotalSupply, To = ownAddress, Memo = "Issue" }.ToByteString() }); tokenContractDto.AddGenesisTransactionMethodCall(new ContractInitializationMethodCall { MethodName = nameof(TokenContractContainer.TokenContractStub.InitialCoefficients), Params = new Empty().ToByteString() }); dto.InitializationSmartContracts.Add(tokenContractDto); var electionContractDto = new GenesisSmartContractDto { Code = ElectionContractCode, SystemSmartContractName = ElectionSmartContractAddressNameProvider.Name, ContractInitializationMethodCallList = new List <ContractInitializationMethodCall>() }; dto.InitializationSmartContracts.Add(electionContractDto); _blockchainNodeCtxt = await _osBlockchainNodeContextService.StartAsync(dto); }