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)
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'}
#!/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()}