Tunapaswa kujenga blockchain nini?

Historia nzima ya wanadamu ni mchakato unaoendelea wa kuondoa minyororo na kuunda mpya, yenye nguvu zaidi. (Mwandishi asiyejulikana)

Kuchambua miradi mingi ya blockchain (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin, nk), ninaelewa kuwa kutoka kwa mtazamo wa kiufundi, zote zimejengwa kwa kanuni sawa. Blockchains ni kukumbusha nyumba, ambazo, licha ya aina mbalimbali za miundo, mapambo na madhumuni, zina msingi, kuta, paa, madirisha, milango ambayo imeunganishwa kwa kila mmoja kwa njia fulani. Na ikiwa unaelewa kanuni za msingi za kubuni ya jengo na kujua mali ya vifaa vinavyotumiwa, basi unaweza kuamua madhumuni yaliyokusudiwa ya nyumba fulani. Hivi sasa, hali imetokea na blockchain ambayo kila mtu amesikia kuhusu hilo, lakini watu wachache wanaelewa usanifu na kanuni za uendeshaji. Kwa hiyo, kuna kutokuelewana kwa nini na jinsi inavyofaa kutumia teknolojia za blockchain.

Katika makala hii tutachambua mali na kanuni za kawaida kwa blockchains zote. Ifuatayo, hebu tuangalie matatizo ambayo yanaweza kutatuliwa kwa kutumia blockchain na kuimarisha nyenzo, hebu tujenge blockchain ndogo lakini halisi kwenye tovuti yetu ya virtual!

Kwa hivyo, hebu tukumbuke ni shida gani blockchain zilitatuliwa hapo awali.

Nina hakika kwamba wengi watasema kuhusu hifadhidata iliyosambazwa, iliyogatuliwa, ya umma na isiyobadilika. Lakini kwa nini yote haya yalihitajika?

Ninapendelea kuanza kusoma teknolojia yoyote kwa kusoma viwango, kwa kuwa vifungu vyote na vitabu juu ya mada inayosomwa hutegemea. Lakini kwa sasa hakuna viwango vya blockchain; ISO imeunda tu kamati kwa maendeleo yao. Hivi sasa, kila mradi wa blockchain wa umma una hati yake ya karatasi Nyeupe, ambayo kimsingi ni maelezo ya kiufundi. Mradi wa kwanza wa blockchain unaojulikana hadharani ni mtandao wa Bitcoin. Nenda kwenye tovuti rasmi ya mtandao na angalia ambapo yote yalianzia.

Changamoto ya Blockchain

Kwa hivyo, kazi ambayo blockchain ilitatuliwa katika mtandao wa waanzilishi wa Bitcoin ni kutekeleza uhamishaji unaoaminika wa umiliki wa mali ya dijiti (mali) katika mazingira yasiyoaminika bila waamuzi. Kwa mfano, katika mtandao wa Bitcoin, mali ya dijiti ni sarafu za dijiti za bitcoin. Na suluhisho zote za kiufundi za Bitcoin na blockchains zingine zinakuja kutatua shida hii.

Shida ambazo blockchain hutatua

Tuseme shirika fulani la kifedha linasema kuwa limejenga mtandao duniani kote kwa msaada ambao inawezekana kuhamisha fedha kwa mtu yeyote. Je, utamwamini? Ikiwa shirika hili ni Visa au MasterCard, kuna uwezekano mkubwa kwamba utaamini, lakini ikiwa, tukizungumza, AnonymousWorldMoney, labda hutaamini. Kwa nini? Lakini kwa sababu tunajua vizuri jinsi mifumo iliyosambazwa inafanywa na makampuni binafsi, kwa madhumuni gani, na nini hii inaweza kusababisha. Wacha tuchunguze kwa undani shida za mifumo kama hiyo na jinsi zinaweza kutatuliwa kwa kutumia teknolojia za blockchain.

Hebu tuseme kwamba katika AnonymousWorldMoney ya masharti kuna seva zilizo na hifadhidata, na ni vizuri ikiwa kuna kadhaa yao katika vituo tofauti vya data. Wakati mtumaji anahamisha pesa, shughuli imesajiliwa, ambayo inarudiwa kwa seva zote, na pesa hufikia mpokeaji.

Tunapaswa kujenga blockchain nini?

Katika ulimwengu mzuri, mpango huu unafanya kazi vizuri, lakini katika yetu shida zifuatazo zinaibuka:

  1. Tatizo la kutambua washiriki kwa upande mmoja na haja ya kutokujulikana kwa shughuli kwa upande mwingine. Wale. unahitaji kuhamisha fedha kwa mpokeaji maalum na kwa namna ambayo hakuna mtu anayejua kuhusu shughuli hii isipokuwa washiriki katika shughuli. Benki zina nambari za akaunti na kadi za benki zilizounganishwa na mtu mahususi au taasisi ya kisheria, na usiri wa benki hulinda taarifa za miamala. Na ni nani anayehakikisha kwamba AnonymousWorldMoney yenye masharti haitumii data ya kibinafsi na maelezo ya muamala kwa madhumuni yake yenyewe?
  2. Jinsi ya kuhakikisha kuwa mpokeaji alipokea haswa kiasi ambacho kilihamishiwa kwake? Kwa ulinganifu, mtumaji alihamisha $100, na mpokeaji akapokea $10. Mtumaji anakuja kwa ofisi ya AnonymousWorldMoney na risiti yake, na karani anaonyesha toleo lake, ambapo imeandikwa kwamba mtumaji alihamisha $10 pekee.
  3. Tatizo la mazingira yasiyoaminika, kwa mfano, kashfa inayoitwa kutumia mara mbili. Mshiriki asiye na uaminifu anaweza kutumia salio lake mara kadhaa hadi malipo yatakaporudiwa kwa seva zote. Nadharia ya CAP, bila shaka, hakuna mtu aliyeghairi, na makubaliano yatapatikana hatimaye, lakini mtu hatapokea pesa kwa huduma au bidhaa zinazotolewa. Kwa hiyo, ikiwa hakuna uaminifu kamili katika shirika la malipo au washiriki katika shughuli, basi ni muhimu kujenga mtandao usio na uaminifu, lakini kwa cryptography.
  4. Masharti Ya Bila KujulikanaMoneyWorldMoney ina idadi maalum ya seva ambazo huenda zisipatikane bila kukusudia au kwa sababu ya nia mbaya.
  5. AnonymousWorldMoney itachukua tume yake yenyewe inayoonekana.
  6. Uwezekano wa udhibiti. Wakati wa uendeshaji wa Bitcoin, ikawa kwamba watu hawataki tu kuhamisha sarafu kwa kila mmoja, lakini pia kuangalia hali mbalimbali za shughuli, matukio ya kazi ya programu, kufanya vitendo moja kwa moja kulingana na hali, nk.

Jinsi blockchain hutatua shida hizi

  1. Utambulisho wa washiriki unafanywa kwa kutumia jozi ya funguo: za faragha na za umma, na algoriti ya sahihi ya dijiti humtambulisha mtumaji na mpokeaji kwa njia ya kipekee, na kuacha utambulisho wao bila kujulikana.
  2. Shughuli zinakusanywa katika vizuizi, hashi ya block imehesabiwa na kuandikwa kwenye block inayofuata. Mlolongo huu wa kurekodi heshi kwenye vizuizi huipa teknolojia ya blockchain jina lake, na pia inafanya kuwa haiwezekani kubadilisha / kufuta vizuizi au miamala ya kibinafsi kutoka kwa vitalu bila kutambuliwa. Kwa hivyo, ikiwa shughuli imejumuishwa kwenye blockchain, unaweza kuwa na uhakika kwamba data yake itabaki bila kubadilika.
  3. Ulaghai wa kutumia mara mbili huzuiwa kwa kufikia makubaliano ya mtandao kuhusu ni data ipi ya kuzingatia kuwa halali na ipi ya kutupwa. Katika mtandao wa Bitcoin, makubaliano yanapatikana kwa uthibitisho wa kazi (PoW).
  4. Kuegemea kwa mtandao kunapatikana kwa ukweli kwamba blockchain ni ya umma, ambapo kila mshiriki anaweza kuendesha node yake mwenyewe, kupokea nakala kamili ya blockchain na, zaidi ya hayo, kwa kujitegemea kuanza kuangalia shughuli kwa usahihi. Ikumbukwe kwamba blockchains ya kisasa hufanya iwezekanavyo kujenga sio tu ya umma (wazi) lakini pia blockchains ya faragha (iliyofungwa), pamoja na matumizi ya mipango ya pamoja.
  5. Blockchain haitaondoa kabisa tume, kwa sababu ... unapaswa kulipa watu wanaounga mkono mtandao, lakini katika blockchain haja ya tume imethibitishwa kwa hakika kwamba hakuna shaka juu ya umuhimu wake.
  6. Vitalu vya kisasa vina uwezo wa kutekeleza mantiki ya biashara, ambayo katika blockchain inaitwa Mikataba ya Smart. Mantiki ya mikataba mahiri inatekelezwa katika lugha mbalimbali za kiwango cha juu.

Ifuatayo, tutazingatia suluhisho hizi kwa undani zaidi.

Usanifu wa Blockchain

Vipengele vya Blockchain

Kila mshiriki anaweza kuzindua nodi yao wenyewe na nakala kamili ya blockchain (node ​​kamili). Node kamili ambazo zinaweza kurekodi shughuli kwenye blockchain zinaitwa nodi za makubaliano (shahidi) au wachimbaji (mchimbaji). Nodi kamili ambazo huangalia tu usahihi wa shughuli zinaitwa nodi za ukaguzi (ukaguzi). Wateja wa mwanga (wateja wa mwanga) hawahifadhi nakala kamili za blockchain, lakini kuingiliana na mtandao kwa kutumia nodes kamili.
Watumiaji wengi hutumia wateja nyepesi au pochi za wavuti kufanya miamala. Nodes zote zimeunganishwa kwa kila mmoja. Na seti hii ya vitu, usanifu wa mtandao unakuwa thabiti zaidi:

Tunapaswa kujenga blockchain nini?

Mzunguko wa maisha ya shughuli

Wacha tuangalie mzunguko wa maisha wa muamala na tuuvunje kipande kwa kipande:

Tunapaswa kujenga blockchain nini?

Teknolojia za Blockchain

Hebu tuketi kwa undani zaidi juu ya ufumbuzi wa kiufundi na uhusiano wao na kila mmoja.

Utambulisho

Kila muamala wa blockchain lazima usainiwe kidijitali. Kwa hivyo, ili kukamilisha shughuli, kila mshiriki lazima awe na jozi muhimu: ya faragha / ya umma. Wakati mwingine jozi ya funguo inaitwa mkoba, kwa sababu funguo zinahusishwa kwa njia ya kipekee na anwani ya kipekee ya dijiti ya mshiriki na salio. Kwa kweli, funguo na anwani ni safu tu za nambari katika mifumo tofauti ya nambari. Mifano ya funguo na anwani za mkoba:

Private key: 0a78194a8a893b8baac7c09b6a4a4b4b161b2f80a126cbb79bde231a4567420f
Public key: 0579b478952214d7cddac32ac9dc522c821a4489bc10aac3a81b9d1cd7a92e57ba
Address: 0x3814JnJpGnt5tB2GD1qfKP709W3KbRdfb27V

Ili kuunda saini ya digital katika blockchains, algorithm kulingana na curves elliptic hutumiwa: Elliptic Curve Digital Signature Algorithm (ECDSA). Ili ifanye kazi, ufunguo wa kibinafsi (nambari ya 256-bit) kawaida huchukuliwa kwa nasibu. Idadi ya chaguzi muhimu ni 2 kwa nguvu ya 256, kwa hivyo tunaweza kuzungumza juu ya kutowezekana kwa vitendo vya kulinganisha maadili ya funguo za kibinafsi.

Ifuatayo, ufunguo wa umma unapatikana kutoka kwa ule wa kibinafsi kwa kuzidisha thamani yake kwa kuratibu za sehemu iliyo kwenye curve ya mviringo, na kusababisha kuratibu za hatua mpya kwenye curve sawa. Kitendo hiki huhakikisha kuwa unapata jozi muhimu zinazofaa kwa shughuli za kutia sahihi kidijitali. Hatimaye, anwani ya mkoba imetolewa kipekee kutoka kwa ufunguo wa umma.

Kuna nakala nyingi zilizo na maelezo juu ya kriptografia inayotumika kwenye blockchain, kwa mfano: Bitcoin kwa kifupi - Cryptography

Ufunguo wa faragha lazima uwe wa siri kabisa na uwe salama. Ufunguo wa umma unajulikana kwa kila mtu. Ikiwa ufunguo wa kibinafsi umepotea, ufikiaji wa mali (sarafu) hauwezi kurejeshwa na pesa zitapotea milele. Kwa hivyo, kazi ya kuhifadhi salama funguo za kibinafsi ni muhimu sana, kwa sababu Hii si benki ambapo unaweza daima kuja na pasipoti yako na kurejesha akaunti yako. Kuna tasnia nzima ya utengenezaji wa kinachojulikana kama pochi baridi za crypto, sawa na anatoa flash:

Tunapaswa kujenga blockchain nini?

au unaweza kutumia njia za kuaminika zaidi, kwa mfano, kuweka muhuri thamani ya ufunguo wa kibinafsi kwenye ishara:

Tunapaswa kujenga blockchain nini?

Shughuli

Maelezo zaidi kuhusu muundo wa manunuzi yanaweza kupatikana katika makala Bitcoin kwa kifupi - Transaction. Ni muhimu kwetu kuelewa kwamba kila shughuli ina angalau data ifuatayo:

From: 0x48C89c341C5960Ca2Bf3732D6D8a0F4f89Cc4368 - Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ адрСс отправитСля
To: 0x367adb7894334678b90Π°fe7882a5b06f7fbc783a - Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ адрСс получатСля
Value: 0.0001 - сумма Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ
Transaction Hash: 0x617ede331e8a99f46a363b32b239542bb4006e4fa9a2727a6636ffe3eb095cef - Ρ…ΡΡˆ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Ifuatayo, shughuli hiyo inatiwa saini na ufunguo wa kibinafsi na kutumwa nje (angalia maelezo juu ya uendeshaji wa itifaki Bitcoin kwa kifupi-Itifaki) kwa nodi zote kwenye blockchain ambazo huangalia miamala kwa uhalali. Kanuni ya uthibitishaji wa muamala si ndogo na inajumuisha hatua dazeni mbili.

Vizuizi vya muamala

Baada ya kuangalia uhalali wa shughuli, nodes huunda vitalu kutoka kwao. Mbali na shughuli, heshi ya block ya awali na nambari (Nonce counter) imeandikwa kwenye block, na hash ya block ya sasa imehesabiwa kwa kutumia algorithm ya SHA-256. Hashi lazima iwe imeanzisha hali za utata. Kwa mfano, katika mtandao wa Bitcoin, ugumu wa heshi hubadilishwa kiotomatiki kila baada ya wiki 2 kulingana na nguvu ya mtandao ili kuzuia kuzalishwa takriban mara moja kila dakika 10. Utata hubainishwa na hali ifuatayo: heshi iliyopatikana lazima iwe chini ya nambari iliyoamuliwa mapema. Ikiwa hali hii haijafikiwa, basi 1 inaongezwa kwa Nonce, na kazi ya kuhesabu hashi inarudiwa. Ili kuchagua heshi, sehemu ya Nonce inatumiwa, kwa sababu Hii ndio data pekee kwenye kizuizi inayoweza kubadilishwa; zingine lazima zibaki bila kubadilika. Heshi halali lazima iwe na idadi fulani ya sufuri zinazoongoza, kama vile moja ya heshi halisi:

000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91

Kupata heshi kwa mafanikio ni uthibitisho wa kazi iliyofanywa (Uthibitisho-wa-Kazi, PoW) kwa mitandao ya Bitcoin au Ethereum. Mchakato wa kutafuta heshi huitwa madini, sawa na uchimbaji wa dhahabu. Jina linafafanua kwa usahihi kiini cha mchakato, kwa sababu kuna utafutaji rahisi wa chaguzi, na ikiwa mtu hupata heshi inayofaa, basi hii ni bahati nzuri. Ni kama kupata nugget halisi ya dhahabu katika tani nyingi za mawe taka. Tuzo la kuzuia sasa ni 12.5 BTC na ukizidisha kwa kiwango cha sasa cha Bitcoin cha $3900, unapata zaidi ya kilo moja ya dhahabu safi. Kuna kitu cha kupigania!

Baada ya kupata heshi kwa mafanikio, kizuizi na heshi iliyopatikana yenyewe huandikwa kwa blockchain kama kizuizi kinachofuata. Maelezo zaidi juu ya muundo wa vitalu yanaweza kupatikana katika makala Bitcoin kwa kifupi-Blockchain, na hapa chini kuna mchoro uliorahisishwa:

Tunapaswa kujenga blockchain nini?

Blockchain huanza na block ambayo bado haina heshi ya block iliyotangulia. Kuna block moja tu kama hiyo kwenye blockchain na ina jina lake la Mwanzo block. Vitalu vilivyobaki vina muundo sawa na hutofautiana tu kwa idadi ya shughuli. Shughuli na vizuizi halisi vinavyoundwa kwa sasa katika Bitcoin au Ethereum vinaweza kutazamwa ndani Zuia Kivinjari.

Saizi ya vitalu katika Bitcoin ni mdogo kwa 1MB na kwa kiwango cha chini cha habari katika shughuli ya karibu byte 200, idadi ya juu ya miamala kwenye block inaweza kuwa karibu 6000. Kuanzia hapa, kwa njia, inafuata utendaji wa Bitcoin, ambayo kila mtu anacheka: block hutolewa takriban mara moja kila dakika 10 * sekunde 60 = sekunde 600, ambayo inatoa utendaji rasmi wa takriban 10 TPS. Ingawa kwa kweli, hii sio tija, lakini algorithm iliyotekelezwa kwa makusudi ya kazi. Katika Ethereum, kwa ushindani, walifanya tu wakati wa kizazi cha kuzuia kuwa sekunde 15. na tija ikapanda rasmi. Kwa hiyo, katika blockchains ambayo hutumia PoW kama makubaliano, haina maana kulinganisha utendaji wakati wote, kwa sababu moja kwa moja inategemea ugumu wa hesabu ya cache, ambayo inaweza kupewa thamani yoyote.

Uma

Nini kinatokea ikiwa, kwa mfano, nodes kadhaa zilipata hashes zinazofikia hali ya utata, lakini ni tofauti na thamani (kwa maneno mengine, walikuja kwa makubaliano tofauti) na kuandika vitalu kwa blockchain? Wacha tuone jinsi blockchain inalinda dhidi ya hali hii. Katika kesi hii, kinachojulikana kama uma hufanyika, na blockchain ina matoleo mawili ya mnyororo:

Tunapaswa kujenga blockchain nini?

Nini kitatokea baadaye? Ifuatayo, sehemu ya mtandao huanza kufanya kazi kwenye block N+2 kutoka kwa mnyororo mmoja, na sehemu kutoka kwa mwingine:

Tunapaswa kujenga blockchain nini?

Moja ya vitalu hivi itapatikana mapema na kutumwa kwa blockchain, na kisha, kulingana na sheria, blockchain italazimika kubadili kwa mlolongo mrefu na kufuta shughuli zote kutoka kwa kizuizi mbadala:

Tunapaswa kujenga blockchain nini?

Wakati huo huo, hali inaweza kutokea wakati shughuli ya mshiriki ilikuwa tu katika moja ya vitalu vya uma, ambayo ilifutwa. Kwa hiyo, ili kuhakikisha kuwa shughuli inayotakiwa imeandikwa kwenye blockchain, kuna mapendekezo ya jumla - kabla ya kuamini shughuli, unapaswa kusubiri hadi vitalu vichache vifuatavyo viongezwe kwenye blockchain. Mapendekezo ya idadi ya vitalu vya kusubiri kwa blockchains tofauti hutofautiana. Kwa mfano, kwa mtandao wa Bitcoin kiwango cha chini ni vitalu 2, kiwango cha juu ni 6.

Picha sawa na uma za kuzuia zitazingatiwa wakati wa shambulio linaloitwa 51% - hii ni wakati kundi la wachimbaji linajaribu kukua mlolongo wa kuzuia mbadala, wakitaka kufuta mlolongo na shughuli zao za ulaghai. Ingawa kwa sasa, badala ya ulaghai, ni faida zaidi kutumia nguvu zako kwenye uchimbaji madini waaminifu.

Makubaliano

Ili kurekodi kizuizi kwenye blockchain, mtandao lazima ufikie makubaliano. Hebu tukumbuke kazi ya kufikia makubaliano katika mitandao ya mawasiliano ya kompyuta. Shida imeundwa kama kazi ya majenerali wa Byzantine BFT (Uvumilivu wa makosa ya Byzantine) Kuacha maelezo ya kupendeza ya shida za jeshi la Byzantine, shida inaweza kutengenezwa kama ifuatavyo: nodi za mtandao zinawezaje kupata matokeo ya kawaida ikiwa nodi zingine za mtandao zinaweza kuzipotosha kwa makusudi. Algorithms zilizopo za kutatua tatizo la BFT zinaonyesha kuwa mtandao unaweza kufanya kazi kwa usahihi ikiwa kuna chini ya 1/3 ya walaghai. Kwa nini makubaliano ya BFT hayajatumika kwa mtandao wa Bitcoin? Kwa nini ilikuwa ni lazima kutumia PoW? Kuna sababu kadhaa:

  • BFT inafanya kazi vizuri na seti ndogo za nodes zilizowekwa, lakini katika blockchain ya umma idadi ya nodes haitabiriki na, zaidi ya hayo, nodes zinaweza kugeuka na kuzima kwa nasibu.
  • Inahitajika kuhamasisha watu kuzindua nodi za blockchain. Ili kufanya hivyo, watu lazima walipwe. Katika BFT hakuna kitu rasmi cha kupokea zawadi, lakini malipo ni ya nini katika PoW ni wazi kwa kila mtu kwa kiwango cha angavu: kwa umeme unaotumiwa na processor katika mchakato wa kutafuta heshi ya block.

Mbali na PoW, kuna makubaliano mengine kadhaa ambayo hutumiwa katika blockchains za kisasa, kwa mfano:

  • PoS (Ushahidi-wa-Stake) - kwenye blockchain Hyperledger
  • DPoS (Ushahidi Uliokabidhiwa wa Hisa) - kwenye blockchain BitShares
  • Marekebisho ya BFT: SBFT (BFT iliyorahisishwa) na PBFT (BFT ya vitendo), kwa mfano katika blockchain Exonum

Wacha tukae kidogo juu ya makubaliano ya PoS, kwa sababu ... Ni PoS na aina zake ambazo zimeenea zaidi katika blockchains binafsi. Kwa nini kwa faragha? Kwa upande mmoja, sifa za PoS ni bora ikilinganishwa na PoW, kwa sababu Ili kufikia makubaliano, rasilimali ndogo za kompyuta zinahitajika, ambayo ina maana kasi ya kuandika data kwenye blockchain huongezeka. Lakini kwa upande mwingine, PoS ina fursa zaidi za udanganyifu, hivyo ili kuondokana na hili, washiriki wote katika blockchain lazima wajulikane.

Makubaliano ya PoS yanategemea uteuzi wa node ambayo inaweza kuandika kizuizi na shughuli kwa blockchain kulingana na kiasi cha fedha katika akaunti, au tuseme, si katika akaunti, lakini kwa dhamana, i.e. Kadiri unavyokuwa na pesa nyingi kama dhamana, ndivyo uwezekano wa mtandao utachagua nodi yako kuandika kizuizi. Amana haitarejeshwa ikiwa kizuizi ni batili. Hii inatoa ulinzi dhidi ya udanganyifu. Kuna tofauti zifuatazo za PoS:

  • Makubaliano ya PoS Iliyokabidhiwa (DPoS) yanagawanya washiriki kuwa "wapiga kura" na "wathibitishaji". Wamiliki wa sarafu (washiriki wa kupiga kura) hukabidhi mamlaka yao ya kuthibitisha na kurekodi shughuli kwenye blockchain kwa washiriki wengine. Kwa hivyo, wathibitishaji hufanya kazi yote ya hesabu na kupokea tuzo kwa ajili yake, na uwepo wa washiriki wa kupiga kura huhakikishia uaminifu wa wathibitishaji, kwa sababu. zinaweza kubadilishwa wakati wowote.
  • LPoS (Makubaliano ya Uthibitisho wa Kukodisha-ya-Dau) hukuruhusu kukodisha pesa zako kwa nodi zingine ili ziwe na nafasi nzuri ya kuhalalisha vitalu. Hiyo. Unaweza kupokea tume kwa ajili ya shughuli bila kushiriki katika uthibitishaji halisi wa shughuli na kuzuia madini.

Pia kuna idadi ya makubaliano ambayo bado hayajaenea; nitaorodhesha tu hapa kwa habari, na muhtasari wa algorithms ya makubaliano yenyewe inaweza kupatikana, kwa mfano, katika kifungu: Algorithms ya Makubaliano katika Blockchain.

  • Mshairi (Uthibitisho-wa-Wakati Uliopita)
  • PoC (Uthibitisho-wa-Uwezo)
  • PoB (Uthibitisho-wa-Kuungua)
  • Uzito (Uthibitisho-wa-Uzito)
  • PoA (Ushahidi-wa-Shughuli) - PoW + PoS
  • PoI (Uthibitisho-wa-Muhimu)

Kuegemea na mifano ya kupelekwa kwa blockchains

Blockchain ya umma

Kudumu Umma au jina lingine Blockchain isiyo na ruhusa Hili linaafikiwa kwa kuruhusu mtu yeyote kuunganisha na kutazama taarifa au hata kuunganisha nodi yake mwenyewe, na uaminifu unajengwa juu ya makubaliano ya PoW.

Blockchain ya kibinafsi

Binafsi au Blockchain iliyoidhinishwa ya kibinafsi. Katika blockchains hizi, kikundi fulani tu cha washiriki (mashirika au watu) wanapata habari. Blockchains vile hujengwa na mashirika kwa lengo la kuongeza faida au ufanisi wa jumla. Kuegemea kwao kunahakikishwa na malengo ya kawaida ya washiriki na algorithms ya makubaliano ya PoS na BFT.

Muungano wa Blockchain

kuna Muungano au Blockchain Imeidhinishwa na Umma. Hizi ni blockchains ambazo mtu yeyote anaweza kuunganishwa ili kutazama, lakini mshiriki anaweza kuongeza habari au kuunganisha nodi yake tu kwa ruhusa ya washiriki wengine. Vitalu hivyo hujengwa na mashirika ili kuongeza uaminifu kwa wateja au watumiaji wa bidhaa au jamii kwa ujumla. Hapa, kutegemewa pia kunapatikana kwa kuwepo kwa uaminifu kati ya washiriki na algorithms sawa za makubaliano ya PoS na BFT.

Mikataba ya Smart

Blockchains kutekelezwa baada ya Bitcoin kuwa, kwa shahada moja au nyingine, aliongeza uwezo wa kutekeleza mikataba smart. Kimsingi, mkataba mzuri ni shughuli ambayo msimbo wa programu huwekwa kwa ajili ya utekelezaji. Mikataba ya Smart kwenye mtandao wa Ethereum inatekelezwa katika EVM (Ethereum Virtual Machine). Ili kuanza kutekeleza mkataba mahiri, ni lazima uzinduliwe kwa njia ya muamala mwingine, au sharti masharti ya utekelezaji yatimizwe. Matokeo ya utekelezaji wa mkataba mzuri pia yatarekodiwa kwenye blockchain. Kupokea data kutoka nje ya blockchain kunawezekana, lakini ni mdogo sana.

Ni mantiki gani ya biashara inayoweza kutekelezwa kwa kutumia mkataba mzuri? Kwa kweli, hakuna mengi, kwa mfano, kuangalia hali kwa kutumia data kutoka kwa blockchain, kubadilisha wamiliki wa mali ya digital kulingana na hali hizi, kurekodi data katika hifadhi ya kudumu ndani ya blockchain. Mantiki hiyo inatekelezwa kwa lugha maalum ya kiwango cha juu cha Mshikamano.

Mfano halisi wa utendakazi ambao unatekelezwa kwa kutumia mikataba mahiri ni utoaji wa tokeni kwa ICO. Kwa mfano, nilitekeleza mkataba mzuri wa kutoa AlexToken ya 500 ya kawaida. Na kiungo katika Etherscan ni

msimbo wa chanzo wa mkataba mahiri katika lugha ya Solidity

pragma solidity ^0.4.23;
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
**/
function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
if (a == 0) {
return 0;
}
c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
**/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
// uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return a / b;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
**/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
**/
function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
c = a + b;
assert(c >= a);
return c;
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
**/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender account.
**/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
**/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
**/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* @title ERC20Basic interface
* @dev Basic ERC20 interface
**/
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
**/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @title Basic token
* @dev Basic version of StandardToken, with no allowances.
**/
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
uint256 totalSupply_;
/**
* @dev total number of tokens in existence
**/
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
**/
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
return true;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
**/
function balanceOf(address _owner) public view returns (uint256) {
return balances[_owner];
}
}
contract StandardToken is ERC20, BasicToken {
mapping (address => mapping (address => uint256)) internal allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
**/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
emit Transfer(_from, _to, _value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
**/
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
**/
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _addedValue The amount of tokens to increase the allowance by.
**/
function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _subtractedValue The amount of tokens to decrease the allowance by.
**/
function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
/**
* @title Configurable
* @dev Configurable varriables of the contract
**/
contract Configurable {
uint256 public constant cap = 1000000000*10**18;
uint256 public constant basePrice = 100*10**18; // tokens per 1 ether
uint256 public tokensSold = 0;
uint256 public constant tokenReserve = 500000000*10**18;
uint256 public remainingTokens = 0;
}
/**
* @title CrowdsaleToken 
* @dev Contract to preform crowd sale with token
**/
contract CrowdsaleToken is StandardToken, Configurable, Ownable {
/**
* @dev enum of current crowd sale state
**/
enum Stages {
none,
icoStart, 
icoEnd
}
Stages currentStage;
/**
* @dev constructor of CrowdsaleToken
**/
constructor() public {
currentStage = Stages.none;
balances[owner] = balances[owner].add(tokenReserve);
totalSupply_ = totalSupply_.add(tokenReserve);
remainingTokens = cap;
emit Transfer(address(this), owner, tokenReserve);
}
/**
* @dev fallback function to send ether to for Crowd sale
**/
function () public payable {
require(currentStage == Stages.icoStart);
require(msg.value > 0);
require(remainingTokens > 0);
uint256 weiAmount = msg.value; // Calculate tokens to sell
uint256 tokens = weiAmount.mul(basePrice).div(1 ether);
uint256 returnWei = 0;
if(tokensSold.add(tokens) > cap){
uint256 newTokens = cap.sub(tokensSold);
uint256 newWei = newTokens.div(basePrice).mul(1 ether);
returnWei = weiAmount.sub(newWei);
weiAmount = newWei;
tokens = newTokens;
}
tokensSold = tokensSold.add(tokens); // Increment raised amount
remainingTokens = cap.sub(tokensSold);
if(returnWei > 0){
msg.sender.transfer(returnWei);
emit Transfer(address(this), msg.sender, returnWei);
}
balances[msg.sender] = balances[msg.sender].add(tokens);
emit Transfer(address(this), msg.sender, tokens);
totalSupply_ = totalSupply_.add(tokens);
owner.transfer(weiAmount);// Send money to owner
}
/**
* @dev startIco starts the public ICO
**/
function startIco() public onlyOwner {
require(currentStage != Stages.icoEnd);
currentStage = Stages.icoStart;
}
/**
* @dev endIco closes down the ICO 
**/
function endIco() internal {
currentStage = Stages.icoEnd;
// Transfer any remaining tokens
if(remainingTokens > 0)
balances[owner] = balances[owner].add(remainingTokens);
// transfer any remaining ETH balance in the contract to the owner
owner.transfer(address(this).balance); 
}
/**
* @dev finalizeIco closes down the ICO and sets needed varriables
**/
function finalizeIco() public onlyOwner {
require(currentStage != Stages.icoEnd);
endIco();
}
}
/**
* @title LavevelToken 
* @dev Contract to create the Lavevel Token
**/
contract AlexToken is CrowdsaleToken {
string public constant name = "AlexToken";
string public constant symbol = "ALT";
uint32 public constant decimals = 18;
}

na uwakilishi wa binary kama mtandao unavyoiona

60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029

Maelezo zaidi kuhusu mikataba ya smart yanaweza kupatikana katika makala: Je! ni mikataba gani ya busara katika Ethereum.

Hitimisho

Tumeorodhesha teknolojia ambazo blockchains za kisasa zinajengwa na jinsi zinavyounganishwa kwa kila mmoja. Sasa hebu tutengeneze matatizo gani yanaweza kutatuliwa kwa kutumia blockchain, na ni suluhisho gani zitakuwa, bora, zisizofaa. Kwa hivyo, kutumia blockchain sio lazima ikiwa:

  • Shughuli zinafanywa katika mazingira yanayoaminika;
  • Uwepo wa tume ya waamuzi hauzidishi maisha ya washiriki;
  • Washiriki hawana mali inayoweza kuwakilishwa kama mali ya kidijitali;
  • Hakuna usambazaji katika mali ya digital, i.e. thamani inamilikiwa au kutolewa na mshiriki mmoja tu.

Je, siku zijazo zinashikilia nini kwa blockchain? Sasa tunaweza kubashiri tu juu ya njia zinazowezekana za ukuzaji wa teknolojia za blockchain:

  • Blockchain itakuwa teknolojia ya kawaida ya hifadhidata kama, kwa mfano, SQL au NoSQL kwa kutatua anuwai yake maalum ya shida;
  • Blockchain itakuwa itifaki iliyoenea, kama HTTP ni ya Mtandao;
  • Blockchain itakuwa msingi wa mfumo mpya wa kifedha na kisiasa kwenye sayari!

Katika sehemu inayofuata tutaangalia blockchains zipi kwa sasa na kwa nini zinatumika katika tasnia tofauti.

Huu ni mwanzo tu!

Chanzo: mapenzi.com

Kuongeza maoni