# Inizializza web3 connettendolo al provider locale ganache
w3 = Web3(Web3.HTTPProvider(args.host))
accounts = w3.eth.accounts
w3.eth.defaultAccount = accounts[0]

if len(accounts) < nPartecipants:
    print(
        "Not enough available Ethereum accounts! At least N_partecipants accounts are needed in order to run this test"
    )
    sys.exit(-1)

accounts = accounts[:nPartecipants]

# Inizializza l'interfaccia per interagire con lo smart contract DART
DARTArtifact = json.load(open(args.build))
d = DART(DARTArtifact['abi'],
         DARTArtifact['networks'][str(args.netid)]['address'], w3)

# -----------------------------------------------------

# Per facilitare la stesura dei test e la lettura dei risultati
# realizza due coppie di dizionari per legare:

# ... principals ad address e viceversa
PR = {}
for idx, addr in enumerate(accounts):
    PR['Principal[' + str(idx + 1) + ']'] = addr
INV_PR = {v: k for k, v in PR.items()}
print("\nPRINCIPALS:")
pprint(PR)

# ... rolenames esadecimali a rolenames stringhe e viceversa