コード例 #1
0
        public override Empty CrossChainCreateToken(CrossChainCreateTokenInput input)
        {
            var tokenContractAddress = State.CrossChainTransferWhiteList[input.FromChainId];

            Assert(tokenContractAddress != null,
                   $"Token contract address of chain {ChainHelper.ConvertChainIdToBase58(input.FromChainId)} not registered.");

            var originalTransaction = Transaction.Parser.ParseFrom(input.TransactionBytes);

            AssertCrossChainTransaction(originalTransaction, tokenContractAddress, nameof(ValidateTokenInfoExists));
            var originalTransactionId = originalTransaction.GetHash();

            CrossChainVerify(originalTransactionId, input.ParentChainHeight, input.FromChainId, input.MerklePath);
            ValidateTokenInfoExistsInput validateTokenInfoExistsInput =
                ValidateTokenInfoExistsInput.Parser.ParseFrom(originalTransaction.Params);

            RegisterTokenInfo(new TokenInfo
            {
                Symbol       = validateTokenInfoExistsInput.Symbol,
                TokenName    = validateTokenInfoExistsInput.TokenName,
                TotalSupply  = validateTokenInfoExistsInput.TotalSupply,
                Decimals     = validateTokenInfoExistsInput.Decimals,
                Issuer       = validateTokenInfoExistsInput.Issuer,
                IsBurnable   = validateTokenInfoExistsInput.IsBurnable,
                IsProfitable = validateTokenInfoExistsInput.IsProfitable,
                IssueChainId = validateTokenInfoExistsInput.IssueChainId
            });
            return(new Empty());
        }
コード例 #2
0
        public override Empty ValidateTokenInfoExists(ValidateTokenInfoExistsInput input)
        {
            var  tokenInfo        = State.TokenInfos[input.Symbol];
            bool validationResult = tokenInfo != null && tokenInfo.TokenName == input.TokenName &&
                                    tokenInfo.IsBurnable == input.IsBurnable && tokenInfo.Decimals == input.Decimals &&
                                    tokenInfo.Issuer == input.Issuer && tokenInfo.TotalSupply == input.TotalSupply &&
                                    tokenInfo.IssueChainId == input.IssueChainId &&
                                    tokenInfo.IsProfitable == input.IsProfitable;

            Assert(validationResult, "Token validation failed.");
            return(new Empty());
        }