TON: Rhwydwaith Agored Telegram. Rhan 2: Blockchains, sharding

TON: Rhwydwaith Agored Telegram. Rhan 2: Blockchains, sharding

Mae'r testun hwn yn barhad o gyfres o erthyglau lle rwy'n archwilio strwythur y rhwydwaith dosbarthu (yn ôl pob tebyg) Telegram Open Network (TON), sy'n cael ei baratoi i'w ryddhau eleni. YN rhan flaenorol Disgrifiais ei lefel fwyaf sylfaenol - y ffordd y mae nodau'n rhyngweithio â'i gilydd.

Rhag ofn, gadewch imi eich atgoffa nad oes gennyf unrhyw beth i'w wneud â datblygiad y rhwydwaith hwn a chasglwyd yr holl ddeunydd o ffynhonnell agored (er nad yw wedi'i wirio) - dogfen (mae yna hefyd gyfeiliant pamffled, yn amlinellu'n fyr y prif bwyntiau), a ymddangosodd ddiwedd y llynedd. Mae faint o wybodaeth yn y ddogfen hon, yn fy marn i, yn nodi ei ddilysrwydd, er nad oes cadarnhad swyddogol o hyn.

Heddiw, byddwn yn edrych ar brif gydran TON - y blockchain.

Cysyniadau sylfaenol

Cyfrif (cyfrif). Set o ddata wedi'i nodi gan rif 256-did cyfrif_id (gan amlaf dyma allwedd gyhoeddus perchennog y cyfrif). Yn yr achos sylfaenol (gweler isod cadwyn waith sero), mae'r data hwn yn cyfeirio at gydbwysedd y defnyddiwr. "Meddiannu" penodol cyfrif_id gall unrhyw un, ond ni ellir newid ei werth ond yn ôl rhai rheolau.

Contract craff (smart-gontract). Yn ei hanfod, mae'n achos arbennig o gyfrif, wedi'i ategu â chod contract smart a storio ei newidynnau. Os yn achos “waled” gallwch adneuo a thynnu arian ohono yn unol â rheolau cymharol syml a phenderfynol, yna yn achos contract smart mae'r rheolau hyn yn cael eu hysgrifennu ar ffurf ei god (mewn rhai Turing-cyflawn). iaith raglennu).

Wladwriaeth Blockchain (cyflwr blockchain). Set o gyflwr yr holl gyfrifon/contractau clyfar (mewn ystyr haniaethol, tabl stwnsh, lle mae'r allweddi yn ddynodwyr cyfrif a'r gwerthoedd yw'r data sy'n cael ei storio yn y cyfrifon).

Neges (neges). Uchod defnyddiais yr ymadrodd “credit and debit money” – dyma enghraifft arbennig o neges (“trosglwyddo N gram o gyfrif cyfrif_1 i gyfrif cyfrif_2"). Yn amlwg, dim ond y nod sy'n berchen ar allwedd breifat y cyfrif all anfon neges o'r fath cyfrif_1 - ac yn gallu cadarnhau hyn gyda llofnod. Canlyniad cyflwyno negeseuon o'r fath i gyfrif rheolaidd yw cynnydd yn ei gydbwysedd, a chanlyniad y contract smart yw gweithredu ei god (a fydd yn prosesu derbyn y neges). Wrth gwrs, mae negeseuon eraill hefyd yn bosibl (trosglwyddo nid symiau ariannol, ond data mympwyol rhwng contractau smart).

Trafodiad (trafodiad). Gelwir y ffaith bod neges yn cael ei chyflwyno yn drafodiad. Mae trafodion yn newid cyflwr y blockchain. Trafodion (cofnodion dosbarthu neges) sy'n ffurfio'r blociau yn y blockchain. Yn hyn o beth, gallwch chi feddwl am gyflwr y blockchain fel cronfa ddata gynyddrannol - mae pob bloc yn “wahanol” y mae angen eu cymhwyso'n ddilyniannol i gael cyflwr presennol y gronfa ddata. Bydd manylion pecynnu'r “gwahanolau” hyn (ac adfer y cyflwr llawn ohonynt) yn cael eu trafod yn yr erthygl nesaf.

Blockchain yn TON: beth ydyw a pham?

Fel y soniwyd yn yr erthygl flaenorol, Strwythur data yw blockchain, y mae ei elfennau (blociau) yn cael eu trefnu'n “gadwyn”, ac mae pob bloc dilynol o'r gadwyn yn cynnwys stwnsh o'r un blaenorol. Gofynnodd y sylwadau’r cwestiwn: pam fod angen strwythur data o’r fath o gwbl arnom pan fo gennym DHT eisoes - tabl stwnsh dosbarthedig? Yn amlwg, gellir storio rhywfaint o ddata yn DHT, ond dim ond ar gyfer gwybodaeth nad yw'n rhy "sensitif" y mae hyn yn addas. Ni ellir storio balansau arian cyfred digidol yn DHT - yn bennaf oherwydd y diffyg sieciau ymlaen uniondeb. Mewn gwirionedd, mae cymhlethdod cyfan y strwythur blockchain yn tyfu er mwyn atal ymyrraeth â'r data sydd wedi'i storio ynddo.

Fodd bynnag, mae'r blockchain yn TON yn edrych hyd yn oed yn fwy cymhleth nag yn y rhan fwyaf o systemau dosbarthedig eraill - ac am ddau reswm. Y cyntaf yw'r awydd i leihau'r angen am ffyrch. Mewn cryptocurrencies traddodiadol, gosodir yr holl baramedrau yn y cam cychwynnol ac mae unrhyw ymgais i'w newid mewn gwirionedd yn arwain at ymddangosiad “bydysawd arian cyfred digidol amgen.” Yr ail reswm yw cefnogaeth ar gyfer malu (darnio, darnio) blockchain. Mae Blockchain yn strwythur na all ddod yn llai dros amser; ac fel arfer mae pob nod sy'n gyfrifol am weithrediad y rhwydwaith yn cael ei orfodi i'w storio'n llwyr. Mewn systemau traddodiadol (canolog), defnyddir darnio i ddatrys problemau o'r fath: mae rhai o'r cofnodion yn y gronfa ddata wedi'u lleoli ar un gweinydd, rhai ar un arall, ac ati. Yn achos cryptocurrencies, mae ymarferoldeb o'r fath yn dal yn eithaf prin - yn arbennig, oherwydd y ffaith ei bod yn anodd ychwanegu sharding i system lle na chafodd ei gynllunio'n wreiddiol.

Sut mae TON yn bwriadu datrys y ddwy broblem uchod?

Cynnwys Blockchain. Cadwyni gwaith.

TON: Rhwydwaith Agored Telegram. Rhan 2: Blockchains, sharding

Yn gyntaf oll, gadewch i ni siarad am yr hyn y bwriedir ei storio yn y blockchain. Bydd cyflwr cyfrifon (“waledi” yn yr achos sylfaenol) a chontractau smart yn cael eu storio yno (er mwyn symlrwydd, byddwn yn tybio bod hyn yr un peth â chyfrifon). Yn ei hanfod, tabl hash rheolaidd fydd hwn - dynodwyr fydd yr allweddi ynddo cyfrif_id, a gwerthoedd yw strwythurau data sy'n cynnwys pethau fel:

  • cydbwysedd;
  • cod contract smart (dim ond ar gyfer contractau smart);
  • storio data contract smart (ar gyfer contractau smart yn unig);
  • ystadegau;
  • (dewisol) allwedd gyhoeddus ar gyfer trosglwyddiadau o'r cyfrif, yn ddiofyn account_id;
  • ciw o negeseuon sy'n mynd allan (yma maen nhw'n cael eu nodi i'w hanfon ymlaen at y derbynnydd);
  • rhestr o'r negeseuon diweddaraf a anfonwyd i'r cyfrif hwn.

Fel y soniwyd uchod, mae'r blociau eu hunain yn cynnwys trafodion - negeseuon a ddanfonir i wahanol gyfrifon account_id. Fodd bynnag, yn ogystal â account_id, mae negeseuon hefyd yn cynnwys maes 32-bit workchain_id — dynodwr fel y'i gelwir cadwyn gwaith (cadwyn gwaith, gweithio blockchain). Mae hyn yn caniatáu ichi gael sawl cadwyn bloc yn annibynnol ar ei gilydd gyda gwahanol ffurfweddiadau. Yn yr achos hwn, ystyrir workchain_id = 0 yn achos arbennig, cadwyn waith sero - y balansau ynddo a fydd yn cyfateb i arian cyfred digidol TON (Grams). Yn fwyaf tebygol, ar y dechrau, ni fydd cadwyni gwaith eraill yn bodoli o gwbl.

Shardchains. Paradigm Sharding Anfeidrol.

Ond nid yw'r twf yn nifer y cadwyni bloc yn dod i ben yno. Gadewch i ni ddelio â darnio. Dychmygwn fod pob cyfrif (account_id) yn cael ei blockchain ei hun - mae'n cynnwys yr holl negeseuon sy'n dod ato - ac mae cyflwr yr holl gadwyni bloc o'r fath yn cael eu storio ar nodau ar wahân.

Wrth gwrs, mae hyn yn wastraffus iawn: yn fwyaf tebygol, ym mhob un o'r rhain cadwyni miniog (shardchain, blockchain shard) anaml iawn y bydd trafodion yn cyrraedd, a bydd angen llawer o nodau pwerus (wrth edrych ymlaen, nodaf nad ydym yn siarad am gleientiaid ar ffonau symudol yn unig - ond am weinyddion difrifol).

Felly, mae cadwyni shardchain yn cyfuno cyfrifon yn ôl rhagddodiaid deuaidd eu dynodwyr: os oes gan shardchain ragddodiad o 0110, yna bydd yn cynnwys trafodion yr holl account_ids sy'n dechrau gyda'r rhifau hyn. hwn shard_prefix Gall fod â hyd o 0 i 60 did - a'r prif beth yw y gall newid yn ddeinamig.

TON: Rhwydwaith Agored Telegram. Rhan 2: Blockchains, sharding

Cyn gynted ag y bydd un o'r cadwyni mân yn dechrau derbyn gormod o drafodion, mae'r nodau sy'n gweithio arno, yn unol â rheolau a bennwyd ymlaen llaw, yn ei “rhannu” yn ddau blentyn - bydd eu rhagddodiaid ychydig yn hirach (ac ar gyfer un ohonynt bydd y darn hwn. cyfartal i 0, ac ar gyfer y llall - 1). Er enghraifft, shard_prefix = 0110bydd b yn hollti i 01100b a 01101b. Yn eu tro, os bydd dwy gadwyn fin “gyfagos” yn dechrau teimlo'n ddigon cyfforddus (am beth amser), byddant yn uno eto.

Felly, mae hollti'n cael ei wneud “o'r gwaelod i fyny” - rydyn ni'n cymryd bod gan bob cyfrif ei ddarn ei hun, ond am y tro maen nhw'n cael eu “gludo gyda'i gilydd” gan ragddodiaid. Dyma beth mae'n ei olygu Paradigm Sharding Anfeidrol (paradeim darnio anfeidrol).

Ar wahân, hoffwn bwysleisio mai bron yn unig y mae cadwyni gwaith yn bodoli - mewn gwirionedd, workchain_id mae'n rhan o'r dynodwr o shardchain penodol. Mewn termau ffurfiol, mae pob cadwyn shard yn cael ei ddiffinio gan bâr o rifau (workchain_id, shard_prefix).

Cywiro gwall. Blockchains fertigol.

Yn draddodiadol, ystyrir bod unrhyw drafodiad ar blockchain wedi'i osod mewn carreg. Fodd bynnag, yn achos TON, mae'n bosibl "ailysgrifennu hanes" - rhag ofn i rywun (yr hyn a elwir. cwlwm pysgotwr) yn profi bod un o'r blociau wedi'i lofnodi'n anghywir. Yn yr achos hwn, mae bloc cywiro arbennig yn cael ei ychwanegu at y shardchain cyfatebol, sy'n cynnwys hash y bloc ei hun yn cael ei gywiro (ac nid y bloc olaf yn y shardchain). Gan feddwl am y gadwyn shard fel cadwyn o flociau wedi'u gosod yn llorweddol, gallwn ddweud bod y bloc cywiro wedi'i gysylltu â'r bloc gwallus nid i'r dde, ond oddi uchod - felly ystyrir ei fod yn dod yn rhan o "blockchain fertigol" bach. . Felly, gallwn ddweud bod cadwyni shard blockchain dau ddimensiwn.

TON: Rhwydwaith Agored Telegram. Rhan 2: Blockchains, sharding

Os, ar ôl bloc gwallus, y cyfeiriwyd at y newidiadau a wnaed ganddo gan flociau dilynol (h.y., gwnaed trafodion newydd yn seiliedig ar rai annilys), mae rhai cywiro hefyd yn cael eu hychwanegu at y blociau hyn “ar ben”. Pe na bai’r blociau’n effeithio ar y wybodaeth “yr effeithiwyd arni”, nid yw’r “tonnau cywirol” hyn yn berthnasol iddynt. Er enghraifft, yn y llun uchod, cydnabuwyd bod trafodiad y bloc cyntaf, gan gynyddu balans y cyfrif C, yn anghywir - felly, dylid canslo'r trafodiad sy'n lleihau balans y cyfrif hwn yn y trydydd bloc hefyd, a bloc cywiro dylid ei ymrwymo ar ben y bloc ei hun.

Dylid nodi, er bod y blociau cywiro yn cael eu darlunio fel rhai "uwchben" y rhai gwreiddiol, mewn gwirionedd byddant yn cael eu hychwanegu at ddiwedd y blockchain cyfatebol (lle dylent fod yn gronolegol). Nid yw'r lleoliad dau ddimensiwn ond yn dangos i ba bwynt yn y blockchain y byddant yn cael eu “cysylltu” (trwy stwnsh y bloc gwreiddiol sydd wedi'i leoli ynddynt).

Gallwch chi athronyddu ar wahân ynghylch pa mor dda yw'r penderfyniad i “newid y gorffennol”. Mae'n ymddangos, os ydym yn cyfaddef y posibilrwydd o floc anghywir yn ymddangos yn y shardchain, yna ni allwn osgoi'r posibilrwydd y bydd bloc cywiro gwallus yn ymddangos. Yma, cyn belled ag y gallaf ddweud, mae'r gwahaniaeth yn nifer y nodau y mae'n rhaid iddynt gyrraedd consensws ar flociau newydd - bydd nifer gymharol fach o bobl yn gweithio ar bob cadwyn shard."gweithgor» nodau (sy'n newid ei gyfansoddiad yn eithaf aml), a chyflwyno blociau cywiro bydd angen caniatâd pawb nodau dilysydd. Byddaf yn siarad mwy am ddilyswyr, grwpiau gwaith, a rolau nodau eraill yn yr erthygl nesaf.

Un blockchain i'w rheoli i gyd

Mae yna lawer o wybodaeth a restrir uchod am y gwahanol fathau o blockchains, y dylid ei hun hefyd yn cael ei storio yn rhywle. Yn benodol, rydym yn siarad am y wybodaeth ganlynol:

  • am nifer a chyfluniadau cadwyni gwaith;
  • am nifer y cadwynau shardchain a'u rhagddodiaid ;
  • ynghylch pa nodau sy'n gyfrifol ar hyn o bryd am ba gadwyni miniog;
  • hashes o'r blociau olaf wedi'u hychwanegu at yr holl shardchains.

Fel y gallech fod wedi dyfalu, mae'r holl bethau hyn yn cael eu cofnodi mewn storfa blockchain arall - meistrchain (meistrchain, meistr blockchain). Oherwydd presenoldeb hashes o flociau'r holl gadwyni shard yn ei blociau, mae'n gwneud y system yn gysylltiedig iawn. Mae hyn yn golygu, ymhlith pethau eraill, y bydd cynhyrchu bloc newydd yn y masterchain yn digwydd yn syth ar ôl cynhyrchu blociau mewn cadwyni shard - disgwylir y bydd blociau mewn cadwyni shard yn ymddangos bron ar yr un pryd bob 5 eiliad, a'r bloc nesaf yn y masterchain - eiliad ar ôl hynny.

Ond pwy fydd yn gyfrifol am weithredu'r holl waith titanig hwn - ar gyfer anfon negeseuon, gweithredu contractau smart, ffurfio blociau mewn cadwyni shard a'r masterchain, a hyd yn oed gwirio blociau am wallau? A fydd hyn i gyd yn cael ei wneud yn gyfrinachol gan ffonau miliynau o ddefnyddwyr gyda'r cleient Telegram wedi'i osod arnynt? Neu, efallai, bydd tîm Durov yn cefnu ar y syniadau o ddatganoli ac y bydd eu gweinyddion yn ei wneud yn y ffordd hen ffasiwn?

Mewn gwirionedd, nid yw'r naill ateb na'r llall yn gywir. Ond mae ymylon yr erthygl hon yn dod i ben yn gyflym, felly byddwn yn siarad am wahanol rolau nodau (efallai eich bod eisoes wedi sylwi ar rai ohonynt), yn ogystal â mecaneg eu gwaith, yn y rhan nesaf.

Ffynhonnell: hab.com

Ychwanegu sylw