mb_workshop

přihlášení | matematika_bitcoinu/

  1. číselné soustavy a kódování
  2. diffie-hellman
  3. ECC

ECC obecně – grafická interpretace

ECC „diskrétní“ – modulární operace
grupa
abelova, cyklická
inversní prvek
modulo prvočíslo
ecc mod 17,
k10 = k2+k8
mod 31
k27 = (110011) | >> (k_bin) double… add

torus



4. zrníčka písku

5. adresy

6. transakce

blockchain

halving



„osmibitový bitcoin“

hledání maximálního zjednodušení, kde už fungují principy používané v bitcoinovém protokolu

K = k * G


Tests & Examples

multi_inv * modular inverse 1–256
simple_ecc * jumps for different mod
donut * test_donut

ECC17 | ESS251
tests_examples/simple_ecc251ec jumps on curve 251
tests_examples/simple_ecc17add.html op. on curve 17
tests_examples/simple_ecc251script.html P2PK script

ASH24
ash24_visual.html hash24
test_ash24 hash24
demo_24mining ash24 fast mining


Send
1. najdi UTXO owner = FROM, spent = 0
2. vezmi txid z toho UTXO → prev_txid
3. message = FROM | prev_txid | TO | amount
4. sign
5. insert transaction
6. mark UTXO spent
7. create new UTXO

{ 
"status": "ok",
"type": "p2pk",
"txid": 1230,
"vin": [
{ "txid": 1216,
"value": 3,
"scriptSig": { "sig": "16d4", "pub": "83ca" }
} ],
"vout": [
{ "value": 3,
"scriptPubKey": { "pub": "7214", "op": "OP_CHECKSIG" } } ],
"date_time": "2026-03-16 18:39:36"
}

Claim = vytvoření nové transakce

Co se musí podepsat

Podpis musí pokrýt:

FROM | prev_txid | TO | value

tedy

7214|1230|83ca|2

hash:

h = ASH24(message)

scriptSig (unlock)

scriptSig:
{
sig: sign(priv7214, h)
pub: 7214
}

Při „claimnutí“ (utracení) p2pk transakce se z existujícího UTXO vytvoří nová transakce, která obsahuje vin odkazující na předchozí txid a vout definující nové vlastníky, přičemž skript ověřuje, že odesílatel má právo daný výstup utratit.

Nejprve se z databáze UTXO načte výstup z transakce txid=1230, který obsahuje scriptPubKey {pub:7214, op:OP_CHECKSIG}, což znamená, že utratit jej může pouze držitel privátního klíče k veřejnému klíči 7214.

Při vytváření nové transakce (např. txid=1231) se do vin vloží {txid:1230, value:3, scriptSig:{sig, pub:7214}}, kde podpis vznikne ze zprávy sestavené ve tvaru FROM|prev_txid|TO|value, tedy např. 7214|1230|83ca|2, která se zahashuje funkcí ASH24 a podepíše pomocí ESS251 (sig = sign(priv7214, hash)).

Verifikační skript pak provede simulaci bitcoin-like scriptu tak, že vezme scriptSig, načte odpovídající scriptPubKey z UTXO, spočítá hash zprávy a ověří podpis pomocí rovnice s·G = R + e·Q (OP_CHECKSIG / verifyToy); pokud je výsledek platný, vstup je považován za odemčený, původní UTXO se označí jako spent a vytvoří se nové UTXO podle vout, např. {value:2 → 83ca} a {value:1 → 7214} jako change.

Celý průběh tedy odpovídá schématu UTXO → scriptPubKey (lock) → scriptSig (unlock) → verify → mark spent → create new UTXO, což je zjednodušený model bitcoinového skriptu s operací OP_CHECKSIG, jen s křivkou ESS251 a hashováním ASH24.