The success of Bitcoin is an indicator of humanity getting another win. Onward and upward. Happy Bitcoin Genesis day!
Kabanata 6: Ang Pagpili ng Peer-to-peer na Network
Sila: Gaano mo kadalas isipin ang Bitcoin?
Ako: May bagong kabanata na para sa inyo ngayong Pasko! https://bitcoinbakamo.xyz/kabanata-6-ang-pagpili-ng-peer-to-peer-na-network
Mga Nakakaaliw na Transaksyon sa Block 777777
Naisipan lang ng may-akda na gamiting laging halimbawa ang block 777777 dahil sa ispesyal ang numero na ito. Subalit sa mabilisang tingin ay kakikitaan agad ito ng mga nakakaaliw na mensaheng nakatago sa mga transaksyon. Tara at maglibang muna sa pagtingin ng mga halimbawa.
Transaction Fees: 2 Pananaw
Nabanggit na ang libreng transaksyon ay hindi na halos natatanggap ng mga miners. Supply at demand lang ang nagdidikta dito - mas marami nang kasali sa Bitcoin network eh. Kaya ang mga wallets ngayon ay may mekanismo nang pinapatupad sa pagkalkula ng transaction fee. Ito ay automatic na, at makakapili rin ang manggagamit kung mababa o mataas na fee ba ang ibibigay.
Ang mga transaksyon na hindi pa sinasama sa block ay nasa mempool. Ito ay ginagamit na memorya ng Bitcoin node na nagbabagu-bago ang laki dahil sa dagdag-bawas ng kandidatong transaksyon, parang UTXO set.
Sa website na ito: https://bitcoinfees.net/, ipinapakita ang pagtatantsa ng mga fees na satoshi/vbyte. Sinasabi rin kung gaano katagal mo aasahang tanggapin ng mga miners ang transaksyon depende sa halaga. Kapag sobrang baba, baka hindi na! Tandaan na ang pagkalkula ng wallet app ng fee ay depende sa laki ng data ng transaksyon, hindi sa laki ng halaga ng Bitcoin. Kaya ang mga komplikadong script, kahit maliit na Bitcoin lang ang usapan, ay malaki ang kakaining data. O kaya naman ang mga transaksyon na lilikom ng maliliit na Bitcoin sa maraming UTXO para sa input, ay gagamit ng mas malaking data kesa sa isang UTXO lang pero malaki naman ang halaga ng Bitcoin.
Ano ang vbyte? Ito ay virtual byte. Nagkaroon ng komplikasyon sa pagkalkula ng laki ng block dahil sa SegWit soft fork. Ayos lang, dumami naman kapasidad ng block eh. Dati, satoshi/byte ang pinapakitang pagtantsa ng mga fees. Pero ang binagong pagkalkula ng kapasidad ng block ay nagresulta sa pagkakaroon ng depinisyon ng virtual transaction size, kaya nagkaroon na ng unit na virtual byte. Basahin ang mga naturang depinisyon sa BIP-0141.
Uulitin lang natin na ang transaction fee sa mata ng miners ay diperensya ng lahat ng halaga ng Bitcoin sa inputs, at sa outputs (Unang pananaw). Kasi sa pinapasang data ng transaksyon, walang pagsasaad ng fee sa input o output. Pansinin uli sa mga ilustrasyon:
https://bitcoinbakamo.xyz/archives/674
Kaya ang mga wallet ay may sariling algorithm para sa nais mong fee, para lang sa pagkakaintindi mo (Ikalawang pananaw). Pero ang ipapasa lang talagang data ay kandidatong transaksyon na may halaga ng bagong UTXO na sinisiguradong mas maliit kesa sa halaga ng tinatawag na UTXO sa input.
Paano nga ba ang daloy ng tipikal na transaksyon?
Nabanggit noon na: Walang lamang Bitcoin ang pitaka mo. Subalit para makabuluhan ang gamit nito, ang pitaka mo ay hinahanap ang mga transaksyong nagsasaad na sa address mo huling ipinasa ang Bitcoin. Babaguhin nating bahagya ang deskripsyon na iyan. Sa halip na address na pinagpasahan, ang mga UTXOs na tumutugmang pwedeng gastusin ng mga private keys sa loob ng iyong wallet ang pinagsasama-sama para ipakita sa user interface ang halaga.
Ganun din ang konsepto ng block explorer. App din ito na sumisilip sa Bitcoin network at kinakalkula ang mga kondisyong nakasaad sa code para magpakita ng data na mas maiintindihan ng tao.
Ang mga matulunging apps na wallet at block explorer ay maiging madaling naiintindihan ng karaniwang tao, para mapadali ang pagsali sa ekonomiya ng Bitcoin network.
Balikan ang ipinakitang ilustrasyon ng daloy ng transaksyon sa block 170. At idadagdag na natin para sa diskusyon ang ilustrasyon naman para sa block 777777.
Ipagpatuloy ang pag-aaral sa: https://bitcoinbakamo.xyz/archives/670
Nakakahilo ang pagtaas ng Bitcoin! Nakikiusisa ka na ba dahil dito? Intindihin kung paano magmay-ari ng Bitcoin:
https://bitcoinbakamo.xyz/aklat/kabanata-4-pagmamay-ari-ng-bitcoin-at-ang-wallets
We won't forget!
Panimulang Pagsiyasat sa Tipikal na Transaksyon
Sa bagong post na ito, nanghiram uli ng ilustrasyon sa block explorer para sa 2 halimbawang blocks 170 at 777777.
https://bitcoinbakamo.xyz/archives/664
Makikita na may input at output parehas. Sa kaso ng block 170, walang address na pinapakita, dahil P2PK ang output. Nakandado sa public key mismo ang Bitcoin. Ang unang output ay #0, na nagsasaad ng pagkandado ng 10 Bitcoin sa public key ng receiver. Ang ikalawa ay #1 na nagkandado ng 40 Bitcoin sa public key ng sender (sukli). Subalit may mga wallet na gagawan pa rin ng interpretasyon na address ang mga iyan. Susundin lang ang nabanggit sa Kabanata 4 na encoding para sa legacy address. Pero mas tamang hindi binigyan ng interpretasyong address sa blockstream.info.
Lipat naman ng tingin sa isang napiling transaksyon sa block 777777. Makikita na mas maraming nasasaad sa input, mas komplikado, na pag-uusapan natin sa susunod. Sa output naman, dalawang klase ng pagkandado ng Bitcoin ang naganap. Sa receiver, ang Bitcoin ay nakandado sa kanyang public key hash, isang P2PKH, kaya ang address ay legacy ang anyo (nag-uumpisa sa 1). Ang sukli naman ng sender ay nakandado sa kanyang witness script hash, isang P2WSH kaya mas makabago ang anyo (bc1).
Sa mga ilustrasyon ng wallet at ng block explorer, matutukoy ang pinanggalingan at pinagpasahang mga address. Syempre kita mo rin kung magkano ang binigay at natanggap. Makikita rin kung saang block ito nakasama at kailan.
Subalit alam mo ba na sa loob ng code, ay hindi ganito ang mababasa mo?
The most powerful country in the world isn't as powerful as the idea whose time has come. #Bitcoin marches on regardless of the election results.
It's #Bitcoin Whitepaper Day. Never forget why it's brought here.

Transaction Fees
Para sa ilustrasyon: https://bitcoinbakamo.xyz/archives/653
Napag-usapan natin ang input sa Coinbase transaction, at ang output. Ang total na pabuya ay bagong Bitcoin at transaction fees. Ang transaction fees ay ang diperensya ng lahat ng Bitcoin na nasa input ng mga transaksyon sa block at ng lahat ng Bitcoin na nasa output.
Total fees = Sum (Inputs) - Sum (Outputs)
Pagkatapos, ipagsasama ang block reward at transaction fees bilang halaga ng Bitcoin na pabuyang isasaad sa output.
Sa block 170, nabanggit na walang transaction fee. Sa block 777777, kung ang block reward ay 6.25, ang transaction fee ay 0.18403232 kaya ang kabuuang pabuya ay 6.43403232 Bitcoin. Dahil mas mahal na ang Bitcoin kumpara noon, mahalaga na ang karagdagang pabuyang yan kahit pawang maliit sa paningin.
Balikan lang natin ang pisikal na paghahalintulad ng Bitcoin sa sitwasyon ng block rewards. Ang bagong Bitcoin ay manggagaling sa enerhiyang ginamit ng lahat ng kasapi sa pagmimina, subalit sa isang miner lang ilalaan. Samantala, ang mga maliliit na butil ng transaction fees na ihiniwalay ng iba-ibang taong nagtranskayson, ay tutunawin kasama ang bagong Bitcoin na namina para magkaroon ng kabuuang Bitcoin na mapupunta sa nanalong mining node.
Output ng Coinbase Transaction
Lipat na tayo sa output ng coinbase transaction. Sa Blockstream na ilustrasyon pa rin tayo tumingin. Dito ay nagsasaad ng dami ng bagong Bitcoin na binuo, kasama ang transaction fees. Isinasaad rin kung saang Bitcoin address ng miner tatanggapin ang kabuuang pabuya. Ang output na ito ay isa nang Unspent Transaction Output (UTXO).
Magandang isang sinauna at bagong block ang tinitignan natin. Makikita na sa Block 170, ang pabuyang 50 Bitcoin ay nakandado sa Public Key (P2PK) mismo, walang address. May mga ganitong istilo noon bago pa ang P2PKH. Sa block 777777, makikita na ang pabuyang 6.43403232 Bitcoin ay nakandado naman sa isang Script Hash (P2SH) at pinakita rin ang katumbas na address. Pero unang output (#0) lang iyon. May dalawa pang output (#1 & #2) na OP_RETURN at walang Bitcoin na laman. Ang dalawang ito ay nasa klase ng output na hindi magagasta: data recording output.
Tignan ang kabuuan at ilustrasyon sa: https://bitcoinbakamo.xyz/archives/646
Ito na nga ang Coinbase
Ang input sa coinbase transaction ay ang coinbase, kung saan walang halaga ng Bitcoin ang nakasaad. Sa katunayan, kahit ano ang pwedeng laman nito. Ang pagsuri ng ilang halvings mula sa halaga ng block height naman kasi ang pagbabasehan kung ilan ang gagawing bagong Bitcoin.
May naumpisahang istilo ng laman ng coinbase na ginaya na ng mga sumunod na miners. At nung naglaon ay may pamantayan o standards nang isinaad para sundin ng mga miners na laman ng coinbase, gaya ng nasasaad sa BIP-034 para sa version 2 blocks (pataas). Mula rito isinama na ang block height sa unang bytes ng coinbase para kakaiba ang hash ng bawat transaksyon. Pero hanggat may sobrang espasyo pa, maaari itong lagyan ng arbitraryong data ng sinumang may gusto.
Tignan halimbawa ang coinbase transaction na inilalarawan naman kapag gumamit ka ng Bitcoin block chain explorer...
Ituloy kasama ang mga makakatulong na ilustrasyon sa:
Coinbase Transaction - Introduksyon
Nabanggit na sa nakaraan ang pangkalahatang ideya ng block reward, para diri-diretso na tayo. Coinbase na, tara.
Ang pinakaunang ginagawang transaksyon sa isang block ay ang coinbase transaction. Ang mga node na nagmimina (mining node) ng Bitcoin ay gumagawa ng coinbase transaction para sa kanilang pabuya sa pagtatrabaho ng pag-aayos ng mga transaksyon sa block.
Sa mga naunang blocks ng Bitcoin, coinbase transaction lang ang laman, kasi sobrang kaunti pa ang may alam at wala nang ibang kasali sa network maliban kay Satoshi Nakamoto. Ang genesis block (pinakaunang block) ay nabuo nung Enero 3, 2009. Mula rito, paggawa lang ng block reward na 50 na bagong mga Bitcoin kada ~10 minuto ang nangyayari. Naipon ang mga Bitcoin sa iisang nagmimina, kaya wala pang naipamigay na transaction fee.
Noong Enero 9, 2009 unang nai-release ang open-source na Bitcoin client. Tsaka palang pwedeng sumali ang iba sa network. Ang pinakaunang transaksyon kung saan ginasta ang naipong Bitcoin ay naganap sa Block 170. Pinasahan ng 10 Bitcoin ni Satoshi Nakamoto si Hal Finney noong Enero 12, 2009. At dito, wala pang fees na ginamit! Pwede talaga ito sa Bitcoin network. Pero syempre iba na ang lagay ngayon. Imposible nang may magsama ng transaksyon mo sa block kung hindi ka magbabayad ng transaction fee. At lagi nang kombinasyon ng bagong Bitcoin at mga transaction fees ang output ng coinbase transaction.
Sa ibabaw ng pag-aayos ng block ay ang kompetisyon gamit ang Proof-of-Work algorithm para ang hash ng block header ay may katumbas na numerong kaparehas o mas maliit ang halaga sa target. Ang Proof-of-Work algorithm ay nangangailangan ng paggamit ng hashing algorithm. Kaya kung halimbawa eh pantay-pantay ang lakas ng mga mining nodes, walang kasiguraduhan kung sino ang unang makakakuha ng target. Kung sinumang minero ang magiging matagumpay, sya ang mangongolekta ng pabuyang nakasaad sa kanyang coinbase transaction. Paano ang ibang gumawa ng coinbase transaction? Mawawalang bisa ito at susubok nalang ang mga natalong minero sa susunod na block.
Ang mga sumusunod ang bumubuo ng istraktura ng coinbase transaction:
> Coinbase - na syang arbitraryong input, walang pagbabasehan na nakaraang transaksyon.
> Output - kung saan nasasaad ang pabuya, ito ay UTXO na.
> Transaction fee - maaaring kasama ito o hindi sa pabuyang nakasaad sa output. Sa panahon ngayon, parang imposible nang hindi.
Tignan ang ilustrasyon sa: https://bitcoinbakamo.xyz/archives/635
#FREEDUROV
Ang Bitcoin ay bagay sa mga OFWs at kanilang mga pamilya. Borderless money transfer within minutes.
Pangkalahatang Ideya ng Pagmimina ng Block Reward
Ang pinakaunang ginagawang transaksyon sa isang block ay ang coinbase transaction. Ang mga node na nagmimina (mining node) ng Bitcoin ay gumagawa ng coinbase transaction para sa kanilang pabuya sa pagtatrabaho ng pag-aayos ng mga transaksyon sa block. Isantabi muna natin ito at pag-usapan ang block reward.
Sa ibabaw ng pag-aayos ng block ay ang kompetisyon gamit ang Proof-of-Work algorithm para ang hash ng block header ay may katumbas na numerong kaparehas o mas maliit ang halaga sa target. Ang Proof-of-Work algorithm ay nangangailangan ng paggamit ng hashing algorithm. Kaya kung halimbawa eh pantay-pantay ang lakas ng mga mining nodes, walang kasiguraduhan kung sino ang unang makakakuha ng target. Kung sinumang minero ang magiging matagumpay, sya ang mangongolekta ng pabuyang nakasaad sa kanyang coinbase transaction. Paano ang ibang gumawa ng coinbase transaction? Mawawalang bisa ito at susubok nalang ang mga natalong minero sa susunod na block.
Ang dami ng bagong Bitcoin na bubuuin (block reward) ay nakadepende sa block height. Malalaman kung pang-ilang halving na ang nakalipas base sa block height - ang dami ng bloke sa blockchain. Ang bilang ng halving ay may karampatang bagong Bitcoin.
Bitcoin halving ang tawag sa pangangalahati ng block reward. Nabanggit sa unang kabanata na ito ay nagaganap kada 210,000 blocks, o halos kada 4 na taon.
Sa unang 210,000 blocks (0 halving), 50 ang binuong Bitcoin na pabuya. Sa blocks 210,001 - 420,000 (1 halving), 25 Bitcoin, atbp. Sa panahong isinulat ang kabanatang ito, nasa loob na ng 630,001 - 840,000 ang block height - ikatlong halving na. Kaya ang block reward ay 6.25 Bitcoin.
Hanggang 64 na halvings lang ang pwedeng maganap. Matapos nito, puro transaction fees nalang ang makukuhang pabuya ng mga nagmimina. Subalit dahil ang 1 Satoshi ay 1/100,000,000 ng Bitcoin, hanggang ika-32 na halving lang mayroong block reward.
Paano ba ito natakda? Binary right shift kasi sa halip na division ang operasyon ng pagkuha ng block reward gamit ang bilang ng halving. Ang 50 Bitcoin na 5,000,000,000 satoshis ay may 33 bits (100101010000001011111001000000000). Bawat tanggal ng dulong bit (ito ang binary right shift), ay katumbas ng pangangalahati ng halaga ng block reward. Maaari mo itong iberipika sa kahit anong decimal to binary converter. Matapos ang 32 halvings, 1 bit nalang ang matitira, na syang 1 Satoshi. Sa pag right shift ng ika-33 halving, wala nang matitirang bit. Kaya ayun na ang katapusan ng block reward.
Magkakaroon kaya ng pagbabago sa code para maglaan pa ng mas maliit na dibisyon ng Bitcoin? Panahon ang makapagsasabi.
Unspent Transaction Output (UTXO) at isang metapora
Lahat ng transaksyon sa Bitcoin, maliban sa coinbase transaction na pag-uusapan sa susunod na post, ay gumagamit ng unspent transaction output. Nakasaad sa loob nito ang halaga ng Bitcoin, at ang kondisyon na syang magkakandado rito para sa nararapat na may-ari. Ang lahat ng UTXO ay napapabilang sa UTXO set, na sinusubaybayan ng mga full nodes.
Sa tipikal na transaksyon, kukuha ng magagamit na UTXO, para gumawa ng bagong UTXO. Ang nasa input ng mga transakayon ay pagtuturo sa mga UTXO na bubuksan ang kandado para magamit sa iba ang Bitcoin. Kapag nangyari iyon, ang UTXO ay magiging spent transaction output (STXO), na tatanggalin na sa UTXO set. Ang mga nasa output naman ang mga bagong UTXO na idadagdag sa set. Ang mekanismong ito ay nangangailangang gastusin ang anumang UTXO na kukunin. Maglalaan nalang ng bagong UTXO pabalik sa pinanggalingang pitaka kung sakaling may sukli.
Kapag gumagamit tayo ng pisikal na salapi, nagkakaroon ng pagsasama-sama ng iba-ibang denominasyon para mabuo ang dapat bayaran. Kung kailangan, nagkakaroon din ng panunukli. Kapag nagbabayad ka ng buo, konti lang ang iaabot mong piraso ng salapi, at minsan, mas maraming piraso ang natatanggap mo pabalik - mas mababa lang ang denominasyon. Hawig ito sa paggamit ng mga UTXOs, pero kulang pa ang metapora.
Hindi lang kasi sya parang magbabayad ka at manunukli. Sa halip, para kang kukuha ng salapi, tutunawin o ipoproseso, tapos hahatiin sa bayad, sukli, at transaction fee. Ang bayad o sukli ay malaki o maliit na salaping bubuuin, depende sa transaksyon. At may butil na natitira bilang transaction fee, na kokolektahin ng mining node.
Himayin ang Mekanismo ng Transaksyon: Panimula
Napag-usapan na ang pagkakaroon ng Bitcoin, simpleng pagpapasahan nito, at napag-aralan din ng may kalaliman ang cryptography sa mga post dito sa website. Maaari na nating siyasatin ang mga transaksyong electronic sa higit pang mapanuring paraan.
Noong mababa pa ang halaga ng Bitcoin kumpara sa fiat na salapi, nakakapagtransaksyon pa ang mga tao gamit ito para sa maliliit na bagay. Isang mahalagang parte ng kasaysayan ay ang Bitcoin Pizza Day: Mayo 22, 2010; Kung kailan si Laszlo Hanyecz ay nagbayad ng 10,000 Bitcoin kay Jeremy Sturdivant para sa 2 malalaking Papa John’s pizza. Ito ang unang nakilalang pakikipagtransaksyon sa Bitcoin para sa kalakal o paninda
Bago natin himayin, subukan mong intindihin ang ilustrasyon ng dalawang transaksyong naganap sa block 170:
https://bitcoinbakamo.xyz/archives/610
Ipinapakita rito ang daloy ng paggawa ng bagong 50 Bitcoin, at isang transaksyon kung saan nagpasa ng 10 Bitcoin at may sukli na 40 Bitcoin. Ang paggawa ng 50 Bitcoin ay nagaganap sa coinbase transaction. Bago pa ito mag halving, kaya nag-umpisa sa 50. Ang pinakaunang transaksyon kung saan ginasta ang naipong Bitcoin ay naganap sa Block 170. Pinasahan ng 10 Bitcoin ni Satoshi Nakamoto si Hal Finney noong Enero 12, 2009. At dito, wala pang fees na ginamit! Pwede talaga ito sa Bitcoin network. Pero syempre iba na ang lagay ngayon.
Nakikita mo ang Unspent Transaction Output (UTXO)? Napag-usapan na ito sa ibang post. Sa susunod, himayin pa natin ang konsepto.
Pagdagdag ng purpose at coin type sa HD wallet
Dahil nga sa walang katapusang kombinasyon at sanga na pwedeng mabuo sa HD wallet, nagmungkahi ang BIP-0043 na ang antas kasunod ang master node (m), ang mga account/wallet (m/i), ay gamiting “purpose.” Sa pamamagitan nito, matutukoy ang mga susunod na struktura.
m/purpose’/*
Ang mga wallets na alinsunod sa BIP-0032 ay bibigyan na ng 0’ na purpose: m/0’/*. Ang pagkakaroon ng apostrophe (’) ay nangangahulugang hardened derivation. Kaya index ng unang hardened child key ang gamit para sa mga wallets alinsunod sa BIP-0032.
Nabanggit din sa BIP-0043 na kapag mayroong mga software na kailangan ng isa pang istraktura, irekomenda ito sa ibang BIP, at ilagay ang numero nito bilang “purpose”.
Kaya naman, nung nagkaroon ng bagong proposal na BIP-0044 na naglalayong magkaroon ng 5 antas ang HD wallet para maisama ang iba pang klase ng coins:
m/purpose’/coin_type’/account’/change/address_index
44’ ang itinalaga sa purpose’. Buti nalang at 0’ ang coin_type’ na itinalaga para sa Bitcoin. 1’ naman para sa Bitcoin Testnet. Huwag na nating pakialaman yung iba.
Ang account’ ay maraming posibilidad, pero hardened derivation ang gamit. Ang change na tumutukoy sa chain pag BIP-0032, ay nanatiling 0 para sa external, 1 para sa change/internal. Public derivation o ang pagkuha ng normal child keys ang gamit dito. At sa address_index, normal child keys din. Halimbawa, ang Bitcoin address ko na binahagi para makatanggap ng bayad ay galing sa public key ng ikapitong index, sa ikalawa kong account ng isang multi-coin wallet: m/44’/0’/1’/0/6
Banggitin na rin natin, na kaya sa BIP-0049 na nagrekomenda ng deribasyon para sa Nested SegWit (P2SH-P2WPKH) address, m/49’/* ang istraktura nito. Sa BIP-0084 rekomendasyon naman para sa Native SegWit address, m/84’/; at sa single key taproot na rekomendasyon sa BIP-0086, m/86’/ ang istraktura.
Ayan, sana sa mga nakaraang usapan sa blog ay naintindihan mo pa lalo ang operasyon ng iyong Bitcoin wallet!
Basahin ang kabuuang kabanata 4 (https://bitcoinbakamo.xyz/aklat/kabanata-4-pagmamay-ari-ng-bitcoin-at-ang-wallets) ukol sa Bitcoin wallets!