public async Task TransferAuthorizationForTokenConvert_Test() { var newParliament = new Parliament.CreateOrganizationInput { ProposerAuthorityRequired = false, ProposalReleaseThreshold = new Acs3.ProposalReleaseThreshold { MaximalAbstentionThreshold = 1, MaximalRejectionThreshold = 1, MinimalApprovalThreshold = 1, MinimalVoteThreshold = 1 }, ParliamentMemberProposingAllowed = false }; var createNewParliament = (await ParliamentContractStub.CreateOrganization.SendAsync(newParliament)).TransactionResult; createNewParliament.Status.ShouldBe(TransactionResultStatus.Mined); var calculatedNewParliamentAddress = await ParliamentContractStub.CalculateOrganizationAddress.CallAsync(newParliament); var newAuthority = new Acs1.AuthorityInfo { ContractAddress = ParliamentContractAddress, OwnerAddress = calculatedNewParliamentAddress }; await ExecuteProposalTransaction(Tester, TokenConverterContractAddress, nameof(TokenConverterContractContainer.TokenConverterContractStub.ChangeConnectorController), newAuthority); var controller = await TokenConverterContractStub.GetControllerForManageConnector.CallAsync(new Empty()); controller.OwnerAddress.ShouldBe(calculatedNewParliamentAddress); }
public async Task TransferAuthorizationForVoteInterest_Test() { var newInterest = new VoteWeightInterestList(); newInterest.VoteWeightInterestInfos.Add(new VoteWeightInterest { Capital = 1000, Interest = 16, Day = 400 }); var updateInterestRet = (await TreasuryContractStub.SetVoteWeightInterest.SendAsync(newInterest)).TransactionResult; updateInterestRet.Status.ShouldBe(TransactionResultStatus.Failed); var newParliament = new Parliament.CreateOrganizationInput { ProposerAuthorityRequired = false, ProposalReleaseThreshold = new Acs3.ProposalReleaseThreshold { MaximalAbstentionThreshold = 1, MaximalRejectionThreshold = 1, MinimalApprovalThreshold = 1, MinimalVoteThreshold = 1 }, ParliamentMemberProposingAllowed = false }; var bpParliamentStub = GetParliamentContractTester(InitialCoreDataCenterKeyPairs[0]); var createNewParliament = (await bpParliamentStub.CreateOrganization.SendAsync(newParliament)).TransactionResult; createNewParliament.Status.ShouldBe(TransactionResultStatus.Mined); var calculatedNewParliamentAddress = await ParliamentContractStub.CalculateOrganizationAddress.CallAsync(newParliament); var newAuthority = new AuthorityInfo { OwnerAddress = calculatedNewParliamentAddress, ContractAddress = ParliamentContractAddress }; await ExecuteProposalTransaction(Tester, TreasuryContractAddress, nameof(TreasuryContractStub.ChangeVoteWeightInterestController), newAuthority); var proposalToUpdateInterest = new Acs3.CreateProposalInput { OrganizationAddress = calculatedNewParliamentAddress, ContractMethodName = nameof(TreasuryContractContainer.TreasuryContractStub.SetVoteWeightInterest), ExpiredTime = TimestampHelper.GetUtcNow().AddHours(1), Params = newInterest.ToByteString(), ToAddress = TreasuryContractAddress }; var createResult = await bpParliamentStub.CreateProposal.SendAsync(proposalToUpdateInterest); createResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Mined); var proposalHash = Hash.Parser.ParseFrom(createResult.TransactionResult.ReturnValue); await bpParliamentStub.Approve.SendAsync(proposalHash); await ParliamentContractStub.Release.SendAsync(proposalHash); var interestList = await TreasuryContractStub.GetVoteWeightSetting.CallAsync(new Empty()); interestList.VoteWeightInterestInfos.Count.ShouldBe(1); interestList.VoteWeightInterestInfos[0].Capital.ShouldBe(1000); interestList.VoteWeightInterestInfos[0].Interest.ShouldBe(16); interestList.VoteWeightInterestInfos[0].Day.ShouldBe(400); }
public async Task Controller_Transfer_For_Symbol_To_Pay_Tx_Fee() { var primaryTokenRet = await MainChainTester.ExecuteContractWithMiningAsync(TokenContractAddress, nameof(TokenContractContainer.TokenContractStub.GetPrimaryTokenSymbol), new Empty()); var primarySymbol = new StringValue(); primarySymbol.MergeFrom(primaryTokenRet.ReturnValue); var newSymbolList = new SymbolListToPayTXSizeFee(); newSymbolList.SymbolsToPayTxSizeFee.Add(new SymbolToPayTXSizeFee { TokenSymbol = primarySymbol.Value, AddedTokenWeight = 1, BaseTokenWeight = 1 }); var symbolSetRet = await MainChainTester.ExecuteContractWithMiningAsync(TokenContractAddress, nameof(TokenContractContainer.TokenContractStub.SetSymbolsToPayTXSizeFee), newSymbolList); symbolSetRet.Status.ShouldBe(TransactionResultStatus.Failed); var newParliament = new Parliament.CreateOrganizationInput { ProposerAuthorityRequired = false, ProposalReleaseThreshold = new ProposalReleaseThreshold { MaximalAbstentionThreshold = 1, MaximalRejectionThreshold = 1, MinimalApprovalThreshold = 1, MinimalVoteThreshold = 1 }, ParliamentMemberProposingAllowed = false }; var parliamentCreateRet = await MainChainTester.ExecuteContractWithMiningAsync(ParliamentAddress, nameof(ParliamentContractContainer.ParliamentContractStub.CreateOrganization), newParliament); var newParliamentAddress = new Address(); newParliamentAddress.MergeFrom(parliamentCreateRet.ReturnValue); var parliamentOrgRet = await MainChainTester.ExecuteContractWithMiningAsync(ParliamentAddress, nameof(ParliamentContractContainer.ParliamentContractStub.GetDefaultOrganizationAddress), new Empty()); parliamentOrgRet.Status.ShouldBe(TransactionResultStatus.Mined); var defaultParliamentAddress = new Address(); defaultParliamentAddress.MergeFrom(parliamentOrgRet.ReturnValue); var createProposalInput = new CreateProposalInput { ToAddress = TokenContractAddress, Params = newParliamentAddress.ToByteString(), OrganizationAddress = defaultParliamentAddress, ContractMethodName = nameof(TokenContractContainer.TokenContractStub.SetControllerForSymbolsToPayTXSizeFee), ExpiredTime = TimestampHelper.GetUtcNow().AddHours(1) }; var parliamentCreateProposal = await MainChainTester.ExecuteContractWithMiningAsync(ParliamentAddress, nameof(ParliamentContractContainer.ParliamentContractStub.CreateProposal), createProposalInput); parliamentCreateProposal.Status.ShouldBe(TransactionResultStatus.Mined); var parliamentProposalId = new Hash(); parliamentProposalId.MergeFrom(parliamentCreateProposal.ReturnValue); await ApproveWithMinersAsync(parliamentProposalId, ParliamentAddress, MainChainTester); await ReleaseProposalAsync(parliamentProposalId, ParliamentAddress, MainChainTester); var updateInput = new CreateProposalInput { ToAddress = TokenContractAddress, Params = newSymbolList.ToByteString(), OrganizationAddress = newParliamentAddress, ContractMethodName = nameof(TokenContractContainer.TokenContractStub.SetSymbolsToPayTXSizeFee), ExpiredTime = TimestampHelper.GetUtcNow().AddHours(1) }; var updateProposal = await MainChainTester.ExecuteContractWithMiningAsync(ParliamentAddress, nameof(ParliamentContractContainer.ParliamentContractStub.CreateProposal), updateInput); var updateProposalId = new Hash(); updateProposalId.MergeFrom(updateProposal.ReturnValue); await MainChainTester.ExecuteContractWithMiningAsync(ParliamentAddress, nameof(ParliamentContractContainer.ParliamentContractStub.Approve), updateProposalId); await MainChainTester.ExecuteContractWithMiningAsync(ParliamentAddress, nameof(ParliamentContractContainer.ParliamentContractStub.Release), updateProposalId); symbolSetRet = await MainChainTester.ExecuteContractWithMiningAsync(TokenContractAddress, nameof(TokenContractContainer.TokenContractStub.GetSymbolsToPayTXSizeFee), newSymbolList); symbolSetRet.Status.ShouldBe(TransactionResultStatus.Mined); var updatedSymbolList = new SymbolListToPayTXSizeFee(); updatedSymbolList.MergeFrom(symbolSetRet.ReturnValue); updatedSymbolList.SymbolsToPayTxSizeFee.Count.ShouldBe(1); }