Condividi tramite


Guida introduttiva: Distribuire un'applicazione JavaScript in una risorsa CCF gestita di Azure

In questa esercitazione introduttiva si apprenderà come distribuire un'applicazione in una risorsa CCF (Managed CCF) gestita di Azure. Questa esercitazione si basa sulla risorsa CCF gestita creata nella guida introduttiva: Creare una risorsa CCF gestita di Azure usando l'esercitazione portale di Azure.

Prerequisiti

  • Python 3+.
  • Installare la versione più recente del pacchetto Python CCF.
  • OpenSSL in un computer che esegue Windows o Linux.

Scaricare l'identità del servizio

Una risorsa CCF gestita di Azure ha un'identità univoca denominata identità del servizio. È rappresentato da un certificato e viene creato durante la creazione della risorsa. Ogni singolo nodo che fa parte della risorsa CCF gestita di Azure ha il certificato autofirmato, approvato dall'identità del servizio, che stabilisce l'attendibilità su di esso.

I clienti sono consigliati per scaricare il certificato di identità del servizio e usarlo per stabilire una connessione TLS durante l'interazione con il servizio. Il comando seguente scarica il certificato e lo salva in service_cert.pem.

curl https://identity.confidential-ledger.core.azure.com/ledgerIdentity/confidentialbillingapp --silent | jq ' .ledgerTlsCertificate' | xargs echo -e > service_cert.pem

Distribuire l'applicazione

Nota

Quando si eseguono i comandi in un Mac, sostituire date -Is con date +%FT%T%z.

Nota

Questa esercitazione presuppone che il bundle dell'applicazione JavaScript venga creato usando le istruzioni disponibili qui.

  1. Inviare il bundle dell'applicazione presente in set_js_app.json creando una proposta.
$ proposalid=$( (ccf_cose_sign1 --content set_js_app.json --signing-cert member0_cert.pem --signing-key member0_privk.pem --ccf-gov-msg-type proposal --ccf-gov-msg-created_at `date -Is` | curl https://confidentialbillingapp.confidential-ledger.azure.com/gov/proposals -H 'Content-Type: application/cose' --data-binary @- --cacert service_cert.pem | jq -r '.proposal_id') )
  1. Il passaggio successivo consiste nell'accettare la proposta inviando un voto.
cat vote_accept.json
{
  "ballot": "export function vote (rawProposal, proposerId)\n
  {\n
    // Accepts any proposal\n
    return true;\n
  }"
}

ccf_cose_sign1 --content vote_accept.json --signing-cert member0_cert.pem --signing-key member0_privk.pem --ccf-gov-msg-type ballot --ccf-gov-msg-created_at `date -Is` --ccf-gov-msg-proposal_id $proposalid | curl https://confidentialbillingapp.confidential-ledger.azure.com/gov/proposals/$proposalid/ballots -H 'Content-Type: application/cose' --data-binary @- --cacert service_cert.pem
  1. Ripetere il passaggio precedente per ogni membro nella risorsa CCF gestita.

Al termine del comando, l'applicazione viene distribuita nella risorsa CCF gestita ed è pronta per accettare le transazioni.

Passaggi successivi