Jak bitcoinové transakce ve skutečnosti fungují?

Ať už máte zájem stát se vývojářem pro blockchainové aplikace, nebo se jen snažíte pochopit, co se děje pod kapotou, když posíláte bitcoiny příteli, je dobré mít pracovní znalosti o tom, co se stane, když vytváříte a vysíláte bitcoin transakce do bitcoinové sítě. Proč?

Protože transakce jsou základní entitou, na jejímž vrcholu je vybudován bitcoinový blockchain. Transakce jsou výsledkem brilantní kolize kryptografie, datových struktur a jednoduchého skriptování bez úplného dokončení. Jsou dostatečně jednoduché na to, aby běžné typy transakcí nebyly příliš složité, ale dostatečně flexibilní, aby vývojářům umožnily kódovat i poměrně přizpůsobené typy transakcí. Dnes se vydáme na prohlídku bývalého.

Jak jako vývojář zaúčtuje váš bitcoinový klient novou transakci do sítě (a co se stane, když je přijata)?

Co přesně se děje, když pošlete nějaké bitcoiny příteli?

#Crypto ExchangeBenefits

1

Binance
Best exchange


VISIT SITE
  • ? The worlds biggest bitcoin exchange and altcoin crypto exchange in the world by volume.
  • Binance provides a crypto wallet for its traders, where they can store their electronic funds.

2

Coinbase
Ideal for newbies


Visit SITE
  • Coinbase is the largest U.S.-based cryptocurrency exchange, trading more than 30 cryptocurrencies.
  • Very high liquidity
  • Extremely simple user interface

3

eToro
Crypto + Trading

VISIT SITE
  • Multi-Asset Platform. Stocks, crypto, indices
  • eToro is the world’s leading social trading platform, with thousands of options for traders and investors.

Tento příspěvek bude předpokládat, že čtenář má základní znalosti o hašování, asymetrické kryptografii a P2P sítích. Je také dobrý nápad mít dobrý smysl pro to, co přesně blockchain je, i když nejste obeznámeni s žádnou konkrétní mechanikou.

Bitcoinové transakce a jejich role v širším kontextu

Bitcoin se skládá z několika hlavních částí: uzlů a blockchainu. Úlohou typického uzlu je udržovat vlastní verzi blockchainu a aktualizovat ji, jakmile uslyší „lepší“ (delší) verzi. Jednoduše řečeno, blockchain má bloky a bloky mají transakce.

S ohledem na tento zjednodušený, ale přesný obrázek by vás mohlo zajímat, z čeho přesně je transakce vytvořena.

  • Jak mi porozumění transakcí pomůže stát se lepším vývojářem blockchainu?
  • Jak mi transakce umožňují převést nějaké bitcoiny příteli?

Ukazuje se, že odpovědi na tyto otázky se liší v závislosti na mnoha věcech. I za předpokladu, že mluvíme pouze o bitcoinech, můžeme transakce využít mnoha kreativními způsoby k dosažení různých personalizovaných cílů. Začněme na začátku, to znamená, pojďme se podívat na dobrý staromódní typ transakce typu pay-to-PK-hash. Koneckonců, tento typ transakce představuje více než 99% všech transakcí na internetu bitcoinový blockchain.

#CRYPTO BROKERSBenefits

1

eToro
Best Crypto Broker

VISIT SITE
  • Multi-Asset Platform. Stocks, crypto, indices
  • eToro is the world’s leading social trading platform, with thousands of options for traders and investors.

2

Binance
Cryptocurrency Trading


VISIT SITE
  • ? Your new Favorite App for Cryptocurrency Trading. Buy, sell and trade cryptocurrency on the go
  • Binance provides a crypto wallet for its traders, where they can store their electronic funds.

#BITCOIN CASINOBenefits

1

Bitstarz
Best Crypto Casino

VISIT SITE
  • 2 BTC + 180 free spins First deposit bonus is 152% up to 2 BTC
  • Accepts both fiat currencies and cryptocurrencies

2

Bitcoincasino.io
Fast money transfers


VISIT SITE
  • Six supported cryptocurrencies.
  • 100% up to 0.1 BTC for the first
  • 50% up to 0.1 BTC for the second

Nejprve si vytvořme mentální model. Je lákavé myslet na bitcoiny jako na systém založený na účtu. Koneckonců, když někomu posílám bitcoiny, tato osoba dostává peníze a zbyl mi zbývající zůstatek. Ve skutečném světě jsou však věci představovány trochu jinak. Obecně řečeno, když někomu posílám peníze, posílám utrácení všech těchto peněz (minus transakční poplatky). Část těchto peněz bude utracena zpět na můj osobní účet, pokud zůstane zbývající zůstatek. Jde o to, že všechny peníze se pohnou pokaždé. Můžete přeskočit na sekci 3.1 Vysvětlení, proč je tento model vhodnější.

S ohledem na to můžeme zobecnit a říci, že bitcoinová transakce má určité vstupy a výstupy. Grafické znázornění může vypadat asi takto:

Jak bitcoinové transakce ve skutečnosti fungují?

Když jsem to poprvé viděl, bylo to pro mě trochu matoucí, takže to trochu rozvedu. Když zaúčtuji transakci, v podstatě „nárokuji“ výstup a dokazuji, že mám povolení utrácet částku peněz za tento výstup. Takže pokud jsem Bob a chci zaplatit Alici, tyto vstupy jsou mým důkazem, že jsem dostal určitou částku peněz (i když to může být jen část mého celkového zůstatku) a výstupy budou odpovídat účtu Alice . V tomto jednoduchém případě by existoval pouze jeden vstup a jeden výstup.

Hlubší pohled na bitcoinové transakce

Pojďme pochopit mechaniku skutečné bitcoinové transakce. Obrázek výše použijeme jako referenci.

Pokud byste přerušili typickou bitcoinovou transakci, skončili byste se třemi hlavními částmi: záhlaví, vstupy a výstupy. Podívejme se krátce na pole, která máme k dispozici v těchto částech, protože budou důležitá pro diskusi. Všimněte si, že se jedná o pole, která jsou v takzvané surové transakci. Surové transakce se vysílají mezi partnery, když je vytvořena transakce.

Záhlaví

  • hash: Hodnota této celé transakce. bitcoin obecně používá hodnoty hash jako ukazatel a prostředek ke kontrole integrity části dat. Na to se ještě podíváme v další části.
  • ver: Číslo verze, které by se mělo použít k ověření tohoto bloku. Nejnovější verze byla představena na měkké vidlici, která začala fungovat v prosinci 2015.
  • vin_sz: Počet vstupů do této transakce. Podobně vout_sz počítá počet výstupů.
  • lock_time: Podíváme se na to více v pozdějších článcích, ale to v zásadě popisuje nejranější čas, kdy lze do blockchainu přidat blok. Je to buď výška bloku, nebo časové razítko unixu.

Vstup

  • předchozí výstupní hash: Toto je hash ukazatel na dříve nevyčerpaný transakční výstup (UTXO). V zásadě jde o peníze, které vám patří a které se chystáte utratit za tuto transakci.
  • n: Index do seznamu výstupů předchozí transakce. Toto je skutečný výstup, který utrácíte.
  • scriptSig: Toto je výdajový skript, který dokazuje, že tvůrce této transakce má oprávnění utrácet peníze, na které odkazují 1. a 2.

Výstup

  • hodnota: Množství utraceného satoshi (1 BTC = 100 000 000 satoshi).
  • scriptPubKey: Druhý ze dvou skriptů poskytovaných v bitcoinové transakci, který ukazuje na hashovaný veřejný klíč příjemce. Více o tom v poslední části tohoto článku.

Ověření transakce

Jednou z úloh bitcoinového uzlu je ověření, že příchozí transakce jsou správné (data nebyla pozměněna, peníze se nevytvářejí, pouze zamýšlení příjemci utrácejí UTXO atd.). Podrobnější seznam je k dispozici online, ale zde uvedu několik důležitých:

  • Všechny výstupy nárokované vstupy této transakce jsou ve fondu UTXO. Nevyčerpané výstupy lze kdykoli nárokovat pouze jednou.
  • Podpisy na každém vstupu jsou platné. Přesněji řečeno, říkáme, že kombinované skripty se vracejí po jejich postupném provádění. Více o tom v poslední části.
  • Žádné transakce utratí UTXO více než jednou. Všimněte si, jak se to liší od první položky.
  • Všechny výstupní hodnoty transakce jsou nezáporné.
  • Součet vstupních hodnot této transakce je větší než součet jejích výstupních hodnot. Všimněte si, že pokud se čísla liší, rozdíl se považuje za transakční poplatek, který může miner požadovat.

Základní transakce s platbou za PK-hash

bitcoin má svůj vlastní skriptovací jazyk podobný Forthovi, který je dostatečně silný, aby vývojářům umožňoval vytvářet komplikované a vlastní typy transakcí. Existuje asi pět standardních typů transakcí, které jsou přijímány standardními bitcoinovými klienty [5], existují však i další klienti, kteří za poplatek přijmou jiné typy transakcí. Zde se budeme zabývat pouze mechanikou hash pay-to-PK.

Aby byla jakákoli transakce platná, musí kombinovaný pár scriptSig / scriptPubKey vyhodnotit jako true. Přesněji řečeno, transakční spender poskytuje scriptSig, který se provede a následuje scriptPubKey výstupu deklarované transakce (pamatujte, jak jsme řekli, že vstupy deklarují předchozí nevyčerpané transakční výstupy?). Oba skripty sdílejí stejný zásobník.

V zájmu efektivity využijme (oficiální bitcoinová wiki) odkaz, jak diskutujeme. Když navštívíte odkaz, přejděte zhruba do poloviny a najděte tabulku obsahující 7 řádků. Tato tabulka ukazuje, jak jsou skripty kombinovány, jak probíhá provádění a jak vypadá zásobník v každém kroku.

Je třeba si uvědomit, že protože bitcoinové adresy jsou ve skutečnosti hashe (dobře, je to ještě o něco komplikovanější. Vidět ), neexistuje žádný způsob, jak by odesílatel mohl znát skutečný veřejný klíč, aby se mohl porovnat se soukromým klíčem. Redeemer proto určuje veřejný i soukromý klíč a scriptPubKey duplikuje a hash veřejný klíč, aby se ujistil, že Redeemer je skutečně zamýšleným příjemcem.

Během provádění vidíte, že konstanty jsou umístěny přímo do zásobníku, když se vyskytnou. Operace přidávají nebo odebírají položky ze zásobníku při jejich vyhodnocování. Například OP_HASH160 vezme horní položku ze zásobníku a má ji dvakrát, nejprve s SHA-256 a poté s RIPEMD-160. Po vyhodnocení všech položek v našem skriptu bude celý náš skript vyhodnocen jako true, pokud v zásobníku zůstane true, jinak false.

Celkově vzato, platba za PK-hash je docela přímý typ transakce. Zajišťuje, že pouze vykupitel s příslušným párem veřejného a soukromého klíče může nárokovat a následně utrácet bitcoiny. Za předpokladu, že jsou splněna všechna ostatní kritéria (viz předchozí část), je transakce dobrá a lze ji umístit do bloku.

V budoucích článcích rozeberu složitější typy transakcí. Uvidíme, jak se mohou transakce zúčastnit více než dvě strany, a uvidíme, jak lze implementovat dlouhodobější typy transakcí.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map