Utreexo: isku dhejinta Bitcoin UTXO badan

Utreexo: isku dhejinta Bitcoin UTXO badan

Haye Habr!

Shabakadda Bitcoin, dhammaan qanjidhada, iyada oo loo marayo is-afgarad, waxay ku heshiiyaan qaybo UTXO ah: inta qadaadiic ah ayaa diyaar u ah kharashka, cidda saxda ah, iyo shuruudaha. Jadwalka UTXO waa xogta ugu yar ee looga baahan yahay noodhka ansaxaya, kaas oo la'aanteed aanu noodu awoodi karin inuu xaqiijiyo sax ahaanshaha macaamil ganacsi ee soo socda iyo blockyada ay ku jiraan.

Marka la eego, isku dayo ayaa lagu sameeyaa si kasta oo suurtagal ah si loo dhimo matalaadda kaydsan ee setkan, si loo cadaadiyo iyada oo aan luminin dammaanadda amniga. Mugga yar ee xogta la kaydiyay, hoos ayuu u dhigayaa shuruudaha booska diskka ee noodhka ansaxiyaha ah, taas oo ka dhigaysa bilaabista noodhka ansaxiyaha raqiis ah, waxay kuu ogolaaneysaa inaad ballaariso shabakadda oo aad kordhiso xasilloonida shabakadda.

Maqaalkan waxaan ku dhejin doonaa nooca miridhku soo jeedinta dhawaan ka timid la-qoraa Warqad Shabakadda Hillaaca, Thaddeus Dryja - Utreexo: ururiye xashiish-ku-salaysan oo firfircoon oo loo habeeyay Bitcoin UTXO, kaas oo u oggolaanaya dhimista shuruudaha booska diskka ee noodhka ansaxinta.

Ma jiraan?

Mid ka mid ah dhibaatooyinka joogtada ah ee Bitcoin ayaa ahaa miisaankeeda. Fikradda "bangigaaga" wuxuu u baahan yahay ka qaybgalayaasha shabakadu inay hayaan diiwaannada dhammaan lacagaha la heli karo si loo isticmaalo. Seeraar, lacagaha la heli karo waxaa lagu muujiyaa sida wax soo saarka aan la isticmaalin - UTXO-set. Inkastoo tani aysan ahayn matalaad dareen gaar ah leh, waxay faa'iido u leedahay marka la eego waxqabadka fulinta marka loo eego matalaadda taas oo "wallet" kastaa uu leeyahay "dheelitir" gelitaan gaar ah, iyo sidoo kale ku daraya sirta (tusaale. CoinJoin).

Waa muhiim in la kala saaro taariikhda wax kala iibsiga (waxa loo yaqaan blockchain) iyo xaaladda hadda ee nidaamka. Taariikhda wax kala iibsiga Seeraar waxay hadda haysaa ilaa 200 GB oo boos disk ah, wayna sii socotaa. Si kastaba ha noqotee, nidaamka nidaamka aad ayuu u yar yahay, marka loo eego 4 GB, oo kaliya ayaa tixgelinaya xaqiiqda ah in qof hadda leeyahay qadaadiicda. Mugga xogtani sidoo kale way korodhaa wakhti ka dib, laakiin heer aad u gaabis ah oo mararka qaarkood xitaa waxay u egtahay inay hoos u dhacdo (eeg CDPV).

Macaamiisha fudud (SPVs) waxay dammaanad qaadayaan amniga ganacsiga ee awoodda kaydinta ugu yaraan gobolka (UTXO-set) oo aan ahayn furayaasha gaarka ah.

UTXO iyo UTXO-set

UTXO (Unspent Transaction Output) waa soosaarka wax kala iibsiga ee aan la isticmaalin, meesha ugu dambeysa ee safarka Satoshi kasta oo lagu wareejiyo macaamil ganacsi. Wax-soo-saarka aan la isticmaalin ayaa noqda wax-soo-saarka macaamil ganacsi oo cusub oo sidaas lagu kharash gareeyo (kharash) lagana saaro UTXO-set.

UTXO cusub waxaa had iyo jeer abuuray wax kala iibsiga:

  • coinbase macaamil ganacsi la'aan: abuur UTXO cusub marka macdan qodayaasha soo saaraan qadaadiicda
  • macaamil ganacsi oo joogto ah: abuur UTXOs cusub adiga oo isticmaalaya UTXOs gaar ah oo jira

Habka la shaqaynta UTXO:
Utreexo: isku dhejinta Bitcoin UTXO badan

Shandadyadu waxay tiriyaan tirada qadaadiicda ah ee la heli karo kharashka (dheellitirka) iyadoo lagu salaynayo cadadka UTXO ee loo heli karo boorsadan kharashka.

Nod kasta oo ansax ah, si looga hortago isku dayada kharashka labalaabka ah, waa inuu la socdaa habka всСх UTXO markaad hubinayso mid kasta wax kala iibsiga mid kasta xannibid.

Noodku waa inuu lahaadaa macquul:

  • Wax lagu daro UTXO-set
  • Tirtiridda UTXO-set
  • Hubinta joogitaanka hal UTXO oo ku jira set

Waxaa jira habab lagu dhimo shuruudaha macluumaadka la keydiyay ee ku saabsan set, iyadoo la ilaalinayo awoodda wax lagu dari karo lagana saari karo curiyeyaasha, hubinta iyo caddaynta jiritaanka shay ku jira set iyadoo la isticmaalayo kaydiyaha cryptographic.

Beteriyada UTXO

Fikradda isticmaalka baytariyada si loo kaydiyo UTXO badan ayaa laga hadlay hore.

UTXO-set waxaa lagu dhisay duulista, inta lagu guda jiro download block bilowga ah (IBD), kaydiyaa si buuxda iyo si joogto ah, halka ay ka kooban beddelo ka dib markii processing xawaaladaha ka block kasta oo cusub oo sax ah ee network. Habkani wuxuu u baahan yahay soo dejinta qiyaastii 200 GB ee xogta xannibaadda iyo xaqiijinta boqolaal milyan oo saxeex dhijitaal ah. Ka dib marka habka IBD la dhammeeyo, xariiqda hoose ayaa ah in UTXO-set uu ku noolaan doono qiyaastii 4 GB.

Si kastaba ha noqotee, iyada oo la adeegsanayo accumulators, xeerarka la isku waafaqsan yahay ee lacagaha ayaa la dhimay si loo xaqiijiyo iyo abuurista caddaynta cryptographic, iyo culeyska dabagalka lacagaha la heli karo ayaa loo wareejiyaa milkiilaha lacagahaas, kaas oo bixiya caddaynta jiritaankooda iyo lahaanshaha.

Accumulator waxaa loogu yeeri karaa matalaad is haysta ee go'an. Cabbirka matalaadda kaydsan waa inay ahaataa mid joogto ah Utreexo: isku dhejinta Bitcoin UTXO badan, ama u kordhi si hoose marka loo eego kadinnimada jaantuska iyo cabbirka curiyaha laftiisa, tusaale ahaan Utreexo: isku dhejinta Bitcoin UTXO badan, halkaas oo n ay tahay kadinnimada ee set kaydsan.

Xaaladdan oo kale, ururiyehu waa inuu oggolaadaa soo saarista caddaynta ku darista shay ku jira set (caddaynta ka mid noqoshada) oo ay suurtogal ka dhigto in si wax ku ool ah loo xaqiijiyo caddayntan.

Batteriga ayaa la yiraahdaa firfircoon haddii ay kuu ogolaato in aad ku darto canaasirta oo aad ka saartid curiyayaasha set.

Tusaale ahaan baytariga noocaas ah wuxuu noqon lahaa Ururiyaha RSA waxaa soo jeediyay Boneh, Bunz, Fisch bishii Disembar 2018. Ururinta noocan oo kale ah waxay leedahay cabbir joogto ah oo matalaad kaydsan, laakiin waxay u baahan tahay joogitaanka sir la wadaago (habayn lagu kalsoon yahay). Shuruudahan ayaa diidaya ku-dhaqanka accumulator sida shabakadaha aan la aamini karin sida Seeraar, tan iyo daadinta xogta inta lagu jiro jiilka sirta ah waxay u oggolaan kartaa weeraryahannada inay abuuraan caddayn been ah oo jiritaanka UTXO ah, khayaanada noodhka leh UTXO-ku-salaysan oo ku salaysan accumulator sida.

Utreexo

Naqshadaynta Utreexo ee uu soo jeediyay Thaddeus Dryja ayaa suurtogal ka dhigaysa in la abuuro firfircoon baytariga iyada oo aan habayn lagu kalsoon yahay.

Utreexo waa kaynta binary kaamil ah Geedaha Merkle waana horumarinta fikradaha lagu soo bandhigay Asynchronous asynchronous accumulators oo hufan ee pki la qaybiyay, ku darida awooda in laga saaro canaasirta go'an.

Qaab dhismeedka macquulka ah ee baytari

Unugyada baytariyadu waxay ku habaysan yihiin kayn geedo binary ah oo ku habboon. Geedaha waxaa lagu dalbadaa dherer. Matalan waxaa loo doortay sida ugu muuqaalka badan waxayna kuu ogolaaneysaa inaad sawirto isku darka geedaha inta lagu jiro hawlgalka batteriga.

Qoraagu wuxuu xusay in maadaama dhammaan geedaha kaynta ku yaal ay ku habboon yihiin, dhererkooda waxaa lagu muujiyey awood laba ah, sida tiro kasta oo dabiici ah loo matali karo wadar awood laba ah. Sidaa darteed, caleen kasta oo caleen ah ayaa loo qaybin karaa geedaha binary, iyo dhammaan kiisaska, ku darida curiye cusub waxay u baahan tahay aqoon kaliya oo ku saabsan qanjidhada xididada geedaha kaydsan.

Haddaba, matalaadda kaydsan ee Utreexo accumulator waa liiska qanjidhada xididka (Xiddiga Merkle), mana aha dhammaan kaynta geedaha.

Aynu matalo liiska curiyeyaasha xididka sida Vec<Option<Hash>>. Nooca ikhtiyaarka ah Option<Hash> waxay tilmaamaysaa in curiyaha xididku maqan yahay, taas oo macnaheedu yahay in aanu jirin geed dhererkiisu ku habboon yahay kaydiyaha.

/// SHA-256 Ρ…Π΅Ρˆ
#[derive(Copy, Clone, Hash, Eq, PartialEq)]
pub struct Hash(pub [u8; 32]);

#[derive(Debug, Clone)]
pub struct Utreexo {
    pub roots: Vec<Option<Hash>>,
}

impl Utreexo {
    pub fn new(capacity: usize) -> Self {
        Utreexo {
            roots: vec![None; capacity],
        }
    }
}

Ku darida walxaha

Marka hore, aan qeexno shaqada parent(), kaas oo u aqoonsan noodhka waalidka ee laba walxood oo la siiyay.

shaqada waalidka ()

Maadaama aan isticmaaleyno geedaha Merkle, waalidka mid kasta oo ka mid ah labada nood waa hal nood oo kaydiya xashiishka isku dhafka xashiishyada qanjidhada ilmaha:

fn hash(bytes: &[u8]) -> Hash {
    let mut sha = Sha256::new();
    sha.input(bytes);
    let res = sha.result();
    let mut res_bytes = [0u8; 32];
    res_bytes.copy_from_slice(res.as_slice());

    Hash(res_bytes)
}

fn parent(left: &Hash, right: &Hash) -> Hash {
    let concat = left
        .0
        .into_iter()
        .chain(right.0.into_iter())
        .map(|b| *b)
        .collect::<Vec<_>>();

    hash(&concat[..])
}

Qoraagu wuxuu xusay in si looga hortago weerarrada ay ku sifeeyeen Charles Bouillaguet, Pierre-Alain Fouque, Adi Shamir, iyo Sebastien Zimmer
Weerarrada labaad ee horudhaca ah ee hawlaha xashiishyada ee kala go'ay, marka lagu daro labada xashiish, dhererka geedka dhexdiisa waa in sidoo kale lagu daro isku-dhafka.

Markaad ku darto curiyayaasha ururiyaha, waxaad u baahan tahay inaad la socoto curiyayaasha xididka la beddelo. Adigoo raacaya dariiqa beddelidda curiyeyaasha xididka ee shay kasta oo aad ku darto, waxaad hadhow dhisi kartaa caddaynta jiritaanka walxahan.

Lasoco isbedelada markaad ku darto

Si aan ula socono isbedelada la sameeyay, aan ku dhawaaqno qaab dhismeedka Update, kaas oo kaydin doona xogta ku saabsan isbeddelada noodhka.

#[derive(Debug)]
pub struct Update<'a> {
    pub utreexo: &'a mut Utreexo,
    // ProofStep Ρ…Ρ€Π°Π½ΠΈΡ‚ "сосСда" элСмСнта ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
    pub updated: HashMap<Hash, ProofStep>,
}

Si aad shay ugu darto batteriga, waxaad u baahan tahay:

  • Samee dambiisha tiro badan oo xubno xidid ah new_roots oo dhig curiyeyaasha xididka jira, hal baaldi kasta:

Code

let mut new_roots = Vec::new();

for root in self.roots.iter() {
    let mut vec = Vec::<Hash>::new();
    if let Some(hash) = root {
        vec.push(*hash);
    }

    new_roots.push(vec);
}

  • Ku dheji walxaha lagu darayo (array insertions) gaadhiga kowaad new_roots[0]:

Utreexo: isku dhejinta Bitcoin UTXO badan

Code

new_roots[0].extend_from_slice(insertions);

  • Ku xidh alaabta lagu daray dambiisha ugu horraysa inta soo hadhay:
    • Dhammaan gawaarida leh wax ka badan hal shay:
      1. Laba walxood ka soo qaad dhamaadka dambiisha, xisaabi waalidkood, ka saar labada walxood
      2. Ku dar waalidka la xisaabiyay gaariga xiga

Utreexo: isku dhejinta Bitcoin UTXO badan

Code

for i in 0..new_roots.len() {
    while new_roots[i].len() > 1 {
        // ОбъСдиняСм Π΄Π²Π° элСмСнта Π² ΠΎΠ΄ΠΈΠ½ ΠΈ удаляСм ΠΈΡ…
        let a = new_roots[i][new_roots[i].len() - 2];
        let b = new_roots[i][new_roots[i].len() - 1];
        new_roots[i].pop();
        new_roots[i].pop();
        let hash = self.parent(&a, &b);

        // НаращиваСм количСство ΠΊΠΎΡ€Π·ΠΈΠ½ Ссли трСбуСтся
        if new_roots.len() <= i + 1 {
            new_roots.push(vec![]);
        }

        // ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ элСмСнт Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ
        new_roots[i + 1].push(hash);

        // НС Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния;
        // это пригодится для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° добавлСния элСмСнтов
        updated.insert(a, ProofStep { hash: b, is_left: false });
        updated.insert(b, ProofStep {hash: a, is_left: true });
    }
}

  • Ka dhaqaaji canaasiirta xididka qashin-qubka una guuri soo koobida ururinta

Code

for (i, bucket) in new_roots.into_iter().enumerate() {
    // НаращиваСм аккумулятор Ссли трСбуСтся
    if self.roots.len() <= i {
        self.roots.push(None);
    }

    if bucket.is_empty() {
        self.roots[i] = None;
    } else {
        self.roots[i] = Some(bucket[0]);
    }
}

Abuuritaanka caddaynta walxaha lagu daray

Caddeynta ku darida unugga batteriga (Proof) waxay u adeegi doontaa sida Waddada Merkle, oo ka kooban silsilad ProofStep. Haddii dariiqu meelna u maro, markaa caddayntu waa khalad.

/// Π•Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ шаг Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ элСмСнту Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠœΠ΅Ρ€ΠΊΠ»Π°.
#[derive(Debug, Copy, Clone)]
pub struct ProofStep {
    pub hash: Hash,
    pub is_left: bool,
}

/// Π”ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ элСмСнта. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ сам элСмСнт ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ.
#[derive(Debug, Clone)]
pub struct Proof {
    pub steps: Vec<ProofStep>,
    pub leaf: Hash,
}

Isticmaalka macluumaadka hore loo helay marka lagu daro curiye (qaab dhismeedka Update), waxaad samayn kartaa caddayn ah in curiye lagu daray batteriga. Si tan loo sameeyo, waxaan dhex mareynaa shaxda isbeddelada la sameeyay oo aan ku darno tallaabo kasta waddada Merkle, taas oo markaa u adeegi doonta caddayn:

Code

impl<'a> Update<'a> {
    pub fn prove(&self, leaf: &Hash) -> Proof {
        let mut proof = Proof {
            steps: vec![],
            leaf: *leaf,
        };

        let mut item = *leaf;
        while let Some(s) = self.updated.get(&item) {
            proof.steps.push(*s);
            item = parent(&item, &s);
        }

        proof
    }
}

Habka abuurista caddaynta

Utreexo: isku dhejinta Bitcoin UTXO badan

Hubinta caddaynta curiyaha

Hubinta caddaynta ku darida shaygu waxay hoos ugu dhacdaa raacitaanka dariiqa Merkle ilaa ay ka keento curiye xidid jira:

pub fn verify(&self, proof: &Proof) -> bool {
    let n = proof.steps.len();
    if n >= self.roots.len() {
        return false;
    }

    let expected = self.roots[n];
    if let Some(expected) = expected {
        let mut current_parent = proof.leaf;
        for s in proof.steps.iter() {
            current_parent = if s.is_left {
                parent(&s.hash, &current_parent)
            } else {
                parent(&current_parent, &s.hash)
            };
        }

        current_parent == expected
    } else {
        false
    }
}

Muuqaal ahaan:

Habka hubinta caddaynta A

Utreexo: isku dhejinta Bitcoin UTXO badan

Saarida walxaha

Si unug looga saaro batteriga, waa inaad keentaa caddayn sax ah in unuggu halkaas ku jiro. Isticmaalka xogta caddaynta, waxaa suurtagal ah in la xisaabiyo xididada xididada cusub ee ururiyaha kuwaas oo caddaynta la siiyay aysan run ahaan doonin.

Algorithm waa sida soo socota:

  1. Sida lagu daro, waxaanu abaabulnaa dambiisha madhan oo u dhiganta geedaha Merkle ee dhererkoodu le'eg yahay awoodda laba ee tusmada dambiisha.
  2. Waxaan gelinaa canaasiirta jaranjarada jidka Merkle dambiisha; tusmada dambiisha waxay la mid tahay tirada tallaabada hadda socota
  3. Waxaan ka saareynaa qaybta asalka ah ee dariiqa caddayntu u horseedayso
  4. Sida ku-darka, waxaan xisaabinnaa curiyeyaasha xididka cusub anagoo isku darayna canaasiirta dambiisha oo labo-labo ah oo u rarayna natiijada ururka dambiisha xiga.

Code

fn delete(&self, proof: &Proof, new_roots: &mut Vec<Vec<Hash>>) -> Result<(), ()> {
    if self.roots.len() < proof.steps.len() || self.roots.get(proof.steps.len()).is_none() {
        return Err(());
    }

    let mut height = 0;
    let mut hash = proof.leaf;
    let mut s;

    loop {
        if height < new_roots.len() {
            let (index, ok) = self.find_root(&hash, &new_roots[height]);
            if ok {
                // Remove hash from new_roots
                new_roots[height].remove(index);

                loop {
                    if height >= proof.steps.len() {
                        if !self.roots[height]
                            .and_then(|h| Some(h == hash))
                            .unwrap_or(false)
                        {
                            return Err(());
                        }

                        return Ok(());
                    }

                    s = proof.steps[height];
                    hash = self.parent(&hash, &s);
                    height += 1;
                }
            }
        }

        if height >= proof.steps.len() {
            return Err(());
        }

        while height > new_roots.len() {
            new_roots.push(vec![]);
        }

        s = proof.steps[height];
        new_roots[height].push(s.hash);
        hash = self.parent(&hash, &s);
        height += 1;
    }
}

Habka saarista curiyaha "A":
Utreexo: isku dhejinta Bitcoin UTXO badan

Is dhexgalka shabakada jira

Isticmaalka aruuriyaha la soo jeediyay, noodhadhku waxay iska ilaalin karaan isticmaalka DB si ay u kaydiyaan dhammaan UTXO inta ay weli awoodaan inay beddelaan UTXO-set. Si kastaba ha noqotee, dhibaatada ku shaqeynta caddaynta ayaa soo baxda.

Aynu wacno noodhka ansaxiyaha ah ee adeegsada ururiyaha UTXO is haysta (node-goboleed is haysta), iyo ansaxiyaha aan lahayn ururiye waa dhamaystiran (noqo buuxa). Jiritaanka laba qaybood oo qanjidhada ah waxay abuurtaa dhibaato isku dhafka hal shabakad, maaddaama qanjidhada is haysta ay u baahan yihiin caddaynta jiritaanka UTXOs, kuwaas oo lagu kharash gareeyo macaamil ganacsi, halka qanjidhada buuxa aysan samayn. Haddii dhammaan qanjidhada shabakadu aysan isku mar isku mar ahayn oo si isku-dubbarid leh u beddelaan isticmaalka Utreexo, markaa qanjidhada is haysta waa laga tagi doonaa mana awoodi doonaan inay ku shaqeeyaan shabakadda Bitcoin.

Si loo xalliyo dhibaatada isku dhafka qanjidhada cufan ee shabakada, waxaa la soo jeediyay in la soo bandhigo fasal dheeraad ah oo qanjidhada ah - buundooyinka. Noodka buundada waa nood dhammays tiran oo sidoo kale kaydisa baytariga Utreexo iyo caddaynta korontada всСх UTXO ka UTXO-set. Biriijyadu waxay xisaabiyaan xashiishyada cusub waxayna cusboonaysiiyaan kaydiyaha iyo cadaymaha marka ay xidhmo cusub oo wax kala iibsi ahi yimaadaan. Joogteynta iyo cusboonaysiinta ururiyaha iyo cadaymaha kuma soo rogayaan culays xisaabeed dheeraad ah qanjidhadan oo kale. Buundooyinka waxay allabari u bixiyaan booska diskka: waxay u baahan yihiin in wax la habeeyo Utreexo: isku dhejinta Bitcoin UTXO badan xashiishka, marka loo eego Utreexo: isku dhejinta Bitcoin UTXO badan xashiishyada qanjidhada is haysta, halkaasoo n ay tahay awoodda UTXO.

Nashqadaynta shabakada

Utreexo: isku dhejinta Bitcoin UTXO badan

Buundooyinka ayaa suurtogal ka dhigaya in si tartiib tartiib ah loogu daro qanjidhada is haysta ee shabakada iyada oo aan la beddelin software-ka noodhka jira. Nodes buuxa waxay u shaqeeyaan sidii hore, qaybinta wax kala iibsiga iyo blocks dhexdooda. Buundooyinka buundada waa qanjidhada buuxa kuwaas oo sidoo kale kaydiya xogta batteriga Utreexo iyo caddaymaha ka mid noqoshada всСх UTXO hadda. Buundada buundada lafteeda uma xayeysiiso sidaan oo kale, isaga oo iska dhigaya in ay tahay nood buuxa oo dhan qanjidhada buuxa iyo qanjirada is haysta ee dhammaan kuwa is haysta. Inkasta oo buundooyinku ay isku xidhaan labada shabakadood, dhab ahaantii waxay u baahan yihiin inay ku xidhaan hal jiho: min qanjidhada buuxa ee jira ilaa qanjidhada is haysta. Tani waa suurtogal sababtoo ah qaabka wax kala iibsiga uma baahna in la beddelo, iyo caddaynta UTXO ee qanjidhada is haysta waa la tuuri karaa, sidaas darteed node kasta oo is haysta ayaa si la mid ah u baahin kara macaamilka dhammaan ka qaybgalayaasha shabakada iyada oo aan ka qaybqaadaneynin qanjidhada buundada.

gunaanad

Waxaan eegnay batteriga Utreexo waxaana ku hirgelinay noociisa Rust. Waxaan eegnay qaab dhismeedka shabakadda kaas oo u oggolaan doona is-dhexgalka qanjidhada ku salaysan baytariyada. Faa'iidada qabashada is haysta waa cabbirka xogta kaydsan, taas oo ku xidhan logarithmically awoodda set of UTXOs, taas oo aad u yaraynaysaa shuruudaha meel disk iyo waxqabadka kaydinta ee noodes sida. Khasaaradu waa taraafikada dheeraadka ah ee gudbinta caddaynta, laakiin farsamooyinka isku-darka caddaynta (marka hal caddayntu caddaynayso jiritaanka dhowr walxood) iyo kaydinta waxay kaa caawin kartaa in gaadiidka lagu ilaaliyo xadka la aqbali karo.

tixraacyada:

Source: www.habr.com

Add a comment