public override Empty InitialEconomicSystem(InitialEconomicSystemInput input) { Assert(!State.Initialized.Value, "Already initialized."); State.TokenContract.Value = Context.GetContractAddressByName(SmartContractConstants.TokenContractSystemName); Context.LogDebug(() => "Will create tokens."); CreateNativeToken(input); CreateResourceTokens(); CreateElectionTokens(); Context.LogDebug(() => "Finished creating tokens."); InitialMiningReward(input.MiningRewardTotalAmount); RegisterElectionVotingEvent(); SetTreasurySchemeIdsToElectionContract(); InitializeTokenConverterContract(); State.TokenContract.InitialCoefficients.Send(new Empty()); State.TokenContract.InitializeAuthorizedController.Send(new Empty()); State.Initialized.Value = true; return(new Empty()); }
private void CreateNativeToken(InitialEconomicSystemInput input) { State.TokenContract.Create.Send(new CreateInput { Symbol = input.NativeTokenSymbol, TokenName = "Native Token", TotalSupply = input.NativeTokenTotalSupply, Decimals = input.NativeTokenDecimals, IsBurnable = input.IsNativeTokenBurnable, Issuer = Context.Self, IsProfitable = true, LockWhiteList = { Context.GetContractAddressByName(SmartContractConstants.VoteContractSystemName), Context.GetContractAddressByName(SmartContractConstants.ProfitContractSystemName), Context.GetContractAddressByName(SmartContractConstants.ElectionContractSystemName), Context.GetContractAddressByName(SmartContractConstants.TreasuryContractSystemName), Context.GetContractAddressByName(SmartContractConstants.TokenConverterContractSystemName), Context.GetContractAddressByName(SmartContractConstants.TokenHolderContractSystemName) } }); State.TokenContract.SetPrimaryTokenSymbol.Send(new SetPrimaryTokenSymbolInput { Symbol = input.NativeTokenSymbol }); }
private void CreateNativeToken(InitialEconomicSystemInput input) { State.TokenContract.Create.Send(new CreateInput { Symbol = input.NativeTokenSymbol, TokenName = "Native Token", TotalSupply = input.NativeTokenTotalSupply, Decimals = input.NativeTokenDecimals, IsBurnable = input.IsNativeTokenBurnable, Issuer = Context.Self, LockWhiteList = { Context.GetContractAddressByName(SmartContractConstants.VoteContractSystemName), Context.GetContractAddressByName(SmartContractConstants.ProfitContractSystemName), Context.GetContractAddressByName(SmartContractConstants.ElectionContractSystemName), Context.GetContractAddressByName(SmartContractConstants.TreasuryContractSystemName), Context.GetContractAddressByName(SmartContractConstants.TokenConverterContractSystemName), Context.GetContractAddressByName(SmartContractConstants.ReferendumAuthContractSystemName) } }); foreach (var symbol in Context.Variables.ResourceTokenSymbolNameList) { State.TokenContract.Create.Send(new CreateInput { Symbol = EconomicContractConstants.NativeTokenPrefix + symbol, TokenName = symbol + " Native Token", TotalSupply = long.MaxValue, Decimals = input.NativeTokenDecimals, IsBurnable = input.IsNativeTokenBurnable, Issuer = Context.Self, LockWhiteList = { Context.GetContractAddressByName(SmartContractConstants.VoteContractSystemName), Context.GetContractAddressByName(SmartContractConstants.ProfitContractSystemName), Context.GetContractAddressByName(SmartContractConstants.ElectionContractSystemName), Context.GetContractAddressByName(SmartContractConstants.TreasuryContractSystemName), Context.GetContractAddressByName(SmartContractConstants.TokenConverterContractSystemName), Context.GetContractAddressByName(SmartContractConstants.ReferendumAuthContractSystemName) } }); } }