Esempio n. 1
0
        /// <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
                },
            });
Esempio n. 2
0
        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());
        }