paint-brush
Maendeleo ya Blockchain Kupitia Macho ya Msanidi Programu wa Backendkwa@defidiver
640 usomaji
640 usomaji

Maendeleo ya Blockchain Kupitia Macho ya Msanidi Programu wa Backend

kwa DeFi Diver18m2024/09/10
Read on Terminal Reader

Ndefu sana; Kusoma

Makala haya yanatoa muhtasari wa kina wa ukuzaji wa blockchain kutoka kwa mtazamo wa msanidi programu. Inashughulikia dhana muhimu kama vile ugatuaji madaraka, mikataba mahiri, na changamoto za kufanya kazi na teknolojia ya blockchain.
featured image - Maendeleo ya Blockchain Kupitia Macho ya Msanidi Programu wa Backend
DeFi Diver HackerNoon profile picture
0-item
1-item

Mchana mzuri, kila mtu! Nimekuwa nikifanya maendeleo ya Backend kwa muda mrefu sana, na kwa miaka michache iliyopita, nimekuwa nikiandika miradi tofauti zaidi ya blockchain (Solidity on EVM). Kupiga mbizi kwenye blockchain haikuwa rahisi kwangu, na ubongo wangu wa nyuma ulivunjika mara kadhaa, kwa hivyo niliamua kushiriki maoni yangu juu ya kubadili maendeleo ya blockchain.


Kanusho: kila kitu kilichoelezewa hapa chini ni maoni yangu tu. Ninaweza kuwa na makosa, na nina makosa mara kwa mara :))


Blockchain ni teknolojia nzuri sana inayoweza kusogeza dunia yetu mbele. Lakini kwa sasa, watu wengi wanaitumia kununua-kuuza-kulaghai-kuongeza ulaghai. Sitapanga na sitapanga kuzingatia crypto kama mali.


Ndiyo, video na machapisho mengi tofauti yanasema, "Hapa, crypto-na-vile inaweza kukua sasa, na crypto-na-vile imeanguka. Jamani tuwekeze, tununue...” Sitawaambia lolote kuhusu hilo.


Nitasema jambo moja tu - unapaswa kuepuka crypto kwa kupata pesa. Ikiwa wewe ni msanidi programu, ni bora kujaribu kupata mapato kama msanidi programu na usijihusishe na uwekezaji. Na ikiwa kweli unataka kuwekeza, usiingie kwenye crypto.


Kuhusu blockchain na kwa nini inavutia

Inastahili kuanza na dokezo muhimu. Blockchain sio cryptocurrency. Blockchain ni teknolojia ambayo cryptocurrency hujengwa kwayo na kuita cryptocurrency blockchain ni kama kuita tasnia nzima ya maendeleo Javascript . Ndiyo, JavaScript inaonekana kuwa kesi maalum ya maendeleo, lakini wakati wa kujadili maendeleo, hatumaanishi JavaScript. Ingawa watu wengine wanamaanisha JavaScript tu ...

Kwenda blockchain kwa pesa

Jambo la kwanza linalokuja akilini ni pesa. Watengenezaji wa Blockchain wanalipwa vizuri kabisa. Mimi binafsi nimefungua nafasi hizo. Binafsi nimejibu nafasi kama hizo, ambapo unaweza kupata zaidi ya msanidi programu sawa kwa muda sawa unaotumika kwa siku kazini. Watengenezaji wa Blockchain wana thamani ya uzito wao katika dhahabu katika startups msingi blockchain. Hasa msanidi mzuri wa blockchain!

Je, ni nani msanidi programu mzuri?

Kuwa msanidi mzuri wa mazingira haiwezekani bila kuacha au kurekebisha prod. Labda mimi ni mpotevu tu na ninajifunza kupitia uzoefu mbaya, lakini hiyo ndiyo nadharia niliyo nayo:


  1. Ikiwa msanidi programu wa nyuma ana uzoefu, basi ameendesha suluhisho katika prod.
  2. Ikiwa ameiendesha katika Prod, basi anajua jinsi inavyofanya kazi na anajua kinachotokea kwa bidhaa iliyopakiwa.
  3. Ikiwa ameweka huduma chini ya mzigo, basi amepata wakati wa kupungua na ajali za huduma.
  4. Na ikiwa amekutwa na ajali za huduma, labda amezichukua.


Huwezi kubadilisha uzoefu na kushindwa, lakini uzoefu wa kushindwa hukuruhusu kutambua kwamba una uzoefu. Ni ngumu kuwa msanidi mzuri wa blockchain bila kupoteza pesa:


  • Ikiwa bado sijaibiwa pesa kutoka kwa mkataba wangu, inamaanisha kuwa sijazindua kitu na pesa halisi (angalau $ 1000 kwenye mkataba wangu).
  • Ikiwa sijazindua kitu kwa pesa halisi au tu kwenye mitandao ya majaribio (na pesa bandia), basi sijui nini kinaningoja katika ulimwengu wa sumu wa blockchain.
  • Ikiwa sijui ni nini kinaningojea, nitachomwa kwenye uzinduzi wa kwanza, na ni swali la timu/kampuni ambayo iko tayari kuchukua hatari ya kuwa mlipaji wa kwanza kwa kosa langu.

Kuingia kwenye blockchain kwa teknolojia

Ndege ya Kwanza ya Ndugu wa Wright


Picha iliyo hapo juu inaonyesha ndege ya kwanza ya akina Wright duniani, ikiruka vibaya sana. Lakini iliruka, na katika siku zake, mtazamo wa mtu wa kawaida kwa ndege ulikuwa kitu kama hiki:


  • Ghali
  • Haifai
  • Haifai, haieleweki


Na sasa, sekta ya usafiri wa ndege ni sehemu nzuri sana ya maisha yetu, inaunganisha watu kote sayari ndani ya saa chache. Logistics sasa iko katika kiwango ambacho ndugu wa Wright hawakuwahi kuota! Ulimwengu wote unaishi tofauti kwa sababu ya ndege.


Ningesema sawa kuhusu blockchain sasa - ni ghali na haifai na haijulikani kwa nini. Hadi nilipozama katika maendeleo ya blockchain, ilionekana kwangu kama kitu kisicho na maana kwa wawekezaji wanaodanganya (=hamsters). Lakini ukiiangalia kutoka upande mwingine, inawezekana kuhifadhi ukweli wowote kwa njia ya ugatuzi bila uwezekano wa kuchezea. "bila uwezekano wa kuchezea" ni maelezo muhimu.


Lakini ole, uhusiano na neno "blockchain" ni nyepesi na ni mbaya:


  • Bitcoin
  • Uwekezaji
  • Ulaghai
  • ETH, Ripple, {ingiza jina la sarafu}
  • Bubble ambayo inakaribia kupasuka


Ikiwa tunatupa kifungu cha pesa za karatasi kwenye jiko, jiko litawaka vizuri, na pesa hata itatoa joto kwa muda fulani. Lakini huo ni upuuzi.


Na ndivyo ilivyo kwa blockchain. Kuitumia tu kwa pesa na crypto ni mbaya, lakini jambo lingine bado halijachukua mizizi ...


Moja ya vichocheo kuu vya maendeleo ya bidhaa yoyote ni pesa. Ikiwa kuna kitu ambacho unaweza kupata pesa nzuri na yenye nguvu, basi "kitu" hiki kitaendelezwa kikamilifu. Na ndiyo sababu, hadi sasa, miradi ya kifedha kulingana na blockchain ni kweli msingi wa kupata pesa kwa mtu kupata pesa na kupoteza pesa kwa mtu mwingine.


Nadharia ya Maendeleo ya Blockchain

Ugatuaji

Kuna tofauti gani kati ya huduma ya serikali kuu na iliyogatuliwa? Wacha tuanze na mfumo wa kati. Kuna mimi na mtu mwingine, na tumeamua kutumia huduma kati yetu, kama vile benki au mtoa huduma mwingine, ili kuwezesha uhamisho.


Hebu fikiria kwamba tuna benki, ambayo ni huduma ya kati. Ninaamuru benki hii: "Tafadhali uhamishe dola 100 kwa mtu huyu". Benki inarekodi kuwa nina dola 100 chini, na mtu mwingine ana dola 100 zaidi.


Lakini ni nini shida na huduma ya kati? Kuna mmiliki nyuma ya huduma hii ya kati, sivyo? Kawaida, baadhi ya makampuni makubwa, Holdings, haijalishi; kwa upande wetu, iwe mtu mmoja. Mtu huyu mmoja anaweza kusema: “Hebu tufanye hivi. Acha Alex atume dola 100, lakini hakuna mtu atakayepokea hizi dola 100. Nazihitaji zaidi”.


Huduma za kati zina wamiliki wao. Tatizo ni kwamba mmiliki anaweza kufanya maamuzi mabaya, kuchukua pesa. Na inaweza kuwa sio tu juu ya "kuchukua pesa mwenyewe". Kwa mfano, unaweza kuandika, "Tuna dola 100,500 benki," na unatumai kwamba wawekaji amana wote hawatafuata pesa hizo... kama ilivyotokea kwa SVB na benki zingine zilizokufa.


Bitcoin ilivumbuliwa ili kugatua usimamizi wa pesa.


Huduma ya ugatuzi imejengwa kwenye mtandao wa nodi ambapo kila nodi huhifadhi na kupitisha habari. Kwa ufupi, nodi zimekubaliana juu ya habari gani inachukuliwa kuwa sahihi na nini sio na jinsi tunavyoihifadhi.


Tunaweza kuchora mlinganisho na chumba - mtu mmoja anapiga kelele habari anayotaka wengine wahifadhi. Kisha, kila mtu ndani ya chumba anafanyia kazi habari alizohifadhi baada ya kupiga kelele.


Kwa mfano, blockchain inaweza kuhifadhi na kusambaza ujumbe au habari kuhusu uhamishaji wa pesa. Washiriki katika mtandao huthibitisha habari kabla ya kuirekodi.


Katika mlinganisho wa chumba, ninapaza sauti, "Ninahamisha dola 100 kwa Sam." Kila mtu anarekodi kuwa nina dola 100 chini, na Sam ana dola 100 zaidi. Ikiwa ghafla, kabla ya uhamisho, nina chini ya dola 100, hakuna mtu atakayerekodi shughuli.

Mikataba ya busara

Katika blockchain, unaweza kuunda mikataba mahiri katika lugha ya Solidity (katika kesi ya blockchain kwenye EVM). Mkataba mzuri ni mpango unaoendeshwa kwenye mtandao wa blockchain. Inaweza kuwa na njia za uthibitishaji, ushughulikiaji wa hitilafu na utendakazi mwingine.


Tena, katika kesi ya chumba ambapo tunapiga kelele amri, mkataba mzuri ni mimi kumpa kila mshiriki katika chumba msimbo wa programu mapema: jinsi ya kuguswa na amri zangu, nini cha kuangalia, na nini cha kuokoa. Na kisha ninapiga kelele, "Tekeleza programu na vigezo hivi". Kisha, kila mtu anafuata maagizo. Mfano wa mkataba rahisi na mzuri ni uhifadhi wa taarifa na kazi za kuongeza na kupokea data. Msimbo wa mkataba unajumuishwa katika msimbo wa byte na kupitishwa kwa washiriki wa blockchain kwa utekelezaji.



Je, tunashughulikiaje maombi mahususi yatakayotumwa kwa mkataba huu mahiri? Ikiwa tutatoa mlinganisho na mandharinyuma, ni huduma inayoweza kuchakata ombi la POST na GET. POST huhifadhi habari. GET hapa inatuma nyuma maelezo ambayo tumehifadhi. Hii ni kawaida jinsi backend yoyote ni muundo.


Wakati wa ukuzaji wangu kwenye sehemu ya nyuma, nilizoea sana mpangilio kwamba API, hifadhidata, na kila kitu kinachohusiana na uhifadhi wa data na usindikaji hufanyika kwa upande wangu. Na mimi tayari, kana kwamba nyuma ya ukuta, hutoa kiolesura kwa mtumiaji kufanya kazi na data hii kulingana na hali iliyotayarishwa awali.


Kwa mfano, mtumiaji 1 huja na kuhifadhi maudhui (chapisho, kwa mfano) kupitia njia ya POST. Kisha, mtumiaji 2 anakuja na kupata maudhui haya kwa kutumia mbinu ya GET. Watumiaji hawajui ni wapi na jinsi gani - sehemu ya nyuma ni kisanduku cheusi kwao.


Na hapa tunakuja sehemu moja muhimu sana ya blockchain. Hebu turudi kwenye mifano yetu ya nodi au watu waliosimama kwenye chumba. Wacha tuseme, kwa kutumia mlinganisho na backend, tunayo yafuatayo kila wakati: Ninatupa njia ya "ADD" kwenye blockchain, na kisha kila mtu ndani huita njia hiyo na kisha anaweza kuchukua habari kutoka kwa nakala zao za blockchain.


Kwa hivyo, tuna rundo la nakala tofauti kwenye mtandao ambazo nodi huchukua habari. Shida na blockchain ni kwamba lazima tulipe pesa halisi kwa kila operesheni ya uandishi. Hii inalipwa na sarafu ya mtandao, ambayo inaweza kununuliwa kwa pesa halisi (au kuchimbwa, lakini sio kile tunachozungumzia leo).


Ikiwa tunalinganisha blockchain na backend, picha ni kama ifuatavyo.

  • Katika huduma za kawaida, tunaandika bila malipo, tunasoma bila malipo, na kwa kutegemea
  • Katika blockchain, tunaandika kwa ada na kusoma kwa bure na kwa kujitegemea


Kwa mfano, Telegraph ina hifadhidata ya kati. Tunaweza kuipata bila malipo kila wakati na kupakua ujumbe wetu, picha, video, n.k. Lakini seva za Telegramu zikishuka ghafla, hatuwezi kuipata.


Tunapaswa kulipia mashine pepe ya EVM ili kutekeleza amri kadhaa za mikataba mahiri, ikijumuisha kuandika maelezo kwa blockchain. Inafanya mahesabu fulani, kuongeza kitu, kuzidisha, kuzidisha, kuzidisha, na hatimaye, artifact mpya inaonekana kwenye hifadhi ya blockchain, ambayo inasasishwa kwenye nodi zote zinazoshiriki katika blockchain.


Mshiriki yeyote wa mtandao anaweza kuendesha nodi kamili na mamia ya gigabytes ya data ya blockchain na kufanya kazi nayo ndani ya nchi. Unaweza pia kutumia toleo nyepesi la node, ambayo haitahifadhi blockchain nzima, lakini unaweza kufikia nodes kamili kwenye mtandao na kurejesha taarifa muhimu kwa njia hiyo.


Wazo ni kwamba kila kiingilio kwenye blockchain ni kizuizi ambacho kina rundo la shughuli ambazo mabadiliko katika hali ya blockchain hufanyika. Kila kizuizi kinachofuatana kinategemea kilichotangulia kwenye mnyororo kulingana na algorithms ya hashing.


Kwa ujumla, ni ya msingi, lakini inafaa kukumbuka - unapaswa kulipa kila kupiga chafya ikiwa data itabadilika. Kwa njia, kupelekwa kwa mkataba pia ni rekodi katika blockchain na sio nafuu!

Usambazaji wa mkataba mzuri

Katika ulimwengu wa nyuma, nimezoea takriban mzunguko wa maisha ya ukuzaji wa huduma zifuatazo:


  • Imeandikwa kanuni
  • Ilizinduliwa katika Gitlab
  • GitLab CI huendesha vipimo, hukagua kila kitu
  • Ikiwa kila kitu kiko sawa, CI huanza kupeleka toleo jipya la programu kwenye seva



Hiyo ni, tumezoea kufanya kazi kwa njia hii, na hutokea kwa bure. Ingawa bure kwa masharti, kwa sababu tunalipia seva. Vipi kuhusu blockchain?


Katika kesi ya blockchain, tunahitaji kuandika msimbo mpya wa "maombi" yetu (mkataba wa smart) kwenye blockchain. Kama nilivyoandika hapo juu, tunapaswa kulipa kwa kila rekodi. Kabla ya kufanya muamala kwa mkataba wetu mahiri, tunahitaji kufanya muamala kwa kuweka mkataba mahiri.


Kisha, seva ya mteja/huduma itawasiliana na nodi zozote ili kupokea au kuhifadhi taarifa katika mkataba.



Idadi kubwa ya nodi zinahitaji kuarifiwa - "guys, hapa kuna bytecode ya mkataba ambayo algorithms zinahitajika kufanywa kwenye shughuli zangu". Ni muhimu kuhakikisha kuwa nambari hiyo hiyo inaonekana kwenye nodi zote zinazojifunza blockchain, na itatekelezwa kwa njia ile ile, bila kujali ni nani anayeiita na bila kujali inaitwaje. Mitambo itakuwa sawa na isiyobadilika. Zaidi ya hayo, hakuna njia ambayo mkataba mzuri unaweza kubadilishwa kwa namna fulani kufanya kazi tofauti kwenye nodi zozote.


Chini ni mfano wa shughuli ambapo niliweka mkataba kwenye mtandao wa ETH muda mrefu uliopita.



Ilikuwa ni mkataba wa majaribio ambao haukuwahi kutumika katika hali halisi. Nililipa dola 200 kwa ETH kwa kupelekwa kwake. Hiyo ni, hatukuwa tumefanya chochote na mkataba huu - hakuna ombi moja, lakini $ 200 ilikuwa tayari imetumika. Bado nina huzuni ninapokumbuka uwasilishaji mbaya wa mkataba usio sahihi ...

Hifadhi ya data

Wacha tuzungumze juu ya uhifadhi wa data. Sote tumezoea kuwa na PostgreSQL , MySQL , MongoDB , Redis , na huduma zingine kwenye upande wa nyuma ambazo huturuhusu kufanya kazi na data kwa urahisi. Katika kesi ya blockchain, hakuna kitu kama hicho hata karibu.



Katika blockchain, uhifadhi unatekelezwa kama vigezo katika darasa katika lugha zingine. Hiyo ni, tu maadili muhimu au safu. Hakuna meza za uhusiano zilizo na viungo vinavyofaa, na kadhalika. Tu - kuandika kwa kutofautiana na kuwa na furaha.


Kwa sasa, sijui njia nyingine yoyote ya kupanga uhifadhi katika blockchain. Naam, labda hali tayari imebadilika; labda unaposoma hii, kuna njia kama hiyo - andika kwenye maoni.


Kwa mfano, ikiwa tunataka kuhifadhi sio tu katika safu? Na tunataka kuhifadhi habari kwa ufunguo - kuna ramani ya hiyo.



Ishara ya dola inatolewa kwa sababu - tume ya mtandao itachukuliwa kwa kila seti.

Maumivu na maumivu

Katika block hii, nitajadili mambo yaliyonishangaza au kunikera. Kuna mengi zaidi kuliko yaliyo katika hati hii, lakini nitashiriki mambo ya kwanza ambayo yalinigusa kwanza katika mazoezi yangu.


Ni muhimu kutambua kwamba mengi ya "maumivu" yanaeleweka kwa sababu fulani ya kimantiki. Lakini hiyo haighairi maumivu ya ubongo wangu wa nyuma.


Kwa mfano, nimezoea ukweli kwamba tunaweza kupitia kwa urahisi vipengele vyote vya chochote. Haijalishi ikiwa ni safu au kitu au ramani. Katika Mshikamano, kwa kusudi hili, itabidi tuhifadhi kando safu ya funguo zote na kisha, ikiwa ni lazima, zipitie zote na upate vipengele kutoka kwenye ramani kwa kila ufunguo. Kweli, sisi pia tunatumia gesi kwenye uandishi wa ziada kwa safu hii ya funguo na uanzishaji wake.



Pia hatuwezi kupata vitu vyote muhimu vya kupanga.

Kuweka magogo

Hali ya ukataji miti pia haifurahishi. Nimezoea kurekebisha debugger katika mazingira ya ukuzaji, lakini hapa unapaswa kusahau hata juu ya ukataji miti wa kawaida.


Katika Typescript, nimezoea kuandika tu console.log(a) na mara moja kupata matokeo kwenye koni. Katika Solidity, kuna console.log , ambayo hufanya kazi tu wakati wa kuendesha katika mazingira ya ndani ya hardhat ya maendeleo . Na, jambo la kufurahisha ni kwamba baada ya kugawanya kile ninachohitaji, lazima nifute ukataji miti wote kabla ya mkataba kupelekwa kwa sababu vinginevyo, mkataba una uzito zaidi na unagharimu zaidi kupeleka, na haitafanya kazi hata kidogo kwenye prod. .


Mwishowe inageuka kuwa tunapoendesha mradi tayari katika vita, tunataka kuona ni nini kibaya, hatuwezi kuona kilichoharibika. Lakini tunaweza kuona nini kilikwenda sawa. Kuna mfumo wa matukio ndani ya mikataba mahiri. Huu hapa ni mfano: tuseme tunataka kuwa na tukio ambapo bidhaa mpya iliongezwa chini ya faharasa hii na thamani hii.



Tunaita tukio hili ndani ya njia set , na tunaweza tu kuona kumbukumbu wakati inatekelezwa kwa ufanisi. Ikiwa hitilafu fulani imetokea, ulikuwa na simu nyingi kwa mikataba, au tulikuwa na shughuli ya kuacha kufanya kazi, basi kumbukumbu hazihifadhiwi kwa sababu maelezo katika blockchain yamerejeshwa.


Tuseme unatumia mlolongo wa kandarasi kadhaa mahiri. Una katika mkataba wa kwanza unaoitwa matukio fulani, kisha mkataba wa pili unaitwa, ambao huita matukio mengine, na kisha kila kitu kinaanguka kilichoitwa ndani ya mkataba wa pili. Kila kitu kitafutwa kabisa mara moja na kwa wote.


Tunapaswa kuwa waangalifu sana tunapotaka kuweka kile kinachotokea ndani ya blockchain na kukumbuka kuwa ukataji miti wa kawaida, ambao tumezoea, haupatikani kwetu hapa.




Jambo lingine baya ni kwamba hatuwezi kupata taarifa kutoka kwa shughuli zetu katika kipengele cha kuandika. Ikiwa tutafanya muamala unaoandika kitu kwa blockchain (yaani, muamala unaolipishwa), return hayatatoa chochote kwa huduma yetu ambayo inaunganishwa na mkataba mzuri. Urejeshaji huu hufanya kazi ndani ya mkataba mahiri pekee au utendakazi view (bila malipo).


Kwa mfano, tungependa tunapoongeza thamani mpya kwenye blockchain yetu, tunaweza kutaka kujua ukubwa wa hifadhi baada ya kuhifadhi (picha ya skrini hapo juu). Hiyo ni, tunaweza tu kujua kupitia matukio ni nini hasa kiliongezwa. Na ili kufanya hivyo, tunahitaji kuvuta matukio ambayo yalisababishwa ndani ya shughuli hiyo.

Kufanya kazi na kamba

Kulikuwa na mshangao kwangu hapa - haiwezekani kufanya kazi na kamba kawaida. Blockchain haikuundwa kwa masharti. Hebu tuendelee kwenye mifano.


Nambari iliyo hapa chini itafanya kazi bila shida yoyote.



Na nambari hii haitafanya kazi tena:


Kwa muda mrefu nimetumiwa kufanya kazi kwa kawaida na masharti, kubadilisha wahusika katika kamba, kukata kamba, kuwaunganisha - yote haya haipatikani nje ya sanduku. Pia hakuna uwezekano wa kuonyesha urefu wa kamba. Hiyo ni, nambari hii haitajumuisha:



Ikiwa unahitaji kweli urefu wa kamba, unaweza kuibadilisha kuwa baiti na kisha uhesabu idadi ya ka. Lakini shida ni kwamba herufi zingine maalum hazijabadilishwa kuwa ka 1v1. Na zingine hazijabadilishwa na shughuli inaweza kuharibika.



Unaweza kuishia kuandika mkataba mzuri ambao unashughulikia masharti na majaribio kwenye kamba za kawaida. Kisha, kamba itafika ambayo haitashughulikiwa, na kila kitu kitaanguka, au urefu wa kamba utahesabiwa vibaya kwa sababu ya wahusika maalum.


Hitimisho juu ya masharti ni rahisi: usifanye kazi na masharti na usitegemee masharti ndani ya mkataba. Ikiwa ni muhimu kuokoa kamba, kisha uhifadhi byte na utegemee byte, na ubadili masharti kwa byte kwenye huduma yenyewe.

Tatizo la simu za nje

Utata unaofuata, ambao ni ugani wa kipengele kikuu cha blockchain, ni kutengwa. Data zote zinazokaa kwenye blockchain ama huzaliwa ndani ya blockchain au hupitishwa kwake kutoka nje. Lakini blockchain yenyewe haiwezi kamwe kubisha ulimwengu wa nje - mikataba mingine tu ya busara.


Shida ni kwamba amri zote za mikataba mahiri hutekelezwa kwa kila mshiriki kwenye mtandao. Na huwezi kuamini chanzo cha nje, kwani huwezi kuwa na uhakika kwamba taarifa sawa zitapokelewa kwenye kila nodi. Itatokea kwamba kila nodi itakuwa na toleo tofauti la blockchain na data tofauti na blockchain itaanguka.


Na kazi isiyo na maana ya "kupata joto la sasa nje" inakuwa kitu kisichowezekana. Ingawa hatuhitaji hali ya hewa kila wakati, baadhi ya data (kama viwango vya ubadilishaji wa sarafu au hali ya sasa ya mfumo fulani wa nje) ni muhimu. Suluhisho liko katika njia ifuatayo:


  1. Tuna Mkataba wa Opereta, ambapo huduma yetu hutuma kazi kama vile "tuma ombi kwa seva hii na vigezo hivi".
  2. Mkataba hutoa Tukio
  3. Backend tofauti hujiandikisha kwa tukio hili, hutoa habari kutoka kwa tukio hilo, ambalo linasema "wapi na kwa vigezo gani vya kutuma ombi" na jibu "liiweke hapa katika mkataba huu".
  4. Seva hutuma ombi na vigezo sahihi, hupata jibu
  5. Seva hutuma jibu kwa mkataba unaohitajika.
  6. Kinachotokea baadaye ni nini kinapaswa kutokea na data hii.


Inageuka kuwa mnyororo mrefu sana. Huzuni ya hadithi ni kwamba pesa inachukuliwa kwa ombi langu la kwanza la fomu "kwenda kwangu kwa ombi kama hilo" na kwa ombi la pili, ambalo tayari limefanywa na seva ambayo imetekeleza ombi hilo.


Kwa mfano, inatutumia gesi 50k kwa kila hatua. Tunaanzisha muamala, kuweka 50k GAS LIMIT, na tunadhani tutakuwa sawa. Lakini, kwa mfano, mitambo ya kuokoa mabadiliko ya hali ya hewa mpya - sasa, wakati hali ya joto iko juu ya digrii 10, tunahitaji kuhamisha fedha kwa mmoja wa washiriki. Mantiki inapanuka, na sasa itachukua, kwa mfano, gesi 80k kwa shughuli.


Mwishoni, tayari kwenye shughuli ya pili, mlolongo wote huanguka kutokana na ukosefu wa gesi kwa ajili ya shughuli hiyo. "Bustani ya mboga" kama hiyo karibu na simu za nje hufanya miradi kama hiyo kuwa ngumu zaidi. Uwezekano mkubwa zaidi, ikiwa una muunganisho mgumu kwa ulimwengu wa nje, haupaswi kuchagua blockchain kwa mradi wako.


Pia hakuna nasibu ya kawaida ambayo haiwezi kuamuliwa mapema. Nasibu hii pia hutolewa na watoa huduma tofauti "kama ilivyo" - thamani ya nasibu huandikwa mara kwa mara kwenye mkataba mahiri. Lakini ni hatari kuamini kitu kama hicho kwa miradi halisi ya kifedha.


Ukweli kwamba thamani ya kutofautiana kwa block.timestamp imewekwa na mchimbaji wa kuzuia inastahili tahadhari maalum. Kwa kweli, ni ngumu kufikiria kuwa mchimbaji atajua mapema kuwa ndiye anayechimba kizuizi, na anaweza kuchukua nafasi ya wakati. Bado, kuna uwezekano wa dhahania. Hatari hii ni muhimu katika muktadha wa sekunde 15, na ikiwa tunategemea dakika na vipindi vikubwa vya wakati, hakuna shida kama hiyo.

Masuala ya usalama

Sina mpango wa kuzungumza sana juu ya usalama. Lakini nitasisitiza kipengele muhimu: kila kitu katika blockchain kinaonekana kwa kila mtu. Kitu pekee ambacho wengine hawawezi kukipata ni ufunguo wako wa faragha. Msimbo mahiri wa mkataba huwekwa wazi ili kupitisha ukaguzi na ili watumiaji mahiri wa kandarasi waweze kuiamini.


Utaratibu wa ukaguzi unamaanisha kuwa kampuni imeajiriwa kuangalia msimbo mahiri wa kandarasi na kuthibitisha kuwa mkataba huu umewekwa chini ya anwani hii. Suala la usalama wa mkataba linaangaliwa, na hufanya kile ambacho watengenezaji wanatangaza. Kisha, kampuni ya ukaguzi huchapisha taarifa kama vile "mkataba huu umethibitishwa na sisi - unaweza kuaminiwa" kwenye tovuti yake.

Vigezo visivyobadilika

Lakini hata kama kanuni ya mkataba haijatolewa, inaweza kugawanywa kwa urahisi. Kwa mfano, nambari ifuatayo ina tofauti isiyoweza kubadilika - inabadilishwa kila mahali na mara kwa mara katika msimbo hapa chini.



Baada ya kupeleka mkataba huu na kuufungua kupitia mtenganishaji, tunaona yafuatayo:



Hiyo ni, tunapata thamani hii ya kutofautiana mara moja.

Vigezo vya kibinafsi

Nimezoea kuwa na utulivu nyuma, na thamani ya vijiti vya kibinafsi kusoma bila ufikiaji wa kumbukumbu itakuwa shida. Ni sawa hapa - ni kwamba kila mtu ana ufikiaji wa "kumbukumbu".



Tuliita amount kinachobadilika kuwa cha faragha. Tumia mkataba mahiri kisha uvute thamani yake kwa kijisehemu rahisi cha msimbo:



Unaweza kuishia kuvuta chochote kwa njia hiyo. Kwa hivyo usifikirie juu ya kuhifadhi chochote nyeti kwenye mkataba mzuri!

Usambazaji wa Mkataba Mahiri

Kimsingi haiwezekani kurudisha nyuma mabadiliko yako. Mkataba wa busara hutolewa mara moja, na hakuna kinachoweza kubadilishwa. Itabaki kwenye blockchain hadi mwisho wa wakati na kisha zingine.

Mikataba Mahiri Inayoweza Kuboreshwa



Ndiyo sababu unapaswa kuandika kila kitu kwa usahihi na vizuri mara moja. Siwezi kufanya hivyo, kwa hivyo nilikuja haraka na suluhisho la kupendeza - Mikataba inayoweza kuboreshwa . Mechanics yao hufanya kazi kama ifuatavyo.


  1. Toleo la kwanza la mkataba (Mkataba V1) limechapishwa

  2. Mkataba wa Wakala umechapishwa na una kazi ifuatayo: kusambaza maombi yote 1v1 kwa Mkataba wa V1 au kutumia hifadhi yake yenyewe na kutumia mantiki pekee kutoka kwa mkataba lengwa.

  3. Zaidi ya hayo mtumiaji huwasiliana na mkataba wa wakala kwa njia sawa na kuu.

    Iwapo ni muhimu kusasisha mkataba, msimamizi anatumia Mkataba V2 na, kupitia mkataba wa msimamizi, huambia mkataba wa wakala kwamba utekelezaji sasa uko kwenye anwani ya Mkataba V2.

  4. Ifuatayo, mtumiaji pia huwasiliana na proksi, na mitambo kutoka kwa Mkataba V2 tayari imetekelezwa.

  5. Ifuatayo, mtumiaji pia anawasiliana na proksi, na mitambo ya Mkataba V2 tayari imetekelezwa.


Utaratibu huu una idadi ya mapungufu na hila. Kwa mfano, vigeu kutoka kwa toleo la awali haviwezi kubadilishwa katika toleo jipya la mkataba. Ikiwa kigezo hakihitajiki tena, lazima bado kiachwe na kuwekwa kwenye mkataba mpya.


Kwa kweli, suluhisho hili na zingine nyingi tayari zina suluhisho zilizotengenezwa tayari. Msambazaji mkuu wa maendeleo haya ni OpenZeppelin . Kwa hiyo, kwa bahati nzuri, hakuna haja ya kurejesha gurudumu.


Mkataba Unaoboreshwa:

Mikataba Mahiri inayoweza kuboreshwa ni sababu nzuri ya kutokaguliwa. Ulimwengu wa blockchain umejengwa kwa uaminifu. Sasa, mkataba wa busara unaweza kuwa na mechanics waaminifu na wazi, lakini baadaye, mmiliki wa mkataba wa smart atabadilisha utekelezaji kwa moja ambapo anachukua pesa zote.