/// <summary> /// System contract dto for side chain initialization. /// </summary> /// <returns></returns> public Action <List <GenesisSmartContractDto> > GetSideChainSystemContract(Address issuer, int mainChainId, string symbol, out long totalSupply, Address proposer, long parentChainHeightOfCreation = 1) { totalSupply = TokenTotalSupply; var nativeTokenInfo = new TokenInfo { Symbol = "ELF", Decimals = 2, Issuer = issuer, IsBurnable = true, TokenName = "elf token", TotalSupply = TokenTotalSupply, IssueChainId = ChainHelper.ConvertBase58ToChainId("AELF") }; var chainOptions = Application.ServiceProvider.GetService <IOptionsSnapshot <ChainOptions> >().Value; var tokenInitializationCallList = new SystemContractDeploymentInput.Types.SystemTransactionMethodCallList(); tokenInitializationCallList.Add( nameof(TokenContractContainer.TokenContractStub.RegisterNativeAndResourceTokenInfo), new RegisterNativeAndResourceTokenInfoInput { NativeTokenInfo = new RegisterNativeTokenInfoInput { Decimals = nativeTokenInfo.Decimals, IssueChainId = nativeTokenInfo.IssueChainId, Issuer = nativeTokenInfo.Issuer, IsBurnable = nativeTokenInfo.IsBurnable, Symbol = nativeTokenInfo.Symbol, TokenName = nativeTokenInfo.TokenName, TotalSupply = nativeTokenInfo.TotalSupply }, ChainPrimaryToken = new TokenInfo { Decimals = 2, IsBurnable = true, Issuer = Address.FromPublicKey(KeyPair.PublicKey), TotalSupply = 1_000_000_000, Symbol = symbol, TokenName = "TEST", IssueChainId = chainOptions.ChainId }, });
public override Empty RegisterNativeTokenInfo(RegisterNativeTokenInfoInput input) { Assert(string.IsNullOrEmpty(State.NativeTokenSymbol.Value), "Native token already registered."); State.NativeTokenSymbol.Value = input.Symbol; var tokenInfo = new TokenInfo { Symbol = input.Symbol, TokenName = input.TokenName, TotalSupply = input.TotalSupply, Issuer = input.Issuer, Decimals = input.Decimals, IsBurnable = true, IssueChainId = input.IssueChainId }; RegisterTokenInfo(tokenInfo); return(new Empty()); }