1. Fundal Bitcoin
Bitcoin adoptă un model de tranzacție asemănător numerarului (sistem de numerar), iar metoda sa de plată se bazează pe un model numit UTXO, care este diferit de modelul tradițional bazat pe soldul contului.

De exemplu: În procesul de model de contabilitate al contului băncii, atunci când A transferă 100 de yuani către B, banca va înregistra trei pași, care constituie un proces de tranzacție. Primul pas este deducerea a 100 de yuani din contul lui A. ID-ul de înregistrare al acestui pas este tid1. Al doilea pas este depunerea a 100 de yuani în contul lui B. ID-ul de înregistrare al acestui pas este tid2. Al treilea pas este înregistrarea unei înregistrări de transfer, care asociază tid1 și tid2, indicând faptul că contul A scade cu 100 de yuani și contul B crește cu 100 de yuani.
În acest fel, relația de transfer dintre A și B este înregistrată și poate fi interogată și urmărită în viitor. Acum, vom explica metoda de plată a Bitcoin prin introducerea UTXO și modelul de plată.
UTXO
În blockchain-ul Bitcoin, toate soldurile sunt stocate într-o listă numită „Ieșiri ale tranzacțiilor necheltuite” (UTXO). Fiecare UTXO conține o anumită cantitate de Bitcoin, informații despre proprietar și starea de disponibilitate, similar cu un cec cu numele deținătorului. Acest cec poate fi semnat și transferat altcuiva.
Soldul unei adrese este egal cu suma tuturor UTXO-urilor sale. Soldul curent al fiecărei adrese poate fi obținut prin parcurgerea listei UTXO, iar suma acestor UTXO reprezintă oferta totală curentă a tuturor Bitcoins.

În structura tranzacției Bitcoin, fiecare tranzacție conține intrări și ieșiri. Fiecare intrare este o referință la un UTXO existent și fiecare ieșire specifică o nouă adresă și o sumă de primire. Odată ce o tranzacție este creată, UTXO asociat cu intrarea este blocat temporar pentru a preveni reutilizarea, iar starea UTXO asociată se va schimba numai după ce este împachetat și confirmat cu succes de către miner.
Mai exact, intrarea UTXO este eliminată, iar ieșirea generează un nou UTXO și îl adaugă la listă. Acest lucru este similar cu generarea unui nou cec după expirarea vechiului cec, proprietatea asupra noului cec fiind transferată la numele noului titular.
Trebuie subliniat că fiecare UTXO poate fi folosit o singură dată într-o tranzacție. După utilizare, este eliminat definitiv, iar o nouă ieșire este creată și adăugată la lista UTXO. Lista UTXO este actualizată în mod constant pe măsură ce se creează noi blocuri. Prin analiza istoricului tranzacțiilor, starea listei UTXO la un moment dat poate fi reconstruită.
În plus, valoarea totală de intrare a unei tranzacții depășește, de obicei, puțin valoarea totală a ieșirii, iar această diferență devine taxa de tranzacție și servește drept stimulent pentru K lucrători. Taxele de tranzacție sunt proporționale cu complexitatea tranzacției, astfel încât o tranzacție cu mai multe intrări și ieșiri va necesita, în general, taxe de rețea mai mari.

Pentru a înțelege mai clar structura tranzacției Bitcoin, putem afla mai multe prin următorul exemplu, unde „vin” reprezintă intrarea tranzacției și „vout” reprezintă rezultatul tranzacției. Tranzacțiile Bitcoin folosesc o abordare de intrare și ieșire mai degrabă decât modelul tradițional de sold al contului.

Putem selecta aleatoriu o înregistrare de tranzacție pe blockchain.com pentru a o analiza. Următoarea figură arată ID-ul Hash
Tranzacție pentru 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Conține o intrare și două ieșiri.

Folosind comenzile bitcoin-cli getrawtransaction și decorawtransaction, putem inspecta structura de bază a tranzacției de mai sus:

În rețeaua Bitcoin, rezultatul fiecărei tranzacții conține două informații cheie: adresa (hash cheie publică) și suma (în Bitcoins).
Dacă rezultatul unei tranzacții nu a fost utilizat în intrarea altor tranzacții, atunci această ieșire se numește ieșire de tranzacție necheltuită (UTXO). Oricine deține cheia privată corespunzătoare cheii publice din UTXO are dreptul de a folosi (adică de a cheltui) acest UTXO.
Să ne uităm la informațiile din „VIN” din codul de mai sus. Început numerotat de la 0).
Putem afla suma acestui UTXO (de exemplu, 0,1 Bitcoin) din istoricul tranzacțiilor. Prin urmare, în această tranzacție, acest utilizator a cheltuit 0,1 Bitcoin, iar valoarea 0,1 nu trebuie să fie scrisă explicit în tranzacție, ci este obținută prin interogarea informațiilor UTXO.
„Vout”-ul acestei tranzacții conține două ieșiri, care reprezintă două noi UTXO, corespunzătoare noului sold și proprietarului. Aceste noi UTXO vor exista până când o altă tranzacție le va consuma ca intrare.

Model de plată
Pentru a înțelege mai bine modelul de plată al rețelei Bitcoin, folosim un exemplu pentru a introduce procesul de plată a unei sume de n Bitcoin plătite de A către B. Figura de mai jos arată procesul prin care utilizatorul A trimite 3 Bitcoin către utilizatorul B.

Pentru utilizatorul A, în primul rând, este necesar să se determine setul tuturor UTXO-urilor pe care le deține, adică toți Bitcoin-urile pe care utilizatorul A îi poate controla;
A selectează unul sau mai multe UTXO din acest set ca intrare a tranzacției. Suma sumelor acestor intrări este m (2+0,8+0,5=3,3 BTC), care este mai mare decât suma n (3 BTC) care are nevoie. a fi platit;
Utilizatorul A setează două ieșiri pentru tranzacție, o ieșire este plătită la adresa lui B, suma este n (3 BTC), iar cealaltă ieșire este plătită la una dintre adresele de schimbare proprii ale lui A, suma este mn-taxă (3.3-3). - 0,001 = 0,299 BTC). Portofelul utilizatorului constă de obicei din mai multe adrese. În general, fiecare adresă este utilizată o singură dată, iar modificarea este returnată implicit la o nouă adresă;
Odată ce lucrătorul K împachetează și confirmă tranzacția către blockchain, receptorul B va putea obține informații despre tranzacție.

Deoarece dimensiunea fiecărui bloc este limitată (de obicei, aproximativ 1 MB), lucrătorii K prioritizează tranzacțiile cu rate de tranzacție ridicate (fee_rate=fee/size) pentru a obține cele mai mari profituri ale taxelor.
Putem verifica rata tranzacțiilor miniere K în timp real în pool-ul de tranzacții neconfirmate (mempool). Dacă dorim să obținem o confirmare cât mai curând posibil în timpul procesului de transfer, putem alege High Priority sau personaliza o rată de tranzacție adecvată.

2. Numerotarea și urmărirea cong
Oferta totală de Bitcoin este de 21 de milioane, iar fiecare Bitcoin conține 10^8 Satoshi (Sat). Deci, în rețeaua Bitcoin, avem un total de 21 de milioane * 10^8 satoshis.
Protocolul Ordinals folosește un mod unic de numerotare a fiecărui Satoshi pentru a-i asigura unicitatea și capacitatea de a urmări cu precizie contul căruia îi aparțin. În plus, clasificarea de raritate a satoshis va fi simplificată.
numărul lui Satoshi
Conform protocolului Ordinals, satoshi-urile sunt numerotate în funcție de ordinea în care sunt extrase. Figura de mai jos arată reprezentarea celui de-al 0-lea Satoshi exploatat în blocul 0.

Există multe moduri de a exprima Satoshi:
Simbol întreg: De exemplu, 2099994106992659, care reprezintă numărul de serie atribuit satoshi-ului conform ordinului de extragere.
Notație zecimală: De exemplu, 3891094.16797, prima cifră indică înălțimea blocului în care a fost extras Satoshi, iar a doua cifră indică numărul Satoshi din bloc.
Simbolul gradului: De exemplu, 3°111094′214″16797‴, prima cifră este perioada, numerotată începând de la 0, a doua cifră este indicele bloc al epocii de înjumătățire, iar a treia cifră este indicele blocului în timpul dificultății perioada de ajustare, ultima cifră este indicele sat din bloc.
Simbol procent: De exemplu, 99,99971949060254% indică poziția Satoshi în oferta Bitcoin, exprimată ca procent.
Nume: De exemplu, Satoshi. Un nume care codifică numărul de secvență folosind caracterele de la a la z.

Să luăm un exemplu pentru a explica cum se numără Bitcoin-urile nou extrase. Observând blocul 795952 al blockchain-ului Bitcoin, acesta conține o tranzacție denumită „Tx 3a1f...b177”, care înregistrează recompensa lucrătorului K (tranzacție coinbase). Această tranzacție include Bitcoin-uri proaspăt extrase, care sunt folosite ca recompense pentru lucrătorii K, precum și taxele de gestionare plătite de inițiatorul tranzacției lucrătorilor K.
Privind partea de intrare, putem vedea ID-ul UTXO, care constă dintr-un șir de zerouri și înălțimea blocului. Și în secțiunea de ieșire, putem vedea adresele care au primit aceste recompense și taxe, precum și suma lor totală.

Dacă examinăm în continuare producția de piese către K lucrători, putem vedea distribuția adreselor, cantităților și a satoshi-urilor conținute. După cum am menționat mai devreme, acestea includ recompensele miniere K și taxele de manipulare.
Printre acestea, informațiile despre numărul satoshi verzi 1941220000000000–1941220625000000 este noul satoshi generat de extragerea recompenselor K, iar restul de 712 înregistrări satoshi corespund tuturor taxelor de manipulare din bloc.

Putem verifica numărul Sat 1941220000000000.
Numărul său de bloc este 795952, iar notația zecimală (zecimală) este 795952.0, ceea ce înseamnă că înălțimea blocului de extragere a acestui Satoshi este 795952, numărul de Satoshi din acest bloc este 0, iar raritatea ulterioară este marcată ca neobișnuită, noi îl va prezenta în detaliu în secțiunile următoare.

Circulația Cong
Modelul de tranzacție al Bitcoin folosește modelul Uncheltuit de ieșire a tranzacției (UTXO), ceea ce înseamnă că fiecare Bitcoin (BTC) poate fi urmărit până la sursa sa. Să ilustrăm acest proces cu un exemplu:
Să presupunem că utilizatorul A a primit o recompensă prin extragerea K, care conține Bitcoin de la al 100-lea Satoshi la al 110-lea Satoshi. Aceste Bitcoin sunt toate stocate în același UTXO (Ieșirea tranzacției necheltuite) este adc123.
Acum, când utilizatorul A dorește să plătească utilizatorului B 5 satoshis, el alege să folosească UTXO cu ID abc123 ca intrare pentru tranzacție. Această tranzacție va trimite 5 satoshi utilizatorului B și va returna 5 satoshis ca schimbare utilizatorului A.
Aceste două 5 satoshi-uri vor deveni un întreg, dar vor fi stocate în două UTXO-uri diferite, cum ar fi abc456 și abc789.
ID-ul UTXO de mai sus și numărul de satoshi-uri sunt afișate doar ca exemple. În situații reale, numărul minim de satoshi-uri trimise este limitat la 546, iar id-ul UTXO nu este exprimat în această formă.

În tranzacția de mai sus, calea de circulație a celor 10 satoshi ale utilizatorului A este:
Mining K produce 10 satoshis, numerotate [100, 110). Înseamnă că satoshi-urile de la 100 la 109 sunt stocate în UTXO cu id-ul abc123, iar proprietarul acestuia este utilizatorul A.
Când A face transferul, cei 10 satoshi sunt împărțiți în două părți, fiecare dintre ele fiind de 5 satoshi. Aici este adoptat principiul „primul intrat, primul ieșit”, adică ordinea numerelor Satoshi este determinată în funcție de indicele lor în rezultatul tranzacției.
Presupunând că ordinea de ieșire este mai întâi utilizatorul A, apoi utilizatorul B, apoi numărul de secvență al celor 5 satoshi-uri rămase ale utilizatorului A este [100, 105), care este stocat în UTXO cu id-ul abc456, iar cele 5 satoshi-uri ale utilizatorului B sunt secvența numărul este [105, 110) și este stocat în UTXO cu id-ul abc789.

Rarețea (Satoshi rar)
Ca o derivată a protocolului Ordinals, raritatea satoshi poate fi definită în funcție de ordinea în care sunt extrase. Acest lucru va avea ca rezultat niște satoshi speciale care au rarități diferite. Iată nivelurile de raritate ale diferitelor Satoshi:
nivel comun comun: orice satoshi, cu excepția primului satoshi al blocului (oferta totală este de 2100 trilioane)
neobișnuit Nivel excelent: primul satoshi al fiecărui bloc (oferta totală este 6929999)
rar: primul satoshi din fiecare perioadă de ajustare a dificultății (oferta totală este de 3437)
epic: primul Satoshi după fiecare înjumătățire (rezerva totală este de 32)
legendar: primul satoshi în fiecare ciclu (rezerva totală este de 5)
mitic: primul Satoshi din blocul geneză (oferta totală este 1)
Acest concept de satoshi rare poate adăuga mai mult interes și valoare ecosistemului Bitcoin. Satoshis de diferite rarități pot avea valori diferite pe piață, atrăgând colecționari și investitori.

3. Metoda de înscriere
O diferență semnificativă între Ordinals și alte NFT-uri în lanț non-Bitcoin este că metadatele lor nu sunt stocate într-o locație specifică.
În schimb, aceste metadate sunt încorporate în datele martorului (câmpul martor) ale tranzacției, motiv pentru care o numim „inscripție” deoarece datele sunt „gravate” în biți ca o inscripție pe o anumită parte a tranzacției cu monede , aceste date sunt atașate unui anumit Satoshi.
Acest proces de înscriere este implementat prin Segregated Witness (SegWit) și Pay-to-Taproot (P2TR). Include două etape: commit și dezvăluie orice formă de conținut (cum ar fi text, imagini sau videoclipuri) pe Satoshi desemnat.
În continuare, vom detalia o altă metodă de stocare, mai directă, OP_RETURN, și vom explica de ce nu funcționează cu inscripții. În același timp, vom explora conceptele SegWit și Pay-to-Taproot și rolul lor în Inscription. În cele din urmă, vom aprofunda în metodele de înscriere.

OP_RETURE
În versiunea 0.9 a clientului Bitcoin Core, s-a ajuns în sfârșit la un compromis folosind operatorul RETURN. RETURN permite dezvoltatorilor să adauge 80 de octeți de date de neplată la rezultatul tranzacției. Spre deosebire de pseudo plăți, RETURN creează o ieșire care poate fi verificată în mod explicit, dar nu poate fi cheltuită și nu trebuie să fie stocată într-o colecție UTXO (Ieșire tranzacție necheltuită).
Ieșirile RETURN sunt înregistrate pe blockchain, care va ocupa spațiu pe disc și va duce la creșterea dimensiunii blockchain-ului, dar nu vor ocupa colecția UTXO și, prin urmare, nu vor provoca umflarea colecției UTXO și nici nu vor crește costul costisitor al memoriei. a nodului complet.
În timp ce OP_RETURN este o metodă de stocare a informațiilor direct pe blockchain-ul Bitcoin, prezintă și unele provocări. În primul rând, OP_RETURN poate stoca doar 80 de octeți de date, ceea ce, evident, nu este suficient pentru situațiile în care trebuie stocate mai multe date.
În al doilea rând, datele OP_RETURN sunt stocate în ieșirea tranzacției Deși nu vor ocupa colecția UTXO, ele vor ocupa spațiul de stocare al blockchain-ului, determinând creșterea dimensiunii blockchain-ului.
În cele din urmă, utilizarea OP_RETURN crește taxele de tranzacție, deoarece necesită o plată mai mare pentru a posta aceste tranzacții.

Martor segregat
În comparație cu metodele anterioare, SegWit oferă o nouă soluție care poate rezolva problemele de mai sus.
SegWit este o actualizare cheie a protocolului pentru Bitcoin. Acesta a fost propus pentru prima dată de dezvoltatorul de bază Bitcoin Pieter Wuille în 2015 și a fost adoptat în sfârșit în versiunea 0.16.0 în 2017.
„Segregat” în Segregated Witness (SegWit) înseamnă separare sau izolare, în timp ce „Witness” implică datele semnăturii asociate tranzacției. Prin urmare, conceptul de bază al SegWit este de a separa anumite date despre semnătura tranzacției (numite și date martori) de datele tranzacției reale.
Principalul beneficiu al separării datelor de semnătură de datele de tranzacție este reducerea dimensiunii datelor stocate în blocurile Bitcoin. Acest lucru are ca rezultat o capacitate disponibilă mai mare per bloc pentru a găzdui mai multe tranzacții, ceea ce înseamnă, de asemenea, că rețeaua este capabilă să proceseze mai multe tranzacții, iar utilizatorii plătesc taxe de tranzacție mai mici.
Din punct de vedere tehnic, aceasta înseamnă mutarea datelor de semnătură a scriptului (scriptSig) conținute inițial în structura blocului de bază într-o nouă structură de date. Nodurile de validare și lucrătorii K vor verifica, de asemenea, semnătura scriptului în această nouă structură de date pentru a asigura validitatea tranzacției.

Upgrade-ul SegWit introduce, de asemenea, un nou câmp de date privind martorii pentru a spori confidențialitatea și eficiența. Deși datele martorilor nu sunt concepute special pentru a stoca date de tranzacție în text simplu, de fapt ne oferă posibilitatea de a stoca lucruri precum metadatele de inscripție.
Folosim următoarea figură pentru a înțelege mai clar Martorul Segregat:

Rădăcină pivotantă
P2TR este un tip de ieșire a tranzacțiilor Bitcoin care a fost introdus în actualizarea Taproot din 2021, care permite stocarea mai privată a diferitelor condiții de tranzacție în blockchain.
În această arhitectură, P2TR joacă un rol crucial în inscripția datelor Ordinals. Inscripția încorporează de fapt date specifice în tranzacțiile Bitcoin, iar actualizările Taproot, în special P2TR, fac această încorporare a datelor mai flexibilă și mai economică.
În primul rând, datorită metodei de stocare a codurilor de comandă Taproot, putem stoca datele de înscriere în calea de comandă Taproot, iar aceste coduri de comandă aproape nu au restricții privind conținutul. În același timp, ne putem bucura și de reduceri la datele martorilor. făcând relativ economică stocarea datelor de înscriere.
Cu toate acestea, deoarece consumul de instrucțiuni Taproot poate proveni doar de la ieșirea Taproot existentă, stocarea inscripțiilor adoptă un proces de commit/reveal în două etape. În primul rând, în tranzacția de comitere, se stabilește o ieșire Taproot care promite să conțină datele de înscriere.

Apoi, într-o tranzacție de revelare, rezultatul stabilit de tranzacția de comitere este consumat, dezvăluind astfel conținutul inscripției în lanț.
Această abordare reduce semnificativ utilizarea resurselor. Dacă nu se utilizează P2TR, datele martorului vor fi stocate în ieșirea tranzacției Atâta timp cât această ieșire nu este consumată, datele martorului vor exista întotdeauna în setul UTXO.
În schimb, dacă se folosește P2TR, datele martorului nu vor apărea în tranzacția generată în timpul fazei de comitere și, prin urmare, nu vor fi scrise în setul UTXO. Numai când acest UTXO este consumat, datele martorului vor apărea în intrarea tranzacției în timpul fazei de revelare.
P2TR permite ca datele originale să fie scrise în blockchain-ul Bitcoin, dar nu ocupă întotdeauna spațiul concentrat în UTXO. Deoarece menținerea/modificarea setului UTXO necesită mai multe resurse, această metodă poate economisi resurse semnificativ.

inscripţie
Protocolul Ordinals extinde limita de scriere a dimensiunii în rețeaua Bitcoin prin utilizarea SegWit pentru a stoca conținut de text simplu în martor, permițând până la 4MB de stocare a metadatelor.
Taproot simplifică procesul de stocare a datelor arbitrare ale martorilor în tranzacțiile Bitcoin, permițând dezvoltatorului Ordinals Casey Rodarmor să refolosească vechile coduri operaționale (OP_FALSE, OP_IF, OP_PUSH) pentru a crea așa-numitele „plicuri” pentru stocarea a ceea ce se numește „ „Inscripție” orice informație.
Procesul de turnare a inscripției constă în următorii doi pași:
În primul rând, în tranzacția de comitere, trebuie să creați o promisiune care să indice ieșirea Taproot care conține conținutul inscripției. Formatul acestei stocări este Taproot, rezultatul tranzacției anterioare trebuie să fie P2TR (Pay-To-Taproot), iar conținutul unui anumit format este încorporat în scriptul martor Taproot.
Mai întâi, șirul „ordn” este împins pe stivă pentru a dezambigua scopul inscripției. Apoi, utilizați OP_PUSH 1 pentru a indica faptul că următorul push conține tipul de conținut și OP_PUSH 0 pentru a indica că împingerile ulterioare de date conțin conținutul în sine.
Deoarece una dintre limitările Taproot este că o singură transmitere de date nu poate depăși 520 de octeți, sunt necesare mai multe trimiteri de date pentru a stoca inscripții mari. În acest moment, datele de înscriere au fost legate de rezultatul tranzacției necheltuite (UTXO) a rezultatului tranzacției, dar nu au fost încă făcute publice.

În al doilea rând, în tranzacția de revelare, rezultatul creat trebuie consumat. În această etapă, tranzacția este inițiată luând ca intrare UTXO-ul corespunzător inscripției. În acest moment, conținutul de inscripție legat de UTXO va fi expus întregii rețele.
Prin cei doi pași de mai sus, conținutul inscripției a fost asociat cu un anumit UTXO. Conform metodei de poziționare a lui Satoshi (UTXO) introdusă anterior, inscripția este gravată pe primul Satoshi corespunzător intrării sale UTXO, iar conținutul inscripției este inclus în intrarea care arată tranzacția.
Conform circulației și urmăririi Satoshi menționate mai sus (UTXO), acest Satoshi care conține conținut special poate fi transferat, cumpărat, vândut, pierdut și recuperat. Trebuie remarcat faptul că inscripția nu poate fi repetată, altfel inscripțiile ulterioare vor fi invalide.
Pentru a explica acest proces mai detaliat, să parcurgem un exemplu care arată cum să înscrieți o imagine mică a unui Bitcoin NFT. Acest proces acoperă cele două faze de comitere și dezvăluire menționate mai devreme.
În primul rând, putem vedea că ID-ul hash al primei tranzacții este 2ddf9...f585c. Trebuie remarcat faptul că rezultatul acestei tranzacții nu conține date despre martori și nu există informații relevante de înscriere pe pagina web.

Apoi, verificăm înregistrarea din a doua etapă, al cărei ID Hash este e7454…7c0e1. Aici, putem vedea informațiile inscripției Ordinals, care este conținutul inscripției mărturiei.
Adresa de intrare a acestei tranzacții este adresa de ieșire a tranzacției anterioare, iar ieșirea 0,00000546BTC (546 Satoshi) este pentru a transfera acest NFT la propria sa adresă. În același timp, putem găsi și satoshi unde se află această inscripție în Sat 1893640468329373.


În portofelul Bitcoin, putem vedea acest activ. Dacă dorim să tranzacționăm acest NFT, îl putem transfera direct la adresele altor persoane, adică transferăm UTXO-ul, completând astfel transferul înscrierii.

4. Portofel Bitcoin
După ce înțelegem ce este ecologia Ordinalelor, circulația satoshis și cunoștințele aferente inscripțiilor, există în prezent multe scenarii de aplicare, fie că este vorba despre apariția BRC-20, ORC-20, BRC-721, GBRC-721 și alte protocoale derivate înrudite, care necesită. Avem portofele corespunzătoare pentru a sprijini și afișa informații despre token sau imagini mici NFT.
În această secțiune vom introduce conceptele și caracteristicile diferitelor adrese de portofel Bitcoin.
Adresele Bitcoin încep de obicei cu 1, 3 sau bc1 și, ca și adresele de e-mail, pot fi partajate cu alți utilizatori Bitcoin pentru a transfera Bitcoin direct în portofel.
Din punct de vedere al securității, adresele Bitcoin nu conțin informații sensibile și, prin urmare, pot fi partajate în mod public în orice moment, fără a compromite securitatea contului dumneavoastră. Spre deosebire de adresele de e-mail, puteți crea noi adrese Bitcoin după cum este necesar și toate acestea depun fonduri direct în portofel.

De fapt, multe portofele moderne stabilesc automat o nouă adresă pentru fiecare tranzacție pentru a maximiza confidențialitatea. Un portofel este pur și simplu o colecție de adrese și chei care deblochează fondurile din el. Mai întâi trebuie să știm cum este generată adresa portofelului Bitcoin.
Chei publice și private Bitcoin
Bitcoin folosește curba eliptică Secp256k1 „cheia privată” este un număr aleatoriu între 1 și n-1, n este un număr foarte mare (256 de biți).

Această gamă este foarte largă și face aproape imposibilă spargerea cheilor private ale altor persoane. Această cheie privată este un număr întreg aleatoriu, de obicei reprezentat de 256 de biți binari și poate fi codificată într-o varietate de moduri. Cheile private care utilizează formatul WIF (Wallet Import Format) sau formatul comprimat prin WIF sunt necriptate și pot fi decodificate direct în numere întregi aleatorii brute.
O altă metodă este BIP38 (Bitcoin Improvement Proposal 38), care recomandă utilizarea algoritmului AES pentru a cripta cheia privată. Cheia privată generată de această schemă începe cu caracterul 6P și trebuie introdusă o parolă pentru a o importa în diferite portofele Bitcoin. Acesta este modul în care folosim de obicei protecția cu cheia privată.
Apoi, folosim formula curbei eliptice K = kG, unde k este cheia privată și G este punctul de bază, care este un argument pentru curba eliptică secp256k1.
Prin această formulă, putem obține cele două coordonate ale lui K, care sunt cele două expresii ale cheii publice și anume „Format necomprimat” și „Format comprimat”.

Forma necomprimată este de a conecta direct cele două coordonate x și y împreună, apoi adăugați prefixul 0x04 în față;
Forma comprimată înseamnă că atunci când y este un număr par, codul este 02 x, iar când y este un număr impar, codul este 03 x;
adresa Bitcoin
În figura de mai jos sunt prezentate diferite tipuri de adrese Bitcoin. Există patru metode de reprezentare:

1. Format Legacy (P2PKH).
Exemplu: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u
Adresa începe cu „1”, care este formatul original al adresei Bitcoin și este folosit și astăzi. Se obține prin calculul Hash din cheia publică, cunoscută și sub numele de P2PKH, care este abrevierea lui Pay To PubKey Hash (plată către hash cheie publică).
2. Format SegWit imbricat (P2SH).
Exemplu: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN
Adresa începe cu „3” P2SH este abrevierea lui Pay To Script Hash, care acceptă funcții mai complexe decât adresele Legacy. P2SH imbricat, obține adresa P2SH existentă (începând cu „3”) și o încapsulează împreună cu adresa SegWit.

3. Format SegWit nativ (Bech32).
Exemplu: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
BIP0173 a introdus formate de adrese care încep cu „bc1”, care sunt adresele folosite pentru Martorul Segregat nativ (SegWit). Acest format de adresă folosește codificarea Bech32 și este conceput special pentru SegWit. Adresele în format Bech32 au fost definite în BIP173 la sfârșitul anului 2017. Una dintre principalele sale caracteristici este că nu face distincție între majuscule și minuscule, astfel încât este mai ușor de evitat confuzia la introducere și este, de asemenea, mai ușor de citit.
În comparație cu codarea tradițională Base58, Bech32 folosește codificarea Base32, astfel încât sunt necesare mai puține caractere în adresă, calculul este mai eficient și poate fi stocat mai compact în codul QR.
În plus, Bech32 oferă o securitate mai mare și o detectare mai bună a erorilor de sumă de control optimizată, minimizând riscul adreselor invalide.
Adresele Bech32 în sine sunt compatibile cu SegWit. Nu este nevoie de spațiu suplimentar pentru a introduce adresa SegWit în adresa P2SH, așa că folosind adresa în format Bech32, taxa de gestionare va fi mai mică.
În general, adresele Bech32 au mai multe avantaje față de adresele tradiționale Base58: codurile QR generate sunt mai mici, mai rezistente la erori, mai sigure, insensibile la majuscule și conțin doar litere mici, astfel încât sunt mai ușor de citit, de tastat și este mai ușor. a întelege.

4. Format Taproot (P2TR)
Bech32 are un dezavantaj: dacă ultimul caracter al adresei este p, atunci inserarea sau ștergerea oricărui număr de caractere q imediat înainte de p nu va invalida suma de control.
Pentru a atenua deficiențele de mai sus ale Bech32, adresa Bech32m a fost propusă în BIP0350:
Pentru adresele native Segwit cu versiunea 0, utilizați Bech32 anterior;
Pentru adresele native Segwit versiunea 1 (sau superioară), se folosește noul Bech32m.
Pentru adresele Bech32m, când numărul lor de versiune este 1, încep întotdeauna cu „bc1p”, ceea ce înseamnă că sunt adrese Taproot. Similar cu Segwit nativ, aceste adrese pot fi generate dintr-o frază de bază și o frază de acces utilizate pentru a genera cheile publice și private ale suitei extinse, permițând derivarea adreselor pentru diferite căi într-un portofel ierarhic determinist.

Acesta este folosit în principal pentru a stoca active digitale, cum ar fi jetoanele BRC-20, precum și NFT-urile Bitcoin.