This article has been translated from English to Tagalog.

Paano gumagana ang Bitcoin transactions?

Ang Bitcoin transaction ay isang paglipat ng tiyak na bilang ng bitcoins mula sa isang address papunta sa isa pang address na naitatala sa blockchain.

Pero paano ba talaga nagwo-work itong "transfer" process na ito?

Sa lesson na ito, ipapakita ko sa'yo kung paano gumagana ang isang Bitcoin transaction mula umpisa hanggang dulo.

Una, titingnan natin kung paano gumagana ang isang Bitcoin transaction mula sa perspektibo ng user. Pagkatapos, titingnan naman natin ito mula sa pangkalawakang pananaw.

Makakatulong ito para maalala mo lahat ng bagong konsepto na natutunan mo sa mga nakaraang lessons.

Ready na ba kayo?!

Start Bitcoin Transaction

Sabihin natin na si Ironman ay may 1 bitcoin na gusto niyang ipadala kay Batman.

Ironman sends 1 BTC to Batman

Mula sa Perspektibo ni Ironman

Ang unang gagawin ni Ironman ay buksan ang kanyang Bitcoin wallet.

Puwede itong maging anumang uri ng wallet pero sa example na ito, gumagamit siya ng software wallet na naka-install sa kanyang laptop.

Ironman initiates Bitcoin transaction

Ang susunod niyang gagawin ay hingin kay Batman ang kanyang Bitcoin address.

Dito gustong matanggap ni Batman ang kanyang bitcoin. I-email ni Batman sa kanya ang Bitcoin address at ika-copy paste ito ni Ironman.

Ironman asks for Batman's address

Pagkatapos, ilalagay ni Ironman ang bilang ng bitcoins na gusto niyang ipadala kay Batman.

Batman enters 1 BTC

Dahil prone sa typos ang kanyang malalaking daliri na gawa sa gold-titanium alloy, i-double-check ni Ironman kung tama ba ang nailagay niyang numero.

At pinindot niya ang Send.

Batman sends 1 BTC

Sasabihin ng wallet software ang password para makumpirma ang transaction.

Para makapagsend ng bitcoin, kailangang patunayan ni Ironman sa Bitcoin network na siya talaga ang nagse-send ng pera at siya ang may-ari ng bitcoin.

Dito pumapasok ang kanyang private key (na naka-store sa wallet).

Pagkatapos ilagay ni Ironman ang tamang password, ang wallet software ay “magpirma” sa transaction gamit ang private key ni Batman, na naglalabas ng hiwalay na data na tinatawag na “digital signature“. (Ang lahat ng ito ay ginagawa behind the scenes.)

Bitcoin wallet signs transaction

Bitcoin Transaction Behind the Scenes

Mula dito, tapos na ang papel ni Batman.

Kokonekta ang wallet software sa isang Bitcoin node at ipadadala ang transaction message, kasama ang “digital signature” at public key.

Tse-tsek ng node kung ang transaction ay valid:

  • May sapat bang BTC ang sender sa kanilang address para gawin ang transaction?
  • May authorization ba ang sender para ipadala ang BTC?

Halimbawa, tse-tsek nila kung talagang may 1 BTC si Batman na maipapadala. Kung pumasa ang transaction sa lahat ng tsek, ipapasa ng node ang transaction sa ibang nodes.

Sa default, hindi nagtitiwala ang nodes sa isa't isa, kaya i-vavalidate nila ang transaction muli para sa sarili nila.

At kung nakita nilang valid ang transaction, saka lang nila ito ishe-share sa mga nodes na konektado sa kanila.

Bitcoin transaction sent to nodes

Kapag ang transaction ay idineklarang valid, ito ay ise-save sa isang temporary storage area na kilala bilang “memory pool” o “mempool“.

Sa puntong ito, ang transaction ay itinuturing “unconfirmed” o “pending“.

Bitconi transaction stored in mempool

Ang mga espesyal na node na kilala bilang “miners” ay mag-iipon ng transaction na ito kasama ang iba pang valid transactions mula sa kanilang mempool sa isang “block“.

Bitcoin miners bundle transactions into a block

Maglalaban-laban ang mga miners para mauna sa “pag-mine” ng kanilang block. Kailangan nilang makahanap ng numero na nagsisimula sa isang tiyak na bilang ng zeros.

Ang tanging paraan para makuha ang numerong ito ay sa pamamagitan ng trial and error. Sa madaling salita, paggawa ng maraming hula hangga't maaari.

Bitcoin miners compete

Ang unang miner na makahula ng tamang numero ay nangangahulugang siya ang unang nakapag-mine ng kanyang block.

Sa sandaling tama ang hula ng miner, ibabahagi nito ang block kasama ang “winning number” sa ibang nodes sa Bitcoin network.

First Bitcoin miner to guess correct nonce wins

Tse-tsekin ng mga nodes sa Bitcoin network kung tama ang hula ng miner at kapag ito ay tama, idadagdag nila ang winning miner’s block sa kanilang kopya ng blockchain. At ipapasa rin nila ang block na ito sa ibang nodes.

Dahil ang block (na naglalaman ng transaction) ay naidagdag na sa "opisyal" na bersyon ng blockchain, ang transaction ay itinuturing na “confirmed

Kapag ang block ay nalikha at ang bagong transaction ay na-verify at naisama sa block na iyon, ang transaction ay sinasabing nagkaroon na ng “one confirmation“.

Bitcoin nodes validate new block

Mula sa Perspektibo ni Batman

Nakikita ni Batman na ang transaction ay na-confirm at iche-check niya ang kanyang Bitcoin wallet kung na-transfer na ang bitcoin.

Bitcoin transaction confirmed

Habang mas maraming blocks ang nagawa sa ibabaw ng block na may transaction ni Ironman, mas "confirmed" ang transaction sa blockchain.

Sa totoo lang, bawat block na nadadagdag ay itinuturing na isang “karagdagang confirmation“. Ang paghihintay ng anim na confirmations ay kasalukuyang standard para sa karamihan ng transactions para ituring na secure.

At ayan na nga!

Isang bitcoin ay nailipat na mula sa isang address na pag-aari ni Ironman patungo sa bagong address na pag-aari ni Batman.

At maliban na lang kung isa-publiko ni Ironman o Batman ang kanilang Bitcoin wallet address, walang makakaalam na dalawang sikat na superheroes ang sangkot sa isang Bitcoin transaction.

Ang makikita lang ng iba ay 1 BTC na ipinadala mula sa isang address papunta sa isa pa, pero hindi nila malalaman kung sino ang nasa likod ng mga address.

Tulad ng nakikita mo, karamihan sa mga hakbang sa isang Bitcoin transaction ay ginawa behind the scenes.

Pagkatapos ibahagi ni Batman ang kanyang address kay Ironman, at inumpisahan ni Ironman ang transaction gamit ang kanyang Bitcoin wallet, ang natitira ay hinawakan na ng mga computer at software code.

Pangkalawakang Pananaw ng isang Bitcoin Transaction

Ngayon, tingnan natin ang pangkalawakang pananaw ng kung paano gumagana ang isang Bitcoin transaction.

I-assume natin na nailagay na ni Ironman ang address ni Batman at ang bilang ng bitcoin na ipadadala.

Bitcoin has been sent

Kokonekta ang wallet ni Ironman sa isang node na magbo-broadcast ng message sa lahat ng computers (“ang Bitcoin network”) na nagpapatakbo ng kopya ng up-to-date database (“Bitcoin’s blockchain”) na nagsasabing, sa esensya, “Gusto kong ipadala ang 1 bitcoin kay Batman.”

Si Ironman ay may unique na string ng mga letra at numero na tinatawag na “private key”. Gamit ang private key na ito, ang wallet software ni Batman ay nagge-generate ng isang “digital signature” na nagsisiguro na ang mensahe ay galing sa kanya at hindi sa iba.

Ang mga computer (“full nodes”) sa Bitcoin network ay madaling nakakapagkumpirma kung si Ironman ba talaga ang nagpadala ng mensahe gamit ang ibang string ng mga letra at numero na ibinibigay ni Ironman, na tinatawag na “public key” para ma-verify ang “digital signature” na ito.

Mabilis din nilang makukumpirma na may 1 bitcoin na ipapadala si Ironman dahil lahat sila ay may kopya ng kasalukuyang database.

Lahat ng nodes ay patuloy na nag-uupdate sa isa’t isa ng pinakabagong impormasyon (“transactions”) na idinadagdag sa Bitcoin network.

Ang isang transaction ay umaakto bilang isang talaan ng paglipat ng bitcoin mula sa isang address papunta sa isa pa. Ang mga transactions ay hindi indibidwal na itinatala sa blockchain, kundi ay unang pinagsasama-sama sa mga blocks.

Importante, sa puntong ito, ang transaction ay proposed pa lamang. Walang computer ang nakapag-update pa ng kopya nito ng ledger (“blockchain”) sa ngayon.

Ang mga transactions ay unang inilalagay sa isang waiting room (“mempool”), kung saan sila nag-aantay na makumpirma.

Ang mempool (memory pool) ay isang mas maliit na database ng unconfirmed (pending) transactions na pinapanatili ng bawat node. Lahat ng transactions sa mempool ay pending, at hindi dapat pagkatiwalaan hangga't hindi pa ito kasama sa isang block.

Dahil ang transaction ay proposed at hindi settled, mabilis na naipo-propagate ng system ang mensahe para masiguradong alam ito ng bawat kalahok.

Sa diagram sa ibaba, kinakatawan sina Ironman at Batman bilang mga purple wallets.

Ang mga gray na bilog ay kumakatawan sa mga computer (“full nodes”) na bahagi ng peer-to-peer (P2P) Bitcoin network.

Ang mga black na squares ay kumakatawan sa “blockchain”, na sunud-sunod na ini-update na kopya ng ledger, sa oras na i-propose ni Ironman ang kanyang transaction sa network.

Tulad ng nakikita mo, magkakaparehong kopya ng blockchain ay naka-store sa mga computer sa buong mundo (“full nodes”) na nagpapatakbo ng Bitcoin software. Ang disenyo na ito ay tinitiyak na walang isang entity ang may control ng ledger at ginagawa ang Bitcoin na resistant sa control (o pagpapahinto) ng anumang gobyerno o sentral na awtoridad.

Lahat ng nodes na nagmementena ng kumpletong kopya ng blockchain ay kilala bilang “full nodes” na kailangan mawasak para mabura ang ledger. Hanggang sa nandiyan pa ang buong ledger sa kahit isang full node, magkakaroon ng tala ng lahat ng Bitcoin transactions sa kasaysayan.

Ironman and Batman as purple wallets

Siyempre, hindi lang si Ironman ang gumagawa ng transaction. Meron ding ibang miyembro ng Avengers na nagpapadala ng kanilang bitcoins sa ibang recipients. Halimbawa, puwedeng nagpapadala si Captain America ng ilang bitcoins kay Winter Soldier.

Dito pumapasok ang isang espesyal na kalahok sa network: “miners.”

Ang mga miners ay mga computer na nakakalat sa buong mundo at bumubuo ng isang kritikal na bahagi ng Bitcoin network. Ang kanilang trabaho ay i-bundle o i-group together ang mga bagong valid transactions, tulad ng kay Ironman, at i-propose ito para sa settlement.

Ang mga grupong ito ng transactions ay tinatawag na “blocks,” kung saan nagmula ang "block" sa "blockchain".

Ang isang block ay isang koleksyon ng transactions. Ang mga blocks ay magkakasunod na nakalink para bumuo ng “kadena ng mga blocks” o blockchain.

Sa anumang oras, libu-libong mga computer ang nagkokompetensya para makuha ang karapatan na gumawa ng susunod na block. Ang kompetisyon ay nagsasangkot ng paglutas ng isang “puzzle”, at puwedeng magpropose ang mga miners ng bagong block kung malulutas nila ang kasalukuyang puzzle.

Ang “puzzle” na ito ay karaniwang tungkol sa paghula ng tamang numero. Ang tsansa ng paghula ng tamang numero ay nasa 1 sa 6 na trilyon.

Kaya ang sikreto para mauna sa paghahanap ng “winning” na numero ay hulaan ito ng maraming beses hangga't maaari. Ito ay nangangailangan ng maraming computing power na gumagamit ng malaking halaga ng enerhiya.

Kung sino man ang makahanap ng solusyon muna ay entitled sa isang reward, na kilala bilang “block reward”.

Ang block reward ay dinisenyo para magbigay insentibo sa nodes na lumahok sa pagmamining. Kung hindi, walang magmimina dahil hindi nila mababawi ang mataas na gastos ng mga computer at ang gastos ng kuryente sa pagpapatakbo sa mga ito.

Ang block reward ay binubuo ng DALAWANG bahagi:

  1. Bagong minted bitcoins
  2. Mga transaction fees (na binabayaran ng taong nag-initiate ng transaction tulad ni Ironman)

Ang bagong minted bitcoins na “napanalunan” ng miner ay kilala bilang “block subsidy” at kumakatawan sa pinakamalaking bahagi ng reward. Sa kasalukuyan, bawat bagong block ay may kasamang reward na 6.25 bagong minted bitcoins.

Bawat block ay naglalaman ng maraming transactions, At lahat ng transactions ay may kasamang fee, na kinokolekta ng mga miners.

Sa kabuuan:

Block reward = block subsidy + transaction fees

Ang block reward ang siyang nagbibigay insentibo sa mga miners para gawin ang kinakailangang trabaho para ma-verify ang transactions at mapanatili ang database.

Tuwing 210,000 blocks, o humigit-kumulang bawat apat na taon, ang block subsidy ay nahahati sa kalahati sa isang event na kilala bilang “halving”. Ang prosesong ito ay magpapatuloy hanggang ang block subsidy ay maging zero. Sa puntong iyon, ang mga miners ay magko-collect lamang ng transaction fees

Ang mga bagong block ay naisese-settle sa Bitcoin network humigit-kumulang bawat 10 minuto, bagaman ang eksaktong oras ay nakadepende sa kung gaano kabilis nalulutas ang “puzzle”.

Sa kasalukuyan, karamihan sa pagmamining ay ginagawa ng “mining pools,” mga grupo ng miners na nagsasama-sama ng kanilang processing power at pinaghahatian ang block reward sa kanilang sarili.

Ang prosesong ito ay ipinapakita sa diagram sa ibaba.

Bitcoin Network with Miners

Ang mga miners ay ipinapakita ngayon bilang orange circles.

Ang blue square ay nagpapakita ng updated na ledger na naglalaman ng ilang bagong transactions, kasama na ang kay Ironman

Sa ngayon, isang kalahok ng network (ang miner na nagpropose ng bagong block ng transactions) lamang ang nakakakita ng buong updated na ledger.

Ang ibang mga kalahok ay makikita pa lamang ang mga lumang blocks, na inilalarawan sa black.

Dahil malaki ang reward, maraming miners ang magkokompetensya para ma-settle ang bawat block ng transactions.

Sa disenyo, ang paglutas ng “puzzle” ay isang mahalagang pagsisikap dahil nangangailangan ito ng malaking computing power at kinakailangan ng maraming kuryente. At hindi malalaman kung alin sa libu-libong mga miners ang unang makakalutas ng “puzzle”.

Kapag ang isang miner ay nakakalutas sa “puzzle” (mahulaan ang tamang numero), puwede na nitong i-post ang solusyon at i-propose ang block ng transactions sa network.

Ang maganda sa approach na ito ay kahit mahirap at mahal lutasin ang puzzle, madaling i-check ang resulta. At kapag nag-post ang isang miner ng solusyon at block ng transactions, iba pang mga miyembro ng network ay iche-check ang trabaho.

Kung ang mga transactions ay valid at ang solusyon sa “puzzle” ay tama, i-uupdate ng mga kalahok ng network ang kanilang kopya ng database para ipakita ang mga bagong transactions.

Sa puntong iyon, ang transaction ni Ironman ay itinuturing na settled o “confirmed“. Ang 1 bitcoin ay lumipat na mula sa address ni Ironman papunta sa address ni Batman at opisyal nang naitala sa blockchain.

Ang “consensus mechanism” na ito ng pagtukoy kung anong transactions ang permanenteng maitatala at “confirmed” ay ang puso ng disenyo ng Bitcoin’s blockchain.

Ang prosesong ito ay ipinapakita sa ibaba.

Bitcoin Network syncs blockchain

Ang lahat ng kalahok sa network ay tinanggap na ang bagong block ng transactions na ipinanukala (blue square). Bilang resulta, ang kanilang mga ledger ay ina-update at isinasabay.

Importante, ang kompetisyon para ma-settle ang susunod na block ng transactions ay nakadepende sa pagsasama ng impormasyon mula sa naunang block, na nagdudulot sa mga miners na mabilis na ia-update ang kanilang kopya ng database at tinitiyak na mahirap ang pag-tamper sa isang settled na block.

Ang “pagkakadena ng mga blocks” na ito ang dahilan kung bakit ang database architecture na ito ay tinatawag na isang “blockchain.”

Ang Bitcoin blockchain ay naglalaman ng bawat block mula sa simula, simula pa sa unang block na kilala bilang “Genesis Block.”

Paano kung ang hindi kilalang Bitcoin miner na nagsusumite ng block ay isang masamang tao at nagpropose ng invalid block ng transactions na kahit papaano ay makakabuti sa kanya?

O paano kung si Ironman ay masama at sinusubukan niyang ipadala ang parehong 1 bitcoin kay Spider-Man at Wonder Woman nang sabay-sabay nang walang makapansin?

Tinitignan ng mga kalahok ng network ang bawat transaction sa bawat proposed block at nirereject ang mga blocks na may invalid transactions. Sa kasalukuyan, higit sa 100,000 nodes ang nagsasariling nagve-verify ng bawat single Bitcoin transaction!

Dahil ang trabaho ng pag-validate ng transactions at pagtiyak na ang tanging valid transactions lamang ang mai-settle ay napakadali para sa mga kalahok ng network ngunit ang pagtatangkang i-settle ang transactions ay mahal, ang insentibo para subukang magnakaw sa system ay minimal.

Buod

I-summarize natin lahat ng mga interaksyon sa Bitcoin network:

  • Kung gusto mong magpadala ng bitcoins sa ibang tao, ibigay mo ang Bitcoin address ng recipient, at ang iyong wallet ay kokonekta sa isang node para simulan ang transaction.
  • I-ve-verify ng node ang transaction, i-vavalidate ito at pagkatapos ay ibe-broadcast at ire-relay ang valid transaction sa ibang nodes at miners. Kung ang isang transaction ay lumabag sa isa sa mga patakaran ng Bitcoin, awtomatikong ire-reject ito ng nodes.
  • Iba-batch ng mga miners ang mga transactions na ito sa isang “candidate block” (temporary block) at magkokompetensya para maging una na makapagpublish ng kanilang block sa blockchain sa pamamagitan ng pagiging una na makahula ng tamang solusyon sa isang math “puzzle”.
  • Ang “winning” miner ay makakapagpublish ng temporary block na ito bilang permanenteng block sa blockchain, na nagko-confirm sa transaction (at iba pang transactions sa batch).
  • Ang nodes ay tatanggap ng block na ito at i-ve-verify na ang miner ay sumusunod sa mga patakaran ng network. (Kung ang block ay lumabag sa isa sa mga patakaran ng Bitcoin, awtomatikong ire-reject ito ng nodes.)
  • Kailanman ang isang node ay tumatanggap ng bagong block at idinideem itong valid, ito ay ire-relay sa ibang nodes, para ang lahat ng nodes (kasama ang mga miners) ay mananatiling sync at mapanatiling magkakapareho ang blockchains.
  • Ang lahat ng ibang miners ay buburahin ang temporary block na kanilang ginagawa at magsisimula sa bagong “candidate block” na may bagong math “puzzle”.
  • Kapag ang node na konektado sa wallet ng recipient ay natanggap ang bagong block, ang wallet ng recipient ay magpapakita ng updated na balance na may bagong natanggap na bitcoins.