Jinsi ya kuunda programu za faragha kwenye Ethereum kwa kutumia uthibitisho wa maarifa-sifuri

Ethereum ipo wazi sana kwa muundo wake. Kila anwani, salio, muamala, mwito wa mkataba, na tukio linaonekana kwa yeyote aliye na kichunguzi cha bloku. Uwazi huo ni muhimu unapohitaji uhakikishaji. Ni tatizo wakati watumiaji wanahitaji kupiga kura, kudai, kutoa, au kuthibitisha uanachama bila kuunganisha kila kitendo kwenye mkoba ule ule.
Uanachama usiojulikana ni muundo unaoweza kutumika tena ambao huwezesha kundi kubwa la programu za faragha kwenye Ethereum. Watu hujisajili kwanza, kisha baadaye kuthibitisha kuwa wao ni wa kundi hilo bila kufichua wao ni mwanachama yupi. Uthibitisho wa maarifa-sifuri ni daraja kati ya mkoba wa usajili na mkoba unaotenda, na daraja hilo halifichui ni nani aliyevuka.
Bidhaa inayozunguka inabadilika, lakini muundo wa msingi wa faragha unabaki vile vile.
Muundo, uliofafanuliwa kupitia upigaji kura usiojulikana
Muundo una sehemu tatu. Ufungamanisho husajili kila mwanachama. Mti wa Merkle hubadilisha vifungamanisho hivyo kuwa umati. Uthibitisho na kibatilishi huruhusu mwanachama mmoja kutenda mara moja bila kufichua ni mwanachama yupi aliyetenda.
Hatua ya kwanza: kusajili
Kila mpiga kura huunda thamani mbili za siri nje ya mnyororo, siri na kibatilishi. Mpiga kura huheshi thamani hizo kuwa ufungamanisho wa umma, kisha husajili ufungamanisho huo mnyororoni.
Ufungamanisho ni rekodi ya usajili ya umma. Siri na kibatilishi ni dokezo la siri ambalo mpiga kura atalihitaji baadaye. Akipoteza dokezo hilo, mpiga kura hawezi kuthibitisha uanachama. Akilivujisha, mtu mwingine anaweza kupiga kura badala ya mtumiaji.
Kwa sababu ufungamanisho ni heshi, watazamaji hawawezi kurejesha thamani za siri zilizo ndani yake. Ufungamanisho unasema "kuna mtu amesajiliwa" bila kufichua ni nani atatumia usajili huo baadaye.
Hatua ya pili: kujenga umati
Kadiri wapiga kura wengi wanavyojisajili, programu hukusanya vifungamanisho vyao kwenye mti wa Merkle. Mti wa Merkle hubana orodha ndefu ya thamani kuwa heshi moja, inayoitwa mzizi. Badilisha thamani yoyote kwenye orodha na heshi inabadilika, kwa hivyo mzizi hufanya kazi kama muhtasari unaoonyesha uchezewaji wa seti nzima.
Mti huo ni seti yako ya kutojulikana. Ikiwa watumiaji kumi wako kwenye mti, mtazamaji anaweza kupunguza uwezekano wa kitendo cha baadaye hadi kwa mmoja wa hao kumi. Ikiwa watumiaji elfu kumi wako kwenye mti, kitendo hicho ni kigumu sana kukiunganisha na mtu mmoja. Programu ya faragha yenye seti ndogo ya kutojulikana kwa kawaida si ya faragha sana, hata kama kriptografia ni sahihi.
Hatua ya tatu: kutenda bila kujulikana
Kura inapofunguliwa, mpiga kura hapaswi kupiga kura kutoka kwenye mkoba ule ule uliosajili ufungamanisho. Kupiga kura kutoka kwenye mkoba wa usajili kutaunganisha kura moja kwa moja na msajili na kubatilisha kazi ya faragha. Badala yake, mpiga kura huunda uthibitisho wa maarifa-sifuri. Kauli hiyo husimbwa kama saketi inayosema, "Ninajua thamani za siri zinazozalisha ufungamanisho uliosajiliwa, na ninafichua heshi sahihi ya kibatilishi kwa kura hii."
Uthibitisho humshawishi mkataba wa mhakiki kwamba kauli hiyo ni ya kweli. Haufichui siri, kibatilishi, au ni ufungamanisho upi uliotumika.
Kibatilishi ndicho kinachozuia kupiga kura mara mbili. Pamoja na uthibitisho, mpiga kura huchapisha heshi ya kibatilishi. Mkataba wa kupiga kura huhifadhi heshi hiyo baada ya kukubali kura. Ikiwa dokezo lile lile la siri litatumika tena kwa kura hiyo hiyo, litazalisha heshi ile ile ya kibatilishi, na mkataba utakataa kura ya pili. Ikijumuishwa na uthibitisho, hii huacha mkataba ukijua tu kwamba mpiga kura fulani aliyesajiliwa alitenda mara moja, si yupi.
Lango linaloweza kutumika tena
Jozi hiyo hiyo ya uthibitisho-na-kibatilishi inafanya kazi zaidi ya upigaji kura. Ondoa hadithi ya upigaji kura na kile ulichonacho ni lango la faragha kwa kazi za mkataba mahiri.
Kabla ya kazi kuanza, mkataba hukagua mzizi wa Merkle, huhakiki uthibitisho, huthibitisha kuwa heshi ya kibatilishi haijatumika, na hufunga ingizo za umma kwenye programu sahihi, mnyororo, kura, dai, au utoaji. Ikiwa ukaguzi huo utafaulu, huweka alama kwenye kibatilishi kama kimetumika na kuendesha sehemu iliyosalia ya kazi.
Weka lango hilo mbele ya kura na utapata upigaji kura usiojulikana. Liweke mbele ya dai la mgao wa bure na utapata madai yasiyojulikana. Liweke mbele ya kazi ya utoaji na utapata msingi wa mtiririko wa utoaji wa mtindo wa mchanganyiko. Mti ule ule wa ufungamanisho, wazo lile lile la kibatilishi, muundo ule ule wa uthibitisho. Kinachobadilika ni kiini cha kazi na mantiki ya programu inayozunguka.
Nini kinaendeshwa wapi
Kazi ya siri kwa kawaida hufanyika nje ya mnyororo. Mtumiaji huhifadhi dokezo, na programu ya mteja hujenga shahidi na kuendesha mthibitishaji ili kuzalisha uthibitisho. Kielekezi hufuatilia vifungamanisho na mizizi ya Merkle. Kifungashaji hueneza Operesheni ya Mtumiaji mnyororoni na mlipiaji wa ERC-4337 hufadhili gesi, kwa hivyo mkoba mpya hauhitaji ETH kutoka kwenye mkoba unaojulikana wa mtumiaji kwanza.
Utekelezaji wa umma hufanyika mnyororoni. Mkataba wa mhakiki hukagua uthibitisho. Mkataba wa programu hukagua mizizi halali na vibatilishi ambavyo havijatumika, huhifadhi heshi ya kibatilishi, na kuendesha kitendo cha umma.
Uzoefu wa mtumiaji (UX) nyeti ni ushughulikiaji wa dokezo. Chukulia siri na kibatilishi kama funguo. Usiziweke kwenye uchanganuzi, kumbukumbu, URL, ripoti za makosa, au telemetri ya kawaida ya upande wa seva. Pindi dokezo linapovuja, faragha inapotea, haijalishi uthibitisho una nguvu kiasi gani.
Zana zimeboreshwa
Huhitaji kuandika msimbo wa kriptografia ya msingi kwa mkono. Njia ya kawaida ni kuandika saketi katika lugha ya kiwango cha juu ya sifuri-maarifa, kuzalisha mhakiki wa Solidity, na kuita mhakiki huyo kutoka kwenye mkataba wa programu.
Mkusanyiko sahihi wa teknolojia unategemea kazi. Circom pamoja na snarkjs ni njia iliyoimarika kwa muda mrefu kwa saketi za kiwango cha programu. Noir pamoja na Barretenberg ni njia mpya zaidi na rafiki kwa wasanidi programu. Halo2 na gnark ni maktaba za saketi za kiwango cha chini. zkVMs kama vile RISC Zero au SP1 huthibitisha programu za kawaida, lakini zinaweza kuwa ghali zaidi kuthibitisha kuliko saketi ndogo maalum.
Kwa uanachama usiojulikana, tumia itifaki iliyopo kabla ya kuandika saketi yako mwenyewe. Semaphore hufungasha uanachama wa kikundi na uzuiaji wa matumizi mara mbili unaotegemea kibatilishi kwenye mikataba na maktaba za JavaScript. Kwa upigaji kura wa faragha na utawala, MACI ni njia maalum kwa sababu inaongeza sifa za kuzuia njama. Itifaki zilizokomaa mara nyingi ni salama zaidi kuliko saketi mpya.
Uthibitisho hautoshi
Hata uthibitisho kamili hufeli ikiwa mtiririko wa mkoba unavujisha kiungo. Jisajili kutoka kwenye mkoba A na baadaye utende kutoka kwenye mkoba A, na yeyote anayetazama anaweza kuunganisha miamala. Fadhili mkoba B kutoka kwenye mkoba A kabla tu ya kutenda, na muamala huo wa ufadhili unaunda tatizo lile lile.
Hii ndiyo sababu vifungashaji na walipiaji ni muhimu. Mkoba unaotenda unapaswa kuwa mpya, na haupaswi kuhitaji kupokea ETH kutoka kwenye mkoba ambao mtumiaji anajaribu kuutenganisha na kitendo hicho.
Tatizo lile lile lipo nje ya mnyororo. Kuwasilisha miamala ya usajili na vitendo kutoka kwenye anwani ya IP ile ile, mtoa huduma wa RPC, au kipindi kunaweza kudhoofisha faragha inayotolewa na saketi. Sehemu za mbele zinaweza kuvuja kupitia uchanganuzi, hifadhi ya ndani, na kumbukumbu za usaidizi. Uthibitisho wa maarifa-sifuri huficha thamani zilizo ndani ya uthibitisho. Haufichi kila kitu kinachozunguka muamala.
Ingizo za umma ni eneo jingine ambapo programu za faragha hufeli. Chochote kilichowekwa alama ya umma kwenye saketi, kilichotolewa kama tukio, kilichojumuishwa kwenye data za mwito, au kilichohifadhiwa na mkataba kinaonekana. Kagua ingizo za umma kwa uangalifu sawa na udhibiti wa ufikiaji kwenye mkataba wa Solidity.
Hili linabadilisha nini kwa waundaji
Faragha kwenye Ethereum inaweza kusafirishwa. Waundaji wanaweza kuunganisha vipande hivyo kuwa programu halisi. Mkusanyiko huo ni saketi kwa ajili ya kauli ya siri, mhakiki kwa ajili ya ukaguzi wa uthibitisho, mkataba wa programu kwa ajili ya sheria za umma, kielekezi kwa ajili ya data za Merkle, na kifungashaji pamoja na mlipiaji kwa ajili ya uwasilishaji usioweza kuunganishwa na ufadhili wa gesi.
Sehemu ngumu ni muundo wa bidhaa, usimamizi wa ufunguo, usafi wa data fafanuzi, ukaguzi, na kukuza seti ya kutojulikana. Ukikosea yoyote kati ya hizo na faragha iliyotolewa na uthibitisho inapotea.
Usomaji zaidi
- Uthibitisho wa maarifa-sifuri (ethereum.org) (opens in a new tab)
- Nyaraka za Semaphore (opens in a new tab)
- Nyaraka za MACI (opens in a new tab)
- Nyaraka za Circom (opens in a new tab)
- Nyaraka za Noir (opens in a new tab)
- Kitabu cha Halo2 (opens in a new tab)
- Nyaraka za gnark (opens in a new tab)
- Nyaraka za RISC Zero (opens in a new tab)
- Nyaraka za SP1 (opens in a new tab)
- EIP-4337: Udhanifu wa Akaunti kupitia Mkataba wa EntryPoint (opens in a new tab)
Ukurasa ulisasishwa mwisho: 28 Mei 2026