Exemplo n.º 1
0
        public override Empty Initialize(InitializeInput input)
        {
            Assert(!State.Initialized.Value, "Already initialized.");
            State.Initialized.Value = true;

            var proposerWhiteList = new ProposerWhiteList();

            if (input.PrivilegedProposer != null)
            {
                proposerWhiteList.Proposers.Add(input.PrivilegedProposer);
            }

            State.ProposerWhiteList.Value = proposerWhiteList;
            var organizationInput = new CreateOrganizationInput
            {
                ProposalReleaseThreshold = new ProposalReleaseThreshold
                {
                    MinimalApprovalThreshold   = DefaultOrganizationMinimalApprovalThreshold,
                    MinimalVoteThreshold       = DefaultOrganizationMinimalVoteThresholdThreshold,
                    MaximalAbstentionThreshold = DefaultOrganizationMaximalAbstentionThreshold,
                    MaximalRejectionThreshold  = DefaultOrganizationMaximalRejectionThreshold
                },
                ProposerAuthorityRequired        = input.ProposerAuthorityRequired,
                ParliamentMemberProposingAllowed = true
            };
            var defaultOrganizationAddress = CreateNewOrganization(organizationInput);

            State.DefaultOrganizationAddress.Value = defaultOrganizationAddress;
            return(new Empty());
        }
Exemplo n.º 2
0
        private async Task <Address> CreateOrganizationAsync()
        {
            var reviewer1 = new Reviewer {
                Address = Reviewer1, Weight = 1
            };
            var reviewer2 = new Reviewer {
                Address = Reviewer2, Weight = 2
            };
            var reviewer3 = new Reviewer {
                Address = Reviewer3, Weight = 3
            };

            var createOrganizationInput = new CreateOrganizationInput
            {
                Reviewers         = { reviewer1, reviewer2, reviewer3 },
                ReleaseThreshold  = 2,
                ProposerThreshold = 2
            };
            var transactionResult =
                await AssociationAuthContractStub.CreateOrganization.SendAsync(createOrganizationInput);

            transactionResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Mined);

            return(transactionResult.Output);
        }
        private async Task <Address> CreateOrganizationAsync(bool proposerAuthorityRequired = false)
        {
            var minimalApprovalThreshold   = 6667;
            var maximalAbstentionThreshold = 2000;
            var maximalRejectionThreshold  = 3000;
            var minimalVoteThreshold       = 8000;
            var createOrganizationInput    = new CreateOrganizationInput
            {
                ProposalReleaseThreshold = new ProposalReleaseThreshold
                {
                    MinimalApprovalThreshold   = minimalApprovalThreshold,
                    MaximalAbstentionThreshold = maximalAbstentionThreshold,
                    MaximalRejectionThreshold  = maximalRejectionThreshold,
                    MinimalVoteThreshold       = minimalVoteThreshold
                },
                ProposerAuthorityRequired = proposerAuthorityRequired
            };
            var transactionResult =
                await Tester.ExecuteContractWithMiningAsync(ParliamentAddress,
                                                            nameof(ParliamentContractImplContainer.ParliamentContractImplStub.CreateOrganization),
                                                            createOrganizationInput);

            transactionResult.Status.ShouldBe(TransactionResultStatus.Mined);

            return(Address.Parser.ParseFrom(transactionResult.ReturnValue));
        }
Exemplo n.º 4
0
        public override Empty Initialize(InitializeInput input)
        {
            Assert(!State.Initialized.Value, "Already initialized.");
            State.Initialized.Value = true;
            var organizationInput = new CreateOrganizationInput
            {
                ReleaseThreshold = input.GenesisOwnerReleaseThreshold
            };

            var proposerWhiteList = new ProposerWhiteList();

            if (input.PrivilegedProposer != null)
            {
                proposerWhiteList.Proposers.Add(input.PrivilegedProposer);
            }

            State.ProposerWhiteList.Value = proposerWhiteList;

            var defaultOrganizationAddress = CreateOrganization(organizationInput);

            State.GenesisContract.Value            = Context.GetZeroSmartContractAddress();
            State.DefaultOrganizationAddress.Value = defaultOrganizationAddress;
            State.GenesisContract.ChangeGenesisOwner.Send(defaultOrganizationAddress);
            State.ProposerAuthorityRequired.Value = input.ProposerAuthorityRequired;

            return(new Empty());
        }
Exemplo n.º 5
0
        private Address CreateNewOrganization(CreateOrganizationInput input)
        {
            var organizationHashAddressPair = CalculateOrganizationHashAddressPair(input);
            var organizationAddress         = organizationHashAddressPair.OrganizationAddress;
            var organizationHash            = organizationHashAddressPair.OrganizationHash;
            var organization = new Organization
            {
                ProposalReleaseThreshold         = input.ProposalReleaseThreshold,
                OrganizationAddress              = organizationAddress,
                OrganizationHash                 = organizationHash,
                ProposerAuthorityRequired        = input.ProposerAuthorityRequired,
                ParliamentMemberProposingAllowed = input.ParliamentMemberProposingAllowed
            };

            Assert(Validate(organization), "Invalid organization.");
            if (State.Organisations[organizationAddress] != null)
            {
                return(organizationAddress);
            }

            State.Organisations[organizationAddress] = organization;
            Context.Fire(new OrganizationCreated
            {
                OrganizationAddress = organizationAddress
            });

            return(organizationAddress);
        }
Exemplo n.º 6
0
        public override Address CalculateOrganizationAddress(CreateOrganizationInput input)
        {
            var organizationHashAddressPair = CalculateOrganizationHashAddressPair(input);
            var organizationAddress         = organizationHashAddressPair.OrganizationAddress;

            return(organizationAddress);
        }
Exemplo n.º 7
0
        public override Address CreateOrganization(CreateOrganizationInput input)
        {
            var organizationHashAddressPair = CalculateOrganizationHashAddressPair(input);
            var organizationAddress         = organizationHashAddressPair.OrganizationAddress;
            var organizationHash            = organizationHashAddressPair.OrganizationHash;
            var organization = new Organization
            {
                ProposalReleaseThreshold = input.ProposalReleaseThreshold,
                OrganizationAddress      = organizationAddress,
                ProposerWhiteList        = input.ProposerWhiteList,
                OrganizationMemberList   = input.OrganizationMemberList,
                OrganizationHash         = organizationHash
            };

            Assert(Validate(organization), "Invalid organization.");
            if (State.Organisations[organizationAddress] == null)
            {
                State.Organisations[organizationAddress] = organization;
            }

            Context.Fire(new OrganizationCreated
            {
                OrganizationAddress = organizationAddress
            });

            return(organizationAddress);
        }
Exemplo n.º 8
0
        public override Address CreateOrganization(CreateOrganizationInput input)
        {
            var organizationHashAddressPair = CalculateOrganizationHashAddressPair(input);
            var organizationAddress         = organizationHashAddressPair.OrganizationAddress;
            var organizationHash            = organizationHashAddressPair.OrganizationHash;

            if (State.Organizations[organizationAddress] != null)
            {
                return(organizationAddress);
            }
            var organization = new Organization
            {
                ProposalReleaseThreshold = input.ProposalReleaseThreshold,
                OrganizationAddress      = organizationAddress,
                TokenSymbol       = input.TokenSymbol,
                OrganizationHash  = organizationHash,
                ProposerWhiteList = input.ProposerWhiteList,
                CreationToken     = input.CreationToken
            };

            Assert(Validate(organization), "Invalid organization data.");

            if (State.Organizations[organizationAddress] != null)
            {
                return(organizationAddress);
            }

            State.Organizations[organizationAddress] = organization;
            Context.Fire(new OrganizationCreated
            {
                OrganizationAddress = organizationAddress
            });

            return(organizationAddress);
        }
Exemplo n.º 9
0
        private Association.CreateOrganizationInput GenerateOrganizationInputForIndexingFeePrice(
            Address sideChainCreator)
        {
            var proposers = new List <Address> {
                sideChainCreator, GetSideChainLifetimeController().OwnerAddress
            };
            var createOrganizationInput = new CreateOrganizationInput
            {
                ProposerWhiteList = new ProposerWhiteList
                {
                    Proposers = { proposers }
                },
                OrganizationMemberList = new OrganizationMemberList
                {
                    OrganizationMembers = { proposers }
                },
                ProposalReleaseThreshold = new ProposalReleaseThreshold
                {
                    MinimalApprovalThreshold   = proposers.Count,
                    MinimalVoteThreshold       = proposers.Count,
                    MaximalRejectionThreshold  = 0,
                    MaximalAbstentionThreshold = 0
                }
            };

            return(createOrganizationInput);
        }
Exemplo n.º 10
0
        private Address CalculateSideChainIndexingFeeControllerOrganizationAddress(CreateOrganizationInput input)
        {
            SetContractStateRequired(State.AssociationContract, SmartContractConstants.AssociationContractSystemName);
            var address = State.AssociationContract.CalculateOrganizationAddress.Call(input);

            return(address);
        }
Exemplo n.º 11
0
        public async Task Treasury_ChangeTreasuryController_Success_Test()
        {
            var newParliament = new CreateOrganizationInput
            {
                ProposerAuthorityRequired = false,
                ProposalReleaseThreshold  = new 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 newController = new AuthorityInfo
            {
                ContractAddress = ParliamentContractAddress,
                OwnerAddress    = calculatedNewParliamentAddress
            };

            await ExecuteProposalForParliamentTransaction(Tester, TreasuryContractAddress,
                                                          nameof(TreasuryContractStub.ChangeTreasuryController), newController);

            var getController = await TreasuryContractStub.GetTreasuryController.CallAsync(new Empty());

            getController.ContractAddress.ShouldBe(newController.ContractAddress);
            getController.OwnerAddress.ShouldBe(newController.OwnerAddress);
        }
Exemplo n.º 12
0
        public async Task Get_Organization_Test()
        {
            var reviewer1 = new Reviewer {
                Address = Reviewer1, Weight = 1
            };
            var reviewer2 = new Reviewer {
                Address = Reviewer2, Weight = 2
            };
            var reviewer3 = new Reviewer {
                Address = Reviewer3, Weight = 3
            };

            var createOrganizationInput = new CreateOrganizationInput
            {
                Reviewers         = { reviewer1, reviewer2, reviewer3 },
                ReleaseThreshold  = 2,
                ProposerThreshold = 2
            };
            var transactionResult =
                await AssociationAuthContractStub.CreateOrganization.SendAsync(createOrganizationInput);

            transactionResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Mined);
            var organizationAddress = transactionResult.Output;
            var getOrganization     = await AssociationAuthContractStub.GetOrganization.CallAsync(organizationAddress);

            getOrganization.OrganizationAddress.ShouldBe(organizationAddress);
            getOrganization.Reviewers[0].Address.ShouldBe(Reviewer1);
            getOrganization.Reviewers[0].Weight.ShouldBe(1);
            getOrganization.ProposerThreshold.ShouldBe(2);
            getOrganization.ReleaseThreshold.ShouldBe(2);
            getOrganization.OrganizationHash.ShouldBe(Hash.FromTwoHashes(
                                                          Hash.FromMessage(AssociationAuthContractAddress), Hash.FromMessage(createOrganizationInput)));
        }
Exemplo n.º 13
0
        public override Address CreateOrganization(CreateOrganizationInput input)
        {
            var isValidWeight = input.Reviewers.All(r => r.Weight >= 0);
            var canBeProposed = input.Reviewers.Any(r => r.Weight >= input.ProposerThreshold);
            var canBeReleased = input.Reviewers.Aggregate(0, (i, reviewer) => i + reviewer.Weight) >
                                input.ReleaseThreshold;

            Assert(isValidWeight && canBeProposed && canBeReleased, "Invalid organization.");
            var     organizationHash    = Hash.FromTwoHashes(Hash.FromMessage(Context.Self), Hash.FromMessage(input));
            Address organizationAddress = Context.ConvertVirtualAddressToContractAddress(organizationHash);

            if (State.Organisations[organizationAddress] == null)
            {
                var organization = new Organization
                {
                    ReleaseThreshold    = input.ReleaseThreshold,
                    OrganizationAddress = organizationAddress,
                    ProposerThreshold   = input.ProposerThreshold,
                    OrganizationHash    = organizationHash
                };
                organization.Reviewers.AddRange(input.Reviewers);
                State.Organisations[organizationAddress] = organization;
            }

            return(organizationAddress);
        }
Exemplo n.º 14
0
        public override Address CreateOrganization(CreateOrganizationInput input)
        {
            Assert(ValidateAddressInWhiteList(Context.Sender) || ValidateParliamentMemberAuthority(Context.Sender),
                   "Unauthorized to create organization.");
            var organizationAddress = CreateNewOrganization(input);

            return(organizationAddress);
        }
        internal async Task <Address> CreateOrganization(CreateOrganizationInput input)
        {
            DeployContracts();
            var transactionResult = await AssociationContractStub.CreateOrganization.SendAsync(input);

            var organizationAddress = transactionResult.Output;

            return(organizationAddress);
        }
Exemplo n.º 16
0
        private OrganizationHashAddressPair CalculateOrganizationHashAddressPair(CreateOrganizationInput createOrganizationInput)
        {
            var organizationHash    = Hash.FromMessage(createOrganizationInput);
            var organizationAddress = Context.ConvertVirtualAddressToContractAddressWithContractHashName(organizationHash);

            return(new OrganizationHashAddressPair
            {
                OrganizationAddress = organizationAddress,
                OrganizationHash = organizationHash
            });
        }
Exemplo n.º 17
0
        private Address CalculateSideChainRentalController(
            CreateOrganizationInput input)
        {
            if (State.AssociationContract.Value == null)
            {
                State.AssociationContract.Value =
                    Context.GetContractAddressByName(SmartContractConstants.AssociationContractSystemName);
            }
            var address = State.AssociationContract.CalculateOrganizationAddress.Call(input);

            return(address);
        }
Exemplo n.º 18
0
        private OrganizationHashAddressPair CalculateOrganizationHashAddressPair(
            CreateOrganizationInput createOrganizationInput)
        {
            var organizationHash    = HashHelper.ComputeFrom(createOrganizationInput);
            var organizationAddress = Context.ConvertVirtualAddressToContractAddressWithContractHashName(
                CalculateVirtualHash(organizationHash, createOrganizationInput.CreationToken));

            return(new OrganizationHashAddressPair
            {
                OrganizationAddress = organizationAddress,
                OrganizationHash = organizationHash
            });
        }
        private async Task <Address> CreateOrganizationAsync()
        {
            var createOrganizationInput = new CreateOrganizationInput
            {
                ReleaseThreshold = 20000 / MinersCount
            };
            var transactionResult =
                await ParliamentAuthContractStub.CreateOrganization.SendAsync(createOrganizationInput);

            transactionResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Mined);

            return(transactionResult.Output);
        }
Exemplo n.º 20
0
        public async Task <Address> Create_Organization()
        {
            _createOrganizationInput = new CreateOrganizationInput
            {
                ReleaseThreshold = 5000,
                TokenSymbol      = "ELF",
            };
            var transactionResult =
                await ReferendumAuthContractStub.CreateOrganization.SendAsync(_createOrganizationInput);

            transactionResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Mined);

            return(transactionResult.Output);
        }
Exemplo n.º 21
0
        protected async Task <Address> CreateOrganizationAsync(ContractTester <BasicContractZeroTestAElfModule> tester,
                                                               Address parliamentContract)
        {
            var createOrganizationInput = new CreateOrganizationInput
            {
                ReleaseThreshold = 20000 / tester.InitialMinerList.Count
            };
            var transactionResult =
                await tester.ExecuteContractWithMiningAsync(parliamentContract,
                                                            nameof(ParliamentAuthContractContainer.ParliamentAuthContractStub.CreateOrganization),
                                                            createOrganizationInput);

            return(Address.Parser.ParseFrom(transactionResult.ReturnValue));
        }
        private async Task <Address> CreatePrivilegeOrganizationAsync()
        {
            var createOrganizationInput = new CreateOrganizationInput
            {
                ReleaseThreshold          = 20000 / MinersCount,
                ProposerAuthorityRequired = true,
                ProposerWhiteList         = { Tester }
            };
            var transactionResult =
                await ParliamentAuthContractStub.CreateOrganization.SendAsync(createOrganizationInput);

            transactionResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Mined);

            return(transactionResult.Output);
        }
        private async Task <Address> CreateOrganizationAsync()
        {
            var createOrganizationInput = new CreateOrganizationInput
            {
                ReleaseThreshold = 20000 / Tester.InitialMinerList.Count
            };
            var transactionResult =
                await Tester.ExecuteContractWithMiningAsync(ParliamentAddress,
                                                            nameof(ParliamentAuthContractContainer.ParliamentAuthContractStub.CreateOrganization),
                                                            createOrganizationInput);

            transactionResult.Status.ShouldBe(TransactionResultStatus.Mined);

            return(Address.Parser.ParseFrom(transactionResult.ReturnValue));
        }
Exemplo n.º 24
0
        public async Task Create_OrganizationFailed_Test()
        {
            var reviewer1 = new Reviewer {
                Address = Reviewer1, Weight = 1
            };
            var reviewer2 = new Reviewer {
                Address = Reviewer2, Weight = 2
            };
            var reviewer3 = new Reviewer {
                Address = Reviewer3, Weight = 3
            };

            var createOrganizationInput = new CreateOrganizationInput
            {
                Reviewers         = { reviewer1, reviewer2, reviewer3 },
                ReleaseThreshold  = 2,
                ProposerThreshold = 2
            };
            //isValidWeight
            {
                createOrganizationInput.Reviewers[0].Weight = -1;
                var transactionResult =
                    await AssociationAuthContractStub.CreateOrganization.SendAsync(createOrganizationInput);

                transactionResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Failed);
                transactionResult.TransactionResult.Error.Contains("Invalid organization.").ShouldBeTrue();
            }
            //canBeProposed
            {
                createOrganizationInput.Reviewers[0].Weight = 1;
                createOrganizationInput.ProposerThreshold   = 10;
                var transactionResult =
                    await AssociationAuthContractStub.CreateOrganization.SendAsync(createOrganizationInput);

                transactionResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Failed);
                transactionResult.TransactionResult.Error.Contains("Invalid organization.").ShouldBeTrue();
            }
            //canBeReleased
            {
                createOrganizationInput.ProposerThreshold = 2;
                createOrganizationInput.ReleaseThreshold  = 10;
                var transactionResult =
                    await AssociationAuthContractStub.CreateOrganization.SendAsync(createOrganizationInput);

                transactionResult.TransactionResult.Status.ShouldBe(TransactionResultStatus.Failed);
                transactionResult.TransactionResult.Error.Contains("Invalid organization.").ShouldBeTrue();
            }
        }
Exemplo n.º 25
0
        public async Task Get_Organization_Test()
        {
            var createOrganizationInput = new CreateOrganizationInput
            {
                ReleaseThreshold = 5000,
                TokenSymbol      = "ELF",
            };
            var organizationAddress = await CreateOrganizationAsync();

            var getOrganization = await ReferendumAuthContractStub.GetOrganization.CallAsync(organizationAddress);

            getOrganization.OrganizationAddress.ShouldBe(organizationAddress);
            getOrganization.ReleaseThreshold.ShouldBe(5000);
            getOrganization.OrganizationHash.ShouldBe(Hash.FromTwoHashes(
                                                          Hash.FromMessage(ReferendumAuthContractAddress), Hash.FromMessage(createOrganizationInput)));
        }
Exemplo n.º 26
0
        public async Task Get_Organization_Test()
        {
            var createOrganizationInput = new CreateOrganizationInput
            {
                ReleaseThreshold = 10000 / MinersCount
            };
            var transactionResult =
                await ParliamentAuthContractStub.CreateOrganization.SendAsync(createOrganizationInput);

            var organizationAddress = transactionResult.Output;
            var getOrganization     = await ParliamentAuthContractStub.GetOrganization.CallAsync(organizationAddress);


            getOrganization.OrganizationAddress.ShouldBe(organizationAddress);
            getOrganization.ReleaseThreshold.ShouldBe(10000 / MinersCount);
            getOrganization.OrganizationHash.ShouldBe(Hash.FromTwoHashes(
                                                          Hash.FromMessage(ParliamentAuthContractAddress), Hash.FromMessage(createOrganizationInput)));
        }
Exemplo n.º 27
0
        public override Address CreateOrganization(CreateOrganizationInput input)
        {
            var     organizationHash    = Hash.FromTwoHashes(Hash.FromMessage(Context.Self), Hash.FromMessage(input));
            Address organizationAddress = Context.ConvertVirtualAddressToContractAddress(organizationHash);

            if (State.Organisations[organizationAddress] == null)
            {
                var organization = new Organization
                {
                    ReleaseThreshold    = input.ReleaseThreshold,
                    OrganizationAddress = organizationAddress,
                    TokenSymbol         = input.TokenSymbol,
                    OrganizationHash    = organizationHash
                };
                State.Organisations[organizationAddress] = organization;
            }
            return(organizationAddress);
        }
Exemplo n.º 28
0
        public override Address CreateOrganization(CreateOrganizationInput input)
        {
            Assert(input.ReleaseThreshold > 0 && input.ReleaseThreshold <= 10000, "Invalid organization.");
            var     organizationHash    = GenerateOrganizationVirtualHash(input);
            Address organizationAddress = Context.ConvertVirtualAddressToContractAddress(organizationHash);

            if (State.Organisations[organizationAddress] == null)
            {
                var organization = new Organization
                {
                    ReleaseThreshold    = input.ReleaseThreshold,
                    OrganizationAddress = organizationAddress,
                    OrganizationHash    = organizationHash
                };
                State.Organisations[organizationAddress] = organization;
            }
            return(organizationAddress);
        }
Exemplo n.º 29
0
        private Address InitialConnectorManager()
        {
            State.ParliamentAuthContract.Value =
                Context.GetContractAddressByName(SmartContractConstants.ParliamentAuthContractSystemName);

            var createOrganizationInput = new CreateOrganizationInput
            {
                ReleaseThreshold = EconomicContractConstants.ConnectorSettingProposalReleaseThreshold
            };

            State.ParliamentAuthContract.CreateOrganization.Send(createOrganizationInput);

            var organizationHash = Hash.FromTwoHashes(Hash.FromMessage(State.ParliamentAuthContract.Value),
                                                      Hash.FromMessage(createOrganizationInput));

            return(Address.FromPublicKey(State.ParliamentAuthContract.Value.Value.Concat(
                                             organizationHash.Value.ToByteArray().ComputeHash()).ToArray()));
        }
Exemplo n.º 30
0
        public async Task Authorization_Transfer_For_Set_Vote_Weight_Interest()
        {
            var defaultSetting = await ElectionContractStub.GetVoteWeightSetting.CallAsync(
                new Empty());

            defaultSetting.VoteWeightInterestInfos[0].Capital = 13200;
            var newParliament = new CreateOrganizationInput
            {
                ProposerAuthorityRequired = false,
                ProposalReleaseThreshold  = new ProposalReleaseThreshold
                {
                    MaximalAbstentionThreshold = 1,
                    MaximalRejectionThreshold  = 1,
                    MinimalApprovalThreshold   = 1,
                    MinimalVoteThreshold       = 1
                },
                ParliamentMemberProposingAllowed = false
            };
            var buildNewParliamentRet =
                (await ParliamentContractStub.CreateOrganization.SendAsync(newParliament)).TransactionResult;

            buildNewParliamentRet.Status.ShouldBe(TransactionResultStatus.Mined);
            var newParliamentAddress = new Address();

            newParliamentAddress.MergeFrom(buildNewParliamentRet.ReturnValue);
            var newAuthority = new AuthorityInfo
            {
                OwnerAddress    = newParliamentAddress,
                ContractAddress = ParliamentContractAddress
            };

            await ExecuteProposalTransaction(BootMinerAddress, ElectionContractAddress,
                                             nameof(ElectionContractStub.ChangeVoteWeightInterestController), newAuthority);

            await ExecuteProposalTransactionWithNewParliament(BootMinerAddress, ElectionContractAddress,
                                                              nameof(ElectionContractStub.SetVoteWeightInterest), defaultSetting, newParliamentAddress);

            defaultSetting = await ElectionContractStub.GetVoteWeightSetting.CallAsync(
                new Empty());

            defaultSetting.VoteWeightInterestInfos[0].Capital.ShouldBe(13200);
        }