Vybrané termíny
| seed – mm_bips | address | wallet | wif | mining | hashrate |
chaos | entropie | generátor | hash | mmBIP32-84 | transakce | blockchain | halving |
…původně to byl pouze velmi stručný popis základních termínů, postupně se však jednotlivým termínům věnují samostatné stránky.
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
https://github.com/agama-point/agama_point_crypto/blob/main/test_ecdsa.py
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 😉
1030 | quetta | Q | kvintilion | 1 000 000 000 000 000 000 000 000 000 000 | lat. decem – „deset“ | |
1027 | ronna | R | kvadriliarda | 1 000 000 000 000 000 000 000 000 000 | řec. a lat. – ‚ennea‘ a ‚novem‘ – „devět“ | |
1024 | yotta | Y | kvadrilion | 1 000 000 000 000 000 000 000 000 | řec. ὀκτώ – „osm“ | |
1021 | zetta | Z | triliarda | 1 000 000 000 000 000 000 000 | fr. sept – „sedm“ | |
1018 | exa | E | trilion | 1 000 000 000 000 000 000 | řec. ἕξ – „šest“ (6 * 1000) | |
1015 | peta | P | biliarda | 1 000 000 000 000 000 | řec. πέντε – „pět“ (5 * 1000) | |
1012 | tera | T | bilion | 1 000 000 000 000 | řec. τέρας – „netvor“ | |
109 | giga | G | miliarda | 1 000 000 000 | řec. γίγας – „obrovský“ | |
106 | mega | M | milion | 1 000 000 | řec. μέγας – „velký“ | |
103 | kilo | k | tisíc | 1 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.
Adresy
vzhledem k rozsahu – máme samostatnou stránku: https://www.agamapoint.com/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.
Až 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*]
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/