mb_workshop
přihlášení | matematika_bitcoinu/
- číselné soustavy a kódování
- diffie-hellman
- 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.



Nejnovější komentáře