1. Bitcoin pozadí
Bitcoin využívá hotovostní transakční model (hotovostní systém) a jeho platební metoda je založena na modelu zvaném UTXO, který se liší od tradičního modelu založeného na zůstatku účtu. Například: V procesu účetního modelu bankovního účtu, když A převede 100 juanů na B, banka zaznamená tři kroky, které představují proces transakce. Prvním krokem je odečtení 100 yuanů z účtu A. ID záznamu tohoto kroku je tid1. Druhým krokem je vložení 100 juanů na účet B. ID záznamu tohoto kroku je tid2. Třetím krokem je zaznamenání záznamu o převodu, který spojuje tid1 a tid2, což znamená, že účet A se sníží o 100 juanů a účet B se zvýší o 100 juanů. Tímto způsobem je zaznamenán přenosový vztah mezi A a B a lze jej v budoucnu dotazovat a sledovat. Nyní vysvětlíme platební metodu bitcoinů prostřednictvím představení UTXO a platebního modelu.
UTXO
V bitcoinovém blockchainu jsou všechny zůstatky uloženy v seznamu nazvaném „Nevyužitý transakční výstup“ (UTXO). Každé UTXO obsahuje určitý počet bitcoinů a také informace o majitelích těchto bitcoinů a uvádí, zda jsou dostupné. Představte si to jako hotovostní šek se jménem držitele, a pokud jej držitel podepíše, mohou být práva k užívání převedena na někoho jiného. U konkrétní adresy je součet všech částek UTXO zůstatkem peněženky adresy. Procházením všech UTXO můžeme získat aktuální zůstatek každé adresy. Přidejte celkovou částku všech UTXO, abyste získali všechny bitcoiny, které jsou aktuálně v oběhu.
Ve struktuře bitcoinových transakcí každá transakce zahrnuje několik vstupů a výstupů, kde každý vstup je odkazem na existující UTXO a každý výstup specifikuje novou adresu pro příjem fondu a odpovídající částku. Jakmile je transakce zahájena, UTXO, na které odkazuje jeho vstupní část, je dočasně uzamčeno, aby se zabránilo opětovnému použití, dokud nebude transakce dokončena. Teprve když je transakce těžaři úspěšně zabalena do bloku a potvrzena sítí, změní se související stav UTXO. Konkrétně UTXO použité jako vstupy do transakce jsou odstraněny ze seznamu UTXO, což znamená, že byly spotřebovány, zatímco výstupy transakce generují nové UTXO a jsou přidány do seznamu UTXO. Rozumí se, že po použití starého pokladního šeku pozbývá platnosti a je vygenerován nový pokladní šek, jehož vlastnictví náleží novému držiteli.
Je třeba zdůraznit, že každé UTXO lze v transakci použít pouze jednou. Jakmile je spotřebován jako vstup, je trvale odstraněn ze seznamu UTXO. Zároveň je nově vygenerovaný výstup přidán do seznamu jako nový UTXO. Seznam UTXO se neustále mění a s každým novým blokem se odpovídajícím způsobem aktualizuje. A analýzou historie transakcí v blockchainu jsme schopni rekonstruovat stav seznamu UTXO v jakémkoli daném okamžiku.
Navíc celková vstupní částka transakce obvykle mírně převyšuje její celkovou výstupní částku. Tento rozdíl, nazývaný transakční poplatek nebo síťový poplatek, je dán jako pobídka pro těžaře odpovědné za balení transakcí do bloků. Velikost síťového poplatku je přímo úměrná složitosti transakce, takže transakce s více vstupy a výstupy bude obecně vyžadovat vyšší síťový poplatek.
Nyní, abychom lépe porozuměli transakční struktuře bitcoinu, provedeme hloubkovou analýzu na konkrétním příkladu. Transakční struktura bitcoinu je následující, kde dvě proměnné vin a vout představují „vstup“ a „výstup“ bitcoinové transakce. Bitcoinové transakce nezaznamenávají změny dat ve tvaru účtu jako tradiční model zůstatku účtu, ale jsou reprezentovány vstupy a výstupy.
const std::vector<CTxIn> vin;const std::vector<CTxOut> vout;const int32_t nVersion;const uint32_t nLockTime;
K analýze můžeme náhodně vybrat záznam transakce na blockchain.com. Obrázek níže ukazuje transakci s hash ID 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Obsahuje jeden vstup a dva výstupy.
Pomocí bitcoin-cli příkazů getrawtransaction a decoderawtransaction můžeme zobrazit základní strukturu výše uvedené transakce:
{"version": 1,"locktime": 0,"vin": [{"txid": "7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18","221ig":0505 6652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea2f806edb]69384e8cALLedb533 f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a8dfa"5cc17b4a10dfa33s }],"vout": [{"value": 0,01500000,"scriptPubKey": "OP_DUP OP_HASH160 ab68025513c3dbd2f7b92a94e0581f5d50f654e7 OP_EQUALVERIGY" OP_EQUALVERIGY0},05" OP_EQUALVERIGY0},05" OP_EQUALVERIFY0},05" OP_EQUALVERIFY0},05" ubKey": "OP_DUP OP_HASH160 7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8 OP_EQUALVERIFY OP_CHECKSIG",}]}
V bitcoinové síti obsahuje transakční výstup dvě důležité informace: adresu (haš veřejného klíče) a částku (v bitcoinech). Pokud není výstup transakce použit na vstupu jiných transakcí, pak se výstup transakce nazývá nevyčerpaný transakční výstup (UTXO). Kdo vlastní soukromý klíč odpovídající veřejnému klíči v UTXO, má právo toto UTXO používat (tedy utrácet).
Podívejme se na informaci ve "vin" ve výše uvedeném kódu. Označuje, že UTXO vynaložené touto transakcí pochází z 0. výstupu (výstup transakce může mít násobek, index je od 0 počátečního čísla), můžeme najít výše tohoto UTXO z historických transakcí (například 0,1), takže při této transakci uživatel utratil 0,1 BTC a hodnotu 0,1 není třeba zapsat explicitně do transakce, ale vyhledáváním UTXO se získá informace. "Vout" této transakce má dva výstupy. Tyto dva výstupy jsou dva nové UTXO, odpovídající novému zůstatku a držiteli, dokud je další transakce nespotřebuje jako vstup.
Platební model
Abychom lépe porozuměli platebnímu modelu bitcoinové sítě, na příkladu představíme platební proces, ve kterém A zaplatí B částku n bitcoinů. Obrázek níže ukazuje proces, kdy uživatel A posílá 3 bitcoiny uživateli B.
Pro uživatele A je v první řadě nutné určit množinu všech UTXO, které vlastní, tedy všechny Bitcoiny, které může uživatel A ovládat;
A vybere jedno nebo více UTXO z této sady jako vstup transakce. Součet částek těchto vstupů je m (2+0,8+0,5=3,3 BTC), což je větší než částka k zaplacení n (3 BTC );
Uživatel A nastaví dva výstupy pro transakci, jeden výstup je placen na adresu B, částka je n (3 BTC) a druhý výstup je placen na vlastní změnu adresy A, částka je m-n-poplatek (3,3-3-0,001 = 0,299 BTC). Peněženka uživatele se obvykle skládá z více adres.Obecně je každá adresa použita pouze jednou a změna je standardně vrácena na novou adresu;
Poté, co těžař zabalí transakci a nahraje ji do řetězce pro potvrzení, může B obdržet informace o transakci. Protože velikost bloku má horní limit (přibližně 1 MB), budou těžaři upřednostňovat transakce s vysokými transakčními rychlostmi (fee_rate=fee/velikost), aby dosáhli nejvyšší návratnosti poplatků. Situaci poplatků za transakce těžby v reálném čase můžeme vidět v mempoolu. Pokud chceme nejrychlejší potvrzení během procesu převodu, můžeme zvolit vysokou prioritu nebo upravit vhodnou transakční sazbu;
2. Číslování a sledování kongu
Celkový počet bitcoinů je 21 milionů a každý bitcoin obsahuje 10^8 Satoshi (Satoshi, Sat). Na bitcoinové síti je tedy celkem 21 milionů*10^8 satoshi. Protokol Ordinals rozlišuje tyto satoshi a přiděluje každému satoshi jedinečné číslo. Tato část představí, jak tento protokol jedinečně čísluje každé Satoshi a jak sleduje účet, ke kterému patří. Kromě toho bude také představena klasifikace vzácnosti satoshi.
Satoshiho číslo
Podle protokolu Ordinals jsou satoshi číslovány podle pořadí, ve kterém jsou těženy. Obrázek níže ukazuje znázornění 0. satoshi těženého v 0. bloku.
Existuje mnoho způsobů, jak vyjádřit satoshi:
Symbol celého čísla: Například 2099994106992659, což představuje sériové číslo přidělené satoshi podle těžebního řádu.
Desetinný zápis: Například 3891094.16797, první číslo udává výšku bloku, kde se satoshi těžilo, a druhé číslo udává počet satoshi v bloku.
Symbol stupně: Například 3°111094′214″16797‴, první číslo je tečka, číslovaná od 0, druhé číslo je index bloku půlící epochy a třetí číslo je index bloku během obtížnosti období úpravy , poslední číslo je index sat v bloku.
Symbol procenta: Například 99,99971949060254 % označuje pozici satoshi v nabídce bitcoinů, vyjádřenou v procentech.
Název: Například Satoshi. Název, který kóduje pořadové číslo pomocí znaků a až z.
Na příkladu si vysvětlíme, jak nově vytěžené bitcoiny číslovat. Při pohledu na blok 795952 bitcoinového blockchainu můžeme vidět, že první transakce Tx 3a1f...b177 zaznamenává odměnu těžaře (coinbase transakci). Tato transakce zahrnuje nově vytěžené bitcoiny, které se používají jako odměny za balení pro těžaře, a také manipulační poplatky, které těžařům platí iniciátor transakce. Když se podíváme na vstup na obrázku níže, zjistíme, že jeho UTXO id se skládá z řetězce 0s a výšky bloku. Výstupní adresa je adresa peněženky těžaře a částka je součtem výše uvedených odměn a manipulačních poplatků.
Pokud se podíváme dále na výstup pro těžaře, můžeme vidět rozložení adres, množství a obsažených satoshi. Jak již bylo zmíněno dříve, zahrnují těžební odměny a poplatky. Mezi nimi informace o čísle zeleného satoshi 1941220000000000–1941220625000000 je nové satoshi generované odměnou za těžbu a zbývajících 712 záznamů satoshi odpovídá všem manipulačním poplatkům v bloku.
Můžeme ověřit číslo Sat 1941220000000000. Jeho číslo bloku je 795952 a desítkový zápis (desetinný) je 795952.0, což znamená, že výška bloku těžby tohoto satoshi je 795952, počet satoshi v tomto bloku je 0 a následná značka rarity (vzácnosti) je neobvyklá. To bude podrobně vysvětleno v další části.
Oběh Cong
Protože každý BTC je generován prostřednictvím odměn za těžbu, jsou všechny sledovatelné. Bitcoinové účty používají model UTXO. Předpokládejme, že uživatel A získá 100.-110. satoshi těžbou (10 satoshi je uloženo jako celek ve stejném UTXO s ID adc123). Když chce uživatel A zaplatit 5 satoshi uživateli B, rozhodne se použít ID abc123 jako vstup transakce, z nichž 5 satoshi dostane uživatel B a 5 satoshi se vrátí uživateli A jako změna. Tyto dvě kopie 5 satoshi jsou jeden celek a jsou uloženy ve dvou UTXO s ID abc456 a abc789. Výše uvedené UTXO id a počet satoshi jsou uvedeny pouze jako příklady.Ve skutečných situacích je minimální počet odeslaných satoshi omezen na 546 a UTXO id není v této podobě vyjádřeno.
Ve výše uvedené transakci je cesta oběhu 10 satoshi uživatele A:
Těžba produkuje 10 satoshi, očíslovaných [100, 110). To znamená, že 100. až 109. satoshi je uloženo v UTXO s id abc123 a jeho vlastníkem je uživatel A.
Když A převede peníze, 10 satoshi se rozdělí na dvě části, každá po 5 satoshi. Je zde použit princip „první dovnitř, první ven“, to znamená, že pořadí počtu satoshi je určeno podle jejich indexu ve výstupu transakce. Předpokládejme, že pořadí výstupu je nejprve uživatel A, poté uživatel B, pak sériové číslo zbývajících 5 satoshi uživatele A je [100, 105), uložené v UTXO s ID abc456, a sériové číslo 5 satoshi uživatele B je [105, 110), uložené v UTXO s id abc789.
Vzácnost (vzácné satoshi)
Jako vedlejší produkt protokolu Ordinals lze vzácnost satoshi definovat na základě pořadí, ve kterém jsou těženy. To bude mít za následek některé speciální satoshi s různými raritami. Zde jsou úrovně vzácnosti různých satoshi:
běžné: Jakékoli satoshi kromě prvního satoshi v bloku (celková nabídka je 2 100 bilionů)
neobvyklé: první satoshi v každém bloku (celková zásoba je 6 929 999)
vzácné: první satoshi v každém období úpravy obtížnosti (celková zásoba 3437)
epos: první satoshi po každém půlení (celková zásoba je 32)
legendární: první satoshi každý cyklus (celková zásoba je 5)
mýtus: první satoshi v bloku geneze (celková zásoba je 1)
Tento koncept vzácných satoshi může přidat více zajímavosti a hodnoty do ekosystému bitcoinů. Satoshi různých rarit mohou mít na trhu různé hodnoty a přitahovat sběratele a investory.
3. Způsob zápisu
Ordinals se výrazně liší od NFT na jiných nebitcoinových řetězcích. Hlavním rozdílem je, že metadata pořadových řádků nejsou uložena na konkrétním místě. Namísto toho jsou tato metadata vložena do svědeckých dat transakce (data svědků, pole svědků), proto to nazýváme „nápis“, protože tato data jsou „vyryta“ do bitcoinu jako nápis. Na konkrétní části transakce, data jsou připojena ke konkrétnímu Satoshi. Tento proces zápisu je implementován prostřednictvím Segregated Witness (SegWit) a Pay-to-Taproot (P2TR), které zahrnují dvě fáze: potvrzení a odhalení, což může Jakákoli forma obsahu (jako je text, obrázky nebo videa) je napsána na určeném satoshi. Níže představíme další přímější způsob ukládání OP_RETURN a vysvětlíme, proč se nepoužívá jako prostředek zápisu. Zároveň si představíme, co jsou Segregated Witness a Pay-to-Taproot a jakou roli hrají v Inscription. Nakonec si představíme způsob zápisu.
OP_RETURE
V klientovi Bitcoin Core verze 0.9 bylo nakonec kompromisu dosaženo přijetím operátora RETURN. **RETURN umožňuje vývojářům přidat k výstupu transakce 80 bajtů neplatebních dat. **Na rozdíl od pseudoplateb vytváří RETURN explicitně ověřitelný, nekonzumovatelný výstup, který nemusí být uložen v sadě UTXO. Výstupy RETURN se zaznamenávají na blockchain, spotřebovávají místo na disku a zvětšují velikost blockchainu, nejsou však uloženy v sadě UTXO, takže nerozšíří paměťový fond UTXO a nezvýší počet plných uzlů. Drahé náklady na paměť.
Zatímco OP_RETURN je velmi přímočarý způsob ukládání informací do bitcoinového blockchainu, je to také potenciální způsob zápisu. Ale kvůli omezením OP_RETURN musí čelit některým problémům při práci s ukládáním metadat. Za prvé, OP_RETURN dokáže uložit pouze 80 bajtů dat.Pro situace, kdy je potřeba uložit větší množství dat, je toto omezení zjevně nevyhovující. Za druhé, data OP_RETURN jsou uložena v transakční výstupní části, která sice nejsou uložena v sadě UTXO, ale zabírají úložný prostor blockchainu, což vede ke zvětšení velikosti blockchainu. A konečně, použití OP_RETURN má za následek vyšší transakční poplatky, protože za zaúčtování těchto transakcí je třeba zaplatit více.
Segregovaný svědek
Naproti tomu nová metoda poskytovaná SegWit může výše uvedené problémy překonat. SegWit je důležitý upgrade protokolu pro bitcoiny. Navrhl jej vývojář bitcoinového jádra Pieter Wuille v roce 2015 a nakonec byl oficiálně přijat ve verzi 0.16.0 v roce 2017. Segregated v Segregated Witness znamená oddělení a izolaci.Witness je podpisová věc související s transakcí. Proto SegWit odděluje určitá data podpisu transakce (data svědků) od transakce.
Hlavní výhodou oddělení podpisů od dat souvisejících s transakcemi je zmenšení velikosti dat uložených v bitcoinovém bloku. To má extra kapacitu na blok pro uložení více transakcí, což také znamená, že síť může zpracovat více transakcí a odesílatelé platí nižší poplatky. Technicky vzato to znamená vyjmout informace o podpisu skriptu (scriptSig) ze základní struktury (základního bloku) a umístit je do nové datové struktury. Uzly a těžaři provádějící ověřovací práci také ověří podpis skriptu v této nové datové struktuře, aby zajistili, že transakce je platná. Upgrade Segwit zavádí nové pole svědků v transakčních výstupech, aby bylo zajištěno soukromí a výkon. Přestože data svědků nejsou navržena pro ukládání dat, ve skutečnosti nám umožňují ukládat věci, jako jsou metadata nápisů. Abychom lépe porozuměli Segregovaným svědkům, používáme následující obrázek:
kůlový kořen
P2TR je typ bitcoinu s transakčním výstupem, který byl představen v upgradu Taproot v roce 2021, což umožňuje soukromější ukládání různých transakčních podmínek v blockchainu. V nápisu Ordinals hraje P2TR zásadní roli. Inscription v podstatě vkládá konkrétní datový obsah do bitcoinových transakcí a upgrady Taproot, zejména P2TR, činí toto vkládání dat flexibilnějším a ekonomičtějším.
Za prvé, díky způsobu, jakým jsou Taproot skripty ukládány, můžeme obsah nápisů ukládat do skriptů výdajů na cestu skriptu Taproot, které nemají téměř žádná omezení obsahu, a zároveň získávají slevy na data svědků, díky čemuž je ukládání obsahu nápisů relativně ekonomické. Protože použití skriptů Taproot lze provést pouze z již existujícího výstupu Taproot, Inscription používá dvoufázový proces potvrzení/odhalení. Nejprve se v transakci potvrzení vytvoří výstup Taproot, který slibuje skript obsahující obsah nápisu. Potom je v transakci odhalení spotřebován výstup vytvořený transakcí potvrzení, čímž se odhalí obsah nápisu v řetězci.
Tento přístup výrazně snižuje spotřebu zdrojů. Pokud se P2TR nepoužije, informace o svědcích se uloží do výstupu transakce. Tímto způsobem, dokud nebude tento výstup spotřebován, budou informace o svědcích vždy uloženy v sadě UTXO. Naproti tomu, pokud se použije P2TR, informace o svědkovi se neobjeví v transakci generované během fáze potvrzení, takže nebudou zapsány do sady UTXO. Pouze když je toto UTXO spotřebováno, objeví se informace o svědkovi v transakčním vstupu během fáze odhalení. P2TR umožňuje zápis metadat do bitcoinového blockchainu, ale nikdy se neobjeví v sadě UTXO. Protože údržba/úprava sady UTXO vyžaduje více zdrojů, může tento přístup ušetřit spoustu zdrojů.
nápis
Protokol Ordinals využívá SegWit k uvolnění limitu velikosti obsahu zapsaného do bitcoinové sítě a ukládání obsahu nápisu do dat svědků. Umožňuje uložit až 4 MB metadat. Taproot usnadňuje ukládání libovolných svědeckých dat v bitcoinových transakcích, což umožňuje vývojáři Ordinals Casey Rodarmorovi znovu použít staré operační kódy (OP_FALSE, OP_IF, OP_PUSH) do toho, co popisuje jako „obálky“ pro to, co nazývá „inscription“ úložiště Libovolná data.
Proces odlévání nápisů se skládá z následujících dvou kroků:
Nejprve musíte vytvořit transakci potvrzení pro Taproot výstup skriptu obsahující obsah nápisu. Formát úložiště je Taproot, to znamená, že výstupem předchozí transakce je P2TR (Pay-To-Taproot) a vstup další transakce je vložen ve specifickém formátu do kontrolovaného skriptu Taproot; nejprve je řetězec ord nasunul na stoh, aby se vyloučila nejednoznačnost, že nápis má jiné využití. OP_PUSH 1 udává, že další push obsahuje typ obsahu a OP_PUSH 0 udává, že následná data push obsahují samotný obsah. Velké nápisy musí používat více datových push, protože jedním z mála omezení taprootu je, že jeden datový push nemůže být větší než 520 bajtů. V tuto chvíli byla data zápisu namapována na UTXO transakčního výstupu, ale nebyla zveřejněna.
Za druhé, výstup vytvořený transakcí potvrzení musí být spotřebován v transakci odhalení. V této fázi je transakce zahájena použitím UTXO odpovídajícího tomuto nápisu jako vstupu. V této době byl odpovídající obsah nápisu zveřejněn na celém internetu.
Prostřednictvím výše uvedených dvou kroků byl obsah nápisu svázán s vepsaným UTXO. Podle výše uvedeného umístění Satoshi je zápis proveden na první Satoshi odpovídající vstupu UTXO a obsah nápisu je zahrnut do vstupu zobrazené transakce. Podle výše uvedeného úvodu do oběhu a sledování satoshi lze tyto satoshi s vyrytým speciálním obsahem přenášet, kupovat, prodávat, ztrácet a získávat zpět. Je třeba poznamenat, že opakované nápisy nejsou povoleny, jinak budou následující nápisy neplatné.
Tento proces si podrobně vysvětlíme na příkladu gravírování malého BTC NFT obrázku Tento proces zahrnuje především dvě výše zmíněné fáze potvrzení a odhalení. Nejprve vidíme, že hash ID první transakce je 2ddf9...f585c. Je možné poznamenat, že výstup této transakce neobsahuje údaje o svědcích a na webové stránce nejsou žádné relevantní informace o nápisu.
Dále zkontrolujeme záznam druhé fáze, jehož hash ID je e7454...7c0e1. Zde vidíme informaci nápisu Ordinals, který je obsahem nápisu svědectví. Vstupní adresa této transakce je výstupní adresa předchozí transakce a výstupní 0,00000546BTC (546 Satoshi) slouží k odeslání tohoto NFT na vaši vlastní adresu. Zároveň najdeme i satoshi, kde se tento nápis nachází v So 1893640468329373.
V bitcoinové peněžence můžeme vidět toto aktivum. Pokud chceme tento NFT obchodovat, můžeme ho poslat přímo na cizí adresy, tedy poslat toto UTXO, čímž dokončíme přenos nápisu.
4. Bitcoinová peněženka
Poté, co pochopíme, co je ekologie Ordinals, oběh satoshi a s tím související znalost nápisů, existuje v současné době mnoho aplikačních scénářů, ať už se jedná o vznik BRC-20, ORC-20, BRC-721, GBRC-721 a další související odvozené protokoly, které vyžadují Máme odpovídající peněženky pro podporu a zobrazení informací o tokenu nebo malých obrázků NFT. V této části představíme koncepty a charakteristiky různých adres bitcoinových peněženek.
Bitcoinové adresy začínají 1, 3 nebo bc1. Stejně jako e-mailové adresy je lze sdílet s ostatními uživateli bitcoinů, kteří je mohou používat k odesílání bitcoinů přímo do svých vlastních peněženek. Z hlediska bezpečnosti bitcoinové adresy neobsahují nic citlivého. Může být zveřejněn kdekoli, aniž by byla ohrožena bezpečnost vašeho účtu. Na rozdíl od e-mailových adres lze nové adresy vytvářet kdykoli podle potřeby, přičemž všechny vloží prostředky přímo do vaší peněženky. Ve skutečnosti mnoho moderních peněženek automaticky vytváří novou adresu pro každou transakci, aby se maximalizovalo soukromí. Peněženka je jednoduše sbírka adres a klíčů, které odemykají finanční prostředky v ní. Nejprve musíme vědět, jak se generuje adresa bitcoinové peněženky.
Bitcoin soukromé a veřejné klíče
Bitcoin používá eliptickou křivku Secp256k1. „Soukromý klíč“ je náhodné číslo mezi 1 a n-1. n je velké číslo (256 bitů). n je vyjádřeno ve vědecké notaci takto:
Tento rozsah je extrémně velký a je pro nás téměř nemožné uhodnout soukromé klíče jiných lidí. Tento náhodný celočíselný soukromý klíč může být reprezentován 256 bity a existuje několik metod kódování. Pokud soukromý klíč ve WIF nebo WIF-komprimované podobě není zašifrován, lze původní „náhodné celé číslo“ získat jeho dekódováním. Dalším způsobem je BIP38, který navrhuje k zašifrování soukromého klíče použít algoritmus AES. Privátní klíč získaný touto metodou začíná znakem 6P. Tento druh soukromého klíče musí před importem do různých bitcoinových peněženek zadat heslo. To je to, co obvykle děláme. Běžně používané soukromé klíče.
Potom použijeme vzorec eliptické křivky K = kG ke generování veřejného klíče bitcoinu K ze soukromého klíče k. G je základní bod, což je parametr secp256k1. Lze získat dvě souřadnice K, což jsou dva výrazy veřejného klíče, a to "Nekomprimovaný formát" a "Komprimovaný formát".
Nekomprimovaný formulář slouží k přímému spojení dvou souřadnic x a y dohromady a poté přidání předpony 0x04;
Komprimovaný tvar znamená, že když y je sudé číslo, kód je 02 x, a když je y liché číslo, je kód 03 x;
Bitcoinová adresa
Různé typy bitcoinových adres jsou znázorněny na obrázku níže. Existují čtyři způsoby reprezentace:
Odkaz: https://en.bitcoin.it/wiki/Invoice_address
1. Starší formát (P2PKH).
Příklad: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u
Adresy začínající na „1“ jsou původním formátem adresy bitcoinu a používají se dodnes. Vypočítává se z veřejného klíče pomocí Hash, známého také jako P2PKH, což je zkratka Pay To PubKey Hash (platba za hash veřejného klíče).
2. Vnořený formát SegWit (P2SH).
Příklad: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN
Adresa začíná „3“ a P2SH je zkratka Pay To Script Hash, která podporuje složitější funkce než starší adresy. Vnořený P2SH, vezme existující P2SH adresu (začínající "3") a zapouzdří ji s adresou SegWit.
3. Nativní formát SegWit (Bech32).
Příklad: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
Adresy začínající na bc1 jsou navrženy v BIP0173, což jsou nativní adresy SegWit. Kódovaná adresa Bech32 je formát adresy speciálně vyvinutý pro SegWit. Bech32 byl definován v BIP173 na konci roku 2017. Jedním z hlavních rysů tohoto formátu je, že nerozlišuje velká a malá písmena (adresa obsahuje pouze 0-9, a-z), takže může účinně zabránit zmatkům při zadávání a je čitelnější . Protože adresa vyžaduje méně znaků, adresa používá kódování Base32 namísto tradičního Base58, díky čemuž jsou výpočty pohodlnější a efektivnější. Data mohou být uložena těsněji v QR kódech. Bech32 poskytuje větší bezpečnost, lépe optimalizovaný kód detekce chyb kontrolního součtu a minimalizuje možnost neplatných adres.
Samotné adresy Bech32 jsou kompatibilní se SegWit. Pro vložení adresy SegWit do adresy P2SH není potřeba žádné další místo, takže při použití adresy ve formátu Bech32 bude manipulační poplatek nižší. Adresy Bech32 mají několik výhod oproti starším Base58 (kódování Base58Check se používá ke kódování bajtových polí v bitcoinech do lidských kódovatelných řetězců) adres: QR kódy jsou menší; lépe odolné proti chybám; bezpečnější; nerozeznatelné Velká a malá písmena; skládají se pouze z malých písmen , takže je snadnější číst, psát a rozumět.
4. Formát Taproot (P2TR)
Bech32 má nevýhodu: pokud je posledním znakem adresy p, pak vložení nebo vymazání libovolného počtu znaků q bezprostředně před p nezruší její kontrolní součet.
Pro zmírnění výše uvedených nedostatků Bech32 byla v BIP0350 navržena adresa Bech32m:
Pro nativní adresy SegWit verze 0 použijte předchozí Bech32;
Pro nativní adresy SegWit verze 1 (nebo vyšší) se používá nový Bech32m.
Pro adresy Bech32m, když je verze 1, vždy začínají bc1p (tj. Taproot adresy). Konkrétně, stejně jako nativní SegWit, může být peněženka složena z počáteční fráze a přístupové fráze. Ty se používají ke generování rozšířených veřejných a soukromých klíčů používaných k odvození adres pro libovolné cesty v hierarchické deterministické peněžence. Ukládá hlavně BRC-20 a BTC NFT atd.


