Autori: Ash Li, Noah Ho
Con la creazione del protocollo Ordinal, che fornisce la possibilità di numerare e inscrivere bitcoin, ha ampliato la gamma di prodotti disponibili per l’ecosistema bitcoin e ha portato una nuova dinamica nell’ecosistema bitcoin. In questo articolo approfondiremo i dettagli del protocollo Ordinale, compreso il modo in cui ogni bitcoin viene numerato e tracciato e il modo in cui le iscrizioni si riferiscono alla numerazione. Ma prima di immergerci in questo argomento, dobbiamo prima comprendere alcune nozioni di base su Bitcoin per aiutarci a capire meglio ciò che segue.
Dopo aver completato questo articolo, avrai padroneggiato il meccanismo di transazione e il modello di pagamento di Bitcoin, capirai come Ordinals implementa la numerazione e il tracciamento per ogni satoshi e come vengono create e scambiate le iscrizioni. Inoltre, capirai le differenze tra i diversi tipi di wallet.
I. Informazioni generali su Bitcoin
Bitcoin utilizza un modello di transazione simile al contante e i suoi pagamenti si basano su un modello chiamato UTXO, che è diverso dal tradizionale modello basato sul saldo del conto. Ad esempio, in un processo di contabilità del conto bancario, quando A trasferisce $ 100 a B, la banca registra tre passaggi che costituiscono un processo di transazione. Il primo passaggio è addebitare $ 100 dal conto di A e l'ID record per questo passaggio è tid1. Il secondo passaggio è depositare $ 100 sul conto di B e l'ID record per questo passaggio è tid2. Il terzo passaggio è registrare un record di trasferimento che associa tid1 a tid2, indicando che il conto di A è ridotto di $ 100 e il conto di B è aumentato di $ 100. In questo modo, la relazione di trasferimento tra A e B viene registrata e può essere interrogata e tracciata in futuro. Ora, spiegheremo come vengono effettuati i pagamenti Bitcoin introducendo UTXO e il modello di pagamento.
UTXO
Nella blockchain di Bitcoin, tutti i saldi sono archiviati in un elenco chiamato Unspent Transaction Output (UTXO). Ogni UTXO contiene un certo numero di bitcoin, insieme a informazioni sul proprietario di quei bitcoin, e indica se sono disponibili. Pensalo come un assegno in contanti firmato con il nome del possessore, che può essere trasferito a un'altra persona per l'uso finché il possessore lo firma. Per un dato indirizzo, tutti i suoi importi UTXO si sommano al saldo del portafoglio a quell'indirizzo. Attraversando tutti gli UTXO, possiamo ottenere il saldo corrente per ogni indirizzo. Sommando tutti gli importi UTXO si ottiene l'importo totale di bitcoin attualmente in circolazione.
Nella struttura delle transazioni di Bitcoin, ogni transazione è composta da diversi input e output, dove ogni input è un riferimento a un UTXO esistente e ogni output specifica il nuovo indirizzo in cui verranno ricevuti i fondi e l'importo corrispondente. Una volta avviata una transazione, l'UTXO a cui si fa riferimento nella sua sezione di input viene temporaneamente bloccato per impedirne il riutilizzo fino al completamento della transazione. Solo quando questa transazione viene correttamente inserita in un blocco dal miner e confermata dalla rete, lo stato dell'UTXO associato cambia. Nello specifico, gli UTXO utilizzati come input per la transazione vengono rimossi dall'elenco UTXO, indicando che sono stati consumati, mentre l'output della transazione genera nuovi UTXO che vengono aggiunti all'elenco UTXO. Si può comprendere che i vecchi assegni in contanti vengono utilizzati e poi scadono, generando nuovi assegni in contanti la cui proprietà appartiene al nuovo detentore.
Vale la pena sottolineare che ogni UTXO può essere utilizzato solo una volta in una singola transazione. Una volta consumato come input, viene rimosso in modo permanente dall'elenco UTXO. Allo stesso tempo, l'output appena generato viene aggiunto all'elenco come un nuovo UTXO. L'elenco UTXO cambia costantemente e, man mano che viene creato un nuovo blocco, viene aggiornato di conseguenza. E, analizzando la cronologia delle transazioni nella blockchain, siamo in grado di ricostruire lo stato dell'elenco UTXO in qualsiasi momento.
Inoltre, l'importo totale di input di una transazione solitamente supererà leggermente l'importo totale di output. Questa differenza, chiamata commissione di transazione o commissione di rete, viene data come incentivo ai miner responsabili dell'impacchettamento delle transazioni in blocchi. La dimensione della commissione di rete è proporzionale alla complessità della transazione, quindi una transazione che contiene più input e output solitamente richiederà una commissione di rete più elevata.
Ora, per comprendere la struttura delle transazioni Bitcoin in modo più visivo, esamineremo un esempio concreto. La struttura di una transazione Bitcoin è la seguente, dove le variabili vin e vout rappresentano rispettivamente "input" e "output" di una transazione Bitcoin. Le transazioni Bitcoin non sono rappresentate da input e output, a differenza dei tradizionali modelli di saldo dei conti che registrano le modifiche dei dati a forma di conto.

Possiamo scegliere un record di transazione casuale su blockchain.com da analizzare. La figura seguente mostra una transazione con ID hash 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Contiene un input e due output.

Utilizzando i comandi bitcoin-cli getrawtransaction e decoderawtransaction, possiamo vedere la struttura sottostante delle transazioni di cui sopra:

Nella rete Bitcoin, l'output della transazione contiene due importanti informazioni: l'indirizzo (hash della chiave pubblica) e l'importo (in bitcoin). Se l'output di una transazione non viene utilizzato nell'input di altre transazioni, allora questo output della transazione è chiamato output della transazione non spesa (UTXO). Chiunque abbia la chiave privata corrispondente alla chiave pubblica nell'UTXO ha il diritto di utilizzare o spendere questo UTXO.
Diamo un'occhiata alle informazioni nel "vin" nel codice sopra, che indica che l'UTXO speso per questa transazione proviene da un'altra transazione (con l'ID 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18) dell'output 0 (può esserci più di un output di una transazione, l'indice è numerato da 0), possiamo trovare l'importo di questo UTXO dalla cronologia delle transazioni (ad esempio, 0,1), quindi questo Il valore 0,1 non deve essere scritto esplicitamente nella transazione, ma si ottiene cercando le informazioni UTXO. Il "vout" di questa transazione ha due output, che sono due nuovi UTXO, corrispondenti al nuovo saldo e al detentore, finché un'altra transazione non li consuma come input.
Modello di pagamento
Per comprendere meglio il modello di pagamento della rete Bitcoin, presentiamo un esempio del processo di pagamento per un pagamento da A a B nell'importo di n bitcoin. Il diagramma seguente mostra il processo di invio di 3 bitcoin dall'utente A all'utente B.

Per l'utente A, è innanzitutto necessario determinare l'insieme di tutti gli UTXO di cui è proprietario, ovvero tutti i bitcoin a disposizione dell'utente A;
A seleziona uno o più UTXO da questo set come input per la transazione e la somma di questi input è m(2+0,8+0,5=3,3 BTC) maggiore dell'importo da pagare, n(3 BTC);
L'utente A imposta due output per la transazione, un output per pagare all'indirizzo di B l'importo di n(3 BTC) e l'altro output per pagare a uno degli indirizzi di resto di A l'importo di m-n-commissione(3,3-3-0,001=0,299 BTC). (b) Il portafoglio dell'utente è solitamente costituito da più indirizzi, ognuno dei quali viene normalmente utilizzato una sola volta, e il resto viene restituito a un nuovo indirizzo per impostazione predefinita;
In attesa che il miner pacchetti questa transazione sulla catena per la conferma, B può ricevere queste informazioni sulla transazione. Poiché la dimensione del blocco ha un limite massimo (circa 1 MB), i miner daranno priorità alla conferma delle transazioni con un tasso di transazione elevato (fee_rate=fee/size) per ottenere il ritorno di commissione più elevato. Possiamo vedere la commissione di transazione di mining in tempo reale su mempool. Se vogliamo la conferma più rapida durante il processo di trasferimento, possiamo scegliere High Priority o personalizzare una tariffa di commissione di transazione adatta.

II. Numerazione e tracciamento di Satoshi
Il numero totale di bitcoin è 21 milioni e ogni bitcoin contiene 10^8 Satoshi (Sat). Quindi, ci sono 21 milioni * 10^8 satoshi sulla rete Bitcoin. Il protocollo Ordinals distingue questi satoshi numerandoli in modo univoco. Questa sezione descrive come il protocollo lo fa e come tiene traccia degli account in cui si trova ogni satoshi. Inoltre, verrà descritta la classificazione della rarità del satoshi.
La numerazione di Satoshi
Secondo il protocollo Ordinals, i satoshi sono numerati in base all'ordine in cui vengono estratti. La figura seguente mostra la rappresentazione del 0° satoshi estratto dal 0° blocco.

Esistono diverse rappresentazioni per i numeri ordinali: (https://docs.ordinals.com/overview.html)
Notazione intera: [2099994106992659]() Il numero ordinale, assegnato in base all'ordine in cui è stato estratto il satoshi.
Notazione decimale: [3891094.16797]() Il primo numero è l'altezza del blocco in cui è stato estratto il satoshi, il secondo l'offset del satoshi all'interno del blocco.
Notazione del grado: [3°111094′214″16797‴](). Il primo numero è il ciclo, numerato a partire da 0, il secondo è l'indice del blocco nell'epoca di dimezzamento, il terzo numero è l'indice del blocco nel periodo di aggiustamento della difficoltà e l'ultimo numero è l'indice di sat nel blocco.
Notazione percentile: [99,99971949060254%](). La posizione del satoshi nell'offerta di Bitcoin, espressa in percentuale.
Nome: [satoshi](). Una codifica del numero ordinale utilizzando i caratteri da a a z.
Passeremo in rassegna un esempio di come numerare i bitcoin appena estratti. Osservando il blocco 795952 della blockchain bitcoin, possiamo vedere che la prima di queste transazioni, Tx 3a1f...b177, registra la ricompensa del minatore (la transazione coinbase). Questa transazione contiene bitcoin appena estratti, che vengono utilizzati come ricompensa confezionata per il minatore, nonché una commissione pagata al minatore dall'iniziatore della transazione. Osservando l'input del diagramma sottostante, possiamo vedere che il suo ID UTXO è costituito da una stringa di zeri e dall'altezza del blocco. L'indirizzo di output è quindi l'indirizzo del portafoglio del minatore e l'importo è la somma delle ricompense e delle commissioni menzionate sopra.

Se osserviamo ulteriormente la sezione dell'output per i minatori, possiamo vedere la distribuzione di indirizzi, importi e satoshi contenuti. Come accennato in precedenza, questi contengono le ricompense e le commissioni di mining. Di queste, le informazioni sui numeri di sats verdi 1941220000000000–1941220625000000 sono i nuovi satoshi generati dalla ricompensa di mining, mentre i restanti 712 record di satoshi corrispondono a tutte le commissioni nel blocco.

Possiamo verificare il numero Sat 1941220000000000. Il suo numero di blocco è 795952 e il decimale è 795952.0, il che significa che l'altezza del blocco per l'estrazione di questo Satoshi è 795952 e il numero di Satoshi in questo blocco è 0, seguito dal segno di rarità per non comune, che descriveremo in dettaglio nella parte successiva.

Il flusso di Satoshi
Poiché ogni BTC viene generato tramite ricompense di mining, sono tutti tracciabili. Gli account Bitcoin utilizzano il modello UTXO. Supponiamo che l'utente A abbia ottenuto il 100°-110° satoshi tramite mining (i 10 satoshi sono archiviati per intero nello stesso UTXO con id adc123). Quando l'utente A desidera pagare all'utente B 5 satoshi, sceglie di utilizzare l'id abc123 come input della transazione, dove 5 satoshi vengono dati all'utente B e 5 satoshi vengono restituiti all'utente A come resto. Entrambe le copie di 5 satoshi vengono archiviate per intero in due UTXO con id abc456 e abc789 rispettivamente. Gli id UTXO sopra indicati e il numero di satoshi sono mostrati solo come esempi, in pratica il numero minimo è 546 satoshi e gli id UTXO non sono espressi in questa forma.

Nella transazione di cui sopra, il percorso del flusso di 10 satoshi dell'utente A è
il mining genera 10 satoshi con il numero [100, 110). Ciò significa che i satoshi numerati dal 100° al 109° sono memorizzati nell'UTXO con id abc123 e il suo proprietario è l'utente A.
Quando A effettua il trasferimento, i 10 satoshi vengono divisi in due parti, ciascuna con 5 satoshi. Qui viene utilizzato il principio "first-in-first-out", ovvero la numerazione dei satoshi è determinata dal loro indice nell'output della transazione. Supponendo che l'ordine dell'output sia Utente A e poi Utente B, i restanti 5 satoshi dell'Utente A vengono numerati [100, 105) e memorizzati nell'UTXO con id abc456, mentre i 5 satoshi dell'Utente B vengono numerati [105, 110) e memorizzati nell'UTXO con id abc789.
Satoshi raro
Come gioco derivato del protocollo Ordinals, la rarità dei Satoshi può essere definita in base all'ordine in cui vengono estratti. Ciò comporterà che alcuni Satoshi speciali abbiano rarità diverse. Di seguito sono riportati i livelli di rarità dei diversi Satoshi:
comune: qualsiasi sat che non sia il primo sat del suo blocco (Offerta totale: 2,1 quadrilioni)
non comune: il primo sat di ogni blocco (fornitura totale: 6.929.999)
raro: il primo sat di ogni periodo di aggiustamento della difficoltà (fornitura totale: 3437)
epico: il primo sat di ogni epoca di dimezzamento (fornitura totale: 32)
leggendario: Il primo sat di ogni ciclo (fornitura totale: 5)
mitico: Il primo sat del blocco genesi (fornitura totale: 1)
Questo concetto di satoshi rari può aggiungere più interesse e valore all'ecosistema bitcoin. Satoshi di diversa rarità possono avere valori diversi sul mercato, attraendo collezionisti e investitori.
III. Metodo di iscrizione
Ordinals è significativamente diverso dagli altri NFT su catene non bitcoin. Una delle principali differenze è che i metadati di Ordinals non sono archiviati in una posizione specifica. Invece, i metadati sono incorporati nei dati witness della transazione, motivo per cui lo chiamiamo "iscrizione", perché è "inciso" come un'iscrizione su una parte specifica della transazione bitcoin. I dati sono allegati a un satoshi specifico. Questo processo di iscrizione è implementato tramite Segregated Witness (SegWitness) e Pay-to-Taproot (P2TR), che consiste in due fasi: commit e reveal. È possibile iscrivere qualsiasi tipo di contenuto (ad esempio testo, immagine o video) su un satoshi specificato. Introdurremo un altro metodo di archiviazione più diretto, OP_RETURN, di seguito e spiegheremo perché non viene utilizzato come mezzo di iscrizione. Inoltre, descriveremo cosa sono il witness isolato e il Pay-to-Taproot e quale ruolo svolgono nell'iscrizione. Infine, introdurremo il modo delle iscrizioni.
OP_RETURA
Nella versione 0.9 del client Bitcoin Core, il compromesso è stato finalmente raggiunto adottando l'operatore RETURN. RETURN consente agli sviluppatori di aggiungere 80 byte di dati non di pagamento all'output della transazione. A differenza dei pseudo-pagamenti, RETURN crea un output non consumabile verificabile in modo esplicito; tali dati non devono essere archiviati nel set UTXO. Gli output RETURN vengono registrati sulla blockchain, consumano spazio su disco e causano un aumento delle dimensioni della blockchain, ma non vengono archiviati nel set UTXO e pertanto non gonfiano il pool di memoria UTXO, né aumentano il costoso costo di memoria del nodo completo.
Sebbene OP_RETURN sia un mezzo molto semplice per archiviare informazioni sulla blockchain di Bitcoin, è anche un potenziale mezzo di iscrizione. Tuttavia, le limitazioni di OP_RETURN lo pongono di fronte ad alcune sfide quando si tratta di archiviazione di metadati. Innanzitutto, OP_RETURN può archiviare solo 80 byte di dati, una limitazione che chiaramente non è rispettata nei casi in cui è necessario archiviare quantità maggiori di dati. In secondo luogo, i dati OP_RETURN vengono archiviati nella sezione di output della transazione e, sebbene tali dati non vengano archiviati nel set UTXO, occupano spazio di archiviazione nella blockchain, portando a un aumento delle dimensioni della blockchain. Infine, l'uso di OP_RETURN porta a un aumento delle commissioni di transazione, poiché richiede il pagamento di più commissioni per pubblicare queste transazioni.
Testimone segregato
Al contrario, SegWit offre un nuovo approccio che supera questi problemi. SegWit è un importante aggiornamento del protocollo per Bitcoin, proposto da Pieter Wuille, uno sviluppatore Bitcoin principale, nel 2015 e infine formalmente adottato nella versione 0.16.0 nel 2017. Segregato in Segregated Witness significa separato, isolato e Witness è una cosa firmata associata a una transazione. Quindi, SegWit è la separazione di determinati dati di firma della transazione (dati witness) dalla transazione.
Il vantaggio principale della separazione della firma dai dati relativi alle transazioni è che riduce la dimensione dei dati archiviati in un blocco bitcoin. Ciò conferisce a ogni blocco una capacità extra per archiviare più transazioni e significa che la rete può elaborare più transazioni e il mittente paga commissioni inferiori. Tecnicamente parlando, ciò significa estrarre le informazioni scriptSig dal blocco base e inserirle in una nuova struttura dati. L'aggiornamento Segwit introduce un nuovo campo witness nell'output della transazione per garantire privacy e prestazioni. Sebbene i dati witness non siano progettati per l'archiviazione dei dati, in realtà ci danno l'opportunità di archiviare contenuti come i metadati delle iscrizioni. Comprendiamo la witnessing segregata in modo più grafico con il seguente diagramma:



Fittone
P2TR è un tipo di output di transazione di Bitcoin introdotto nell'aggiornamento Taproot avvenuto nel 2021, che consente di archiviare diverse condizioni di transazione nella blockchain in modo più privato. P2TR svolge un ruolo cruciale nelle iscrizioni degli Ordinals. Le iscrizioni essenzialmente incorporano contenuti di dati specifici nelle transazioni Bitcoin e l'aggiornamento Taproot, e in particolare P2TR, rende questi dati incorporati più flessibili ed economici.
Innanzitutto, grazie al modo in cui vengono archiviati gli script Taproot, possiamo archiviare il contenuto dell'iscrizione nel percorso dello script Taproot spendendo script che sono virtualmente illimitati in termini di contenuto, ricevendo comunque uno sconto sui dati dei testimoni, rendendo relativamente economico archiviare il contenuto dell'iscrizione. Poiché gli script Taproot possono essere consumati solo da output Taproot già esistenti, le iscrizioni vengono inviate/rivelate utilizzando un processo di invio/rivelazione in due fasi. Innanzitutto, nella transazione di invio, viene creato un output Taproot che promette uno script contenente il contenuto dell'iscrizione. Quindi, nella transazione di rivelazione, l'output creato dalla transazione di invio viene consumato, rivelando così il contenuto dell'iscrizione sulla catena.
Questo approccio riduce significativamente il consumo di risorse. Se P2TR non viene utilizzato, le informazioni del testimone vengono archiviate nell'output della transazione. Pertanto, finché questo output non viene consumato, le informazioni del testimone rimarranno archiviate nel set UTXO. Al contrario, se viene utilizzato P2TR, le informazioni del testimone non compaiono nelle transazioni generate durante la fase di commit, quindi non vengono scritte nel set UTXO. Solo quando questo UTXO viene consumato, le informazioni del testimone compaiono nell'input della transazione durante la fase di rivelazione. p2tr consente la scrittura di metadati nella blockchain bitcoin, ma non compaiono mai nel set UTXO. Poiché la manutenzione/modifica del set UTXO richiede più risorse, questo approccio consente di risparmiare molte risorse.
Iscrizioni
Il protocollo Ordinals sfrutta l'allentamento delle restrizioni dimensionali di SegWit sulla scrittura di contenuti di rete Bitcoin memorizzando il contenuto dell'iscrizione nei dati witness. Taproot semplifica la memorizzazione di dati witness arbitrari nelle transazioni bitcoin, consentendo allo sviluppatore di Ordinals Casey Rodarmor di riutilizzare vecchi opcode (OP_FALSE, OP_IF, OP_PUSH) per ciò che descrive come "envelope" per memorizzare dati arbitrari per ciò che viene chiamato "iscrizioni".
Il processo di fusione di un'iscrizione consiste nei due passaggi seguenti:
Innanzitutto, è necessario creare un output Commit-to-Taproot dello script contenente il contenuto dell'iscrizione nella transazione inviata. Il formato memorizzato è Taproot, ovvero l'output della transazione precedente è P2TR (Pay-To-Taproot) e l'input della transazione successiva, con un formato specifico incorporato nello script Taproot assistito; prima la stringa ord viene inserita nello stack per disambiguare l'iscrizione da altri utilizzi. OP_PUSH 1 indica che il push successivo contiene il tipo di contenuto e OP_PUSH 0 indica che i push di dati successivi contengono il contenuto stesso. Le iscrizioni di grandi dimensioni devono utilizzare più push di dati perché una delle poche restrizioni di taproot è che i singoli push di dati non devono essere più grandi di 520 byte. A questo punto i dati per l'iscrizione corrispondono già all'UTXO dell'output della transazione, ma non vengono resi pubblici.

L'iscrizione di testo contenente la stringa "Hello, world!" è serializzata come sopra In secondo luogo, è necessario consumare quell'output creato inviando la transazione nella transazione di rivelazione. In questa fase, la transazione viene avviata prendendo come input l'UTXO corrispondente a quell'iscrizione. A questo punto, il contenuto della sua iscrizione corrispondente viene divulgato all'intera rete.
Con i due passaggi descritti sopra, il contenuto dell'iscrizione è stato vincolato all'UTXO in fase di iscrizione. Di nuovo, in base al posizionamento del satoshi descritto sopra, l'iscrizione viene effettuata sul primo satoshi corrispondente al suo input UTXO e il contenuto dell'iscrizione viene incluso nell'input che mostra la transazione. In base all'introduzione al flusso e al tracciamento del satoshi descritti sopra, questo satoshi iscritto con contenuto speciale può essere trasferito, acquistato, venduto, perso e ripristinato. Si noti che le iscrizioni non possono essere ripetute, altrimenti le iscrizioni successive non sono valide.
Illustreremo questo processo in dettaglio inscrivendo un esempio di una piccola immagine BTC NFT, che consiste nelle due fasi principali menzionate prima, commit e reveal. Innanzitutto, vediamo che l'ID Hash della prima transazione è 2ddf9...f585c. Si può notare che l'output di questa transazione non contiene dati di testimone e non c'è alcuna iscrizione rilevante nella pagina web.

Successivamente, esaminiamo la seconda fase del record, il cui ID Hash è e7454...7c0e1. Qui possiamo vedere le informazioni dell'iscrizione Ordinals, che è il contenuto dell'iscrizione witness. L'indirizzo di input di questa transazione è l'indirizzo di output di quella precedente, mentre l'output di 0,00000546BTC (546 Satoshi) invia questo NFT al proprio indirizzo. Inoltre, possiamo trovare il satoshi in cui si trova questa iscrizione in Sat 1893640468329373.


Nel portafoglio Bitcoin, possiamo vedere questo asset. Se vogliamo fare trading con questo NFT, possiamo inviarlo direttamente all'indirizzo di qualcun altro, il che significa inviare questo UTXO, che completa il flusso di iscrizioni.

IV. Portafoglio Bitcoin
Dopo aver capito cosa sono gli Ordinali, il flusso di Satoshi e la conoscenza delle iscrizioni, ci sono molti scenari applicativi che stanno emergendo al momento, che si tratti di BRC-20, ORC-20, BRC-721, GBRC-721 e altri protocolli derivati correlati che richiedono di avere wallet corrispondenti per supportare e visualizzare le informazioni sui token o piccole immagini NFT. In questa sezione introdurremo il concetto e le caratteristiche dei diversi indirizzi di wallet bitcoin.
Gli indirizzi Bitcoin iniziano con 1, 3 o bc1. Proprio come gli indirizzi e-mail, possono essere condivisi con altri utenti Bitcoin che possono usarli per inviare Bitcoin direttamente ai loro portafogli. Dal punto di vista della sicurezza, un indirizzo Bitcoin non ha alcun contenuto sensibile. Può essere pubblicato ovunque senza compromettere la sicurezza dell'account. A differenza degli indirizzi e-mail, possiamo creare nuovi indirizzi tutte le volte che serve, tutti i quali depositeranno fondi direttamente nel tuo portafoglio. Infatti, molti portafogli moderni creano automaticamente un nuovo indirizzo per ogni transazione per la massima privacy. Un portafoglio è semplicemente una raccolta di indirizzi e le chiavi per sbloccare i fondi in essi contenuti. Per prima cosa dobbiamo sapere come vengono creati gli indirizzi dei portafogli Bitcoin.
Chiavi private e pubbliche di Bitcoin
Bitcoin utilizza la curva ellittica Secp256k1, dove la "chiave privata" è un numero casuale compreso tra 1 e n-1, dove n è un numero molto grande (256 bit) e n è espresso in notazione scientifica approssimativamente come: 1,15792*10^77.
L'intervallo è così ampio che è quasi impossibile indovinare la chiave privata di qualcun altro. Questa chiave privata intera casuale può essere rappresentata da 256 bit e ci sono molti modi per codificarla. Se la chiave privata in WIF, forma compressa WIF, non è crittografata, può essere decodificata per ottenere l'originale "intero casuale". Un altro modo è BIP38, che propone di crittografare la chiave privata con l'algoritmo AES. La chiave privata ottenuta da questo schema inizia con il carattere 6P e questa chiave privata deve essere inserita come password per essere importata in vari portafogli bitcoin, che è la chiave privata che di solito utilizziamo.
Utilizzeremo quindi la formula della curva ellittica K = kG per generare la chiave pubblica K di Bitcoin dalla chiave privata k. G è il Punto Base, che è un parametro di secp256k1. Le due coordinate di K sono le due espressioni della chiave pubblica, che sono "Formato non compresso" e "Formato compresso".

Non compresso, che è una concatenazione diretta di due coordinate x e y, precedute dal prefisso 0x04;
Forma compressa, codificata come 02 x quando y è pari e 03 x quando y è dispari;
Indirizzi Bitcoin
I vari tipi di indirizzi bitcoin possono essere mostrati nel diagramma seguente, con quattro rappresentazioni:

Formato legacy (P2PKH)
Esempio: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u
L'indirizzo inizia con un "1" ed è il formato di indirizzo originale per Bitcoin, che è ancora in uso oggi. È anche noto come P2PKH, che sta per Pay To PubKey Hash, e si ottiene calcolando la chiave pubblica tramite un hash.
Formato SegWit nidificato (P2SH)
Esempio: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN
P2SH nidificato, che prende un indirizzo P2SH esistente (che inizia con "3") e lo racchiude in un indirizzo SegWit.
Formato nativo SegWit (Bech32)
Esempio: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
Gli indirizzi che iniziano con bc1 sono proposti in BIP0173 e sono indirizzi Isolated Witness nativi. Indirizzi codificati bech32, un formato di indirizzo sviluppato specificamente per SegWit. bech32 è stato definito in BIP173 alla fine del 2017 e una delle caratteristiche principali del formato Una delle caratteristiche principali è che non è sensibile alle maiuscole e alle minuscole (solo 0-9, az, sono inclusi nell'indirizzo), rendendolo efficace nell'evitare confusione e più leggibile quando inserito. Poiché sono necessari meno caratteri nell'indirizzo, l'indirizzo è codificato utilizzando Base32 anziché il tradizionale Base58, rendendo il calcolo più semplice ed efficiente. I dati possono essere archiviati più saldamente nel codice QR. bech32 fornisce maggiore sicurezza, una migliore ottimizzazione del checksum e dei codici di rilevamento degli errori e riduce al minimo la possibilità di indirizzi non validi.
Gli indirizzi Bech32 sono compatibili con SegWit. Non è necessario spazio extra per inserire gli indirizzi SegWit negli indirizzi P2SH, quindi le commissioni sono più basse con gli indirizzi in formato Bech32. Gli indirizzi Bech32 hanno diversi vantaggi rispetto ai vecchi indirizzi Base58 (la codifica Base58Check è utilizzata per codificare array di byte in Bitcoin in stringhe codificabili dall'uomo): codici QR più piccoli; migliore protezione dagli errori; più sicuri; non sono sensibili alle maiuscole e alle minuscole; e sono composti solo da lettere minuscole, quindi sono più facili da leggere, digitare e capire.
Formato Taproot (P2TR)
Bech32 ha uno svantaggio: se l'ultimo carattere dell'indirizzo è p, l'inserimento o l'eliminazione di un qualsiasi numero di caratteri q immediatamente prima di p non invaliderà il suo checksum.
Per alleviare questo inconveniente di Bech32, l'indirizzo Bech32m è proposto in BIP0350:
Per un indirizzo di testimone isolato nativo versione 0, utilizzare il precedente Bech32;
Per un indirizzo witness isolato nativo versione 1 (o superiore), viene utilizzato il nuovo Bech32m.
Per gli indirizzi Bech32m, iniziano sempre con bc1p (ad es. indirizzo Taproot) quando viene utilizzata la versione 1. In particolare, come un testimone isolato locale, un portafoglio può essere costituito da una frase seed e una frase crittografica. Queste vengono utilizzate per generare chiavi pubbliche e private estese che vengono utilizzate per derivare indirizzi di percorso arbitrari in un portafoglio deterministico gerarchico. Lo scopo principale è quello di archiviare BRC-20 e NFT per BTC, ecc.
V. Chi siamo
Spectrum Labs è un team di Master e PhD focalizzati sulla ricerca blockchain, nonché veterani del settore blockchain. Ci dedichiamo alla tecnologia della catena di ricerca blockchain e alle sue applicazioni per aiutare le persone a comprendere meglio la blockchain. Le principali attività di Spectrum Labs includono la stesura di report di ricerca, lo sviluppo di curriculum e lo sviluppo di strumenti.
La comunità cinese BTC NFT (中文社区) è un centro di comunicazione cinese BTC NFT per i nuovi arrivati nella comunità cinese globale.
