Exemple #1
0
def dispute(dispute_id):

    node = 'https://mainnet.infura.io/v3/31c378f901bf46c08674e655e6640287'

    # Call kleros Smart-contract to get the total number of Jurors on current round
    dispute = KlerosDispute(node, int(dispute_id))
    j = dispute.data['draws_in_round']

    ###main function call
    output = get_juror_votes(j, dispute, int(dispute_id))
    return render_template('monitor/dispute.html', output=output)
Exemple #2
0
class TestKleros(object):
    kleros = Kleros(os.environ["ETH_NODE_URL"])
    disputes = {}
    for i in (16, 17, 42, 45, 52, 60):
        disputes[i] = KlerosDispute(i, kleros=kleros)

    def test_connection(self):
        assert type(self.kleros) is Kleros
        assert type(self.kleros.connection).__name__ == 'Contract'

    def test_dispute_rounds(self):
        assert type(self.disputes[16]) is KlerosDispute

    def test_ruling(self):
        assert self.disputes[16].current_ruling() == 2
        assert self.disputes[45].current_ruling() == 1

    def test_closed_dispute(self):
        assert self.disputes[16].dispute_status() == 2
        assert self.disputes[17].dispute_status() == 1

    def test_pending_votes(self):
        assert self.disputes[42].pending_vote() == 0
        assert self.disputes[17].pending_vote() == 3

    def test_define_losers(self):
        assert self.disputes[17].define_losers() == 4
        assert self.disputes[52].define_losers() == 0

    def test_define_win(self):
        assert self.disputes[17].winning_choice() == 2
        assert self.disputes[45].winning_choice() == 1
        assert self.disputes[60].winning_choice() == 0

    def test_ETH_per_juror(self):
        assert self.disputes[17].get_ETH_per_juror() == 550000000000000000

    def test_PNK_per_juror(self):
        assert self.disputes[17].get_PNK_per_juror() == 40000000000000000000000
import os
from kleros import Kleros, KlerosDispute, KlerosVote
from collections import Counter, defaultdict
import pprint
import requests

case_Number = 0
node_url = os.environ["ETH_NODE_URL"]
kleros = Kleros(node_url)
pp = pprint.PrettyPrinter(indent=2)
juror_accounts = []
total_dispute = kleros.last_dispute_id()
print("\n Total number of Disputes on Kleros : %s \n " % (total_dispute))

while case_Number <= total_dispute:
    dispute = KlerosDispute(case_Number, kleros=kleros)
    appeal = len(dispute.rounds) - 1
    jurors = dispute.rounds[-1]

    for i in range(jurors):
        Votingdata = KlerosVote(case_Number,
                                kleros=kleros,
                                appeal=appeal,
                                vote_id=i)
        juror_accounts.append(Votingdata.account)
    case_Number = case_Number + 1

unique_jurors = dict(Counter(juror_accounts))
new_unique_jurors = defaultdict(list)
{new_unique_jurors[v].append(k) for k, v in unique_jurors.items()}
vote_counter = sum(unique_jurors.values())
#!/usr/bin/python3

import sys
import os
from kleros import Kleros, KlerosDispute, KlerosVote
from collections import Counter

node_url = os.environ["ETH_NODE_URL"]

# 'https://mainnet.infura.io/v3/31c378f901bf46c08674e655e6640287'

case_Number = int(sys.argv[1])
dispute = KlerosDispute(case_Number, node_url=node_url)
appeal = len(dispute.rounds) - 1
jurors = dispute.rounds[-1]
votes = dispute.get_vote_counter()
votesYes = votes[1]
votesYes_ratio = (votesYes / jurors) * 100
votesNo = votes[2]
votesNo_ratio = (votesNo / jurors) * 100
votesRefuse = votes[0]
votesRefuse_ratio = (votesRefuse / jurors) * 100
pending_votes = dispute.pending_vote()
case_closed_bool = dispute.ruled
subcourt_id = dispute.sub_court_id
PNK_at_stake = dispute.get_PNK_at_stake() / 10**18
ETH_at_Stake = dispute.get_ETH_at_stake() / 10**18
PNK_per_juror = dispute.get_PNK_per_juror() / 10**18
ETH_per_juror = dispute.get_ETH_per_juror() / 10**18
losers = dispute.define_losers()
vote_choices = {0: 'Undecided', 1: 'Yes', 2: 'No'}
Exemple #5
0
#!/usr/bin/python3

import os
from kleros_db_schema import db, Dispute
from kleros import Kleros, KlerosDispute, KlerosVote

kleros = Kleros(os.environ["ETH_NODE_URL"])
dispute_id = 0

db.drop_all()
db.create_all()

while (True):
    try:
        kleros_dispute = KlerosDispute(dispute_id, kleros=kleros)
    except ValueError:
        break
    print("Creating %s" % dispute_id)
    d = Dispute(
        id=dispute_id
        #        subcourt_id = kleros_dispute.sub_court_id,
        #        tokens_at_stake_per_juror = kleros_dispute.get_PNK_at_stake() / 10 ** 18
    )
    db.session.add(d)

    appeal_id = 0

    dispute_id += 1

db.session.commit()
    "module=logs&action=getLogs" \
    "&fromBlock=379224&toBlock=latest" \
    "&address=0x988b3A538b618C7A603e1c11Ab82Cd16dbE28069" \
    "&topic0=0x141dfc18aa6a56fc816f44f0e9e2f1ebc92b15ab167770e17db5b084c10ed995" \
    "&apikey=YourApiKeyToken"
    response = requests.get(url=url)
    dict_json_response = response.json()
    dispute_num_hex = dict_json_response["result"][-1]['topics'][1]
    dispute_num_decimal = int(dispute_num_hex, 16)
    return dispute_num_decimal


total_dispute = get_dispute_max()

while case_Number < total_dispute:
    dispute = KlerosDispute(case_Number, node_url=node_url)
    appeal = len(dispute.rounds) - 1
    jurors = dispute.rounds[-1]

    for i in range(jurors):
        Votingdata = KlerosVote(case_Number,
                                node_url=node_url,
                                appeal=appeal,
                                vote_id=i)
        dude_to_add = Votingdata.account
        juror_accounts.append(dude_to_add)
    case_Number = case_Number + 1

unique_jurors = dict(Counter(juror_accounts))
new_unique_jurors = defaultdict(list)
{new_unique_jurors[v].append(k) for k, v in unique_jurors.items()}