Neatkarīgi no tā, vai jūs interesē kļūt par blokķēdes lietojumprogrammu izstrādātāju, vai arī vienkārši vēlaties saprast, kas notiek zem pārsega, kad draugam sūtāt bitcoin, ir labi, ja jums ir darba zināšanas par to, kas notiek, veidojot un pārraidot Bitcoin darījumi ar Bitcoin tīklu. Kāpēc?

Tā kā darījumi ir pamata entītija, kurai virsū tiek uzbūvēta bitcoin blokķēde. Darījumi ir izcilas kriptogrāfijas, datu struktūru un vienkāršu, bez pilnīgas skriptu sadursmes rezultāts. Tie ir pietiekami vienkārši, lai izplatītie darījumu veidi nebūtu pārāk sarežģīti, bet pietiekami elastīgi, lai ļautu izstrādātājiem kodēt arī diezgan pielāgotus darījumu veidus. Šodien mēs apskatīsim pirmo.

Kā izstrādātājs, kā jūsu bitcoīna klients ievieto tīklā jaunu darījumu (un kas notiek, kad tas tiek saņemts)?

Kas īsti notiek, kad draugam nosūtiet mazliet bitcoin?

Šajā ziņojumā tiks pieņemts, ka lasītājam ir pamata izpratne par jaukšanu, asimetrisku kriptogrāfiju un P2P tīklu veidošanu. Tā ir arī laba ideja, lai labi saprastu, kas tieši ir blokķēde, pat ja jums nav sveša kāda konkrēta mehānika.

Bitcoin darījumi un to loma plašākā attēlā

Bitcoin sastāv no dažiem galvenajiem gabaliem: mezgliem un blokķēdes. Tipiska mezgla loma ir saglabāt savu blokķēdes versiju un atjaunināt to, tiklīdz tā dzird par “labāku” (garāku) versiju. Vienkārši sakot, blokķēdē ir bloki, un blokos ir darījumi.

Paturot prātā šo vienkāršoto, bet precīzo ainu, jūs varētu domāt, no kā tieši tiek darīts darījums.

  • Kā darījumu izpratne man palīdzēs kļūt par labāku blockchain izstrādātāju?
  • Kā darījumi ļauj man pārsūtīt mazliet bitcoin draugam?

Izrādās, ka atbildes uz šiem jautājumiem atšķiras atkarībā no daudzām lietām. Pat pieņemot, ka mēs runājam tikai par bitcoin, mēs varam izmantot darījumus vairākos radošos veidos, lai sasniegtu dažādus personalizētus mērķus. Sāksim sākumā, tas ir, apskatīsim labu vecmodīgu maksājuma līdz PK hash darījuma veidu. Galu galā šāda veida darījumi veido vairāk nekā 99% no visiem darījumiem bitcoin blokķēde.

Vispirms izveidosim mentālo modeli. Ir vilinoši domāt par bitcoin kā uz kontu balstītu sistēmu. Galu galā, kad es kādam sūtu bitcoin, šī persona saņem naudu, un man paliek atlikušais atlikums. Tomēr reālajā pasaulē lietas tiek attēlotas mazliet savādāk. Vispārīgi runājot, kad es sūtu naudu kādam, es sūtīšu visu šo naudu (atskaitot darījumu maksu). Daļa no šīs naudas tiks iztērēta manā personīgajā kontā, ja būs atlikums. Lieta ir tāda, ka visa nauda pārvietojas katru reizi. Jūs varat pāriet uz sadaļu 3.1 , lai izskaidrotu, kāpēc šis modelis ir vēlams.

Paturot to prātā, mēs varam vispārināt un teikt, ka Bitcoin darījumam ir dažas izejas un izejas. Grafisks attēlojums varētu izskatīties apmēram šādi:

Kā Bitcoin darījumi faktiski darbojas?

Tas man bija nedaudz mulsinošs, kad es to pirmo reizi redzēju, tāpēc es nedaudz izklāstīšu. Ievietojot darījumu, es būtībā “pieprasu” produkciju un pierādu, ka man ir atļauja iztērēt naudas summu šajā izejā. Tātad, ja es esmu Bobs un vēlos maksāt Alisei, šie ieguldījumi ir mans pierādījums tam, ka man ir piešķirta noteikta naudas summa (lai gan tā varētu būt tikai daļa no mana kopējā atlikuma), un rezultāti būs atbilstoši Alises kontam . Šajā vienkāršajā gadījumā būtu tikai viena ieeja un viena izeja.

Padziļināts ieskats Bitcoin darījumos

Sapratīsim reāla bitcoin darījuma mehāniku. Mēs izmantosim iepriekš redzamo attēlu kā atsauci.

Ja jūs atvērtu tipisku bitcoīna darījumu, jūs galu galā iegūtu trīs galvenos gabalus: galveni, ievadi (-us) un izvadi (-us). Īsumā apskatīsim laukus, kas mums pieejami šajās sadaļās, jo tie būs svarīgi diskusijai. Ņemiet vērā, ka šie ir lauki, kas atrodas tā sauktajā neapstrādātā darījumā. Neapstrādāti darījumi tiek pārraidīti starp vienaudžiem, kad tiek izveidots darījums.

Galvene

  • hash: Hash visā šajā darījumā. bitcoin parasti izmanto hash vērtības gan rādītāju, gan līdzekļus, lai pārbaudītu datu integritāti. Mēs to apskatīsim vairāk nākamajā sadaļā.
  • ver: Versijas numurs, kas jāizmanto, lai pārbaudītu šo bloku. Jaunākā versija tika ieviesta ar mīkstu dakšiņu, kas sāka darboties 2015. gada decembrī.
  • vin_sz: Šī darījuma izejvielu skaits. Līdzīgi vout_sz skaita izeju skaitu.
  • lock_time: Mēs to vairāk aplūkosim vēlākos rakstos, taču tas būtībā apraksta agrāko laiku, kad bloku var pievienot blokķēdei. Tas ir vai nu bloka augstums, vai unix laika zīmogs.

Ievade

  • iepriekšējā izejas jaucējraksts: Šis ir hash rādītājs uz iepriekš neizlietotu darījumu izvadi (UTXO). Būtībā šī ir jums piederošā nauda, ​​kuru jūs gatavojaties iztērēt šajā darījumā.
  • n: rādītājs iepriekšējā darījuma rezultātu sarakstā. Šī ir faktiskā produkcija, kuru jūs tērējat.
  • scriptSig: Šis ir izdevumu skripts, kas pierāda, ka šī darījuma veidotājam ir atļauja tērēt naudu, uz kuru atsaucas 1. un 2..

Rezultāts

  • vērtība: iztērētā Satoshi summa (1 BTC = 100 000 000 Satoshi).
  • scriptPubKey: otrais no diviem skriptiem, kas nodrošināti ar bitcoin darījumu, kas norāda uz saņēmēja jauktu publisko atslēgu. Vairāk par to – šī raksta pēdējā sadaļā.

Darījumu pārbaude

Viens no bitcoīna mezgla darbiem ir pārbaudīt, vai ienākošie darījumi ir pareizi (dati nav sagrozīti, nauda netiek veidota, UTXO tērē tikai paredzētie saņēmēji utt.). Pilnīgāku sarakstu var atrast tiešsaistē, taču šeit uzskaitīšu dažus no svarīgākajiem:

  • Visas izejas, uz kurām attiecas šī darījuma ievades, atrodas UTXO pūlā. Neizlietotos rezultātus var pieprasīt tikai vienu reizi.
  • Paraksti uz katras ievades ir derīgi. Precīzāk sakot, mēs sakām, ka kombinētie skripti atgriežas pēc to izpildīšanas viens pēc otra. Vairāk par to pēdējā sadaļā.
  • Šis darījums neizmanto UTXO vairāk nekā vienu reizi. Ievērojiet, kā tas atšķiras no pirmā vienuma.
  • Visas darījuma produkcijas vērtības nav negatīvas.
  • Šī darījuma ievades vērtību summa ir lielāka nekā tā izvades vērtību summa. Ņemiet vērā, ka, ja skaitļi ir atšķirīgi, starpība tiek uzskatīta par darījuma maksu, kuru var pieprasīt kalnračs.

Pamata darījums ar PK hash

bitcoin ir sava pielāgotā (Forth-like) skriptu valoda, kas ir pietiekami jaudīga, lai izstrādātāji varētu izveidot sarežģītus un pielāgotus darījumu veidus. Pastāv apmēram pieci standarta darījumu veidi, kurus pieņem standarta Bitcoin klienti [5], tomēr pastāv arī citi klienti, kas pieņems cita veida darījumus par maksu. Šeit mēs tikai aplūkosim maksājuma PK-hash mehāniku.

Lai jebkurš darījums būtu derīgs, kombinētajam scriptSig / scriptPubKey pārim ir jānovērtē taisnība. Konkrētāk, darījumu izdevējs nodrošina scriptSig, kuru izpilda un seko pieprasītā darījuma izejas scriptPubKey (atcerieties, kā mēs teicām, ka ievadi pieprasa iepriekšējos neiztērētos darījumu rezultātus?). Abiem skriptiem ir viena un tā pati kaudze.

Efektivitātes labad izmantosim (oficiālā bitcoin wiki) atsauce, kad mēs to apspriežam. Apmeklējot saiti, dodieties apmēram pusceļā, lai atrastu tabulu ar 7 rindām. Šajā tabulā parādīts, kā skripti tiek apvienoti, kā notiek izpilde un kā kaudze izskatās katrā solī.

Jāatzīmē viena lieta, jo bitcoīnu adreses faktiski ir jaukšanas gadījumi (labi, tas kļūst vēl mazliet sarežģītāk. Skat ), sūtītājs nevar zināt faktisko publisko atslēgu, lai pārbaudītu, vai tā nav privāta. Tāpēc Atpirkējs norāda gan publisko, gan privāto atslēgu, un scriptPubKey dublēs un jauks publisko atslēgu, lai pārliecinātos, ka Pircējs patiešām ir paredzētais saņēmējs.

Izpildes laikā jūs varat redzēt, ka konstantes tiek novietotas tieši uz kaudzes, kad tās sastopamas. Darbības pievieno vai noņem vienumus no kaudzes, kad tie tiek novērtēti. Piemēram, OP_HASH160 paņems augšējo vienumu no kaudzes un to turēs divreiz, vispirms ar SHA-256 un pēc tam ar RIPEMD-160. Kad visi mūsu skripta vienumi būs novērtēti, viss mūsu skripts novērtēs patiesu, ja patiesais paliek uz kaudzes, un nepatiesu citādi.

Kopumā pay-to-PK-hash ir diezgan vienkāršs darījumu veids. Tas nodrošina, ka tikai izpirkējs ar atbilstošu publisko / privāto atslēgu pāri var pieprasīt un pēc tam iztērēt bitcoin. Pieņemot, ka visi pārējie kritēriji ir izpildīti (skat. Iepriekšējo sadaļu), darījums ir labs un to var ievietot blokā.

Turpmākajos rakstos es sadalīšu sarežģītākus darījumu veidus. Mēs redzēsim, kā vairāk nekā divas puses var piedalīties darījumā, un redzēsim, kā ilgāk darbojošos darījumu veidus var ieviest.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me