コード例 #1
0
    def setUp(self):
        self.params = {
            "debug": False,
            "days_to_80p_of_max_voting_weight": 10,
            "probability_func": new_probability_func(seed=None),
            "exponential_func": new_exponential_func(seed=None),
            "gamma_func": new_gamma_func(seed=None),
            "random_number_func": new_random_number_func(seed=None)
        }
        self.network = bootstrap_network([
            TokenBatch(1000, 0, vesting_options=VestingOptions(10, 30))
            for _ in range(4)
        ], 1, 3000, 4e6, 0.2, self.params["probability_func"],
                                         self.params["random_number_func"],
                                         self.params["gamma_func"],
                                         self.params["exponential_func"])

        self.network, _ = add_proposal(self.network, Proposal(100, 1),
                                       self.params["random_number_func"])
        """
        For proper testing, we need to make sure the Proposals are CANDIDATE and
        ensure Proposal-Participant affinities are not some random value
        """
        self.network.nodes[4]["item"].status = ProposalStatus.CANDIDATE
        self.network.nodes[5]["item"].status = ProposalStatus.CANDIDATE
        support_edges = get_edges_by_type(self.network, "support")
        for u, v in support_edges:
            self.network[u][v]["support"] = self.network[u][v][
                "support"]._replace(affinity=0.9)
コード例 #2
0
    def setUp(self):
        self.params = {
            "debug": True,
            "probability_func": new_probability_func(seed=None),
            "exponential_func": new_exponential_func(seed=None),
            "gamma_func": new_gamma_func(seed=None),
            "random_number_func": new_random_number_func(seed=None)
        }
        vesting_participants = [
            TokenBatch(1000, 1000, vesting_options=VestingOptions(10, 30))
            for _ in range(2)
        ]
        nonvesting_participants = [
            TokenBatch(0, 1000, vesting_options=VestingOptions(10, 30))
            for _ in range(2)
        ]
        self.network = bootstrap_network(
            vesting_participants + nonvesting_participants, 1, 3000, 4e6, 0.2,
            self.params["probability_func"], self.params["random_number_func"],
            self.params["gamma_func"], self.params["exponential_func"])
        self.commons = Commons(1000, 1000)

        self.network, _ = add_proposal(self.network, Proposal(100, 1),
                                       self.params["random_number_func"])
        self.default_state = {
            "network": self.network,
            "commons": self.commons,
            "funding_pool": 1000,
            "token_supply": 1000
        }
コード例 #3
0
    def su_add_to_network(params, step, sL, s, _input, **kwargs):
        network = s["network"]
        funding_pool = s["funding_pool"]
        token_supply = s["token_supply"]
        scale_factor = 0.01
        if _input["new_proposal"]:
            # Create the Proposal and add it to the network.
            rescale = funding_pool * scale_factor
            r_rv = gamma.rvs(3, loc=0.001, scale=rescale)
            proposal = Proposal(funds_requested=r_rv,
                                trigger=trigger_threshold(
                                    r_rv, funding_pool, token_supply,
                                    params["max_proposal_request"]))
            network, proposal_idx = add_proposal(network, proposal)

            # add_proposal() has created support edges from other Participants
            # to this Proposal. If the Participant is the one who created this
            # Proposal, change his affinity for the Proposal to 1 (maximum).
            network.edges[_input["proposed_by_participant"],
                          proposal_idx]["affinity"] = 1
            if params.get("debug"):
                print(
                    "GenerateNewProposal: Participant {} created Proposal {}".
                    format(_input["proposed_by_participant"], proposal_idx))
        return "network", network
コード例 #4
0
    def su_add_to_network(params, step, sL, s, _input, **kwargs):
        network = s["network"]
        funding_pool = s["funding_pool"]
        token_supply = s["token_supply"]
        gamma_func = params["gamma_func"]
        random_number_func = params["random_number_func"]
        if _input["new_proposal"]:
            proposed_by = _input["proposed_by_participant"]
            # Create the Proposal and add it to the network.
            rescale = funding_pool * config.scale_factor
            r_rv = gamma_func(config.funds_requested_alpha,
                              loc=config.funds_requested_min,
                              scale=rescale)
            proposal = Proposal(funds_requested=r_rv,
                                trigger=trigger_threshold(
                                    r_rv, funding_pool, token_supply,
                                    params["max_proposal_request"]))
            network, proposal_idx = add_proposal(network, proposal,
                                                 proposed_by,
                                                 random_number_func)

            if params.get("debug"):
                print(
                    "GenerateNewProposal: Participant {} created Proposal {}".
                    format(_input["proposed_by_participant"], proposal_idx))
        return "network", network
コード例 #5
0
    def su_add_to_network(params, step, sL, s, _input, **kwargs):
        network = s["network"]
        funding_pool = s["funding_pool"]
        token_supply = s["token_supply"]
        gamma_func = params["gamma_func"]
        random_number_func = params["random_number_func"]
        if _input["new_proposal"]:
            # Create the Proposal and add it to the network.
            rescale = funding_pool * config.scale_factor
            r_rv = gamma_func(config.funds_requested_alpha,
                              loc=config.funds_requested_min,
                              scale=rescale)
            proposal = Proposal(funds_requested=r_rv,
                                trigger=trigger_threshold(
                                    r_rv, funding_pool, token_supply,
                                    params["max_proposal_request"]))
            network, proposal_idx = add_proposal(network, proposal,
                                                 random_number_func)

            # add_proposal() has created support edges from other Participants
            # to this Proposal. If the Participant is the one who created this
            # Proposal, set the participant's role as author and change his affinity for the Proposal to 1 (maximum).
            network.edges[_input["proposed_by_participant"],
                            proposal_idx]["support"] = \
                                network.edges[_input["proposed_by_participant"], proposal_idx]["support"]._replace(affinity=1, is_author=True)
            if params.get("debug"):
                print(
                    "GenerateNewProposal: Participant {} created Proposal {}".
                    format(_input["proposed_by_participant"], proposal_idx))
        return "network", network
コード例 #6
0
    def setUp(self):
        self.network = bootstrap_network(
            [TokenBatch(1000, VestingOptions(10, 30)) for _ in range(4)], 1,
            3000, 4e6)

        self.network, _ = add_proposal(self.network, Proposal(100, 1))

        self.network.nodes[4]["item"].status = ProposalStatus.ACTIVE
        self.network.nodes[5]["item"].status = ProposalStatus.ACTIVE
コード例 #7
0
    def setUp(self):
        self.network = bootstrap_network([
            TokenBatch(1000, 0, vesting_options=VestingOptions(10, 30))
            for _ in range(4)
        ], 1, 3000, 4e6, 0.2)

        self.network, _ = add_proposal(self.network, Proposal(100, 1))

        self.network.nodes[4]["item"].status = ProposalStatus.CANDIDATE
        self.network.nodes[5]["item"].status = ProposalStatus.CANDIDATE
        self.params = {
            "max_proposal_request": 0.2,
            "alpha_days_to_80p_of_max_voting_weight": 10
        }
コード例 #8
0
    def test_add_proposal(self):
        """
        This test ensures that the Proposal was added and that
        setup_conflict_edges() was executed for that particular node.
        """
        n1, j = add_proposal(self.network, Proposal(23, 111))
        self.assertEqual(n1.nodes[j]["item"].funds_requested, 23)
        self.assertEqual(n1.nodes[j]["item"].trigger, 111)

        self.assertEqual(len(n1.edges), 5)
        for u, v, t in n1.edges(data="type"):
            self.assertEqual(v, 10)
            self.assertEqual(t, "support")
            self.assertIn(u, [0, 2, 4, 6, 8])
コード例 #9
0
    def setUp(self):
        self.network = bootstrap_network([
            TokenBatch(1000, 1000, vesting_options=VestingOptions(10, 30))
            for _ in range(4)
        ], 1, 3000, 4e6, 0.2)
        self.commons = Commons(1000, 1000)

        self.network, _ = add_proposal(self.network, Proposal(100, 1))
        self.params = {"debug": True}
        self.default_state = {
            "network": self.network,
            "commons": self.commons,
            "funding_pool": 1000,
            "token_supply": 1000
        }
コード例 #10
0
    def setUp(self):
        self.network = bootstrap_network([
            TokenBatch(1000, 0, vesting_options=VestingOptions(10, 30))
            for _ in range(4)
        ], 1, 3000, 4e6, 0.2)

        self.network, _ = add_proposal(self.network, Proposal(100, 1))
        self.params = {"debug": False, "days_to_80p_of_max_voting_weight": 10}
        """
        For proper testing, we need to make sure the Proposals are CANDIDATE and
        ensure Proposal-Participant affinities are not some random value
        """
        self.network.nodes[4]["item"].status = ProposalStatus.CANDIDATE
        self.network.nodes[5]["item"].status = ProposalStatus.CANDIDATE
        support_edges = get_edges_by_type(self.network, "support")
        for u, v in support_edges:
            self.network[u][v]["affinity"] = 0.9
コード例 #11
0
    def su_add_to_network(params, step, sL, s, _input):
        network = s["network"]
        funding_pool = s["funding_pool"]
        token_supply = s["token_supply"]
        scale_factor = 0.01
        if _input["new_proposal"]:
            # Create the Proposal and add it to the network.
            rescale = funding_pool * scale_factor
            r_rv = gamma.rvs(3, loc=0.001, scale=rescale)
            proposal = Proposal(funds_requested=r_rv,
                                trigger=convictionvoting.trigger_threshold(r_rv, funding_pool, token_supply))
            network, j = add_proposal(network, proposal)

            # add_proposal() has created support edges from other Participants
            # to this Proposal. If the Participant is the one who created this
            # Proposal, change his affinity for the Proposal to 1 (maximum).
            network.edges[_input["proposed_by_participant"], j]["affinity"] = 1
        return "network", network
コード例 #12
0
    def setUp(self):
        self.params = {
            "probability_func": new_probability_func(seed=None),
            "exponential_func": new_exponential_func(seed=None),
            "gamma_func": new_gamma_func(seed=None),
            "random_number_func": new_random_number_func(seed=None)
        }
        self.network = bootstrap_network([
            TokenBatch(1000, 0, vesting_options=VestingOptions(10, 30))
            for _ in range(4)
        ], 1, 3000, 4e6, 0.2, self.params["probability_func"],
                                         self.params["random_number_func"],
                                         self.params["gamma_func"],
                                         self.params["exponential_func"])

        self.network, _ = add_proposal(self.network, Proposal(100, 1),
                                       self.params["random_number_func"])

        self.network.nodes[4]["item"].status = ProposalStatus.ACTIVE
        self.network.nodes[5]["item"].status = ProposalStatus.ACTIVE
コード例 #13
0
    def setUp(self):
        self.params = {
            "max_proposal_request": 0.2,
            "alpha_days_to_80p_of_max_voting_weight": 10,
            "probability_func": new_probability_func(seed=None),
            "exponential_func": new_exponential_func(seed=None),
            "gamma_func": new_gamma_func(seed=None),
            "random_number_func": new_random_number_func(seed=None)
        }
        self.commons = Commons(1000, 1000)
        self.network = bootstrap_network([
            TokenBatch(1000, 0, vesting_options=VestingOptions(10, 30))
            for _ in range(4)
        ], 1, 3000, 4e6, 0.2, self.params["probability_func"],
                                         self.params["random_number_func"],
                                         self.params["gamma_func"],
                                         self.params["exponential_func"])

        self.network, _ = add_proposal(self.network, Proposal(100, 1),
                                       self.params["random_number_func"])

        self.network.nodes[4]["item"].status = ProposalStatus.CANDIDATE
        self.network.nodes[5]["item"].status = ProposalStatus.CANDIDATE