Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }