public static async Task InitialChainAndTokenAsync(
            this ContractTester <DPoSContractTestAElfModule> starter, List <ECKeyPair> minersKeyPairs = null,
            int miningInterval = 4000, Timestamp blockchainStartTimestamp = null)
        {
            var dividendMethodCallList = new SystemContractDeploymentInput.Types.SystemTransactionMethodCallList();

            dividendMethodCallList.Add(nameof(DividendContract.InitializeDividendContract),
                                       new InitialDividendContractInput
            {
                ConsensusContractSystemName = ConsensusSmartContractAddressNameProvider.Name,
                TokenContractSystemName     = TokenSmartContractAddressNameProvider.Name
            });

            var tokenContractCallList = new SystemContractDeploymentInput.Types.SystemTransactionMethodCallList();

            tokenContractCallList.Add(nameof(TokenContract.CreateNativeToken), new CreateNativeTokenInput
            {
                Symbol      = "ELF",
                Decimals    = 2,
                IsBurnable  = true,
                TokenName   = "elf token",
                Issuer      = starter.GetCallOwnerAddress(),
                TotalSupply = DPoSContractConsts.LockTokenForElection * 100,
                LockWhiteSystemContractNameList = { ConsensusSmartContractAddressNameProvider.Name }
            });

            tokenContractCallList.Add(nameof(TokenContract.IssueNativeToken), new IssueNativeTokenInput
            {
                Symbol = "ELF",
                Amount = DPoSContractConsts.LockTokenForElection * 20,
                ToSystemContractName = DividendSmartContractAddressNameProvider.Name,
                Memo = "Issue elf token."
            });

            // For testing.
            tokenContractCallList.Add(nameof(TokenContract.Issue), new IssueInput
            {
                Symbol = "ELF",
                Amount = DPoSContractConsts.LockTokenForElection * 80,
                To     = starter.GetCallOwnerAddress(),
                Memo   = "Set dividends."
            });

            await starter.InitialCustomizedChainAsync(minersKeyPairs?.Select(m => m.PublicKey.ToHex()).ToList(),
                                                      miningInterval, blockchainStartTimestamp,
                                                      list =>
            {
                // Dividends contract must be deployed before token contract.
                list.AddGenesisSmartContract <DividendContract>(DividendSmartContractAddressNameProvider.Name,
                                                                dividendMethodCallList);
                list.AddGenesisSmartContract <TokenContract>(TokenSmartContractAddressNameProvider.Name,
                                                             tokenContractCallList);
            });
        }
 public ParliamentContractPrivilegeTestBase()
 {
     var mainChainId = ChainHelper.ConvertBase58ToChainId("AELF");
     var chainId = ChainHelper.GetChainId(1);
     Tester = new ContractTester<ParliamentContractPrivilegeTestAElfModule>(chainId,SampleECKeyPairs.KeyPairs[1]);
     AsyncHelper.RunSync(() =>
         Tester.InitialChainAsyncWithAuthAsync(Tester.GetSideChainSystemContract(
             Tester.GetCallOwnerAddress(),
             mainChainId,"STA",out TotalSupply,Tester.GetCallOwnerAddress())));
     ParliamentAddress = Tester.GetContractAddress(ParliamentSmartContractAddressNameProvider.Name);
     TokenContractAddress = Tester.GetContractAddress(TokenSmartContractAddressNameProvider.Name);
 }
示例#3
0
        public async Task CallContract_Test()
        {
            var callerKeyPair = CryptoHelper.GenerateKeyPair();
            var tester        = new ContractTester <ContractTestAElfModule>(ChainId, callerKeyPair);
            await tester.InitialChainAsync(list =>
            {
                list.AddGenesisSmartContract(
                    ConsensusContractCode,
                    ConsensusSmartContractAddressNameProvider.Name);
                list.AddGenesisSmartContract(
                    TokenContractCode,
                    TokenSmartContractAddressNameProvider.Name);
            });

            var tokenContractAddress = tester.GetContractAddress(TokenSmartContractAddressNameProvider.Name);

            var bytes = await tester.CallContractMethodAsync(tokenContractAddress,
                                                             nameof(TokenContractContainer.TokenContractStub.GetBalance),
                                                             new GetBalanceInput
            {
                Symbol = "ELF",
                Owner  = tester.GetCallOwnerAddress(),
            });

            var balanceOutput = GetBalanceOutput.Parser.ParseFrom(bytes);

            Assert.Equal(0L, balanceOutput.Balance);
        }
 protected void StartSideChain2(int chainId, long height, string symbol)
 {
     SideChain2Tester =
         new ContractTester <MultiTokenContractCrossChainTestAElfModule>(chainId, SampleECKeyPairs.KeyPairs[0]);
     AsyncHelper.RunSync(() =>
                         SideChain2Tester.InitialCustomizedChainAsync(chainId,
                                                                      configureSmartContract: SideChain2Tester.GetSideChainSystemContract(
                                                                          SideChain2Tester.GetCallOwnerAddress(), MainChainId, symbol, out TotalSupply,
                                                                          SideChain2Tester.GetCallOwnerAddress(), height, TokenContractAddress)));
     Side2BasicContractZeroAddress  = SideChain2Tester.GetZeroContractAddress();
     Side2CrossChainContractAddress =
         SideChain2Tester.GetContractAddress(CrossChainSmartContractAddressNameProvider.Name);
     Side2TokenContractAddress = SideChain2Tester.GetContractAddress(TokenSmartContractAddressNameProvider.Name);
     Side2ParliamentAddress    =
         SideChain2Tester.GetContractAddress(ParliamentSmartContractAddressNameProvider.Name);
     Side2ConsensusAddress = SideChain2Tester.GetContractAddress(ConsensusSmartContractAddressNameProvider.Name);
 }
示例#5
0
        public LockTest()
        {
            Starter = new ContractTester <MultiTokenContractTestAElfModule>();
            var tokenContractCallList = new SystemContractDeploymentInput.Types.SystemTransactionMethodCallList();

            tokenContractCallList.Add(nameof(TokenContract.CreateNativeToken), new CreateNativeTokenInput
            {
                Symbol      = "ELF",
                Decimals    = 2,
                IsBurnable  = true,
                TokenName   = "elf token",
                Issuer      = Starter.GetCallOwnerAddress(),
                TotalSupply = DPoSContractConsts.LockTokenForElection * 100,
                LockWhiteSystemContractNameList = { ConsensusSmartContractAddressNameProvider.Name }
            });

            tokenContractCallList.Add(nameof(TokenContract.IssueNativeToken), new IssueNativeTokenInput
            {
                Symbol = "ELF",
                Amount = DPoSContractConsts.LockTokenForElection * 20,
                ToSystemContractName = DividendSmartContractAddressNameProvider.Name,
                Memo = "Issue ",
            });

            // For testing.
            tokenContractCallList.Add(nameof(TokenContract.Issue), new IssueInput
            {
                Symbol = "ELF",
                Amount = DPoSContractConsts.LockTokenForElection * 80,
                To     = Starter.GetCallOwnerAddress(),
                Memo   = "Set dividends.",
            });
            AsyncHelper.RunSync(() => Starter.InitialChainAsync(list =>
            {
                list.AddGenesisSmartContract <DividendContract>(DividendSmartContractAddressNameProvider.Name);

                //test extension AddGenesisSmartContract<T>(this List<GenesisSmartContractDto> genesisSmartContracts, Hash name, Action<SystemTransactionMethodCallList> action)
                void Action(SystemContractDeploymentInput.Types.SystemTransactionMethodCallList x)
                {
                    x.Value.Add(tokenContractCallList.Value);
                }

                list.AddGenesisSmartContract <TokenContract>(TokenSmartContractAddressNameProvider.Name, Action);
            }));
        }
示例#6
0
        protected void StartSideChain()
        {
            var chainId     = ChainHelper.ConvertBase58ToChainId("Side");
            var mainChainId = Tester.GetChainAsync().Result.Id;

            SideChainTester =
                new ContractTester <BasicContractZeroTestAElfModule>(chainId, CreatorKeyPair);
            AsyncHelper.RunSync(() =>
                                SideChainTester.InitialCustomizedChainAsync(chainId,
                                                                            configureSmartContract: SideChainTester.GetSideChainSystemContract(
                                                                                SideChainTester.GetCallOwnerAddress(), mainChainId, "STA", out TotalSupply,
                                                                                SideChainTester.GetCallOwnerAddress())));
            SideBasicContractZeroAddress = SideChainTester.GetZeroContractAddress();
            SideTokenContractAddress     = SideChainTester.GetContractAddress(TokenSmartContractAddressNameProvider.Name);
            SideParliamentAddress        =
                SideChainTester.GetContractAddress(ParliamentSmartContractAddressNameProvider.Name);

            SideChainMinerTester = SideChainTester.CreateNewContractTester(SideChainTester.InitialMinerList.First());
        }
        public static async Task InitialChainAndTokenAsync(this ContractTester <FeeReceiverContractTestAElfModule> starter)
        {
            var tokenContractCallList = new SystemContractDeploymentInput.Types.SystemTransactionMethodCallList();

            tokenContractCallList.Add(nameof(TokenContractContainer.TokenContractStub.Create), new CreateInput
            {
                Symbol      = "ELF",
                Decimals    = 2,
                IsBurnable  = true,
                TokenName   = "elf token",
                TotalSupply = 1000_0000L,
                Issuer      = starter.GetCallOwnerAddress()
            });
示例#8
0
        public static async Task InitialChainAndTokenAsync(this ContractTester <ResourceContractTestAElfModule> starter)
        {
            var tokenContractCallList = new SystemContractDeploymentInput.Types.SystemTransactionMethodCallList();

            tokenContractCallList.Add(nameof(TokenContract.CreateNativeToken), new CreateNativeTokenInput
            {
                Symbol      = "ELF",
                Decimals    = 2,
                IsBurnable  = true,
                TokenName   = "elf token",
                TotalSupply = 1000_0000L,
                Issuer      = starter.GetCallOwnerAddress(),
                LockWhiteSystemContractNameList = { ConsensusSmartContractAddressNameProvider.Name }
            });
 public static async Task <TransactionResult> Unlock(this ContractTester <MultiTokenContractTestAElfModule> contractTester, long amount,
                                                     Hash lockId)
 {
     return(await contractTester.ExecuteContractWithMiningAsync(contractTester.GetTokenContractAddress(),
                                                                nameof(TokenContract.Unlock),
                                                                new UnlockInput
     {
         From = contractTester.GetCallOwnerAddress(),
         To = contractTester.GetConsensusContractAddress(),
         Amount = amount,
         Symbol = "ELF",
         LockId = lockId,
         Usage = "Testing."
     }));
 }
示例#10
0
 protected void StartSideChain(int chainId)
 {
     SideChainTester =
         new ContractTester <MultiTokenContractCrossChainTestAElfModule>(chainId, SampleECKeyPairs.KeyPairs[0]);
     AsyncHelper.RunSync(() =>
                         SideChainTester.InitialCustomizedChainAsync(chainId,
                                                                     configureSmartContract: SideChainTester.GetSideChainSystemContract(
                                                                         MainChainTester.GetCallOwnerAddress(), out TotalSupply, SideChainTester.GetCallOwnerAddress(),
                                                                         out IsPrivilegePreserved)));
     SideBasicContractZeroAddress  = SideChainTester.GetZeroContractAddress();
     SideCrossChainContractAddress =
         SideChainTester.GetContractAddress(CrossChainSmartContractAddressNameProvider.Name);
     SideTokenContractAddress = SideChainTester.GetContractAddress(TokenSmartContractAddressNameProvider.Name);
     SideParliamentAddress    =
         SideChainTester.GetContractAddress(ParliamentAuthSmartContractAddressNameProvider.Name);
     SideConsensusAddress = SideChainTester.GetContractAddress(ConsensusSmartContractAddressNameProvider.Name);
 }
示例#11
0
 public MultiTokenContractCrossChainTestBase()
 {
     MainChainId     = ChainHelper.ConvertBase58ToChainId("AELF");
     MainChainTester =
         new ContractTester <MultiTokenContractCrossChainTestAElfModule>(MainChainId,
                                                                         SampleECKeyPairs.KeyPairs[0]);
     AsyncHelper.RunSync(() =>
                         MainChainTester.InitialChainAsyncWithAuthAsync(MainChainTester.GetDefaultContractTypes(
                                                                            MainChainTester.GetCallOwnerAddress(), out TotalSupply,
                                                                            out _,
                                                                            out BalanceOfStarter)));
     BasicContractZeroAddress  = MainChainTester.GetZeroContractAddress();
     CrossChainContractAddress =
         MainChainTester.GetContractAddress(CrossChainSmartContractAddressNameProvider.Name);
     TokenContractAddress = MainChainTester.GetContractAddress(TokenSmartContractAddressNameProvider.Name);
     ParliamentAddress    = MainChainTester.GetContractAddress(ParliamentAuthSmartContractAddressNameProvider.Name);
     ConsensusAddress     = MainChainTester.GetContractAddress(ConsensusSmartContractAddressNameProvider.Name);
 }
 public MultiTokenContractCrossChainTestBase()
 {
     MainChainId     = ChainHelper.ConvertBase58ToChainId("AELF");
     MainChainTester =
         new ContractTester <MultiTokenContractCrossChainTestAElfModule>(MainChainId,
                                                                         SampleECKeyPairs.KeyPairs[0]);
     AsyncHelper.RunSync(() =>
                         MainChainTester.InitialChainAsyncWithAuthAsync(MainChainTester.GetDefaultContractTypes(
                                                                            MainChainTester.GetCallOwnerAddress(), out TotalSupply,
                                                                            out _,
                                                                            out BalanceOfStarter)));
     BasicContractZeroAddress  = MainChainTester.GetZeroContractAddress();
     CrossChainContractAddress =
         MainChainTester.GetContractAddress(CrossChainSmartContractAddressNameProvider.Name);
     TokenContractAddress    = MainChainTester.GetContractAddress(TokenSmartContractAddressNameProvider.Name);
     ParliamentAddress       = MainChainTester.GetContractAddress(ParliamentSmartContractAddressNameProvider.Name);
     ConsensusAddress        = MainChainTester.GetContractAddress(ConsensusSmartContractAddressNameProvider.Name);
     ReferendumAddress       = MainChainTester.GetContractAddress(ReferendumSmartContractAddressNameProvider.Name);
     AssociationAddress      = MainChainTester.GetContractAddress(AssociationSmartContractAddressNameProvider.Name);
     ResourceTokenSymbolList = GetRequiredService <IOptionsSnapshot <HostSmartContractBridgeContextOptions> >()
                               .Value.ContextVariables["SymbolListToPayRental"].Split(",").ToList();
 }