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

d.newRole(RN['trust'], {'from': accounts[0]})

for i in range(1, nPartecipants):

    print('\nAdding a new partecipant (passive) to the web of trust... ',
          end='')

    d.newRole(RN['trust'], {'from': accounts[i]})
    d.addLinkedInclusion(RN['trust'],
                         LIExpression(accounts[i], RN['trust'], RN['trust']),
                         80, {'from': accounts[i]})
    d.addSimpleMember(RN['trust'], SMExpression(accounts[i - 1]), 100,
                      {'from': accounts[i]})

    print(f'Number of total partecipants: {i+1}')

    # Effettua una ricerca locale di tutti i membri a cui risulta assegnato il ruolo Principal[i].trust
    print(
        f'\nExecuting off-line credential chain discovery on {INV_PR[accounts[i]]}.trust ... ',
        end='')
    solutions = d.search(SIExpression(accounts[i], RN['trust']))
    print(f"Found solutions: {len(solutions)}")

    # Per ciascun membro trovato, costruiscine la dimostrazione per il metodo di verifica on-chain sulla base dei paths nelle soluzioni
    for idx, currSol in enumerate(solutions.values()):
        print(
            f'\nSolution #{idx+1}: member={INV_PR[currSol.member]}, weight={currSol.weight}'
        )