Proof of Work: mining og vanskelighetsjustering
Implementer en PoW-miner og forstå søk etter nonce og målverdiens vanskelighetsgrad.
Proof of Work: mining og vanskelighetsjustering er en gratis leksjon i Cryptology Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cryptology Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cryptology Academy inneholder totalt 4 leksjoner.
Hva er Proof of Work?
Proof of Work (PoW) krever at en blokkprodusent utfører en beregningsmessig kostbar oppgave for å legge til en blokk. Dette motvirker spam og gjør det kostbart å skrive om kjeden. Det er billig å verifisere beviset (én hash). Å finne beviset krever mange hashberegninger.
Utfordringen ved mining
Bitcoin-PoW: Finn en nonce slik at SHA256d(block_header) < target. Target er et 256-biters tall. Et mindre target betyr at hashresultatet må ha flere innledende nuller, noe som gjør gyldige noncer sjeldnere og vanskeligere å finne.
Python-demonstrasjon av PoW
import hashlib def mine(data, difficulty): target = "0"*difficulty nonce = 0 while True: h = hashlib.sha256(f"{data}{nonce}".encode()).hexdigest() if h.startswith(target): return nonce, h nonce += 1 nonce, h = mine("block data", 4) print(nonce, h) # hash starts with "0000"
Vanskelighetsmål
Bitcoin-blokkhodet har et "bits"-felt som koder det gjeldende målet. Target = coefficient * 256^(exponent-3). Eksempel: bits=0x1703a30c → target = 0x03a30c * 2^(8*(0x17-3)) = et 256-biters tall som krever omtrent 72 innledende nullbiter.
Justering av vanskelighetsgrad
Bitcoin justerer vanskelighetsgraden for hver 2016. blokk (omtrent hver andre uke). Justering av målet: new_target = old_target * (actual_time / 2016 * 10 minutes). Hvis blokkene ble funnet raskere enn et gjennomsnitt på 10 minutter, reduseres målet (høyere vanskelighetsgrad). Hvis de ble funnet saktere, økes målet (lavere vanskelighetsgrad). Dette opprettholder en blokktid på omtrent 10 minutter.
Hashrate og sikkerhet
Nettverkets hashrate (H/s) måler den totale mining-kapasiteten. Høyere hashrate betyr mindre sannsynlighet per tidsenhet for å finne en gyldig nonce tilfeldig. For å skrive om k blokker trenger en angriper mer enn 50 % av nettverkets hashrate, opprettholdt i en tid som står i forhold til k*10 minutter.
51 %-angrep
Med >50 % hashrate kan en angriper: (1) mine en hemmelig forgrening, (2) inkludere eller utelate transaksjoner, (3) dobbeltbruke ved å publisere en lengre kjede etter at en betaling er bekreftet. Kan ikke: stjele andres mynter, opprette mynter fra ingenting eller reversere transaksjoner langt tilbake i kjeden.
ASIC-mining og sentralisering
Bitcoin-mining med SHA256d domineres av ASIC-er (Application-Specific Integrated Circuits) – brikker som er optimalisert for én enkelt hashfunksjon. ASIC-er er 10^6 ganger mer effektive enn CPU-er. Dette konsentrerer mining i store datasentre og skaper bekymring for sentralisering.
Minnehard PoW
Ethereum brukte Ethash (nå avviklet) – en minnehard PoW som krever et stort DAG-datasett. Minnehardhet motvirker ASIC-er (det er vanskelig å optimalisere minnebåndbredde billig). Monero bruker RandomX (CPU-optimalisert, ASIC-resistent). Zcash bruker Equihash (minnehard).
Egoistisk mining
Strategien selfish mining går ut på å holde tilbake en funnet blokk, mine en blokk til og deretter slippe begge samtidig. Hvis timingen er riktig, sløser ærlige minere bort arbeid på blokken som blir foreldet. Strategien krever omtrent 33 % hashrate for å være lønnsom i gjennomsnitt, ikke 51 %.
Proof of Stake som alternativ
Proof of Stake (PoS, brukt av Ethereum etter The Merge) erstatter hash-arbeid med kryptovaluta som er satt i pant. Validatorer velges til å foreslå blokker i forhold til hvor mye de har satt i pant. PoS bruker 99,95 % mindre energi enn PoW. Avveiningen er andre tillitsantakelser og en annen angrepsøkonomi.
Hurtigsjekk
Hva prøver Bitcoins vanskelighetsjustering å opprettholde?
Oppsummering
PoW krever at man finner en nonce slik at SHA256d(header) < target. Vanskelighetsgraden justeres for hver 2016. blokk. 51 % hashrate muliggjør dobbeltbruksangrep. ASIC-er dominerer Bitcoin-mining, mens minneharde funksjoner motvirker ASIC-er. Neste tema: Bitcoin Script og UTXO-signaturer.
Lær deg Cryptology Academy med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 67
- Leksjoner
- 261
Ofte stilte spørsmål
Er leksjonen «Proof of Work: mining og vanskelighetsjustering» gratis?
Ja – hele teksten i «Proof of Work: mining og vanskelighetsjustering» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cryptology Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cryptology Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Proof of Work: mining og vanskelighetsjustering»?
Implementer en PoW-miner og forstå søk etter nonce og målverdiens vanskelighetsgrad. Du øver på Cryptology Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Cryptology Academy?
Ingen tidligere erfaring er nødvendig. Cryptology Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Proof of Work: mining og vanskelighetsjustering»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Cryptology Academy-leksjonen?
Ja. Alle Cryptology Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Hashkjeder og blokklenking
- Merkle-trær: transaksjonsintegritet i stor skala
- Proof of Work: mining og vanskelighetsjustering
- Bitcoin Script og UTXO-verifisering av signaturer