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); }
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); }
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); })); }
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() });
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." })); }
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); }
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(); }