L'integrazione di Bitcoin in Internet Computer consente un'interazione diretta e senza bisogno di fiducia con la rete Bitcoin, permettendo ai contratti intelligenti di contenitore di creare indirizzi Bitcoin e inviare e ricevere bitcoin direttamente. Questo apre nuove possibilità per applicazioni e servizi decentralizzati, come DeFi, che possono sfruttare la liquidità e la sicurezza di Bitcoin senza dipendere da ponti centralizzati, migliorando così la sicurezza e l'efficienza.
Per abilitare i contratti intelligenti di Bitcoin in ICP è stato necessario risolvere due sfide di ingegneria avanzata:
Un'integrazione a livello di protocollo di ICP con la rete Bitcoin.
Firme di chiave di catena basate su nuovi protocolli di soglia ECDSA e Schnorr.
Integrazione a livello di protocollo di ICP con la
Il Protocollo di Internet Computer (IPC) è stato integrato con il protocollo Bitcoin per ottenere un'integrazione tecnica diretta tra entrambe le reti. Questa integrazione può essere attivata in qualsiasi numero di sottoreti di IPC. Attualmente, esiste solo una sottorete dedicata a Bitcoin, e le richieste all'API di Bitcoin da contenitori in qualsiasi sottorete vengono instradate a questa sottorete tramite le capacità di comunicazione XNet di ICP. L'integrazione soddisfa due obiettivi chiave:
Ottenere il set UTXO di Bitcoin e mantenerlo in catena nello stato replicato del computer di Internet per poter rispondere a richieste di set UTXO e saldi di conti Bitcoin emessi da contenitori.
Accettare transazioni di Bitcoin firmate da contenitori e inviarle alla rete di Bitcoin.
Integrazione di Bitcoin
di chiave di catena
I contenitori possono avere chiavi ECDSA e Schnorr tramite i nuovi protocolli di firma ECDSA e Schnorr di chiave di catena e, pertanto, possono ricevere e memorizzare bitcoin e altri asset. Possono anche creare transazioni di Bitcoin e inviarle tramite l'API di Bitcoin alla rete Bitcoin. Utilizzano la funzionalità ECDSA e Schnorr di chiave di catena per richiedere firme di soglia per spendere UTXO in una transazione che poi viene inviata alla rete Bitcoin. Le firme di chiave di catena sono molto più di una semplice implementazione di ECDSA e Schnorr di soglia, poiché, ad esempio, comprendono anche protocolli per la generazione e rotazione sicure di chiavi distribuite, che sono cruciali da una prospettiva di sistemi affinché la firma di soglia sia sicura e praticamente praticabile. Puoi trovare dettagli sul protocollo di firma di chiave di catena di ICP nella pagina di documentazione corrispondente.
I protocolli di firma di chiave di catena espongono un'API nel contenitore di gestione, mentre gli endpoint di integrazione di Bitcoin sono disponibili tramite il contenitore di Bitcoin. Le API di basso livello sono progettate attorno ai concetti di UTXO e transazioni di Bitcoin, sono di uso complesso e richiedono una conoscenza approfondita del funzionamento di Bitcoin. Le API di firma ECDSA e Schnorr di chiave di catena sono anche utili per qualsiasi caso d'uso, ad esempio, integrazioni con altre blockchain come Ethereum.
Questa pagina offre una panoramica della tecnologia menzionata in precedenza che sostiene l'integrazione diretta di Bitcoin. Per ulteriori dettagli, si consiglia al lettore di consultare la pagina di Bitcoin nel Internet Computer Learn Hub, così come la documentazione sulle firme di soglia.
In una sottorete attivata da Bitcoin, un contenitore di Bitcoin, implementato come un contenitore Wasm gestito da NNS, fornisce gli endpoint di integrazione di Bitcoin. Il contenitore di Bitcoin contiene lo stato di Bitcoin sulla catena: il set di UTXO, i blocchi di Bitcoin più recenti per consentire la risoluzione delle biforcazioni (blocchi instabili) e le transazioni in uscita.
Un processo adattatore di Bitcoin nella rete si collega ai nodi della rete di Bitcoin, in modo molto simile a un nodo di Bitcoin normale.
Mantenimento del
Il contenitore e l'adattatore di Bitcoin sono integrati e comunicano tra loro tramite lo stack di protocolli di ICP. Il contenitore di Bitcoin richiede blocchi successivi agli ultimi blocchi di Bitcoin ricevuti dall'adattatore. L'adattatore di ciascuna replica della sottorete ottiene i blocchi richiesti dalla rete Bitcoin, e l'adattatore di una replica generatrice di blocchi fornisce il blocco richiesto al contenitore di Bitcoin tramite consenso. Il contenitore di Bitcoin elabora i blocchi convalidando la prova di lavoro, estraendo le transazioni dal blocco, estraendo gli UTXO dalle transazioni e aggiornando il set di UTXO mantenuto in stato replicato per riflettere gli UTXO consumati e gli UTXO creati dalle transazioni. Sia il set di UTXO che un insieme di blocchi recenti non ancora assorbiti (blocchi instabili) vengono utilizzati per rispondere alle richieste di UTXO e di saldo.
La complessità significativa dell'implementazione risiede nella risoluzione sicura delle biforcazioni e nella protezione contro vari tipi di attacchi. Ad esempio, per poter risolvere biforcazioni, il contenitore di Bitcoin deve mantenere una certa quantità di blocchi di Bitcoin che non sono ancora stati aggiunti al set di UTXO mantenuto, ma le UTXO che contiene devono essere considerate in modo efficiente per calcolare le UTXO di un dato indirizzo, oltre a quelle del set di UTXO.
Invio di
I contenitori possono inviare transazioni di Bitcoin al contenitore di Bitcoin tramite un endpoint dedicato. Questo mette in coda le transazioni per la loro invio alla rete Bitcoin. In ogni turno di sottorete, gli adattatori ottengono le transazioni pendenti dal contenitore di Bitcoin e le mettono in coda per il loro invio asincrono alla rete Bitcoin. Questo consente una distribuzione efficiente e rapida delle transazioni nella rete Bitcoin, poiché ogni replica della sottorete invia transazioni attraverso più nodi connessi alla rete Bitcoin.
di implementazione
La funzionalità di Bitcoin è attivata in una sola sottorete di ICP, e le chiamate API dai contenitori all'API di Bitcoin vengono instradate tramite la comunicazione XNet; pertanto, si genera una latenza aggiuntiva. Se necessario, il contenitore di Bitcoin potrebbe essere attivato ulteriormente in futuro in alcune sottoreti (di applicazione) per evitare la latenza aggiuntiva di XNet e poter rispondere a un numero maggiore di richieste per unità di tempo.
Le richieste di ECDSA di soglia vengono risposte allo stesso modo da una sola sottorete di firma attiva; un'altra sottorete esegue un backup della chiave privata in formato segreto condiviso per il recupero in caso di disastro.
di sviluppo, preproduzione e produzione
La funzionalità di Bitcoin, incluse le firme di soglia, è disponibile in tutte le fasi necessarie per il ciclo di vita dello sviluppo in ICP:
L'SDK di IC per lo sviluppo locale di contenitori.
Supporto di ICP come ambiente di preproduzione per test finali nella rete di test di Bitcoin (v4).
Supporto di ICP come ambiente di produzione per il lancio utilizzando la rete principale di Bitcoin.
locale
Nel flusso di lavoro tipico dello sviluppo di contenitori, questi vengono compilati ed eseguiti nell'ambiente locale utilizzando l'SDK di IC durante il loro sviluppo. Pertanto, l'SDK di IC costituisce la prima fase o ambiente del flusso di lavoro di sviluppo. L'SDK di IC è abilitato a supportare l'integrazione di Bitcoin e le API di ECDSA di soglia.
A differenza delle implementazioni ICP di questa funzione, che si integrano con la rete di test di Bitcoin e la rete principale di Bitcoin, rispettivamente, l'SDK si integra con un nodo bitcoind locale in modalità di test di regressione (regtest). L'uso di bitcoind in modalità regtest è la forma preferita per lo sviluppo di Bitcoin. Con questa configurazione, sia lo sviluppo che i test automatizzati dei contratti intelligenti vengono eseguiti prima nell'ambiente locale.
L'adattatore di Bitcoin che si esegue nell'ambiente locale dell'SDK si connette al nodo bitcoind locale invece di a diversi nodi nella rete di test o nella rete principale di Bitcoin. Consulta l'output di dfx start --helppara vedere gli indicatori rilevanti dfx.
L'integrazione di Bitcoin in Internet Computer consente un'interazione diretta e senza fiducia con la rete Bitcoin, consentendo ai contratti intelligenti di contenitore di creare indirizzi Bitcoin e inviare e ricevere bitcoin direttamente. Questo apre nuove possibilità per applicazioni e servizi decentralizzati, come DeFi, che possono sfruttare la liquidità e la sicurezza di Bitcoin senza dipendere da ponti centralizzati, migliorando così la sicurezza e l'efficienza.
Per abilitare i contratti intelligenti di Bitcoin in ICP è stato necessario risolvere due sfide di ingegneria avanzate:
Un'integrazione a livello di protocollo di ICP con la rete Bitcoin.
Firme di chiave di catena basate su nuovi protocolli di soglia ECDSA e Schnorr.
Integrazione a livello di protocollo di ICP con la
Il Protocollo di Internet Computer (IPC) è stato integrato con il protocollo Bitcoin per ottenere un'integrazione tecnica diretta tra entrambe le reti. Questa integrazione può essere attivata in qualsiasi numero di sottoreti di IPC. Attualmente, esiste solo una sottorete dedicata a Bitcoin, e le richieste all'API di Bitcoin da contenitori in qualsiasi sottorete vengono instradate a questa sottorete tramite le capacità di comunicazione XNet di ICP. L'integrazione soddisfa due obiettivi chiave:
Ottenere il set UTXO di Bitcoin e mantenerlo in catena nello stato replicato del computer di Internet per poter rispondere a richieste di set UTXO e saldi di conti Bitcoin emessi da contenitori.
Accettare transazioni di Bitcoin firmate da contenitori e inviarle alla rete di Bitcoin.
Integrazione di Bitcoin
di chiave di catena
I contenitori possono avere chiavi ECDSA e Schnorr tramite i nuovi protocolli di firma ECDSA e Schnorr di chiave di catena e, pertanto, possono ricevere e memorizzare bitcoin e altri asset. Possono anche creare transazioni di Bitcoin e inviarle tramite l'API di Bitcoin alla rete Bitcoin. Utilizzano la funzionalità ECDSA e Schnorr di chiave di catena per richiedere firme di soglia per spendere UTXO in una transazione che poi viene inviata alla rete Bitcoin. Le firme di chiave di catena sono molto più di una semplice implementazione di ECDSA e Schnorr di soglia, poiché, ad esempio, comprendono anche protocolli per la generazione e rotazione sicure di chiavi distribuite, che sono cruciali da una prospettiva di sistemi affinché la firma di soglia sia sicura e praticamente praticabile. Puoi trovare dettagli sul protocollo di firma di chiave di catena di ICP nella pagina di documentazione corrispondente.
I protocolli di firma di chiave di catena espongono un'API nel contenitore di gestione, mentre gli endpoint di integrazione di Bitcoin sono disponibili tramite il contenitore di Bitcoin. Le API di basso livello sono progettate attorno ai concetti di UTXO e transazioni di Bitcoin, sono di uso complesso e richiedono una conoscenza approfondita del funzionamento di Bitcoin. Le API di firma ECDSA e Schnorr di chiave di catena sono anche utili per qualsiasi caso d'uso, ad esempio, integrazioni con altre blockchain come Ethereum.
Questa pagina offre una panoramica della tecnologia menzionata in precedenza che sostiene l'integrazione diretta di Bitcoin. Per ulteriori dettagli, si consiglia al lettore di consultare la pagina di Bitcoin nel Internet Computer Learn Hub, così come la documentazione sulle firme di soglia.
In una sottorete attivata da Bitcoin, un contenitore di Bitcoin, implementato come un contenitore Wasm gestito da NNS, fornisce gli endpoint di integrazione di Bitcoin. Il contenitore di Bitcoin contiene lo stato di Bitcoin sulla catena: il set di UTXO, i blocchi di Bitcoin più recenti per consentire la risoluzione delle biforcazioni (blocchi instabili) e le transazioni in uscita.
Un processo adattatore di Bitcoin nella rete si collega ai nodi della rete di Bitcoin, in modo molto simile a un nodo di Bitcoin normale.
Mantenimento del
Il contenitore e l'adattatore di Bitcoin sono integrati e comunicano tra loro tramite lo stack di protocolli di ICP. Il contenitore di Bitcoin richiede blocchi successivi agli ultimi blocchi di Bitcoin ricevuti dall'adattatore. L'adattatore di ciascuna replica della sottorete ottiene i blocchi richiesti dalla rete Bitcoin, e l'adattatore di una replica generatrice di blocchi fornisce il blocco richiesto al contenitore di Bitcoin tramite consenso. Il contenitore di Bitcoin elabora i blocchi convalidando la prova di lavoro, estraendo le transazioni dal blocco, estraendo gli UTXO dalle transazioni e aggiornando il set di UTXO mantenuto in stato replicato per riflettere gli UTXO consumati e gli UTXO creati dalle transazioni. Sia il set di UTXO che un insieme di blocchi recenti non ancora assorbiti (blocchi instabili) vengono utilizzati per rispondere alle richieste di UTXO e di saldo.
La complessità significativa dell'implementazione risiede nella risoluzione sicura delle biforcazioni e nella protezione contro vari tipi di attacchi. Ad esempio, per poter risolvere biforcazioni, il contenitore di Bitcoin deve mantenere una certa quantità di blocchi di Bitcoin che non sono ancora stati aggiunti al set di UTXO mantenuto, ma le UTXO che contiene devono essere considerate in modo efficiente per calcolare le UTXO di un dato indirizzo, oltre a quelle del set di UTXO.
Invio di
I contenitori possono inviare transazioni di Bitcoin al contenitore di Bitcoin tramite un endpoint dedicato. Questo mette in coda le transazioni per la loro invio alla rete Bitcoin. In ogni turno di sottorete, gli adattatori ottengono le transazioni pendenti dal contenitore di Bitcoin e le mettono in coda per il loro invio asincrono alla rete Bitcoin. Questo consente una distribuzione efficiente e rapida delle transazioni nella rete Bitcoin, poiché ogni replica della sottorete invia transazioni attraverso più nodi connessi alla rete Bitcoin.
di implementazione
La funzionalità di Bitcoin è attivata in una sola sottorete di ICP, e le chiamate API dai contenitori all'API di Bitcoin vengono instradate tramite la comunicazione XNet; pertanto, si genera una latenza aggiuntiva. Se necessario, il contenitore di Bitcoin potrebbe essere attivato ulteriormente in futuro in alcune sottoreti (di applicazione) per evitare la latenza aggiuntiva di XNet e poter rispondere a un numero maggiore di richieste per unità di tempo.
Le richieste di ECDSA di soglia vengono risposte allo stesso modo da una sola sottorete di firma attiva; un'altra sottorete esegue un backup della chiave privata in formato segreto condiviso per il recupero in caso di disastro.
di sviluppo, preproduzione e produzione
La funzionalità di Bitcoin, incluse le firme di soglia, è disponibile in tutte le fasi necessarie per il ciclo di vita dello sviluppo in ICP:
L'SDK di IC per lo sviluppo locale di contenitori.
Supporto di ICP come ambiente di preproduzione per test finali nella rete di test di Bitcoin (v4).
Supporto di ICP come ambiente di produzione per il lancio utilizzando la rete principale di Bitcoin.
locale
Nel flusso di lavoro tipico dello sviluppo di contenitori, questi vengono compilati ed eseguiti nell'ambiente locale utilizzando l'SDK di IC durante il loro sviluppo. Pertanto, l'SDK di IC costituisce la prima fase o ambiente del flusso di lavoro di sviluppo. L'SDK di IC è abilitato a supportare l'integrazione di Bitcoin e le API di ECDSA di soglia.
A differenza delle implementazioni ICP di questa funzione, che si integrano con la rete di test di Bitcoin e la rete principale di Bitcoin, rispettivamente, l'SDK si integra con un nodo bitcoind locale in modalità di test di regressione (regtest). L'uso di bitcoind in modalità regtest è la forma preferita per lo sviluppo di Bitcoin. Con questa configurazione, sia lo sviluppo che i test automatizzati dei contratti intelligenti vengono eseguiti prima nell'ambiente locale.
L'adattatore di Bitcoin che si esegue nell'ambiente locale dell'SDK si connette al nodo bitcoind locale invece di a diversi nodi nella rete di test o nella rete principale di Bitcoin. Consulta l'output di dfx start --helppara vedere gli indicatori rilevanti dfx.
Si prega di notare che le tariffe per chiamare gli endpoint bitcoin_get_utxosy bitcoin_get_block_headersdipendono dalla quantità di istruzioni Wasm che consuma il contenitore di Bitcoin durante l'elaborazione delle richieste per garantire una fatturazione equa.
Per iniziare a creare le tue applicazioni con Bitcoin, consulta i seguenti tutorial:
Implementando la sua prima dapp di Bitcoin.
Sviluppo locale
Si prega di notare che le tariffe per chiamare gli endpoint bitcoin_get_utxosy bitcoin_get_block_headersdipendono dalla quantità di istruzioni Wasm che consuma il contenitore di Bitcoin durante l'elaborazione delle richieste per garantire una fatturazione equa.
Per iniziare a creare le tue applicazioni con Bitcoin, consulta i tutorial:
Implementando la sua prima dapp di Bitcoin.
Sviluppo locale


