Vybrané termíny

| seed | transaction | wallet | blockchain | hashrate | halving |


Seed

Hoďte si 128x mincí, zapište rub (panna) třeba jako 1 a líc (orel) jako 0.
Dvanáct slov seedu získáme přidáním 4 bitů jako „checksum“, obdržíme tak 123 bitů.
Checksum je hash SHA256(entropy128) a použijeme pouze jeho 4 první bity.
128 + 4 = 132 a potom 132 / 11 = 12
Takže rozdělením na jedenáctice bitů můžeme „entropii získané házením mincí“ jednoznačně přiřadit slova z množiny 2048 vybraných slov.
211 = 2048

Jak z entropie získáme privátní klíč?
To už tak triviální není 😉
root seed: HMAC-SHA512 (2048 rounds)“ -> seed_bytes
root priv. key: ver+…+LEFT (master_chain) | 00+master priv. (RIGT)


Blockchain

zřetězení bloků dat, které jsou na sebe kryptograficky navázané (každý blok má i odkaz na HASH předchozího bloku) – data obsahují zápisy transakcí (decentralizovaného systému)
Je to tedy veřejná nezávisle auditovatelná chronologicky řazená neměnná databáze distribuovaná P2P

| merkle tree | replay attack | double spending |

P2P – peer to peer (rovný s rovným) https://cs.wikipedia.org/wiki/Peer-to-peer

HASH – jedinečný digitální „otisk“ – matematicky je dána velká „vzácnost“ (vysoká entropie)

asymetrická kryptografie – využívá se pro autentifikaci transakcí
Public Key – klíč veřejný (jméno nebo adresa) – umožní ostatním ověřit…
Private Key – klíč privátní (umožní unikátní digitální podpis) – tím „podepisujeme“
(např. transakci) | wif | bip39 – seed | bip38 |
xPub (Extended Public Key)

ECDSA je asymetrický algoritmus pro digitální podpis z rodiny eliptických křivek:
ECC – Elliptic curve cryptography
https://en.bitcoin.it/wiki/Secp256k1

wif – Wallet Import Format:
is a way of encoding a private ECDSA key so as to make it easier to copy
https://en.bitcoin.it/wiki/Wallet_import_format

base58 https://en.bitcoin.it/wiki/Base58Check_encoding (aby se nepletlo 0 a O / 1 a l)

 code_string = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" 

Hashrate

Hashrate je míra výpočetní síly v bitcoinové síti, která se používá k těžbě nových bloků a ověřování transakcí. Čím vyšší je hashrate, tím více výpočetních operací (hashů) může síť provést za sekundu. V praxi to znamená, že vyšší hashrate zvyšuje bezpečnost sítě tím, že ztěžuje možnost útoku nebo zneužití sítě.

Složitost je dána „délkou“ hashe tak, že se hledá hash s nějakým počtem nul na začátku (ty se nepočítají, takže se jakoby „škrtají“, protože například 000123 je bráno jako kratší 123). Těžaři zkouší do hashovací funkce přidávat „nonci“ nebo se snaží přeuspořádat transakce tak, aby hash výsledného vstupu odpovídal zadání o určitém počtu nul na začátku.
https://www.agamapoint.com/ukazky-kodu/ (hned na začátku SHA256)

============================== 2
Nonce found: 263 -> Agama Point 263
SHA256 Hash: 00999ac48b71fc267a67f78bb379d554020d062343d344269d62d4b9f55b90b1
Function sub_mining took 0.0 seconds

============================== 3
Nonce found: 3439 -> Agama Point 3439
SHA256 Hash: 00059e3f5b79199b149f1da0535603c2f466dab975e07528b5c180b9a6616b9e
Function sub_mining took 0.017 seconds

============================== 4
Nonce found: 101339 -> Agama Point 101339
SHA256 Hash: 000036cb70be3b8235589a84b92ffefbee4344429f57235036a00c89f89ff6b3
Function sub_mining took 0.164 seconds

============================== 5
Nonce found: 411413 -> Agama Point 411413
SHA256 Hash: 0000031fc7878dfd5be258443c6d8ab63308c8ccaecc2829bb24ef3d72928de4
Function sub_mining took 0.651 seconds

============================== 6
Nonce found: 587451 -> Agama Point 587451
SHA256 Hash: 0000007f91c02305905d3583c461bb1985b8f957524b115a0287ab5bd0901f00
Function sub_mining took 1.027 seconds

============================== 7
Nonce found: 209949850 -> Agama Point 209949850
SHA256 Hash: 00000005434496a4937f988f644002737b4cda57137fd05f061690de6ca715a5
Function sub_mining took 317.216 seconds(5.29 min.)

============================== 8
Nonce found: 2664516175 -> Agama Point 2664516175
SHA256 Hash: 000000000233ed5eee2d7356789509b04887f318030d0d259c40e4d71e01965c
Function sub_mining took 3911.556 seconds(65.19 min.)

https://github.com/agama-point/agama_point_crypto/blob/main/test_mining_sha256.py

Obtížnost těžení se upravuje pravidelně (zhruba jednou za 14 dní)), aby se udržel průměrný čas mezi vytěžením bloků na zhruba 10 minutách. To znamená, že pokud hashrate sítě roste, obtížnost těžení se také zvyšuje, aby se udržel konzistentní čas mezi těžením bloků.

https://bitinfocharts.com/comparison/bitcoin-hashrate.html#alltime

Připomeňme si v rychlosti některé zkratky mocnin desíti, resp. násobky tisíci 😉

1030quettaQkvintilion1 000 000 000 000 000 000 000 000 000 000lat. decem – „deset“ 
1027ronnaRkvadriliarda1 000 000 000 000 000 000 000 000 000řec. a lat. – ‚ennea‘ a ‚novem‘ – „devět“
1024yottaYkvadrilion1 000 000 000 000 000 000 000 000řec. ὀκτώ – „osm“
1021zettaZtriliarda1 000 000 000 000 000 000 000fr. sept – „sedm“
1018exaEtrilion1 000 000 000 000 000 000řec. ἕξ – „šest“ (6 * 1000)
1015petaPbiliarda1 000 000 000 000 000řec. πέντε – „pět“ (5 * 1000)
1012teraTbilion1 000 000 000 000řec. τέρας – „netvor“
109gigaGmiliarda1 000 000 000řec. γίγας – „obrovský“
106megaMmilion1 000 000řec. μέγας – „velký“
103kiloktisíc1 000řec. χίλιοι – „tisíc“


https://www.agamapoint.com/satoshi/difficulty1.html (first automatic adjustment of the proof-of-work difficulty on 30 Dec 2009)
Úprava ze 4. února (2010) zvedla obtížnost z 1,34násobku na 1,82násobek.
obtížnosti z loňského roku. To znamená, že za stejné množství práce vygenerujete pouze 55 % mincí.


Zvednutí hashrate na dvojnásobek tak vlastně odpovídá „malému halvingu. 😉 stejně tak propad ceny na polovinu.


Halving

Ve zdrojovém kódu Bitcoinu je poměrně srozumitelně zakódována řada významných „automatických mechanismů“. Jedním z nich je událost, ke které dochází po každém vytěžení 210 000 „bloků“ (což vychází na interval přibližně jednou za čtyři roky). Nastane takzvaný halving – což znamená půlení odměny pro těžaře. Zatímco v „nulté“ epoše dostával těžař za vytěžení jednoho bloku odměnu 50 bitcoinů (denně se tak vytěžilo 7200 BTC), po prvním halvingu byla odměna poloviční – čili 25 bitcoinů (a v první epoše tak denně přibývalo 3600 BTC).
V roce 2024 (zahájení čtvrté epochy) je odměna snížena z 6.25 na 3.125 BTC/blok (takže denně se už nevytěží 900 ale jen 450 BTC). Následně někdy v roce 2028 dojde k dalšímu půlení, kdy se blok vytěží za 1.5625 BTC a denně jich tak bude o 225 více.




Transactions

transaction https://en.bitcoin.it/wiki/Transaction


HMAC – Keyed-hash Message Authentication Code
je typ autentizačního kódu zprávy počítané s použitím kryptografické HASHovací funkce v kombinaci s tajným šifrovacím klíčem > https://en.wikipedia.org/wiki/HMAC
UTXO – Unspent transaction output – neutracené transakční výstupy


Adresy



P2PK (Pay to public key). [*]
prozrazuje všem identifikátor příjemce a zbytečně plýtvá místem v bloku, velmi brzy nahrazeno novějšími typy.

P2PKH (Pay to public key hash)  [1*] (BIP44)
při útratě z P2PKH adresy odhaluje držitel svůj veřejný klíč

P2SH: Pay to script hash. [3*] (BIP16 / BIP49)
skript zde vytváří příjemce, zahashuje jej, a odesílatel platí právě na tento hash.
Taproot je(bude) technologie, která uchovává skript i jeho samotnou existenci tajné i po útratě (při kooperaci všech stran).


Bech32: Native SegWit / Witness [bc1*] (BIP84)
P2WPKH (Pay to Witness Public Key Hash / SegWit Pubkey Hash) je forma Segregated Witness (SegWit) adresa, která je odvozena z veřejného klíče (public key) pomocí hashovací funkce. Tento formát adresa obsahuje pouze hash veřejného klíče a je používán pro jednoduché platby .
K přístupu k finančním prostředkům v P2WPKH výstupu je potřeba důkaz vlastnictví odpovídajícího privátního klíče.

P2WSH (Pay to Witness Script Hash) je další forma SegWit adresy, která je používána pro složitější scénáře plateb, kde je vyžadováno vyhodnocení skriptu k uvolnění finančních prostředků. P2WSH umožňuje použití vlastních skriptů pro podmínky uvolnění finančních prostředků, což poskytuje větší flexibilitu než P2WPKH.

Bech32 testnet pubkey hash or script hash [tb1*]




Leading symbol(s) [1/3/bc1/…] – List_of_address_prefixes


MAST: Merklized Abstract Syntax Tree


BIPs

Bitcoin Improvement Proposals – je poměrně obsáhlé téma, proto se mu věnujeme podrobněji na samostatné stránce agamapoint.com/bips/