Hauv Bitcoin network, tag nrho cov nodes, los ntawm kev pom zoo, pom zoo rau ib txheej ntawm UTXOs: pes tsawg npib muaj rau kev siv, rau leej twg raws nraim, thiab nyob rau hauv dab tsi tej yam kev mob. UTXO teeb yog qhov tsawg kawg nkaus ntawm cov ntaub ntawv xav tau rau lub validator node, yam tsis muaj qhov node yuav tsis muaj peev xwm txheeb xyuas qhov siv tau ntawm cov khoom xa tuaj thiab cov blocks uas muaj lawv.
Hauv qhov no, kev sim ua tau nyob rau hauv txhua txoj hauv kev los txo cov neeg sawv cev khaws cia ntawm cov txheej txheem no, txhawm rau txhawm rau nws yam tsis muaj kev ruaj ntseg lav. Qhov me me ntawm cov ntaub ntawv khaws cia, qhov tsawg dua qhov chaw disk qhov yuav tsum tau muaj ntawm lub validator node, uas ua rau lub validator node pheej yig, tso cai rau koj nthuav lub network thiab yog li ua rau kom ruaj ntseg ntawm lub network.
UTXO-set yog tsim nyob rau hauv ya, thaum lub sij hawm pib block download (IBD), khaws cia nyob rau hauv tag nrho thiab mus tas li, thaum nws cov ntsiab lus hloov tom qab ua muas los ntawm txhua qhov tshiab thiab raug thaiv ntawm lub network. Cov txheej txheem no yuav tsum rub tawm kwv yees li 200 GB ntawm cov ntaub ntawv thaiv thiab txheeb xyuas ntau pua lab tus lej kos npe digital. Tom qab cov txheej txheem IBD tiav lawm, cov kab hauv qab yog tias UTXO-set yuav nyob txog 4 GB.
Txawm li cas los xij, nrog cov accumulators, cov cai ntawm kev pom zoo rau cov nyiaj tau txo qis rau kev txheeb xyuas thiab tsim cov ntaub ntawv pov thawj cryptographic, thiab lub nra ntawm kev taug qab cov nyiaj tau hloov mus rau tus tswv ntawm cov nyiaj, uas muab pov thawj ntawm lawv lub neej thiab kev ua tswv cuab.
Ib qho accumulator tuaj yeem raug hu ua tus sawv cev ntawm cov txheej txheem. Qhov loj ntawm cov khoom sawv cev yuav tsum yog qhov tsis tu ncua , los yog nce sublinearly nrog rau kev hwm rau cardinality ntawm lub teeb thiab qhov loj ntawm lub caij nws tus kheej, piv txwv li , qhov twg n yog lub cardinality ntawm cov khoom khaws cia.
Hauv qhov no, lub accumulator yuav tsum tso cai tsim cov ntaub ntawv pov thawj ntawm kev suav nrog cov khoom hauv cov txheej txheem (cov pov thawj suav nrog) thiab ua kom nws muaj peev xwm txheeb xyuas cov ntaub ntawv pov thawj no zoo.
Lub roj teeb hu ua muaj zog yog tias tso cai rau koj ntxiv cov ntsiab lus thiab tshem tawm cov ntsiab lus ntawm lub teeb.
Ib qho piv txwv ntawm xws li lub roj teeb yuav yog RSA accumulator npaj los ntawm Boneh, Bunz, Fisch thaum Lub Kaum Ob Hlis 2018. Xws li ib qho accumulator muaj qhov loj me me ntawm cov sawv cev khaws cia, tab sis yuav tsum muaj lub xub ntiag qhia zais cia (kev teeb tsa ntseeg tau). Qhov kev xav tau no cuam tshuam qhov kev siv ntawm xws li ib qho accumulator rau trustless networks xws li Bitcoin, txij li thaum cov ntaub ntawv to thaum lub sij hawm zais cia tuaj yeem tso cai rau cov neeg tawm tsam los tsim cov pov thawj cuav ntawm UTXO, dag cov nodes nrog UTXO-teeb raws li xws li ib tug accumulator.
Utreexo
Tus tsim Utreexo tau npaj los ntawm Thaddeus Dryja ua rau nws tsim tau muaj zog roj teeb tsis muaj ntseeg-kev teeb tsa.
Cov roj teeb hlwb tau teem rau hauv hav zoov ntawm cov ntoo zoo tagnrho binary. Ntoo raug txiav los ntawm qhov siab. Qhov kev sawv cev no tau xaiv los ua qhov pom tseeb tshaj plaws thiab tso cai rau koj pom kev sib koom ua ke ntawm cov ntoo thaum ua haujlwm ntawm lub roj teeb.
Tus sau sau tseg tias txij li tag nrho cov ntoo hauv hav zoov yog qhov zoo tagnrho, lawv qhov siab yog qhia raws li lub zog ntawm ob, ib yam li txhua tus lej tuaj yeem sawv cev raws li qhov suav ntawm lub zog ntawm ob. Raws li, txhua txheej ntawm nplooj tuaj yeem muab faib ua binary ntoo, thiab nyob rau hauv txhua rooj plaub, ntxiv cov ntsiab lus tshiab yuav tsum muaj kev paub. tsuas yog hais txog cov cag ntawm cov ntoo khaws cia.
Yog li, khaws cia sawv cev ntawm Utreexo accumulator yog cov npe ntawm cov hauv paus pob (Merkle hauv paus), thiab tsis yog tag nrho cov hav zoov ntawm cov ntoo.
Cia peb sawv cev cov npe ntawm cov hauv paus ntsiab lus raws li Vec<Option<Hash>>. Xaiv hom Option<Hash> qhia tias cov hauv paus ntsiab lus yuav ploj mus, uas txhais tau hais tias tsis muaj tsob ntoo nrog qhov siab tsim nyog hauv lub accumulator.
Txhawm rau ntxiv cov khoom rau lub roj teeb, koj xav tau:
Tsim ib qho array ntawm pob tawb ntawm cov hauv paus ntsiab lus new_roots thiab tso cov hauv paus ntsiab lus uas twb muaj lawm nyob rau ntawd, ib qho rau txhua lub thoob:
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);
}
Txhawm rau tshem tawm lub xov tooj ntawm tes los ntawm lub roj teeb, koj yuav tsum muab pov thawj tseeb tias lub xov tooj ntawm tes nyob ntawd. Siv cov ntaub ntawv los ntawm cov ntaub ntawv pov thawj, nws muaj peev xwm xam cov hauv paus ntsiab lus tshiab ntawm lub accumulator uas cov ntaub ntawv pov thawj yuav tsis muaj tseeb.
Lub algorithm yog raws li nram no:
Raws li nrog ntxiv, peb npaj ib txheej ntawm cov pob tawb npliag coj mus rau Merkle ntoo nrog qhov siab sib npaug ntawm lub zog ntawm ob los ntawm lub pob tawb.
Peb ntxig cov ntsiab lus los ntawm cov kauj ruam ntawm Merkle txoj kev mus rau hauv pob tawb; lub pob tawb Performance index yog sib npaug rau tus naj npawb ntawm cov kauj ruam tam sim no
Peb tshem tawm cov hauv paus ntsiab lus uas txoj kev los ntawm cov pov thawj coj
Raws li nrog ntxiv, peb xam cov hauv paus ntsiab lus tshiab los ntawm kev sib txuas cov khoom los ntawm cov pob tawb hauv cov khub thiab txav cov txiaj ntsig ntawm lub koom haum mus rau lub pob tawb tom ntej.
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;
}
}
Cov txheej txheem tshem tawm "A":
Kev koom ua ke rau hauv ib lub network uas twb muaj lawm
Siv cov ntawv thov accumulator, cov nodes tuaj yeem zam kev siv DB los khaws tag nrho UTXOs thaum tseem tuaj yeem hloov UTXO-set. Txawm li cas los xij, qhov teeb meem ntawm kev ua haujlwm nrog cov pov thawj tshwm sim.
Wb hu rau validator node uas siv UTXO accumulator compact (compact-state node), thiab validator tsis muaj accumulator yog ua kom tiav (tag nrho node). Qhov muaj nyob ntawm ob chav kawm ntawm cov nodes tsim teeb meem rau kev sib koom ua ke rau hauv ib lub network, vim cov nodes compact xav tau cov ntaub ntawv pov thawj ntawm UTXOs, uas tau siv rau hauv kev lag luam, thaum tag nrho cov nodes tsis ua. Yog tias txhua lub network nodes tsis nyob ib txhij thiab hauv kev sib koom ua ke hloov mus rau kev siv Utreexo, cov nodes compact yuav raug tso tseg thiab yuav tsis muaj peev xwm ua haujlwm ntawm Bitcoin network.
Txhawm rau daws qhov teeb meem ntawm kev sib koom ua ke ntawm cov nodes hauv lub network, nws tau thov kom qhia txog cov chav kawm ntxiv ntawm cov nodes - txuas hniav. Tus choj node yog qhov ua tiav ntawm qhov tseem khaws cov roj teeb Utreexo thiab cov pov thawj hluav taws xob rau ntawm txhua tus UTXO los ntawm UTXO-set. Cov choj suav cov hashes tshiab thiab hloov kho cov accumulator thiab cov ntaub ntawv pov thawj thaum cov blocks tshiab tuaj txog. Kev tuav tswj thiab hloov kho lub accumulator thiab cov ntaub ntawv pov thawj tsis txwv cov kev suav ntxiv ntawm cov nodes. Cov choj txi qhov chaw disk: yuav tsum khaws cov khoom sib dhos hashes, piv rau hashes rau compact nodes, qhov twg n yog lub hwj chim ntawm UTXO teeb.
Network architecture
Cov txuas txuas ua rau nws tuaj yeem maj mam ntxiv cov nodes rau hauv lub network yam tsis tau hloov cov software ntawm cov nodes uas twb muaj lawm. Tag nrho cov nodes ua haujlwm zoo li ua ntej, faib kev lag luam thiab thaiv ntawm lawv tus kheej. Choj nodes yog tag nrho cov nodes uas ntxiv rau khaws Utreexo roj teeb cov ntaub ntawv thiab ib txheej ntawm cov ntaub ntawv pov thawj rau ntawm txhua tus UTXO rau tam sim no. Tus choj node tsis tshaj tawm nws tus kheej li ntawd, ua piv txwv ua ib qho ntawm tag nrho cov nodes tag nrho thiab ib qho kev cog lus rau tag nrho cov compact. Txawm hais tias txuas txuas txuas ob lub network ua ke, lawv tsuas yog xav tau txuas rau hauv ib qho kev taw qhia: los ntawm tag nrho cov nodes mus rau cov nodes. Qhov no yog qhov ua tau vim tias hom kev hloov pauv tsis tas yuav hloov pauv, thiab UTXO cov ntaub ntawv pov thawj rau cov pob txha loj tuaj yeem muab pov tseg, yog li txhua qhov kev sib cog lus tuaj yeem sib txuas lus sib txuas rau txhua tus neeg koom tes hauv network yam tsis muaj kev koom tes ntawm cov choj nodes.
xaus
Peb saib Utreexo roj teeb thiab siv nws cov qauv hauv Rust. Peb saib ntawm lub network architecture uas yuav tso cai rau kev sib koom ua ke ntawm cov roj teeb raws li cov nodes. Qhov kom zoo dua ntawm compact catches yog qhov loj ntawm cov ntaub ntawv khaws cia, uas nyob ntawm logarithmically ntawm lub zog ntawm cov txheej txheem UTXOs, uas zoo heev txo cov kev xav tau ntawm qhov chaw disk thiab kev ua haujlwm cia rau cov nodes. Qhov tsis zoo yog qhov kev sib txuas ntxiv rau kev xa cov ntaub ntawv pov thawj, tab sis cov ntaub ntawv pov thawj sib sau ua ke (thaum ib qho pov thawj ua pov thawj muaj ntau lub ntsiab lus) thiab caching tuaj yeem pab ua kom cov tsheb khiav tsis pub dhau qhov kev txwv.