RS61195B1 - Postupci i uređaj za distribuiranu bazu podataka unutar mreže - Google Patents
Postupci i uređaj za distribuiranu bazu podataka unutar mrežeInfo
- Publication number
- RS61195B1 RS61195B1 RS20201520A RSP20201520A RS61195B1 RS 61195 B1 RS61195 B1 RS 61195B1 RS 20201520 A RS20201520 A RS 20201520A RS P20201520 A RSP20201520 A RS P20201520A RS 61195 B1 RS61195 B1 RS 61195B1
- Authority
- RS
- Serbia
- Prior art keywords
- event
- events
- computing device
- value
- distributed database
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Description
Opis
Stanje tehnike
[0001] Ovde opisani primeri izvođenja se generalno odnose na sistem baza podataka, a preciznije na postupke i uređaj za implementaciju sistema baza podataka na mnoštvu uređaja u mreži.
[0002] Neki poznati sistemi sa distribuiranim bazama podataka pokušavaju da postignu konsenzus za vrednosti unutar sistema sa distribuiranim bazama podataka (npr. u vezi redosleda po kome se izvode transakcije). Na primer, onlajn igra za više igrača bi mogla imati mnogo računarskih servera kojima korisnici mogu pristupiti da bi igrali igru. Ako dva korisnika pokušaju da uzmu specifični predmet u igri u istom trenutku, onda je važno da se serveri unutar sistema sa distribuiranim bazama podataka konačno slože koji od dva igrača je prvi uzeo predmet.
[0003] Takvim distribuiranim konsenzusom može se upravljati postupcima i/ili procesima kao što su Paksos algoritam ili njegove varijante. Prema takvim postupcima i/ili procesima, jedan server sistema baza podataka je postavljen za "lidera" i lider odlučuje o redosledu događaja. Događaji (npr. u okviru igara sa više igrača) se prosleđuju lideru, a lider određuje raspored događaja i zatim lider prosleđuje taj raspored drugim serverima sistema baza podataka.
[0004] Međutim, takvi poznati pristupi koriste server kojim upravlja strana (npr. centralni upravljački server) u koju imaju poverenje korisnici sistema baza podataka (npr. igrači igre). Shodno tome, postoji potreba za postupcima i uređajem za sistem sa distribuiranim bazama podataka kome nije potreban lider ili treća strana u koju postoji poverenje za upravljanje sistemom baza podataka.
[0005] Projektovane su druge distribuirane baze podataka koje nemaju lidera, ali su one neefikasne. Na primer, jedna takva distribuirana baza podataka je bazirana na "blokčejn" strukturi podataka koja može ostvariti konsenzus. Međutim, takav sistem može biti ograničen na mali ukupan broj transakcija u sekundi, za sve učesnike uzete zajedno (npr. 7 transakcija u sekundi), što je nedovoljno za igre velikih razmera ili za mnoge tradicionalne primene baza podataka. Shodno tome, postoji potreba za sistemom sa distribuiranim bazama podataka koji ostvaruje konsenzus bez lidera i koji je efikasan.
[0006] US 2014/012812 opisuje postupak i sistem za efikasnu replikaciju podataka u nerelacionim bazama podataka.
Suština
[0007] Prema jednom aspektu pronalaska realizovan je zahtev za postupak koji je definisan u zahtevu 1 i zahtev za uređaj koji je definisan u zahtevu 6. Opcione karakteristike su definisane u zavisnim zahtevima.
Kratki opis slika nacrta
[0008]
Slika 1 je blok dijagram visokog nivoa koji prikazuje sistem sa distribuiranim bazama podataka, prema jednom primeru izvođenja.
Slika 2 je blok dijagram koji prikazuje računarski uređaj sistema sa distribuiranim bazama podataka, prema jednom primeru izvođenja.
Slike 3-6 ilustruju primere za hashDAG, prema jednom primeru izvođenja.
Slika 7 je algoritam koji prikazuje tok informacija između prvog računarskog uređaja i drugog računarskog uređaja, prema jednom primeru izvođenja.
Slika 8 je algoritam koji prikazuje tok informacija između prvog računarskog uređaja i drugog računarskog uređaja, prema jednom primeru izvođenja.
Slike 9a-9c su vektorski dijagrami koji ilustruju primere vektora vrednosti.
Slike 10a-10d su vektorski dijagrami koji ilustruju primere vektora vrednosti koji su ažurirani tako da uključe nove vrednosti.
Slika 11 je algoritam koji prikazuje rad sistema sa distribuiranim bazama podataka, prema jednom primeru izvođenja.
Slika 12 je algoritam koji prikazuje rad sistema sa distribuiranim bazama podataka, prema jednom primeru izvođenja.
Slika 13 je algoritam koji prikazuje rad sistema sa distribuiranim bazama podataka, prema jednom primeru izvođenja.
Slika 14 je primer za hashDAG, prema jednom primeru izvođenja.
Slika 15 je primer za hashDAG, prema jednom primeru izvođenja.
Slike 16a-16b ilustruju primer konsenzusnog postupka za primenu sa hashDAG, prema jednom primeru izvođenja.
Slike 17a-17b ilustruju primer konsenzusnog postupka za primenu sa hashDAG, prema sledećem primeru izvođenja.
Detaljni opis
[0009] U nekim primerima izvođenja, uređaj sadrži instancu distribuirane baze podataka na prvom računarskom uređaju koji je konfigurisan da bude uključen u skup računarskih uređaja koji implementiraju distribuiranu bazu podataka preko mreže koja je operativno povezana sa skupom računarskih uređaja. Uređaj takođe sadrži procesor koji je operativno povezan sa memorijom koja memoriše instancu distribuirane baze podataka. Procesor je konfigurisan za definisanje, u prvom trenutku, prvog događaja koji je vezan za prvi skup događaja. Procesor je konfigurisan za prijem, u drugom trenutku posle prvog trenutka i od drugog računarskog uređaja iz skupa računarskih uređaja, signala koji predstavlja drugi događaj (1) koji je definisan od strane drugog računarskog uređaja i (2) koji je povezan sa drugim skupom događaja. Procesor je konfigurisan za identifikaciju redosleda koji je pridružen trećem skupu događaja baziranom na najmanje jednom rezultatu protokola. Svaki događaj iz trećeg skupa događaja je bar iz jednog od prvog skupa događaja ili drugog skupa događaja. Procesor je konfigurisan za memorisanje u instanci distribuirane baze podataka redosleda koji je pridružen trećem skupu događaja.
[0010] U nekim slučajevima, svaki događaj iz trećeg skupa događaja se pridružuje skupu atributa (npr. broju sekvence, broju generacije, broju runde, primljenom broju i/ili vremenskoj oznaci, itd.). Rezultat protokola može sadržati vrednost za svaki atribut iz skupa atributa za svaki događaj iz trećeg skupa događaja. Vrednost za prvi atribut iz skupa atributa može sadržati prvu brojnu vrednost, a vrednost za drugi atribut iz skupa atributa može sadržati binarnu vrednost koja je pridružena prvoj brojnoj vrednosti. Binarna vrednost za drugi atribut (npr. vrednost inkrementa runde) za događaj iz trećeg skupa događaja može biti bazirana na odnosu između tog događaja i četvrtog skupa događaja povezanih sa tim događajem koja zadovoljava kriterijum (npr. broj događaja je dovoljno identifikovan tim događajem). Svaki događaj iz četvrtog skupa događaja je (1) predak događaja iz trećeg skupa događaja i (2) pridružen je prvom zajedničkom atributu kao preostali događaji iz četvrtog skupa događaja (npr. zajednički broj runde, indikacija da je događaj prvi u rundi R, itd.). Prvi zajednički atribut može ukazivati prvoj instanci da je događaj definisan od strane svakog računarskog uređaja iz skupa računarskih uređaja pridružen prvoj specifičnoj vrednosti (npr. indikaciji da je događaj prvi u rundi R, itd.).
[0011] Vrednost za treći atribut (npr. prijemni broj runde) iz skupa atributa može sadržati drugu brojnu vrednost baziranu na odnosu između događaja i petog skupa događaja povezanih sa događajem. Svaki događaj iz petog skupa događaja je potomak događaja i pridružen je drugom zajedničkom atributu (npr. čuven je) kao preostali događaji iz petog skupa događaja. Drugi zajednički atribut može biti pridružen (1) trećem zajedničkom atributu (npr. da je događaj prvi u rundi R ili svedok) koji ukazuje prvoj instanci da je drugi događaj definisan od strane svakog računarskog uređaja iz skupa računarskih uređaja pridružen drugoj specifičnoj vrednosti koja je različita od prve specifične vrednosti i (2) rezultatu baziranom na skupu indikacija. Svaka indikacija iz skupa indikacija može biti pridružena događaju iz šestog skupa događaja. Svaki događaj iz šestog skupa događaja može biti pridružen četvrtom zajedničkom atributu koji ukazuje prvoj instanci da je treći događaj definisan od strane svakog računarskog uređaja iz skupa računarskih uređaja pridružen trećoj specifičnoj vrednosti koja je različita od prve specifične vrednosti i druge specifične vrednosti. U nekim slučajevima, prva specifična vrednost je prvi celi broj (npr. prvi broj runde R), druga specifična vrednost je drugi celi broj (npr. drugi broj runde, R+n) koja je veća od prvog celog broja i treća specifična vrednost je treći celi broj (npr. treći broj runde, R+n+m) koji je veći od drugog celog broja.
[0012] U nekim primerima izvođenja uređaj sadrži memoriju i procesor. Memorija sadrži instancu distribuirane baze podataka na prvom računarskom uređaju koji je konfigurisan da bude uključen u skup računarskih uređaja koji implementiraju distribuiranu bazu podataka preko mreže koja je operativno povezana sa skupom računarskih uređaja. Procesor je operativno povezan sa memorijom u kojoj je memorisana instanca distribuirane baze podataka i konfigurisan je za prijem signala koji predstavlja događaj povezan sa skupom događaja. Procesor je konfigurisan za identifikaciju redosleda pridruženog skupu događaja bar na bazi rezultata protokola. Procesor je konfigurisan za memorisanje u instanci distribuirane baze podataka redosleda pridruženog skupu događaja.
[0013] U nekim primerima izvođenja, neprelazni medijum koji procesor može očitati čuva kod koji predstavlja instrukcije koje treba da izvrši procesor da bi primio signal koji predstavlja događaj koji je povezan sa skupom događaja i identifikuje redosled koji je pridružen skupu događaja na bazi runde pridružene svakom događaju iz skupa događaja i indikaciji kada da se inkrementno poveća broj runde koji je pridružen svakom događaju. Kod dalje sadrži kod koji izaziva da procesor memoriše, u instanci distribuirane baze podataka na prvom računarskom uređaju koji je konfigurisan da bude uključen u skup računarskih uređaja koji implementira distribuiranu bazu podataka preko mreže, a operativno je povezan sa skupom računarskih uređaja, redosled koji je pridružen skupu događaja. Instanca distribuirane baze podataka je operativno povezana sa procesorom.
[0014] U nekim primerima izvođenja, instanca distribuirane baze podataka na prvom računarskom uređaju može biti konfigurisana za uključivanje u skup računarskih uređaja koji implementiraju distribuiranu bazu podataka preko mreže, a operativno je povezana sa skupom računarskih uređaja. Prvi računarski uređaj memoriše više transakcija u instanci distribuirane baze podataka. Modul za konvergenciju baze podataka može biti implementiran u memoriji ili procesoru prvog računarskog uređaja. Modul za konvergenciju baze podataka može biti operativno povezan sa instancom distribuirane baze podataka. Modul za konvergenciju baze podataka može biti konfigurisan za definisanje, u prvom trenutku, prvog događaja povezanog sa prvim skupom događaja. Svaki događaj iz prvog skupa događaja je sekvenca bajtova i pridružen je (1) skupu transakcija iz mnoštva skupova transakcija, i (b) redosledu koji je pridružen skupu transakcija. Svaka transakcija iz skupa transakcija je iz mnoštva transakcija. Modul za konvergenciju baze podataka može biti konfigurisan za prijem, u drugom trenutku posle prvog trenutka i od drugog računarskog uređaja iz skupa računarskih uređaja, drugog događaja (1) koji je definisan od strane drugog računarskog uređaja i (2) povezan je sa drugim skupom događaja. Modul za konvergenciju baze podataka može biti konfigurisan za definisanje trećeg događaja koji je povezan sa prvim događajem i sa drugim događajem. Modul za konvergenciju baze podataka može biti konfigurisan za identifikaciju redosleda pridruženog trećem skupu događaja koji je baziran bar na prvom skupu događaja i drugom skupu događaja. Svaki događaj iz trećeg skupa događaja je bar iz jednog od prvog skupa događaja ili drugog skupa događaja. Modul za konvergenciju baze podataka može biti konfigurisan za identifikaciju redosleda koji je pridružen mnoštvu transakcija baziranog bar na (1) redosledu koji je pridružen trećem skupu događaja i (2) redosledu koji je pridružen svakom skupu transakcija iz mnoštva skupova transakcija. Modul za konvergenciju baze podataka može biti konfigurisan za memorisanje u instanci distribuirane baze podataka redosleda koji je pridružen mnoštvu transakcija koje su memorisane u prvom računarskom uređaju.
[0015] U nekim primerima izvođenja, instanca distribuirane baze podataka na prvom računarskom uređaju može biti konfigurisana za uključivanje u skup računarskih uređaja koji implementiraju distribuiranu bazu podataka preko mreže koja je operativno povezana sa skupom računarskih uređaja. Modul za konvergenciju baze podataka može biti implementiran u memoriji ili procesoru prvog računarskog uređaja. Modul za konvergenciju baze podataka može biti konfigurisan za definisanje, u prvom trenutku, prvog događaja koji je povezan sa prvim skupom događaja. Svaki događaj iz prvog skupa događaja je sekvenca bajtova. Modul za konvergenciju baze podataka može biti konfigurisan za prijem, u drugom trenutku posle prvog trenutka i od drugog računarskog uređaja iz skupa računarskih uređaja, drugog događaja (1) koji je definisan od strane drugog računarskog uređaja i (2) koji je povezan sa drugim skupom događaja. Svaki događaj iz drugog skupa događaja je sekvenca bajtova. Modul za konvergenciju baze podataka može biti konfigurisan za definisanje trećeg događaja koji je povezan sa prvim događajem i sa drugim događajem. Modul za konvergenciju baze podataka može biti konfigurisan za identifikaciju redosleda koji je pridružen trećem skupu događaja baziranog bar na prvom skupu događaja i drugom skupu događaja. Svaki događaj iz trećeg skupa događaja je iz bar jednog od prvog skupa događaja ili drugog skupa događaja. Modul za konvergenciju baze podataka može biti konfigurisan za memorisanje u instanci distribuirane baze podataka redosleda koji je pridružen trećem skupu događaja.
[0016] U nekim primerima izvođenja, podaci koji su pridruženi prvoj transakciji mogu biti primljeni u prvom računarskom uređaju iz skupa računarskih uređaja koji implementiraju distribuiranu bazu podataka preko mreže koja je operativno povezana sa skupom računarskih uređaja. Svaki računarski uređaj iz skupa računarskih uređaja ima posebnu instancu distribuirane baze podataka. Prva vrednost redosleda transakcija koja je pridružena prvoj transakciji može biti definisana u prvom trenutku. Podaci koji su pridruženi drugoj transakciji mogu biti primljeni od drugog računarskog uređaja iz skupa računarskih uređaja. Skup transakcija može biti memorisan u instanci distribuirane baze podataka na prvom računarskom uređaju. Skup transakcija može sadržati bar prvu transakciju i drugu transakciju. Skup vrednosti redosleda transakcija koji sadrži bar prvu vrednost redosleda transakcija i drugu vrednost redosleda transakcija može biti izabran u drugom trenutku posle prvog trenutka. Druga vrednost redosleda transakcija može biti pridružena drugoj transakciji. Promenljiva stanja baze podataka može biti definisana bar na bazi skupa transakcija i skupa vrednosti redosleda transakcija.
[0017] U nekim primerima izvođenja, postupak sadrži prijem prvog događaja od instance distribuirane baze podataka na prvom računarskom uređaju iz skupa računarskih uređaja koji implementiraju distribuiranu bazu podataka preko mreže koja je operativno povezana sa skupom računarskih uređaja. Postupak dalje sadrži definisanje, bazirano na prvom događaju i drugom događaju, trećeg događaja. Treći događaj je povezan sa skupom događaja. Vrednost redosleda za četvrti događaj može biti definisana bar delimično na bazi zbirne vrednosti uloga koja je pridružena skupu događaja koji ispunjava kriterijum vrednosti uloga. Vrednost redosleda može biti memorisana u instanci distribuirane baze podataka na drugom računarskom uređaju iz skupa računarskih uređaja. U nekim primerima izvođenja, postupak dalje sadrži izračunavanje zbirne vrednosti uloga bazirano na sumi skupa vrednosti uloga. Svaka vrednost uloga iz skupa vrednosti uloga je pridružena instanci distribuirane baze podataka koja definiše događaj iz skupa događaja.
[0018] U nekim primerima izvođenja, postupak sadrži prijem prvog događaja iz instance distribuirane baze podataka na prvom računarskom uređaju iz skupa računarskih uređaja koji implementira distribuiranu bazu podataka preko mreže koja je operativno povezana sa skupom računarskih uređaja. Postupak dalje sadrži definisanje, bazirano na prvom događaju i drugom događaju, trećeg događaja i određivanje prvog skupa događaja bazirano bar delimično na trećem događaju. Svaki događaj iz prvog skupa događaja je a) identifikovan drugim skupom događaja i b) pridružen je prvom broju runde. Zbirna vrednost uloga koja je pridružena drugom skupu događaja zadovoljava prvi kriterijum vrednosti uloga i svaki događaj iz drugog skupa događaja (1) je definisan različitom instancom distribuirane baze podataka i (2) identifikovan je od strane trećeg događaja. Broj runde za treći događaj može biti izračunat na bazi određivanja da li suma vrednosti uloga koja je pridružena svakom događaju iz prvog skupa događaja zadovoljava drugi kriterijum vrednosti uloga. Broj runde za prvi događaj odgovara drugom broju runde koji je veći od prvog broja runde. Postupak dalje sadrži određivanje trećeg skupa događaja na bazi trećeg događaja. Svaki događaj iz trećeg skupa događaja je a) identifikovan od strane četvrtog skupa događaja koji sadrži treći događaj i b) iz prvog skupa događaja. Svaki događaj iz četvrtog skupa događaja je definisan različitom instancom distribuirane baze podataka i zbirna vrednost uloga koja je pridružena četvrtom skupu događaja zadovoljava treći kriterijum vrednost uloga. Vrednost redosleda se onda definiše kao četvrti događaj na bazi zbirne vrednosti uloga koja je pridružena trećem skupu događaja koja zadovoljava četvrti kriterijum vrednosti uloga, a vrednost redosleda može biti memorisana u instanci distribuirane baze podataka na drugom računarskom uređaju.
[0019] U nekim primerima izvođenja, skup vrednosti uloga sadrži vrednost uloga (1) pridružen svakoj instanci distribuirane baze podataka koja definiše događaj iz drugog skupa događaja i (2) proporcionalna je iznosu kriptovalute pridruženom toj instanci distribuirane baze podataka. Zbirna vrednost uloga pridružena drugom skupu događaja je bazirana na sumi vrednosti uloga iz skupa vrednosti uloga.
[0020] U nekim primerima izvođenja, najmanje jedan od kriterijuma prve vrednosti uloga, kriterijuma druge vrednosti uloga, kriterijuma treće vrednosti uloga ili kriterijuma četvrte vrednosti uloga definiše se na bazi kolektivne vrednosti uloga distribuirane baze podataka. Pored toga, u nekim primerima izvođenja, skup računarskih uređaja koji implementira distribuiranu bazu podataka u prvom trenutku je pridružen skupu entiteta od poverenja, a skup računarskih uređaja koji implementira distribuiranu bazu podataka u drugom trenutku posle prvog trenutka se pridružuje skupu entiteta, uključujući entitete koji nisu iz skupa entiteta od poverenja.
[0021] Kada se ovde koristi, modul može biti, na primer, bilo koji sklop i/ili skup operativno povezanih električnih komponenata koje su povezane radi izvođenja specifične funkcije i može sadržati, na primer, memoriju, procesor, električne trase, optičke konektore, softver (otelotvoren u hardveru) i/ili slično.
[0022] Kada se koriste u ovom opisu, oblici u jednini "jedan", "jedna" i "taj" obuhvataju reference u množini, osim ako kontekst jasno ne diktira drugačije. Shodno tome, na primer, izraz "modul" treba da znači samo jedan modul ili kombinaciju modula. Na primer, "mreža" treba da znači samo jednu mrežu ili kombinaciju mreža.
[0023] Slika 1 je blok dijagram visokog nivoa koji prikazuje sistem 100 sa distribuiranim bazama podataka, prema jednom primeru izvođenja. Slika 1 prikazuje distribuiranu bazu podataka 100 koja je implementirana na četiri računarska uređaja (računarskom uređaju 110, računarskom uređaju 120, računarskom uređaju 130 i računarskom uređaju 140), ali treba shvatiti da distribuirana baza podataka 100 može koristiti skup od bilo kog broja računarskih uređaja, uključujući računarske uređaje koji nisu prikazani na Slici 1. Mreža 105 može biti bilo koji tip mreže (npr. lokalna računarska mreža (engl. local area network, skr. LAN), regionalna računarska mreža (engl. wide area network, skr. WAN), virtuelna mreža, telekomunikaciona mreža) koji je implementiran kao žična mreža i/ili bežična mreža i koji se koristi za operativno povezivanje računarskih uređaja 110, 120, 130, 140. Kao što je ovde detaljno opisano u nastavku, u nekim primerima izvođenja, na primer, računarski uređaji su personalni kompjuteri koji su međusobno povezani preko Internet Servis Provajdera (ISP) i Interneta (npr. mreže 105). U nekim primerima izvođenja, može biti definisana konekcija, preko mreže 105, između bilo koja dva računarska uređaja 110, 120, 130, 140. Kao što je prikazano na Slici 1, na primer, može biti definisana konekcija između računarskog uređaja 110 i bilo kog računarskog uređaja 120, računarskog uređaja 130 ili računarskog uređaja 140.
[0024] U nekim primerima izvođenja, računarski uređaji 110, 120, 130, 140 mogu komunicirati međusobno (npr. slati podatke i/ili primati podatke) i sa mrežom preko intermedijernih mreža i/ili alternativnih mreža (nije prikazano na Slici 1). Takve intermedijerne mreže i/ili alternativne mreže mogu biti mreže istog tipa i/ili različitog tipa mreže od mreže 105.
[0025] Svaki računarski uređaj 110, 120, 130, 140 može biti bilo koji tip uređaja koji je konfigurisan za slanje podataka preko mreže 105 radi slanja i/ili prijema podataka od jednog ili više drugih računarskih uređaja. Primeri računarskih uređaja su prikazani na Slici 1. Računarski uređaj 110 sadrži memoriju 112, procesor 111 i izlazni uređaj 113. Memorija 112 može biti, na primer, memorija sa slučajnim pristupom (engl. random access memory, skr. RAM), memorijski bafer, uređaj sa hard diskom, baza podataka, izbrisiva programabilna memorija samo za čitanje (engl. erasable programmable read-only memory, skr. EPROM), električno izbrisiva memorija samo za čitanje (engl. electrically erasable read-only memory, skr. (EEPROM), memorija samo za čitanje (engl. read-only memory, skr. ROM) i/ili tako dalje. U nekim primerima izvođenja, memorija 112 računarskog uređaja 110 sadrži podatke koji su pridruženi instanci distribuirane baze podataka (npr. instanci 114 distribuirane baze podataka). U nekim primerima izvođenja, memorija 112 memoriše instrukcije da bi izazvala da procesor izvršava module, procese i/ili funkcije povezane sa slanjem i/ili prijemom od druge instance distribuirane baze podataka (npr. instance 124 distribuirane baze podataka na računarskom uređaju 120) zapisa sinhronizacionog događaja, zapisa prethodnih sinhronizacionih događaja sa drugih računarskih uređaja, redosleda sinhronizacionih događaja, vrednosti parametra (kao što su npr. polje u bazi podataka za kvantifikaciju transakcije, polje u bazi podataka za kvantifikaciju redosleda po kome se događaji dešavaju, i/ili bilo koje drugo podesno polje za koje se može memorisati vrednost u bazi podataka).
[0026] Instanca 114 distribuirane baze podataka, na primer, može biti konfigurisana tako da manipuliše podacima, uključujući memorisanje, modifikaciju i/ili brisanje podataka. U nekim primerima izvođenja, instanca 114 distribuirane baze podataka može biti relaciona baza podataka, objektna baza podataka, post-relaciona baza podataka, i/ili bilo koji drugi podesni tip baze podataka. Na primer, instanca 114 distribuirane baze podataka može čuvati podatke koji su povezani sa bilo kojom specifičnom funkcijom i/ili industrijom. Na primer, instanca 114 distribuirane baze podataka može čuvati finansijske transakcije (korisnika računarskog uređaja 110, na primer), uključujući vrednost i/ili vektor vrednosti povezan sa istorijom vlasništva nad specifičnim finansijskim instrumentom. Generalno, vektor može biti bilo koji skup vrednosti parametra, a parametar može biti bilo koji predmet podataka i/ili polje baze podataka koje može da zauzima različite vrednosti. Shodno tome, instanca 114 distribuirane baze podataka može imati više parametara i/ili polja, od kojih je svaki pridružen vektoru vrednosti. Vektor vrednosti se koristi za određivanje aktuelne vrednosti parametra i/ili polja u okviru te instance 114 baze podataka.
[0027] U nekim slučajevima, instanca 114 distribuirane baze podataka se takođe može koristiti za implementaciju drugih struktura podataka, kao što je skup parova (ključ, vrednost). Transakcija memorisana od strane instance 114 distribuirane baze podataka može biti, na primer, dodavanje, brisanje ili modifikacija jednog para (ključ, vrednost) u skupu parova (ključ, vrednost).
1
[0028] U nekim slučajevima, u sistemu 100 sa distribuiranim bazama podataka ili bilo kojim instancama 114, 124, 134, 144 distribuiranih baza podataka mogu biti vršeni upiti. Na primer, upit se može sastojati od ključa, a dobijeni rezultat od sistema 100 sa distribuiranim bazama podataka ili instancama 114, 124, 134, 144 distribuiranih baza podataka može biti vrednost koja je pridružena ključu. U nekim slučajevima, sistem 100 sa distribuiranim bazama podataka ili bilo koje instance 114, 124, 134, 144 distribuiranih baza podataka se takođe mogu modifikovati putem transakcije. Na primer, transakcija za modifikaciju baze podataka može sadržati digitalni potpis strane koja autorizuje modifikaciju transakcije.
[0029] Sistem 100 sa distribuiranim bazama podataka se može koristiti za mnoge svrhe, kao što su, na primer, memorisanje atributa koji su pridruženi različitim korisnicima u sistemu sa distribuiranim identitetom. Na primer, takav sistem može koristiti korisnikov identitet kao "ključ", a listu atributa koji su pridruženi korisnicima kao "vrednost". U nekim slučajevima, identitet može biti kriptografski javni ključ sa odgovarajućim privatnim ključem koji je poznat tom korisniku. Svaki atribut, na primer, može biti digitalno potpisan od strane ovlašćenog lica koje ima pravo da dodeli atribut. Svaki atribut, na primer, takođe može biti kriptovan pomoću javnog ključa koji je pridružen pojedincu ili grupi pojedinaca koji imaju pravo da pročitaju atribut. Neki ključevi ili vrednosti takođe mogu imati sebi pridruženu listu javnih ključeva stranaka koje su autorizovane da modifikuju ili da izbrišu ključeve ili vrednosti.
[0030] U sledećem primeru, instanca 114 distribuirane baze podataka može čuvati podatke koji se odnose na masovne igre za više igrača (engl. Massively Multiplayer Games, skr. MMGs), kao što su aktuelni status i vlasništvo nad predmetima u igri. U nekim slučajevima, instanca 114 distribuirane baze podataka može biti implementirana unutar računarskog uređaja 110, kao što je prikazano na Slici 1. U drugim slučajevima, instanci distribuirane baze podataka može pristupiti računarski uređaj (npr. preko mreže), ali ona nije implementirana na računarskom uređaju (nije prikazano na Slici 1).
[0031] Procesor 111 računarskog uređaja 110 može biti bilo koji podesni procesni uređaj koji je konfigurisan za izvođenje i/ili izvršavanje instance 114 distribuirane baze podataka. Na primer, procesor 111 može biti konfigurisan za ažuriranje instance 114 distribuirane baze podataka kao reakcija na prijem signala od računarskog uređaja 120 i/ili za izazivanje slanja signala računarskom uređaju 120, kao što će ovde biti detaljno opisano u nastavku. Preciznije, kao što je ovde detaljno opisano u nastavku, procesor 111 može biti konfigurisan za izvršavanje modula, funkcija i/ili procesa za ažuriranje instance 114 distribuirane baze podataka kao reakcije na prijem sinhronizacionog događaja koji je pridružen transakciji od sledećeg računarskog uređaja, zapisa koji je pridružen redosledu sinhronizacionih događaja, i/ili sličnog. U drugim primerima izvođenja, procesor 111 može biti konfigurisan za izvršavanje modula, funkcija i/ili procesa za ažuriranje instance 114 distribuirane baze podataka kao reakcije na prijem vrednosti parametra koji je memorisan u sledećoj instanci distribuirane baze podataka (npr. instanci 124 distribuirane baze podataka na računarskom uređaju 120), i/ili za izazivanje slanja vrednosti parametra memorisanog u instanci 114 distribuirane baze podataka na računarskom uređaju 110 računarskom uređaju 120. U nekim primerima izvođenja, procesor 111 može biti procesor opšte namene, FPGA komponenta (engl. Field Programmable Gate Array, skr. FPGA), integrisano kolo specifično za aplikaciju (engl. Application Specific Integrated Circuit, skr. ASIC), digitalni signalni procesor (DSP), i/ili slično.
[0032] Displej 113 može biti bilo koji podesni displej, kao što su, na primer, displej sa tečnim kristalima (LCD), displej sa katodnom cevi (CRT) ili slično. U drugim primerima izvođenja, bilo koji od računarskih uređaja 110, 120, 130, 140 sadrži sledeći izlazni uređaj umesto displeja 113, 123, 133, 143 ili dodatno njima. Na primer, bilo koji od računarskih uređaja 110, 120, 130, 140 može sadržati audio izlazni uređaj (npr. zvučnik), taktilni izlazni uređaj i/ili slično. U još nekim drugim primerima izvođenja, bilo koji od računarskih uređaja 110, 120, 130, 140 sadrži ulazni uređaj umesto displeja 113, 123, 133, 143 ili dodatno njima. Na primer, bilo koji od računarskih uređaja 110, 120, 130, 140 može obuhvatati tastaturu, miša i/ili slično.
[0033] Računarski uređaj 120 ima procesor 121, memoriju 122 i displej 123, koji mogu biti strukturno i/ili funkcionalno slični procesoru 111, memoriji 112 i displeju 113, respektivno. Takođe, instanca 124 distribuirane baze podataka može biti strukturno i/ili funkcionalno slična instanci 114 distribuirane baze podataka.
[0034] Računarski uređaj 130 ima procesor 131, memoriju 132 i displej 133, koji mogu biti strukturno i/ili funkcionalno slični procesoru 111, memoriji 112 i displeju 113, respektivno. Takođe, instanca 134 distribuirane baze podataka može biti strukturno i/ili funkcionalno slična instanci 114 distribuirane baze podataka.
[0035] Računarski uređaj 140 ima procesor 141, memoriju 142 i displej 143, koji mogu biti strukturno i/ili funkcionalno slični procesoru 111, memoriji 112 i displeju 113, respektivno. Takođe, instanca 144 distribuirane baze podataka može biti strukturno i/ili funkcionalno slična instanci 114 distribuirane baze podataka.
[0036] Čak iako su računarski uređaji 110, 120, 130, 140 prikazani svi kao međusobno slični, svaki računarski uređaj sistema 100 sa distribuiranim bazama podataka može biti različit od drugih računarskih uređaja. Svaki računarski uređaj 110, 120, 130, 140 sistema 100 sa distribuiranim bazama podataka može biti bilo koji od, na primer, računarskog entiteta (npr. personalnog računarskog uređaja, kao što je desktop kompjuter, laptop kompjuter, itd.), mobilni telefon, personalni digitalni asistent (PDA), i tako dalje. Na primer, računarski uređaj 110 može biti desktop kompjuter, računarski uređaj 120 može biti pametni telefon i računarski uređaj 130 može biti server.
[0037] U nekim primerima izvođenja, jedan ili više delova računarskih uređaja 110, 120, 130, 140 mogu sadržati modul baziran na hardveru (npr. digitalni signalni procesor (DSP), FPGA komponentu (FPGA)) i/ili modul baziran na softveru (npr. modul računarskog koda koji je memorisan u memoriji i/ili se izvršava na procesoru). U nekim primerima izvođenja, jedna ili više funkcija koje su pridružene računarskim uređajima 110, 120, 130, 140 (npr. funkcije koje su pridružene procesorima 111, 121, 131, 141) mogu biti uključene u jedan ili više modula (vidi, npr. Sliku 2).
[0038] Svojstva sistema 100 sa distribuiranim bazama podataka, uključujući svojstva računarskih uređaja (npr. računarskih uređaja 110, 120, 130, 140), broj računarskih uređaja, i mrežu 105, mogu biti izabrana na proizvoljan broj načina. U nekim slučajevima, svojstva sistema 100 sa distribuiranim bazama podataka mogu biti izabrana od strane administratora sistema 100 sa distribuiranim bazama podataka. U drugim slučajevima, svojstva sistema 100 sa distribuiranim bazama podataka mogu biti izabrana kolektivno od strane korisnika sistema 100 sa distribuiranim bazama podataka.
[0039] Pošto se koristi sistem 100 sa distribuiranim bazama podataka, nije određen lider među računarskim uređajima 110, 120, 130, i 140. Specifično, nijedan od računarskih uređaja 110, 120, 130, ili 140 nije identifikovan i/ili izabran za rešavanje sporova između vrednosti koje su memorisane u instancama 111, 12, 131, 141 distribuiranih baza podataka računarskih uređaja 110, 120, 130, 140. Umesto toga, korišćenjem procesa sinhronizacije događaja, procesa glasanja i/ili ovde opisanih postupaka, računarski uređaji 110, 120, 130, 140 mogu kolektivno konvergirati prema vrednosti parametra.
[0040] Nepostojanje lidera u sistemu sa distribuiranim bazama podataka povećava bezbednost sistema sa distribuiranim bazama podataka. Specifično, kada postoji lider, onda postoji samo jedna tačka za napad i/ili otkaz. Ako maliciozni softver inficira lidera i/ili se vrednost parametra u liderovoj instanci distribuirane baze podataka maliciozno promeni, onda se otkaz i/ili nekorektna vrednost šire kroz druge instance distribuiranih baza podataka. U sistemu bez lidera, međutim, ne postoji samo jedna tačka za napad i/ili otkaz. Specifično, ako parametar u instanci distribuirane baze podataka sistema bez lidera sadrži neku vrednost, onda će se vrednost promeniti pošto ta instanca distribuirane baze podataka razmeni vrednosti sa drugim instancama distribuiranih baza podataka u sistemu, kao što je ovde detaljno opisano u nastavku. Dodatno tome, sistemi sa distribuiranim bazama podataka bez lidera koji su ovde opisani povećavaju
1
brzinu konvergencije, dok smanjuju količinu podataka koja se šalje između uređaja kao što je ovde detaljno opisano u nastavku.
[0041] Slika 2 prikazuje računarski uređaj 200 sistema sa distribuiranim bazama podataka (npr. sistema 100 sa distribuiranim bazama podataka), prema jednom primeru izvođenja. U nekim primerima izvođenja, računarski uređaj 200 može biti sličan računarskim uređajima 110, 120, 130, 140 koji su prikazani i opisani u vezi sa Slikom 1. Računarski uređaj 200 sadrži procesor 210 i memoriju 220. Procesor 210 i memorija 220 su međusobno operativno povezani. U nekim primerima izvođenja, procesor 210 i memorija 220 mogu biti slični procesoru 111 i memoriji 112, respektivno, koji su detaljno opisani u vezi sa Slikom 1. Kao što je prikazano na Slici 2, procesor 210 sadrži modul 211 za konvergenciju baze podataka i komunikacioni modul 210, a memorija 220 sadrži instancu 221 distribuirane baze podataka. Komunikacioni modul 212 omogućava da računarski uređaj 200 komunicira (npr. da šalje podatke i/ili da prima podatke) sa drugim računarskim uređajima. U nekim primerima izvođenja, komunikacioni modul 212 (nije prikazan na Slici 1) omogućava da računarski uređaj 110 komunicira sa računarskim uređajima 120, 130, 140. Komunikacioni modul 210 može sadržati i/ili omogućavati, na primer, kontroler mrežnog interfejsa (engl. network interface controller, skr. NIC), bežičnu konekciju, žični port i/ili slično. Kao takav, komunikacioni modul 210 može uspostaviti i/ili održati komunikacionu sesiju između računarskog uređaja 200 i drugog uređaja (npr. preko mreže, kao što je mreža 105 sa Slike 1 ili Interneta (nije prikazano)). Slično navedenom, komunikacioni modul 210 može omogućiti da računarski uređaj 200 šalje podatke i/ili da prima podatke od drugog uređaja.
[0042] U nekim slučajevima, modul 211 za konvergenciju baze podataka može razmenjivati događaje i/ili transakcije sa drugim računarskim uređajima, memorisati događaje i/ili transakcije koje prima modul 211 za konvergenciju baze podataka i izračunavati raspored događaja i/ili transakcija baziran na parcijalnom redosledu definisanom obrascem referenci između događaja. Svaki događaj može biti zapis koji sadrži kriptografski heš dva ranija događaja (povezujući taj događaj sa dva ranija događaja i njihovim prethodnim događajima i obratno), korisne podatke (kao što su transakcije koje treba da se memorišu), druge informacije, kao što je aktuelno vreme, vremenska oznaka (npr. datum i UTC vreme) kojim njegov kreator utvrđuje trenutak kada je događaj bio prvo definisan i/ili slično. U nekim slučajevima, prvi događaj koji je definisan od strane člana sadrži samo heš jednog jedinog događaja definisanog od strane drugog člana. U takvim slučajevima, član još ne mora da ima prethodni sopstveni-heš (npr. heš događaja koji je prethodno definisan od strane tog člana). U nekim slučajevima, prvi događaj u distribuiranoj bazi podataka ne sadrži heš bilo kog prethodnog događaja (pošto nije bilo prethodnog događaja za tu distribuiranu bazu podataka).
[0043] U nekim primerima izvođenja, takav kriptografski heš dva ranija događaja može biti heš vrednost koja je definisana na bazi kriptografske heš funkcije korišćenjem događaja kao ulaza. Specifično, u takvim primerima izvođenja, događaj sadrži specifičnu sekvencu ili niz bajtova (koji predstavljaju informacije o tom događaju). Heš događaja može biti vrednost dobijena od heš funkcije korišćenjem sekvence bajtova za taj događaj kao ulaza. U drugim primerima izvođenja, bilo koji drugi podesni podaci koji su pridruženi događaju (npr. identifikator, serijski broj, bajtovi koji predstavljaju specifični deo događaja, itd.) mogu se koristi kao ulaz za heš funkciju da bi se izračunao heš tog događaja. Bilo koja podesna heš funkcija može se koristiti za definisanje heša. U nekim primerima izvođenja, svaki član koristi istu heš funkciju tako da se isti heš generiše kod svakog člana za dati događaj. Događaj onda može digitalno potpisati član koji definiše i/ili kreira događaj.
[0044] U nekim slučajevima, skup događaja i njihove međusobne veze mogu formirati usmereni aciklični graf (engl. Directed Acyclic Graph, skr. DAG). U nekim slučajevima, svaki događaj u DAG referencira dva ranija događaja (povezujući taj događaj sa dva ranija događaja i njihovim prethodnim događajima i obratno), a svaka referenca je striktna sa ranijima, tako da ne postoje petlje. U nekim primerima izvođenja, DAG je baziran na kriptografskim hešovima, tako da se struktura podataka može nazvati hashDAG. hashDAG direktno kodira delimični redosled, što znači da je poznato da se događaj X desio pre događaja Y ako Y sadrži heš od X, ili ako Y sadrži heš događaja koji sadrži heš od X, ili za takve putanje proizvoljne dužine. Ako, međutim, nema putanje od X do Y ili od Y do X, onda delimični redosled ne definiše koji događaj se desio prvi. Zbog toga, modul za konvergenciju baze podataka može izračunati celokupni redosled na osnovu parcijalnog redosleda. Ovo se može izvršiti pomoću bilo koje podesne determinističke funkcije koju koriste računarski uređaji, tako da računarski uređaji izračunavaju isti redosled. U nekim primerima izvođenja, svaki član može ponovo izračunati ovaj redosled posle svake sinhronizacije i konačno ovi redosledi mogu konvergirati tako da se pojavi konsenzus.
[0045] Konsenzusni algoritam se može koristiti za određivanje redosleda događaja u hashDAG i/ili redosleda transakcija koje se čuvaju u okviru događaja. Redosled transakcija dalje može definisati stanje baze podataka kao rezultat izvođenja tih transakcija prema redosledu. Definisano stanje baze podataka se može memorisati kao promenljiva stanja baze podataka.
[0046] U nekim slučajevima, modul za konvergenciju baze podataka može koristiti sledeću funkciju za izračunavanje celokupnog redosleda od parcijalnog redosleda u hashDAG. Za svaki od drugih računarskih uređaja (nazvanih "članovi"), modul za konvergenciju baze podataka može ispitati hashDAG da bi otkrio redosled po kome su događaji (i/ili indikacije tih događaja) bili primljeni od strane tog člana. Modul za konvergenciju baze podataka onda može računati
1
kao da taj član dodeljuje brojni "rang" svakom događaju, pri čemu je rang jednak 1 za prvi događaj koji je član primio, 2 za drugi događaj koji je član primio i tako dalje. Modul za konvergenciju baze podataka ovo može raditi za svaki član u hashDAG. Onda, za svaki događaj, modul za konvergenciju baze podataka može izračunati medijanu dodeljenih rangova i može sortirati događaje po njihovim medijanama. Sortiranje može prekinuti veze na deterministički način, kao da sortira dva povezana događaja po numeričkom redosledu njihovih hešova ili pomoću nekog drugog postupka, u kome modul za konvergenciju baze podataka svakog člana koristi isti postupak. Rezultat ovog sortiranja je celokupni redosled.
[0047] Slika 6 prikazuje hashDAG 640 za jedan primer određivanja celokupnog redosleda. HashDAG 640 prikazuje dva događaja (najniži šrafirani krug i najniži istačkani krug) i prvi trenutak kada svaki član prima indikaciju o tim događajima (drugi šrafirani i istačkani krugovi). Ime svakog člana na vrhu je obojeno u skladu sa time koji događaj je prvi po njihovom sporom redosledu. Postoji više šrafiranih inicijalnih glasova nego istačkanih, zbog čega su konsenzusni glasovi za svaki od članova šrafirani. Drugim rečima, članovi konačno konvergiraju prema dogovoru da se šrafirani događaj desio pre istačkanog događaja.
[0048] U ovom primeru, članovi (računarski uređaji nazvani Alisa, Bob, Kerol, Dejv i Ed) će raditi da bi definisali konsenzus da li se prvo desio događaj 642 ili događaj 644. Svaki šrafirani krug označava događaj u kome je član prvo primio događaj 644 (i/ili indikaciju tog događaja 644). Slično tome, svaki istačkani krug označava događaj u kome je član prvo primio događaj 642 (i/ili indikaciju tog događaja 642). Kao što je prikazano u hashDAG 640, svako od Alise, Boba i Kerol je primio događaj 644 (i/ili indikaciju događaja 644) pre događaja 642. Dejv i Ed su primili događaj 642 (i/ili indikaciju događaja 642) pre događaja 644 (i/ili indikacije događaja 644). Shodno tome, pošto je veći broj članova primio događaj 644 pre događaja 642, onda celokupni redosled može biti određen tako da svaki član ukazuje da se događaj 644 desio pre događaja 642.
[0049] U narednim slučajevima, modul za konvergenciju baze podataka može koristiti drugačiju funkciju za izračunavanje celokupnog redosleda na osnovu parcijalnog redosleda u hashDAG. U takvim primerima izvođenja, na primer, modul za konvergenciju baze podataka može koristiti sledeće funkcije za izračunavanje celokupnog redosleda, gde je pozitivni celi broj Q parametar koji dele članovi.
kreator(x) = član koji je kreirao događaj x
predak(x) = skup događaja koji su prethodnici od x, uključujući i samo x
1
drugi(x) = događaj koji je kreirao član koji je izvršio sinhronizaciju neposredno pre nego što je x bio kreiran
sopstveni(x) = poslednji događaj pre x sa istim kreatorom
sopstveni(x, 0) = sopstveni(x)
sopstveni(x, n) = sopstveni(sopstveni(x), n - 1)
redosled(x, y) = k, gde je y k-ti događaj koji je kreator(x) saznao od
poslednji(x) = {y|y ∈ predak(x) Λ ¬∃z ∈ predak(x), (y ∈ predak(z) Λ kreator(y) =
brzi(x,y) = pozicija y u sortiranoj listi, sa elementom z ∈ predak(x) sortiranim pomoću medijane spori(w,z) i sa vezama koje su pokidane hešom svakog događaja w ∈ poslednji(x)
[0050] U ovom primeru izvođenja, brzi(x,y) daje poziciju y u celokupnom redosledu događaja, po mišljenju kreator(x), u suštini neposredno pošto je x kreiran i/ili definisan. Ako je Q beskonačno, onda se gore izračunava isti celokupni redosled kao u prethodno opisanom primeru izvođenja. Ako je Q konačno i svi članovi su onlajn, onda se gore izračunava isti celokupni redosled kao u prethodno opisanom primeru izvođenja. Ako je Q konačno, a manjina članova je onlajn u datom trenutku, onda ova funkcija omogućava da onlajn članovi između sebe postignu konsenzus koji će ostati nepromenjen dok novi članovi polako dolaze onlajn, jedan po jedan. Ako, međutim, postoji podela mreže, onda članovi svakog dela mogu doći do svog sopstvenog konsenzusa. Onda će, kada se podela prekine, članovi manjeg dela prihvatiti konsenzus većeg dela.
[0051] U još nekim drugim slučajevima, kao što je opisano u vezi Slika 14-17b, modul za konvergenciju baze podataka može koristiti još drugačiju funkciju za izračunavanje celokupnog redosleda od parcijalnog redosleda u hashDAG. Kao što je prikazano na Slikama 14-15, svaki član (Alisa, Bob, Kerol, Dejv i Ed) kreira i/ili definiše događaje (1401-1413 kao što je prikazano na Slici 14; 1501-1506 kao što je prikazano na Slici 15). Korišćenjem funkcije i pod-funkcija koje su opisane u vezi sa Slikama 14-17b, celokupni redosled događaja može biti izračunat sortiranjem događaja po rundi u kojoj su primljeni (takođe se ovde naziva vrednost redosleda), kidajući veze sa njihovom vremenskom oznakom kada su primljeni i kidajući veze sa njihovim
1
potpisima, kao što je ovde detaljno opisano u nastavku. U narednim slučajevima, celokupni redosled događaja može biti izračunat sortiranjem događaja po rundi u kojoj su primljeni, kidanjem veza sa njihovim primljenim generisanjem (umesto njihove vremenske oznake kada su primljeni) i kidanjem tih veza sa njihovim potpisima. Sledeći paragrafi specifikuju funkcije koje su korišćene za izračunavanje i/ili definisanje runde u kojoj je događaj primljen i primljenog generisanja radi određivanja redosleda događaja. Sledeći izrazi se upotrebljavaju i ilustrovani su u vezi sa Slikama 14-17b.
[0052] "Roditelj": događaj X je roditelj događaja Y ako Y sadrži heš od X. Na primer, na Slici 14, roditelji događaja 1412 sadrže događaj 1406 i događaj 1408.
[0053] "Predak": preci događaja X su X, njegovi roditelji, roditelji njegovih roditelja i tako dalje. Na primer, na Slici 14, preci događaja 1412 su događaji 1401, 1402, 1403, 1406, 1408, i 1412. Za pretke događaja može se reći da su povezani sa tim događajem i obratno.
[0054] "Potomak": potomci događaja X su X, njegova deca, deca njegove dece i tako dalje. Na primer, na Slici 14, potomci događaja 1401 su svi događaji koji su prikazani na slici. U sledećem primeru, potomci događaja 1403 su događaji 1403, 1404, 1406, 1407, 1409, 1410, 1411, 1412 i 1413. Za potomke događaja se može reći da su povezani sa tim događajem i obratno.
[0055] "N": ukupni broj članova u populaciji. Na primer, na Slici 14, članovi su računarski uređaji nazvani Alisa, Bob, Kerol, Dejv i Ed, a N je jednako pet.
[0056] "M": najmanji ceo broj koji je veći od izvesnog procenta N (npr. veći od 2/3 N). Na primer, na Slici 14, ukoliko je definisano da je procenat 2/3, onda je M jednako četiri. U narednim slučajevima, moglo bi biti definisano da M, na primer, bude različiti procenat od N (npr. 1/3, 1/2, itd.), specifični prethodno određeni broj i/ili na bilo koji drugi podesni način.
[0057] "Sopstveni-roditelj": sopstveni-roditelj događaja X je njegov roditelj događaj Y koji je kreiran i/ili definisan od strane istog člana. Na primer, na Slici 14, sopstveni-roditelj događaja 1405 je 1401.
[0058] "Sopstveni-predak": sopstveni-preci događaja X su X, njegov sopstveni-roditelj, sopstveni roditelji njegovog sopstvenog-roditelja, i tako dalje.
[0059] Broj Sekvence (engl. "Sequence Number" ili "SN"): celobrojni atribut događaja, koji je definisan kao Broj Sekvence sopstvenih-roditelja događaja plus jedan. Na primer, na Slici 14, sopstveni-roditelj događaja 1405 je 1401. Pošto je Broj Sekvence događaja 1401 jedan, onda je Broj Sekvence događaja 1405 dva (tj. jedan plus jedan).
[0060] Broj Generacije (engl. "Generation Number" ili "GN"): celobrojni atribut događaja, definisan kao maksimum Brojeva Generacija roditelja događaja plus jedan. Na primer, na Slici
1
14, događaj 1412 ima dva roditelja, događaje 1406 i 1408, koji imaju Brojeve Generacija četiri i dva, respektivno. Shodno tome, Broj Generacije događaja 1412 je pet (tj. četiri plus jedan).
[0061] Inkrement Runde (engl. "Round Increment" ili "RI"): atribut događaja koji može biti nula ili jedan.
[0062] "Broj Runde" (ili "RN"): celobrojni atribut događaja. U nekim slučajevima, Broj Runde može biti definisan kao maksimum Brojeva Rundi roditelja događaja plus fali Inkrement Runde. Na primer, na Slici 14, događaj 1412 ima dva roditelja, događaje 1406 i 1408, koja oba imaju Broj Runde jedan. Događaj 1412 takođe ima Inkrement Runde jedan. Shodno tome, Broj Runde događaja 1412 je dva (tj. jedan plus jedan). U narednim slučajevima, događaj može imati Broj Runde R ako je R minimalni ceo broj takav da događaj može jako videti (kao što je ovde opisano) najmanje M događaja definisanih i/ili kreiranih od strane različitih članova, koji svi imaju Broj Runde R-1. Ako ne postoji takav ceo broj, onda Broj Runde za događaj može biti podrazumevana vrednost (npr. 0, 1, itd.). U takvim slučajevima, Broj Runde za događaj može biti izračunat bez korišćenja Inkrementa Runde. Na primer, na Slici 14, ako je M definisan kao najmanji celi broj koji je veći od 1/2 puta N, onda je M tri. Onda događaj 1412 jako vidi M događaja 1401, 1402, i 1408, gde je svaki od njih definisan od strane različitog člana i ima Broj Runde 1. Događaj 1412 ne može jako videti bar M događaja sa Brojem Runde 2 koji su definisani od strane različitih članova. Zbog toga je Broj Runde za događaj 1412 jednak 2. U nekim slučajevima, prvi događaj u distribuiranoj bazi podataka sadrži Broj Runde 1. U narednim slučajevima, prvi događaj u distribuiranoj bazi podataka može sadržati Broj Runde 0 ili bilo koji drugi podesan broj.
[0063] "Grananje": događaj X se grana sa događajem Y ukoliko su oni definisani i/ili kreirani od strane istog člana i nijedan od njih nije sopstveni-predak onog drugog. Na primer, na Slici 15, član Dejv pravi grananje kreiranjem i/ili definisanjem događaja 1503 i 1504, gde oba imaju istog sopstvenog-roditelja (tj. događaj 1501), tako da događaj 1503 nije sopstveni-predak događaja 1504 i događaj 1504 nije sopstveni-predak događaja 1503.
[0064] "Identifikacija" grananja: grananje može biti "identifikovano" od strane trećeg događaja kreiranog i/ili definisanog posle dva događaja koji se međusobno granaju, ukoliko su oba ta dva događaja preci trećeg događaja. Na primer, na Slici 15, član Dejv pravi grananje kreiranjem događaja 1503 i 1504, od kojih nijedan nije sopstveni-predak onog drugog. Ovo grananje može identifikovati kasniji događaj 1506, jer su oba događaja 1503 i 1504 preci događaja 1506. U nekim slučajevima, identifikacija grananja može ukazivati da je specifični član (npr. Dejv) varao.
[0065] "Identifikacija" događaja: događaj X "identifikuje" ili "vidi" predak događaj Y ako X nema predak događaj Z koji vrši grananje sa Y. Na primer, na Slici 14, događaj 1412 identifikuje
1
(takođe se navodi kao da "vidi") događaj 1403, jer je događaj 1403 predak događaja 1412, a događaj 1412 nema pretke događaje koji vrše grananje sa događajem 1403. U nekim slučajevima, događaj X može identifikovati događaj Y ako X ne identifikuje grananje pre događaja Y. U takvim slučajevima, čak i ako događaj X identifikuje grananje od strane člana koji definiše događaj Y koji sledi posle događaja Y, događaj X može videti događaj Y. Događaj X ne identifikuje događaje člana koji slede posle grananja. Pored toga, ako član definiše dva različita događaja koja su oba prvi događaji u istoriji tog člana, onda događaj X može identifikovati grananje i neće identifikovati bilo koji događaj tog člana.
[0066] "Jaka identifikacija" (takođe se ovde naziva "jako viđenje") događaja: događaj X "jako identifikuje" (ili "jako vidi") predak događaj Y kreiran i/ili definisan od strane istog člana kao X, ukoliko X identifikuje Y. Događaj X "jako identifikuje" predak događaj Y koji nije kreiran i/ili definisan od strane istog člana kao X, ukoliko postoji skup S događaja koji (1) sadrži i X, i Y i (2) oni su preci događaja X i (3) oni su potomci pretka događaja Y i (4) identifikovani su od strane X i (5) svaki može identifikovati Y i (6) kreirani su i/ili definisani od strane najmanje M različitih članova. Na primer, na Slici 14, ukoliko je M definisan kao najmanji celi broj koji je veći od 2/3 od N (tj. M=1+pod(2N/3), što bi bilo četiri u ovom primeru), onda događaj 1412 jako identifikuje predak događaj 1401, jer je skup događaja 1401, 1402, 1406, i 1412 skup od najmanje četiri događaja koji su preci događaja 1412 i potomci događaja 1401 i oni su kreirani i/ili definisani od strane četiri člana Dejva, Kerol, Boba, i Eda, respektivno, i događaj 1412 identifikuje svaki od događaja 1401, 1402, 1406, i 1412, i svaki od događaja 1401, 1402, 1406, i 1412 identifikuje događaj 1401. Slično navedenom, događaj X (npr. događaj 1412) može "jako videti" događaj Y (npr. događaj 1401) ako X može videti najmanje M događaja (npr. događaje 1401, 1402, 1406, i 1412) kreiranih ili definisanih od strane različitih članova, gde svaki od njih može videti Y.
[0067] "Prvi u rundi R" događaj (koji se ovde takođe naziva i "svedok"): događaj je "prvi u rundi R" događaj (ili "svedok") ukoliko događaj (1) ima Broj Runde R, i (2) ima sopstvenog-roditelja koji ima Broj Runde manji od R ili nema sopstvenog-roditelja. Na primer, na Slici 14, događaj 1412 je "prvi u rundi 2" događaj, jer ima Broj Runde dva, i njegov sopstveni-roditelj je događaj 1408, koji ima Broj Runde jedan (tj. manji od dva).
[0068] U nekim slučajevima, definisano je da Inkrement Runde za događaj X bude 1 ako i samo ako X "jako identifikuje" bar M "prvih u rundi R" događaja, gde je R maksimum Broja Rundi njegovih roditelja. Na primer, na Slici 14, ako je definisano da M bude najmanji ceo broj veći od 1/2 puta N, onda je M tri. Onda događaj 1412 jako identifikuje M događaja 1401, 1402, i 1408, od kojih su svi prvi u rundi 1 događaji. Oba roditelja od 1412 su iz runde 1 i 1412 jako
2
identifikuje bar M prvih u rundi 1, zbog čega je inkrement runde za 1412 jednak jedan. Svaki od događaja sa dijagrama koji su označeni sa "RI=0" ne može da jako identifikuje najmanje M prvih u rundi 1, zbog toga što su njihovi inkrementi runde jednaki 0.
[0069] U nekim slučajevima, može se koristiti sledeći postupak određivanje da li događaj X može jako identifikovati predak događaj Y. Za svaku rundu R prvi predak događaj Y, zadržava niz A1 celih brojeva, jedan po članu, koji daje najmanji broj sekvenci događaja X, gde je član kreirao i/ili definisao događaj X, i X može identifikovati Y. Za svaki događaj Z, zadržava se niz A2 celih brojeva, jedan po članu, koji daje najveći broj sekvenci događaja W kreiranih i/ili definisanih od strane tog člana, tako da Z može identifikovati W. Da bi se odredilo da li Z može jako identifikovati pretka događaj Y, broji se broj pozicija elemenata E takvih da je A1[E] <= A2[E]. Događaj Z može jako identifikovati Y ako i samo ako je rezultat proračuna veći od M. Na primer, na Slici 14, svi članovi Alisa, Bob, Kerol, Dejv i Ed mogu identifikovati događaj 1401, gde su najraniji događaji koji to mogu uraditi njihovi događaji {1404, 1403, 1402, 1401, 1408}, respektivno. Ovi događaji imaju brojeve sekvenci A1={1,1,1,1,1}. Slično tome, za svakog od njih poslednji događaj koji je identifikovan događajem 1412 je događaj {NIJEDAN, 1406, 1402, 1401, 1412}, gde je Alisa navedena kao "NIJEDAN" jer 1412 ne može identifikovati bilo koji od događaja od strane Alise. Ovi događaji imaju brojeve sekvenci A2={0,2,1,1,2}, respektivno, gde svi događaji imaju pozitivne brojeve sekvenci, tako da 0 znači da Alisa nema događaje koji su identifikovani od strane 1412. Upoređivanje liste A1 sa listom A2 daje rezultate {1<=0, 1<=2, 1<=1, 1<=1, 1<=2} što je ekvivalentno sa {netačno, tačno, tačno, tačno, tačno} gde postoje četiri vrednosti koje su tačne. Zbog toga postoji skup S od četiri događaja koji su preci od 1412 i potomci od 1401. Četiri je najmanji M, zbog toga 1412 jako identifikuje 1401.
[0070] Još jedna varijacija implementacionog postupka za određivanje, sa A1 i A2, da li događaj X može jako identifikovati predak događaj Y je kao što sledi. Ako celobrojnih elemenata u oba niza ima manje od 128, onda je moguće memorisati svaki element u samo jednom bajtu i pakovati 8 takvih elemenata u samo jednu 64-bitnu reč i pustiti da A1 i A2 budu nizovi takvih reči. Najznačajniji bit svakog bajta u A1 može biti skup 0, a najznačajniji bit svakog bajta u A2 može biti skup 1. Oduzimanje dve odgovarajuće reči se onda izvodi u vidu bitova I sa maskom na nuli svih osim najvažnijih bitova, a zatim se vrši desno pomeranje za poziciju od 7 bita, da bi se dobila vrednost koja se u C programskom jeziku izračunava kao: ((A2[i] - A1[i]) & 0x8080808080808080) >> 7). Ovo se može dodati tekućem akumulatoru S koji je bio inicijalizovan na nulu. Posle izvođenja ovoga više puta, vrši se konverzija akumulatora do izračunate vrednosti pomeranjem i dodavanjem bajtova da bi se dobilo ((S & 0xff) ((S >> 8) & 0xff) ((S >> 16) & 0xff) ((S >> 24) & 0xff) ((S >> 32) & 0xff) ((S >> 40) & 0xff) ((S >> 48) & 0xff) ((S >> 56) & 0xff)). U nekim slučajevima, ova izračunavanja se mogu izvršiti u programskim jezicima kao što su C, Java, i/ili slični. U narednim slučajevima, izračunavanja se mogu izvršiti korišćenjem instrukcija specifičnih za procesor, kao što su instrukcije "Advanced Vector Extensions" (AVX) koje obezbeđuju Intel i AMD, ili ekvivalentno tome, u grafičkoj procesorskoj jedinici (GPU) ili procesorskoj jedinici opšte namene (GPGPU). U nekim arhitekturama, izračunavanja se mogu izvršavati brže korišćenjem reči većih od 64 bita, kao što su 128, 256, 512, ili više bita.
[0071] "Čuveni" događaj: događaj X u rundi R je "čuven" ako je (1) događaj X "prvi u rundi R " događaj (ili "svedok") i (2) doneta je odluka "DA" do koje se došlo izvršavanjem protokola vizantijskog sporazuma, koji je opisan u nastavku. U nekim primerima izvođenja, protokol vizantijskog sporazuma može biti izvršen od strane instance distribuirane baze podataka (npr. instance 114 distribuirane baze podataka) i/ili modula za konvergenciju baze podataka (npr. modula 211 za konvergenciju baze podataka). Na primer, na Slici 14, prikazano je pet prvih u rundi 1: 1401, 1402, 1403, 1404, i 1408. Ako je M definisano kao najmanji ceo broj veći od 1/2 puta N, koji je tri, onda je 1412 prvi u rundi 2. Ako se protokol izvršava duže, onda će hashDAG rasti naviše i konačno će druga četiri člana takođe imati prve u rundi 2 iznad vrha ove slike. Svaki prvi u rundi 2 će imati "glas" da li je svaki od prvih u rundi 1 "čuven". Događaj 1412 bi glasao DA da 1401, 1402, i 1403 budu čuveni, jer su oni prvi u rundi 1 koje on može identifikovati. Događaj 1412 bi glasao NE da 1404 bude čuven, jer 1412 ne može identifikovati 1404. Za dati prvi u rundi 1, kao što je 1402, o njegovom statusu da bude "čuven" ili ne biće odlučeno izračunavanjem glasova svakog prvog u rundi 2 da li je on čuven ili ne. Ti glasovi će se onda proširiti na prve u rundi 3, a zatim na prve u rundi 4 i tako dalje sve dok se konačno ne postigne sporazum da li je 1402 čuven. Isti proces se ponavlja za druge prve.
[0072] Protokol vizantijskog sporazuma može sakupljati i koristiti glasove i/ili odluke " prvih u rundi R" događaja za identifikaciju "čuvenih događaja. Na primer, "runda R+1 prvi" Y će glasati "DA" ako Y može da "identifikuje" događaj X, inače će glasati "NE". Glasovi se onda izračunavaju za svaku rundu G, za G = R+2, R+3, R+4, itd., sve dok se ne donese odluka od strane bilo kog člana. Dok se ne donese odluka, izračunava se glas za svaku rundu G. Neke od ovih rundi mogu biti runde"većine", dok neke druge runde mogu biti runde "novčića". U nekim slučajevima, na primer, Runda R+2 je runda većine, a buduće runde se označavaju bilo kao runda većine ili kao runda novčića (npr. u skladu sa prethodno definisanim rasporedom). Na primer, u nekim slučajevima, može biti proizvoljno određeno da li je buduća runda runda većine ili runda novčića, uz uvažavanje uslova da ne mogu biti dve uzastopna runde novčića. Na primer, moglo bi biti prethodno definisano da će biti pet rundi većine, pa zatim jedna runda novčića, a onda pet rundi većine, pa jedna runda novčića, koje se ponavljaju koliko je potrebno da se dođe do sporazuma.
[0073] U nekim slučajevima, ako je runda G runda većine, onda se glasovi mogu izračunati kao što sledi. Ako postoji događaj u rundi G koji jako identifikuje bar M prvih u rundi G-1 glasova V (gde je V "DA" ili "NE"), onda je konsenzusna odluka V i protokol vizantijskog sporazuma se završava. U suprotnom, svaki prvi u rundi G događaj izračunava novi glas koji je većina od prvih u rundi G-1, tako da se svaki prvi u rundi G događaj može jako identifikovati. U slučajevima gde se radi o nerešenom rezultatu umesto o većini, glas može biti označen sa "DA".
[0074] Slično navedenom, ako je X svedok runde R (ili prvi u rundi R), onda se mogu izračunati rezultati glasanja u rundama R+1, R+2, i tako dalje, gde svedoci u svakoj rundi glasaju da li je X čuveno. U rundi R+1, svaki svedok koji može videti X glasa DA, a drugi svedoci glasaju NE. U rundi R+2, svaki svedok glasa u skladu sa većinom glasova svedoka runde R+1 koje on može jako videti. Slično tome, u rundi R+3, svaki svedok glasa u skladu sa većinom glasova svedoka runde R+2 koje on može jako videti. Ovo se može nastaviti u mnoštvu rundi. U slučaju nerešenog rezultata, glas može biti podešen na DA. U narednim slučajevima, nerešeni rezultat može biti podešen na NE ili može biti slučajno podešen. Ako bilo koja runda ima najmanje M svedoka koji glasaju NE, onda se izbori završavaju i X nije čuveno. Ako bilo koja runda ima najmanje M svedoka koji glasaju DA, onda se izbori završavaju i X je čuveno. Ako ni DA, ni NE nemaju najmanje M glasova, izbori se nastavljaju u sledećoj rundi.
[0075] Kao primer, na Slici 14, razmotrimo neki prvi u rundi događaj X koji je prikazan dole na slici. Onda će svaki prvi u rundi 1 glasati da li je X čuven. Događaj 1412 može jako identifikovati prve u rundi 1 događaje 1401, 1402, i 1408. Tako će njegov glas biti baziran na njihovim glasovima. Ako je ovo runda većine, onda će 1412 proveriti da li je najmanje M od {1401, 1402, 1408} glasalo DA. Ako jesu, onda je odluka DA i sporazum je postignut. Ako je najmanje M od njih glasalo NE, onda je odluka NE i sporazum je postignut. Ako glasanje nije imalo najmanje M u bilo kom smeru, onda će glas 1412 biti onaj koji je većina glasova onih od 1401, 1402 i 1408 (i time bi promenio nerešen rezultat glasanjem DA, ako je ono bilo nerešeno). Taj glas bi se onda koristio u sledećoj rundi nastavljajući se sve dok se ne postigne sporazum.
[0076] U nekim slučajevima, ako je runda G runda novčića, glasovi mogu biti izračunati kao što sledi. Ako događaj X može identifikovati najmanje M prvih u rundi G-1 glasanja V (gde je V "DA" ili "NE"), onda će događaj X promeniti svoj glas u V. U suprotnom, ako je runda G runda novčića, onda svaki prvi u rundi G događaj X menja svoj glas u rezultat pseudo-slučajnog određivanja (nalik bacanju novčića u nekim slučajevima), koje je definisano kao najmanje značajan bit potpisa događaja X.
2
[0077] Slično navedenom, u takvim slučajevima, ako izbori dostignu rundu R+K (rundu novčića), gde je K određeni faktor (npr. umnožak broja kao što je 3, 6, 7, 8, 16, 32 ili bilo koji drugi podesni broj), onda se izbori ne završavaju u toj rundi. Ako izbori dostignu ovu rundu, oni se mogu nastaviti u još najmanje jednoj rundi. U takvoj rundi, ako je događaj Y svedok runde R+K, onda ukoliko on jako vidi najmanje M svedoka iz runde R+K-1 koji su glasali V, onda će Y glasati V. U suprotnom, Y će glasati u skladu sa slučajnom vrednosti (npr. u skladu sa bitom potpisa događaja Y (npr. najmanje značajnim bitom, najznačajnijim bitom, slučajno izabranim bitom) gde 1=DA i 0=NE, ili obratno, u skladu sa vremenskom oznakom događaja Y, uz korišćenje kriptografskog protokola "podeljeni novčić" i/ili bilo kojim drugim slučajnim određivanjem). Ovo slučajno određivanje je nepredvidivo pre nego što se kreira Y i, shodno tome, može povećati bezbednost događaja i konsenzusnog protokola.
[0078] Na primer, na Slici 14, ako je runda 2 runda novčića, i glasanje je da li je neki događaj pre runde 1 bio čuven, onda će događaj 1412 prvo proveriti da li je najmanje M od {1401, 1402, 1408} glasalo DA, ili da li je najmanje M njih glasalo NE. Ako je to slučaj, onda će 1412 glasati na isti način. Ako nije bilo najmanje M glasova u bilo kom smeru, onda će 1412 glasati slučajno ili pseudoslučajno (npr. na bazi najmanje značajnog bita digitalnog potpisa koji je Ed kreirao za događaj 1412 kada ga je potpisao, u vreme kada ga je kreirao i/ili definisao).
[0079] U nekim slučajevima, rezultat pseudo-slučajnog određivanja može biti rezultat kriptografskog protokola podeljenog novčića, koji može biti, na primer, implementiran kao najmanje važan bit graničnog potpisa broja runde.
[0080] Sistem može biti izgrađen od bilo kog od postupaka za izračunavanje rezultata gore opisanog pseudo-slučajnog određivanja. U nekim slučajevima, sistem ciklično prolazi kroz različite postupke po nekom redosledu. U narednim slučajevima, sistem može izvršiti izbor između različitih postupaka po prethodno definisanom obrascu.
[0081] "Prijemna runda": događaj X ima "prijemnu rundu" R ako je R minimalni celi broj tako da su najmanje polovina čuvenih događaja prvih u rundi R (ili čuvenih svedoka) sa brojem runde R potomci od X i/ili ga mogu videti. U narednim slučajevima, može se koristiti bilo koji drugi podesni procenat. Na primer, u narednom slučaju, događaj X ima "prijemnu rundu" R ako je R minimalni ceo broj takav da bar prethodno određeni procenat (npr.40%, 60%, 80%, itd.) čuvenih prvih u rundi R događaja (ili čuvenih svedoka) sa brojem runde R su potomci X i/ili ga mogu videti.
[0082] U nekim slučajevima, "prijemno generisanje" događaja X se može izračunati kao što sledi. Pronađe se koji član je kreirao i/ili definisao svaki prvi u rundi R događaj koji može identifikovati događaj X. Onda se odredi broj generisanja najranijeg događaja od strane tog člana koji može identifikovati X. Onda se definiše da "prijemno generisanje" X bude medijana te liste.
[0083] U nekim slučajevima, "prijemna vremenska oznaka" T događaja X može biti medijana vremenskih oznaka u događajima koji sadrže prvi događaj svakog člana koji identifikuje i/ili vidi X. Na primer, prijemna vremenska oznaka događaja 1401 može biti medijana vrednosti vremenskih oznaka za događaje 1402, 1403, 1403 i 1408. U nekim slučajevima, vremenska oznaka za događaj 1401 može biti uključena u izračunavanje medijane. U narednim slučajevima, prijemna vremenska oznaka za X može biti bilo koja druga vrednost ili kombinacija vrednosti vremenskih oznaka u događajima koji su prvi događaji svakog člana koji je identifikovao ili video X. Na primer, prijemna vremenska oznaka za X može biti bazirana na srednjoj vrednosti vremenskih oznaka, standardnom odstupanju vremenskih oznaka, modifikovanoj srednjoj vrednosti (npr. odstranjivanjem najranije i najkasnije vremenske oznake iz proračuna), i/ili slično. U još nekim drugim slučajevima, može se koristiti proširena medijana.
[0084] U nekim slučajevima, celokupni redosled i/ili konsenzusni redosled za događaje se izračunava sortiranjem događaja po njihovoj prijemnoj rundi (ovde se takođe naziva vrednost redosleda), kidajući veze sa njihovom prijemnom vremenskom oznakom i kidajući veze sa njihovim potpisima. U narednim slučajevima, celokupni redosled za događaje se može izračunati sortiranjem događaja po njihovoj prijemnoj rundi, kidanjem veza sa njihovim prijemnim generisanjem i kidanjem veza sa njihovim potpisima. Gornji paragrafi specifikuju funkcije koje se koriste za izračunavanje i/ili definisanje prijemne runde događaja, prijemne vremenske oznake, i/ili prijemnog generisanja.
[0085] U narednim slučajevima, umesto korišćenja potpisa svakog događaja, može se koristiti potpis tog događaja XOR-ovan sa potpisima čuvenih događaja ili čuvenih svedoka sa istom prijemnom rundom i/ili prijemnim generisanjem u toj rundi. U narednim slučajevima, bilo koja druga podesna kombinacija potpisa događaja može se koristiti za kidanje veza da bi se definisao konsenzusni redosled događaja.
[0086] U još nekim drugim slučajevima, umesto definisanja "prijemnog generisanja" kao medijane liste, "prijemno generisanje" može biti definisano tako da bude sama lista. Onda, kada se sortiraju prema prijemnom generisanju, dva prijemna generisanja se mogu uporediti pomoću srednjih elemenata njihovih lista, čime se kidaju veze sa elementom neposredno pre sredine, kidaju one veze sa elementom neposredno posle sredine i nastavlja se sa naizmeničnim prebacivanjem između elementa pre onih koji su bili do tada korišćeni i elementa posle njih, sve dok se veza ne prekine.
2
[0087] U nekim slučajevima, vremenska oznaka medijane može biti zamenjena "proširenom medijanom". U takvim slučajevima, lista vremenskih oznaka može biti definisana za svaki događaj umesto za samo jednu prijemnu vremensku oznaku. Lista vremenskih oznaka za događaj X može sadržati prvi događaj svakog člana koji identifikuje i/ili vidi X. Na primer, na Slici 14, lista vremenskih oznaka za događaj 1401 može sadržati vremenske oznake za događaje 1402, 1403, 1403, i 1408. U nekim slučajevima, takođe može biti uključena vremenska oznaka za događaj 1401. Kada se prekida veza sa listom vremenskih oznaka (tj. dva događaja imaju istu prijemnu rundu), onda se mogu uporediti srednje vremenske oznake svake liste događaja (ili prethodno određena prva ili druga od dve srednje vremenske oznake, ako su iste dužine). Ako su ove vremenske oznake iste, onda se mogu uporediti vremenske oznake neposredno posle srednjih vremenskih oznaka. Ako su ove vremenske oznake iste, onda se mogu uporediti vremenske oznake koje neposredno prethode srednjim vremenskim oznakama. Ako su ove vremenske oznake takođe iste, onda se upoređuju vremenske oznake posle tri već upoređene vremenske oznake. Ovo se može naizmenično nastaviti sve dok se veza ne prekine. Slično gornjem razmatranju, ako su dve liste identične, onda se veza može prekinuti potpisima dva elementa.
[0088] U još nekim drugim slučajevima, može se koristiti "skraćena proširena medijana" umesto "proširene medijane". U takvom slučaju, ne memoriše se cela lista vremenskih oznaka za svaki događaj. Umesto toga se memoriše samo nekoliko vrednosti u blizini sredine liste i koristi se za poređenje.
[0089] Prijemna vremenska oznaka medijane može se potencijalno koristiti za druge svrhe pored izračunavanja celokupnog redosleda događaja. Na primer, Bob bi mogao potpisati ugovor koji kaže da se on slaže da bude obavezan ugovorom ako i samo ako postoji događaj X koji sadrži transakciju gde Alisa potpisuje isti ugovor, sa prijemnom vremenskom oznakom da je X došao do ili pre izvesnog krajnjeg roka. U tom slučaju, Bob ne bi bio vezan ugovorom ako ga Alisa potpiše posle krajnjeg roka, kao što je naznačeno "prijemnom vremenskom oznakom medijane", kao što je gore opisano.
[0090] U nekim slučajevima, stanje distribuirane baze podataka može biti definisano posle postizanja konsenzusa. Na primer, ako je S(R) skup događaja koje mogu videti čuveni svedoci u rundi R, na kraju će svi događaji u S(R) imati poznatu prijemnu rundu i prijemnu vremensku oznaku. U tom trenutku, poznat je konsenzusni redosled za događaje u S(R) i on se neće menjati. Kada se dostigne ova tačka, onda član može izračunati i/ili definisati predstavu događaja i njihov redosled. Na primer, član može izračunati heš vrednost događaja u S(R) po njihovom konsenzusnom redosledu. Član onda može digitalno potpisati heš vrednost i uključiti heš
2
vrednost u sledeći događaj koji taj član definiše. Ovo se može koristiti za informisanje drugih članova da je taj član odredio da događaji u S(R) imaju dati redosled koji se neće menjati. Pošto najmanje M članova (ili bilo koji drugi podesni broj ili procenat članova) potpiše heš vrednost za S(R) (i, shodno tome, složi se sa redosledom koji predstavlja heš vrednost), ta konsenzusna lista događaja zajedno sa listom potpisa članova može formirati jedan jedini fajl (ili drugu strukturu podataka) koji se može koristiti za dokaz da je bio zatražen konsenzusni redosled za događaje u S(R). U narednim slučajevima, ako događaji sadrže transakcije koje ažuriraju stanje sistema sa distribuiranim bazama podataka (kao što je ovde opisano), onda heš vrednost može biti stanje sistema sa distribuiranim bazama podataka posle primene transakcija događaja u S(R) u konsenzusnom redosledu.
[0091] U nekim slučajevima, M (kao što je opisano gore) može biti bazirano na ponderisanim vrednostima (takođe se ovde nazivaju vrednostima uloga) koje su dodeljene svakom članu, umesto samo udela, procenta i/ili vrednosti ukupnog broja članova. U takvom slučaju, svaki član ima ulog koji je povezan sa njegovim interesom i/ili uticajem u sistemu sa distribuiranim bazama podataka. Takav ulog može biti ponderisana vrednost i/ili vrednost uloga. Može biti pomenuto da svaki događaj definisan od strane tog člana ima ponderisanu vrednost člana koji ga je definisao. M onda može biti udeo ukupnog uloga svih članova i može biti nazvan kriterijumom vrednosti uloga i/ili pragom. Događaji koji su gore opisani kao zavisni od M će se desiti kada se skup članova sa sumom uloga od najmanje M složi (tj. zadovolji kriterijum vrednosti uloga). Shodno tome, na bazi njihovog uloga, izvesni članovi mogu imati veći uticaj na sistem i to kako se izvodi konsenzusni redosled. U nekim slučajevima, transakcija u događaju može promeniti ulog jednog ili više članova, dodati nove članove i/ili izbrisati članove. Ako takva transakcija ima prijemnu rundu R, onda pošto se izračuna prijemna runda, događaji posle svedoka runde R će ponovo izračunati svoj broj rundi i druge informacije korišćenjem modifikovanih uloga i modifikovane liste članova. U nekim slučajevima, glasanje da li su događaji čuveni u rundi R može koristiti stare uloge i listu planova, ali glasanje u rundama posle R može koristiti nove uloge i listu članova.
[0092] U nekim drugim narednim slučajevima prethodno određene ponderisane vrednosti ili vrednosti uloga mogu biti dodeljene svakom članu sistema sa distribuiranim bazama podataka. Shodno tome, konsenzus koji je ostvaren pomoću protokola vizantijskog sporazuma se može implementirati sa odgovarajućim nivoom bezbednosti da bi se zaštitila grupa članova ili populacija od potencijalnih sibil napada. U nekim slučajevima, takav nivo bezbednosti može biti matematički garantovan. Na primer, napadači mogu želeti da utiču na ishod jednog ili više događaja reorganizacijom parcijalnog redosleda događaja registrovanog u hashDAG. Napad
2
može biti izvršen reorganizacijom jednog ili više hashDAG delimičnih redosleda pre dostizanja konsenzusa i/ili finalnog sporazuma među članovima distribuirane baze podataka. U nekim slučajevima se mogu pojaviti kontroverze u pogledu tajminga kada se dogodilo više događaja koji se nadmeću. Kao što je gore razmotreno, ishod koji je povezan sa događajem može zavisiti od vrednosti M. U nekim slučajevima, kao takvo se može izvršiti određivanje da li su Alisa ili Bob reagovali prvi u vezi događaja (i/ili transakcije unutar događaja) kada je broj glasova ili suma uloga članova koji glasaju u sporazumu veća ili jednaka vrednosti M.
[0093] Neki tipovi napada radi reorganizacije redosleda događaja zahtevaju da napadač kontroliše bar neki udeo ili procenat (npr.1/10, 1/4, 1/3, itd.) od N koji zavisi od vrednosti M. U nekim slučajevima, vrednost M može biti konfigurisana tako da bude, na primer, 2/3 grupe ili populacije N. U takvom slučaju, sve dok više od 2/3 članova grupe ili populacije nisu učesnici napada, sporazum mogu postići članovi koji nisu deo napada i distribuirana baza podataka će nastaviti da postiže konsenzus i da radi kao što treba. Pored toga, u takvom slučaju, napadač bi morao da kontroliše najmanje N minus M (N-M) članova grupe ili populacije (1/3 članova u ovom primeru) tokom perioda napada da bi zaustavio konvergenciju baze podataka, da bi izazvao konvergenciju distribuirane baze u korist napadača (npr. da izazove da baza podataka konvergira po nepoštenom redosledu), da konvergira prema dva različita stanja (npr. tako da se članovi oficijelno slože u vezi oba od dva kontradiktorna stanja) ili da krivotvori valutu (kada sistem sa distribuiranim bazama podataka radi sa kriptovalutom).
[0094] U nekim implementacijama, ponderi ili ulozi mogu biti dodeljeni svakom od članova grupe ili populacije i N će biti ukupna suma svih njihovih pondera ili uloga. Shodno tome, veći ponder ili vrednost uloga mogu biti dodeljeni podskupu grupe članova ili populacije na bazi poverenja ili pouzdanosti. Na primer, veći ponder ili vrednost uloga mogu biti dodeljeni članovima za koje je manje verovatno da će biti uključeni u napad ili koji imaju neki indikator koji pokazuje nedostatak njihove sklonosti da učestvuju u nepoštenim ponašanjima.
[0095] U nekim slučajevima, nivo bezbednosti sistema sa distribuiranim bazama podataka se može povećati izborom da M bude veći udeo od N. Na primer, kada M odgovara najmanjem celom broju koji je veći od 2/3 broja članova grupe ili populacije, N, i svi članovi imaju istu moć glasanja, onda će napadač morati da stekne kontrolu ili uticaj nad najmanje 1/3 od N da bi sprečio da bude postignut sporazum između nenapadačkih članova i da bi izazvao da distribuirana baza podataka postigne konsenzus. Slično tome, u takvom slučaju, napadač će morati da stekne kontrolu ili uticaj nad najmanje 1/3 od N da bi izazvao da sistem sa distribuiranim bazama podataka konvergira i/ili da postigne sporazum u korist napadača (npr. da izazove da baza podataka konvergira po nepoštenom redosledu), da konvergira prema dva
2
različita stanja (npr. tako da se članovi oficijelno slože sa oba dva kontradiktorna stanja) ili da krivotvori valutu (kada sistem sa distribuiranim bazama podataka radi sa kriptovalutom).
[0096] U nekim slučajevima, na primer, nepošteni član može glasati na dva različita načina da bi izazvao da distribuirana baza podataka konvergira prema dva različita stanja. Ako je, na primer, N=300 i 100 članova nije pošteno, onda postoji 200 poštenih članova, na primer, sa 100 glasova "da" i 100 glasova "ne" za transakciju. Ako 100 nepoštenih članova pošalje poruku (ili događaj) za 100 poštenih "da" glasača da je 100 nepoštenih članova glasalo "da", onda će 100 poštenih "da" glasača verovati da je konačni konsenzus "da", pošto će oni verovati da je 2/3 članova glasalo "da". Slično tome, ako 100 nepoštenih članova pošalje poruku (ili događaj) za 100 poštenih "ne" glasača da je 100 nepoštenih članova glasalo "ne", onda će 100 poštenih "ne" glasača verovati da je konačni konsenzus "ne", pošto će oni verovati da je 2/3 članova glasalo "ne". Shodno tome, u ovoj situaciji, neki pošteni članovi će verovati da je konsenzus "da", dok će drugi pošteni članovi verovati da je konsenzus "ne", što dovodi do toga da distribuirana baza podataka konvergira prema dva različita stanja. Ako je, međutim, broj nepoštenih članova manji od 100, onda će pošteni članovi konačno konvergirati prema samo jednoj vrednosti (ili "da", ili "ne"), pošto nepošteni članovi neće moći da proguraju i "da", i "ne" glasove na preko 200 (tj.2/3 od N). Druge podesne vrednosti M se mogu koristiti u skladu sa specifikacijama i/ili specifičnim zahtevima aplikacije sistema sa distribuiranim bazama podataka.
[0097] U nekim drugim slučajevima, kada članovi imaju nejednaku glasačku snagu, na primer, kada najpouzdaniji ili najprovereniji glasači imaju snagu glasanja (npr. ponderisanu vrednost ili vrednost uloga) od jedne jedinice, dok preostali članovi imaju udeo jedinice, može se postići sporazum kada suma uloga ili pondera dostigne vrednost M. Shodno tome, u nekim slučajevima, sporazum se može ponekada postići čak i kada je većina članova u neslaganju sa konačnom odlukom, ali je većina pouzdanih ili proverenih za sporazum. Drugim rečima, glasačka snaga neproverenih članova može biti umanjena da bi se sprečili ili ublažili mogući napadi. Shodno tome, u nekim slučajevima, nivo bezbednosti može biti povećan traženjem konsenzusa članova sa ukupnim ulogom M, umesto samo broja od M članova. Visoka vrednost za M znači da veći deo uloga (npr. veći broj članova u neponderisanom sistemu) mora da se složi da bi se izazvala konvergenciju sistema sa distribuiranim bazama podataka.
[0098] U nekim slučajevima, sistem sa distribuiranim bazama podataka može podržavati bezbednosne protokole za mnoštvo učesnika, uključujući, ali bez ograničavanja na protokole prikazane u Tabeli 1 i bilo koju njihovu kombinaciju. Protokoli koji su prikazani u Tabeli 1 opisuju mnoštvo tehnika za dodeljivanje uloga ili pondera članovima grupe ili populacije. Protokoli u Tabeli 1 se mogu implementirati sa kriptovalutama, kao što je, na primer, Bitkoin,
2
derivat prirodne kriptovalute, kriptovaluta definisana unutar sistema sa distribuiranim bazama podataka ili bilo koji drugi podesni tip kriptovalute. Mada su opisani u vezi sa kriptovalutom, u narednim slučajevima protokoli prikazani u Tabeli 1 se mogu koristiti u bilo kom drugom podesnom sistemu sa distribuiranim bazama podataka i sa bilo kojim drugim postupkom za dodelu uloga.
TABELA 1
[0099] Izbor jednog bezbednosnog protokola za učesnike u odnosu na drugi može zavisiti od specifičnih aplikacija. Na primer, hibridni protokol može biti podesan za implementaciju uobičajenih transakcija male vrednosti, aplikaciju za poslovnu saradnju, računarsku igru i druge slične tipove aplikacija gde odnos između bezbednosti i minimalnih računarskih troškova teži zadnje pomenutom. Hibridni protokol može biti efektivan za sprečavanje pojedinog nezadovoljnog člana da remeti ili napadne grupu članova ili populaciju.
[0100] Kao sledeći primer, dozvoljavajući protokol može biti poželjan kada su bezbednosni zahtevi od najvećeg značaja i kada članovi populacije nisu potpuni stranci ili su nepoznati. Dozvoljavajući protokol se može koristiti za implementaciju aplikacija usmerenih, na primer, na banke i slični tip finansijskih entiteta ili entiteta povezanih u konzorcijum. U takvom slučaju, banke u konzorcijumu mogu postati članovi populacije i svaka banka može biti ograničena na to da učestvuje kao samo jedan član. Shodno tome, M može biti skup od najmanjeg celog broja koji je veći od dve trećine populacije. Banke ne moraju verovati jedna drugog kao pojedinačni entiteti, ali se mogu osloniti na nivo bezbednosti koji obezbeđuje sistem sa distribuiranim bazama podataka, koji u ovom primeru vrši prinudu da broj nepoštenih članova ne bude veći od jedne trećine banaka u populaciji.
[0101] U još jednom drugom primeru, protokol dokaza-o-destrukciji može biti implementiran kada populacija sadrži veliki broj stranaca ili nepoznatih članova. U takvom slučaju napadač može biti u stanju da zadobije kontrolu nad udelom ukupnih uloga koja prevazilazi vrednost koja
1
je dodeljena M. Ulazna taksa, međutim, može biti skup koji je dovoljno velik da troškovi napada prevazilaze očekivane koristi ili profite.
[0102] Kao sledeći primer, protokol dokaza-o-ulogu može biti podesan za veće grupe. Protokol dokaza-o-ulogu može biti optimalno ili poželjno rešenje kada postoji velika grupa članova koji poseduju značajne iznose kriptovalute u približno jednakim delovima i nije predviđeno ili verovatno da bi remetilački član stekao veći iznos kriptovalute od iznosa koji kolektivno poseduje velika grupa članova.
[0103] U narednim slučajevima, mogli bi se izvesti neki drugi ili kompleksniji protokoli od protokola ili kombinacije protokola prikazanih u Tabeli 1. Na primer, sistem sa distribuiranim bazama podataka može biti konfigurisan za implementaciju hibridnog protokola, koji prati dozvoljavajući protokol tokom prethodno određenog vremenskog perioda i konačno dozvoljava članovima da prodaju glasačke uloge međusobno. Kao sledeći primer, sistem sa distribuiranim bazama podataka može biti konfigurisan za implementaciju protokola dokaza-o-destrukciji i konačno za prelazak na protokol dokaza-o-ulogu kada jednom vrednost događaja ili uključenih transakcija dostigne prag ili prethodno određenu vrednost kriptovalute.
[0104] Gore navedeni izrazi, definicije i algoritmi se upotrebljavaju za ilustraciju primera izvođenja i koncepata opisanih na Slikama 14-17b. Slike 16a i 16b ilustruju prvi primer primene konsenzusnog postupka i/ili procesa prikazanog u matematičkom obliku. Slike 17a i 17b ilustruju drugi primer primene konsenzusnog postupka i/ili procesa prikazanog u matematičkom obliku.
[0105] U narednim slučajevima i kao što je ovde detaljno opisano u nastavku, modul 211 za konvergenciju baze podataka može inicijalno da definiše vektor vrednosti za parametar i može ažurirati vektor vrednosti kada primi dodatne vrednosti parametra od drugih računarskih uređaja. Na primer, modul 211 za konvergenciju baze podataka može primiti dodatne vrednosti parametra od drugih računarskih uređaja preko komunikacionog modula 212. U nekim slučajevima, modul za konvergenciju baze podataka može izabrati vrednost parametra na bazi definisanog i/ili ažuriranog vektora vrednosti parametra, kao što je ovde detaljno opisano u nastavku. U nekim primerima izvođenja, modul 211 za konvergenciju baze podataka takođe može slati vrednost parametra drugim računarskim uređajima preko komunikacionog modula 212, kao što je ovde detaljno opisano u nastavku.
[0106] U nekim primerima izvođenja, modul 211 za konvergenciju baze podataka može slati signal do memorije 220 da bi izazvao da u memoriji 220 (1) bude memorisan definisani i/ili ažurirani vektor vrednosti parametra i/ili (2) izabrana vrednost parametra bazirana na definisanom i/ili ažuriranom vektoru vrednosti parametra. Na primer, (1) definisani i/ili ažurirani
2
vektor vrednosti parametra i/ili (2) izabrana vrednost parametra bazirana na definisanom i/ili ažuriranom vektoru vrednosti parametra mogu biti memorisani u instanci 221 distribuirane baze podataka implementirane u memoriji 220. U nekim primerima izvođenja, instanca 221 distribuirane baze podataka može biti slična instancama 114, 124, 134, 144 distribuiranih baza podataka sistema 100 sa distribuiranim bazama podataka prikazanim na Slici 1.
[0107] Na Slici 2, modul 211 za konvergenciju baze podataka i komunikacioni modul 212 su prikazani na Slici 2 kao da su implementirani u procesoru 210. U drugim primerima izvođenja, modul 211 za konvergenciju baze podataka i/ili komunikacioni modul 212 mogu biti implementirani u memoriji 220. U još nekim drugim primerima izvođenja, modul 211 za konvergenciju baze podataka i/ili komunikacioni modul 212 mogu biti bazirani na hardveru (npr. ASIC, FPGA, itd.).
[0108] Slika 7 prikazuje signalni algoritam događaja sinhronizacije dva računarska uređaja, prema jednom primeru izvođenja. Specifično, u nekim primerima izvođenja, instance 703 i 803 distribuiranih baza podataka mogu razmenjivati događaje da bi se ostvarila konvergencija. Računarski uređaj 700 može izabrati da se sinhronizuje sa računarskim uređajem 800 slučajno, na bazi odnosa sa računarskim uređajem 700, na bazi blizine računarskog uređaja 700, na bazi redosledne liste pridružene računarskom uređaju 700 i/ili sličnom. U nekim primerima izvođenja, zbog toga što računarski uređaj 800 može biti izabran od strane računarskog uređaja 700 iz skupa računarskih uređaja koji pripadaju sistemu sa distribuiranim bazama podataka, računarski uređaj 700 može izabrati računarski uređaj 800 veliki broj puta u nizu ili ne mora izabrati računarski uređaj 800 neko vreme. U drugim primerima izvođenja, indikacija prethodno izabranih računarskih uređaja može biti memorisana na računarskom uređaju 700. U takvim primerima izvođenja, računarski uređaj 700 može sačekati prethodno određeni broj izbora pre nego što bude u mogućnosti da ponovo izabere računarski uređaj 800. Kao što je gore objašnjeno, instance 703 i 803 distribuiranih baza podataka mogu biti implementirane u memoriji računarskog uređaja 700 i memoriji računarskog uređaja 800, respektivno.
[0109] Slike 3-6 ilustruju primere hashDAG, prema jednom primeru izvođenja. Postoji pet članova, od kojih je svaki predstavljen tamnom vertikalnom linijom. Svaki krug predstavlja jedan događaj. Dve linije naniže od događaja predstavljaju hešove dva prethodna događaja. Svaki događaj u ovom primeru ima dve linije naniže (jednu tamnu liniju prema istom članu i jednu svetlu liniju prema sledećem članu), izuzev za prvi događaj svakog člana. Proticanje vremena je naviše. Na Slikama 3-6, računarski uređaji distribuirane baze podataka su označeni sa Alisa, Bob, Kerol, Dejv i Ed. Treba shvatiti da se takve oznake odnose na računarske uređaje koji su strukturno i funkcionalno slični računarskim uređajima 110, 120, 130 i 140 koji su prikazani i opisani u vezi sa Slikom 1.
Primer sistema 1: Ako je računarski uređaj 700 nazvan Alisa i računarski uređaj 800 je nazvan Bob, onda sinhronizacija između njih može biti kao što je ilustrovano na Slici 7. Sinhronizacija između Alise i Boba može biti kao što sledi:
- Alisa šalje Bobu događaje koji su memorisani u distribuiranoj bazi podataka 703.
- Bob kreira i/ili definiše novi događaj koji sadrži:
-- heš poslednjeg događaja koji je Bob kreirao i/ili definisao
-- heš poslednjeg događaja koji je Alisa kreirala i/ili definisala
-- digitalni potpis gornjeg od strane Boba
- Bob šalje Alisi događaje memorisane u distribuiranoj bazi podataka 803.
- Alisa kreira i/ili definiše novi događaj.
- Alisa šalje Bobu taj događaj.
- Alisa izračunava celokupni redosled događaja, kao funkciju hashDAG
- Bob izračunava celokupni redosled događaja, kao funkciju hashDAG
U bilo kom datom trenutku, član može memorisati do tada primljene događaje, zajedno sa identifikatorom pridruženom računarskom uređaju i/ili instanci distribuirane baze podataka koji je kreirala i/ili definisala svaki događaj. Svaki događaj sadrži hešove dva ranija događaja, izuzev inicijalnog događaja (koji nema hešove roditelja) i prvog događaja svakog novog člana (koji ima heš događaja od samo jednog roditelja, koji predstavlja događaj da ga je postojeći član pozvao da im se pridruži). Može se nacrtati dijagram koji prikazuje ovaj skup događaja. On može prikazivati vertikalnu liniju za svakog člana i tačku na toj liniji za
4
svaki događaj kreiran i/ili definisan od strane tog člana. Dijagonalna linija je nacrtana između dve tačke ukoliko događaj (viša tačka) sadrži heš ranijeg događaja (niža tačka). Događaj može biti naveden kao povezan sa drugim događajem ako taj događaj može referencirati drugi događaj preko heša tog događaja (bilo direktno ili putem intermedijarnih događaja).
Na primer, Slika 3 prikazuje primer hashDAG 600. Događaj 602 je kreiran i/ili definisan od strane Boba kao rezultat i posle sinhronizacije sa Kerol. Događaj 602 sadrži heš događaja 604 (prethodni događaj kreiran i/ili definisan od strane Boba) i heš događaja 606 (prethodni događaj kreiran i/ili definisan od strane Kerol). U nekim primerima izvođenja, na primer, heš događaja 604 koji je sadržan unutar događaja 602 sadrži pokazivač prema njegovim neposrednim precima događajima, događajima 608 i 610. Kao takav, Bob može koristiti događaj 602 za referenciranje događaja 608 i 610 i za rekonstrukciju hashDAG korišćenjem pokazivača prema prethodnim događajima. U nekim slučajevima, za događaj 602 se može reći da je povezan sa drugim događajima u hashDAG 600 pošto događaj 602 može referencirati svaki od događaja u hashDAG 600 preko ranijih predaka događaja. Na primer, događaj 602 je povezan sa događajem 608 preko događaja 604. U sledećem primeru, događaj 602 je povezan sa događajem 616 preko događaja 606 i događaja 612.
Primer sistema 2: sistem iz Primera sistema 1, gde događaj takođe sadrži "korisne podatke" od transakcija ili druge informacije za zapisivanje. Takve korisne informacije se mogu koristiti za ažuriranje događaja sa bilo kakvim transakcijama i/ili informacijama koje su se dogodile i/ili bile definisane od strane računarskog uređaja neposredno pre događaja. Na primer, događaj 602 može sadržati bilo kakve transakcije koje je izvršio Bob od kada je događaj 604 bio kreiran i/ili definisan. Shodno tome, kada se vrši sinhronizacija događaja 602 sa drugim računarskim uređajima, Bob može podeliti ovu informaciju. Shodno tome, transakcije koje je izvršio Bob mogu biti pridružene nekom događaju i biti podeljene sa drugim članovima koji koriste događaje.
Primer sistema 3: sistem iz Primera sistema 1, gde događaj takođe sadrži aktuelno vreme i/ili datum, koji su korisni za debaging, dijagnostiku i/ili druge svrhe. Vreme i/ili datum mogu biti lokalno vreme i/ili datum kada računarski uređaj (npr. Bob) kreira i/ili definiše događaj. U takvim primerima izvođenja, takvo lokalno vreme i/ili datum se ne sinhronizuju sa preostalim uređajima. U drugim primerima izvođenja, vreme i/ili datum se mogu sinhronizovati između uređaja (npr. kada se događaji razmenjuju). U još nekim drugim primerima izvođenja se može koristiti globalni tajmer za određivanje vremena i/ili datuma.
Primer sistema 4: sistem iz Primera sistema 1, gde Alisa ne šalje Bobu događaje kreirane i/ili definisane od strane Boba, ni pretke događaja takvog događaja. Događaj x je predak događaja y ako y sadrži heš x, ili ako y sadrži heš događaja koji je predak x. Slično navedenom, u takvim primerima izvođenja Bob šalje Alisi događaje koji još nisu memorisani od strane Alise i ne šalje događaje koji su već memorisani od strane Alise.
Na primer, Slika 4 prikazuje primer za hashDAG 620 koji prikazuje pretke događaja (iscrtkani krugovi) i potomke događaja (šrafirani krugovi) događaja 622 (crni krug). Linije uspostavljaju delimični redosled događaja, gde preci dolaze pre crnog događaja, a potomci dolaze posle crnog događaja. Delimični redosled ne ukazuje da li su beli događaji pre ili posle crnog događaja, tako da se celokupni redosled koristi za određivanje njihove sekvence. U sledećem primeru, Slika 5 prikazuje primer za hashDAG koji prikazuje jedan specifični događaj (popunjeni krug) i prvi put svaki član prima indikaciju tog događaja (šrafirani krugovi). Kada se Kerol sinhronizuje sa Dejvom da bi kreirala i/ili definisala događaj 624, Dejv ne šalje Kerol pretke događaje događaja 622, pošto je Kerol već svesna njih i primila je takve događaje. Umesto toga, Dejv šalje Kerol događaje koje Kerol još treba da primi i/ili memoriše u instanci Keroline distribuirane baze podataka. U nekim primerima izvođenja, Dejv može identifikovati koje događaje da pošalje Kerol na bazi onoga što Dejvov hashDAG otkriva o tome koje događaje je Kerol prethodno primila. Događaj 622 je predak događaja 626. Zbog toga, u vreme događaja 626, Dejv je već primio događaj 622. Slika 4 prikazuje da je Dejv primio događaj 622 od Eda koji je primio događaj 622 od Boba koji je primio događaj 622 od Kerol. Pored toga, u trenutku događaja 624, događaj 622 je poslednji događaj koji je Dejv primio, a koji je bio kreiran i/ili definisan od strane Kerol. Zbog toga, Dejv može poslati Kerol događaje koje je Dejv memorisao, a koji su različiti od događaja 622 i njegovih predaka. Dodatno tome, posle prijema događaja 626 od Dejva, Kerol može rekonstruisati hashDAG na bazi pokazivača u događajima koji su memorisani u instanci Keroline distribuirane baze podataka. U drugim primerima izvođenja, Dejv može identifikovati koje događaje da pošalje Kerol na bazi Kerolinog slanja događaja 622 Dejvu (nije prikazano na Slici 4) i Dejvove identifikacije korišćenjem događaja 622 (i referenci u njemu) za identifikaciju događaja koje je Kerol već primila.
Primer sistema 5: sistem iz Primera sistema 1 gde oba člana šalju događaje onom drugom po takvom redosledu da se događaj ne šalje sve dok primalac ne primi i/ili ne memoriše pretke tog događaja. Shodno tome, pošiljalac šalje događaje od najstarijeg do najnovijeg, tako da primalac može proveriti dva heša za svaki događaj kada prima događaj, upoređivanjem dva heša sa dva pretka događaja koji su već bili primljeni. Pošiljalac može identifikovati koje događaje da pošalje primaocu na osnovu aktuelnog stanja pošiljaočevog hashDAG (npr. promenljive stanja baze podataka definisane od strane pošiljaoca) i šta taj hashDAG pokazuje da je primalac već primio. Sa pozivom na Sliku 3, na primer, kada se Bob sinhronizuje sa Kerol da bi definisao događaj 602, Kerol može identifikovati da je taj događaj 619 poslednji događaj kreiran i/ili definisan od strane Boba koji je Kerol primila. Zbog toga Kerol može utvrditi da Bob zna za taj događaj i za njegove pretke. Shodno tome, Kerol može prvo poslati Bobu događaj 618 i događaj 616 (tj. najstarije događaje koje Bob još treba da primi, a koje je Kerol primila). Kerol onda može poslati Bobu događaj 612 i zatim događaj 606. Ovo Bobu omogućava da lako poveže događaje i da rekonstruiše Bobov hashDAG. Korišćenjem Kerolinog hashDAG za identifikaciju koje događaje Bob još treba da primi može se povećati efikasnost sinhronizacije i može se smanjiti saobraćaj na mreži, pošto Bob ne traži događaje od Kerol.
U drugim primerima izvođenja, najskoriji događaj može biti poslat prvi. Ako primalac utvrdi (na bazi heša od dva prethodna događaja u najskorijem događaju i/ili pokazivača ka prethodnim događajima u najskorijem događaju) da još uvek nije primio jedan od dva prethodna događaja, primalac može zatražiti od pošiljaoca da pošalje takve događaje. Ovo se može dešavati sve dok primalac ne primi i/ili ne memoriše pretke najskorijeg događaja. Sa pozivom na Sliku 3, u takvim primerima izvođenja, na primer, kada Bob prima događaj 606 od Kerol, Bob može identifikovati heš događaja 612 i događaja 614 u događaju 606. Bob može utvrditi da je događaj 614 prethodno primila Alisa kada je kreirala i/ili definisala događaj 604. Shodno tome, Bob ne treba da traži događaj 614 od Kerol. Bob takođe može utvrditi da događaj 612 još uvek nije primljen. Bob onda može zatražiti događaj 612 od Kerol. Bob onda može, na bazi hešova unutar događaja 612, utvrditi da Bob nije primio događaje 616 ili 618 i, shodno tome, može da zatraži ove događaje od Kerol. Na bazi događaja 616 i 618, Bob će biti u stanju da utvrdi da je on primio pretke događaja 606.
Primer sistema 6: sistem iz Primera sistema 5 sa dodatnim ograničenjem da kada član ima izbor između nekoliko događaja za slanje sledećeg, događaj se bira tako da se minimizira ukupan broj bajtova koji su dotle poslati, a kreirani su i/ili definisani od strane tog člana. Na primer, ako je Alisi ostalo da pošalje Bobu samo dva događaja, a jedan ima 100 bajtova i bio je kreiran i/ili definisan od strane Kerol i jedan ima 10 bajtova i bio je kreiran i/ili definisan od strane Dejva, i tako dalje, u ovoj sinhronizaciji je Alisi već bilo poslato 200 bajtova događaja od strane Kerol i 210 od strane Dejva, onda bi Alisa trebala prvo da pošalje događaj Dejvu, a zatim da događaj pošalje Kerol. Zbog toga je 210 10 < 100 200. Ovo se može koristiti za adresne napade u kojima samo jedan član šalje samo jedan ogroman događaj, ili veliko mnoštvo malih događaja. U slučaju u kome saobraćaj prevaziđe limit u bajtovima većine članova (kao što će biti razmotreno u vezi Primera sistema 7), postupak iz Primera sistema 6 može obezbediti da napadačevi događaji budu ignorisani umesto događaja legitimnih korisnika. Slično navedenom, napadi mogu biti smanjeni slanjem manjih događaja pre većih (radi odbrane od toga da jedan ogroman događaj napravi zastoj u konekciji). Pored toga, ako član ne može da pošalje svaki od događaja u samo jednoj sinhronizaciji (npr. zbog mrežnih ograničenja, ograničenja u bajtovima za članove itd.), onda taj član može poslati nekoliko događaja svakog člana, umesto da šalje samo događaje definisane i/ili kreirane od strane napadača i nijedan (od nekoliko) događaja kreiranih i/ili definisanih od strane drugih članova.
Primer sistema 7: sistem iz Primera sistema 1 sa dodatnim prvim korakom u kome Bob šalje Alisi broj koji ukazuje na maksimalni broj bajtova koje je on spreman da primi prilikom ove sinhronizacije, a Alisa odgovara svojim limitom. Alisa onda prekida slanje ako bi sledeći događaj prevazišao ovaj limit. Bob radi isto. U takvom primeru izvođenja, ovo ograničava broj prenetih bajtova. Ovo može produžiti vreme do konvergencije, ali će smanjiti količinu mrežnog saobraćaja po sinhronizaciji.
Primer sistema 8: sistem iz Primera sistema 1, u kome su sledeći koraci dodati početku procesa sinhronizacije:
- Alisa identifikuje S, skup događaja koji je ona primila i/ili memorisala, preskačući događaje koji su bili kreirani i/ili definisani od strane Boba ili koji su preci događaja koje je kreirao i/ili definisao Bob.
- Alisa identifikuje članove koji su kreirali i/ili definisali svaki događaj u S, i šalje Bobu listu ID brojeva članova. Alisa takođe šalje broj događaja koje je kreirao i/ili definisao svaki član koje je ona već primila i/ili memorisala.
- Bob odgovara listom koliko je događaja on primio, a koje su kreirali i/ili definisali drugi članovi.
- Alisa onda šalje Bobu samo događaje koje on još treba da primi. Na primer, ako Alisa ukaže Bobu da je ona primila 100 događaja koje je kreirala i/ili definisala Kerol i Bob odgovori da je on primio 95 događaja koje je kreirala i/ili definisala Kerol, onda će Alisa poslati samo 5 najskorijih događaja koje je kreirala i/ili definisala Kerol.
Primer sistema 9: sistem iz Primera sistema 1, sa dodatnim mehanizmom za identifikaciju i/ili tretiranje varalica. Svaki događaj sadrži dva heša, jedan od poslednjeg događaja koji je kreirao i/ili definisao taj član ("sopstveni heš") i jedan od poslednjeg događaja koji je kreirao i/ili definisao drugi član ("strani heš"). Ako član kreira i/ili definiše dva različita događaja sa istim sopstvenim hešom, onda je taj član "varalica". Ako Alisa otkrije da je Dejv varalica tako što primi dva različita događaja koja je on kreirao i/ili definisao sa istim sopstvenim hešom, onda ona memoriše indikator da je on varalica i uzdržava se od sinhronizacije sa njim u budućnosti. Ako ona otkrije da je on varalica i nastavi i dalje da se sinhronizuje sa njim i kreira i/ili definiše novi događaj koji zabeleži tu činjenicu, onda Alisa takođe postaje varalica i drugi članovi koji saznaju da se Alisa i dalje sinhronizuje sa Dejvom prestaju da se sinhronizuju sa Alisom. U nekim primerima izvođenja, ovo utiče na sinhronizacije samo u jednom smeru. Na primer, kada Alisa šalje listu identifikatora i broj događaja koje je ona primila svakom članu, ona ne šalje ID ili broj varalici, tako da Bob neće odgovoriti odgovarajućim brojem. Alisa onda šalje Bobu varaličine događaje koje je primila i za koje nije primila indikaciju da je Bob primio takve događaje. Pošto se sinhronizacija završi, Bob će takođe biti u stanju da odredi da je Dejv varalica (ako već nije identifikovao Dejva kao varalicu) i Bob će takođe odbiti sinhronizaciju sa varalicom.
Primer sistema 10: sistem u Primeru sistema 9, sa dodatkom da Alisa počinje proces sinhronizacije slanjem Bobu liste varalica koje je identifikovala i čije događaje ona još uvek čuva, a Bob odgovara sa bilo kojim varalicama koje je identifikovao pored varalica koje je Alisa identifikovala. Onda oni nastavljaju dalje kao obično, ali bez davanja brojeva varalicama kada se međusobno sinhronizuju.
Primer sistema 11: sistem u Primeru sistema 1, sa procesom koji više puta ažurira aktuelno stanje (npr. koje je snimljeno promenljivim stanjem baze podataka definisanim od strane člana sistema) na bazi transakcija unutar bilo kojih novih događaja koji su primljeni tokom sinhronizacije. Ovo takođe može uključiti drugi proces koji više puta ponovo formira to stanje (npr. redosled događaja), kad god se sekvenca događaja promeni vraćanjem na kopiju ranijeg stanja i ponovnim izračunavanjem sadašnjeg stanja obradom događaja po novom redosledu. U nekim primerima izvođenja, aktuelno stanje je stanje, bilans, uslov i/ili slično što je pridruženo rezultatu transakcija. Slično navedenom, stanje može sadržati strukturu podataka i/ili promenljive koje su modifikovane transakcijama. Na primer, ako su transakcije transferi novca između bankovnih računa, onda aktuelno stanje može biti aktuelno stanje računa. U sledećem primeru, ako su transakcije povezane sa igrom za više igrača, aktuelno stanje može biti pozicija, broj života, dobijeni predmeti, stanje igre i/ili slično što je povezano sa igrom.
Primer sistema 12: sistem u Primeru sistema 11 se čini bržim korišćenjem "brzog klona" arrayList-e da bi se zadržalo stanje (npr. stanje na bankovnom računu, stanje igre itd.). Brzi klon arrayList je struktura podataka koja deluje kao niz sa jednom dodatnom karakteristikom: ona podržava operaciju "kloniranja" koja izgleda kao da kreira i/ili definiše novi objekat koji je kopija originala. Ponaša se skoro kao prava kopija, jer promene na klonu ne utiču na original. Operacija kloniranja je, međutim, brža od kreiranja prave kopije, jer kreiranje klona u stvari ne uključuje kopiranje i/ili ažuriranje celokupnog sadržaja jedne arrayList u drugu. Umesto da imamo dva klona i/ili kopije originalne liste, mogu se koristiti dva mala objekta, svaki sa heš tabelom i pokazivačem ka originalnoj listi. Kada se vrši zapisivanje u klonu, onda se heš tabela seća koji element je modifikovan i nove vrednosti. Kada se vrši očitavanje na lokaciji, prvo se proverava heš tabela i ako je taj element bio modifikovan, onda se preuzima nova vrednost iz heš tabele. U suprotnom se preuzima taj element iz originalne arrayList. Na ovaj način dva "klona" su inicijalno samo pokazivači prema originalnoj arrayList. Ali pošto se svaki od njih modifikuje više puta, on raste da bi imao velike razlike u memorisanju heš tabele između sebe i originalne liste. Sami klonovi mogu biti klonirani, što izaziva da struktura podataka ekspanduje u drvo objekata, svaki sa svojom sopstvenom tabelom i pokazivačem prema njegovom roditelju. Zbog toga očitavanje izaziva kretanje po drvetu sve dok se ne pronađe najviša tačka koja ima tražene podatke ili dok se ne dođe do korena. Ako najviša tačka postane previše velika ili kompleksna, onda ona može biti zamenjena pravom kopijom roditelja, promene u heš tabeli mogu biti izvršene na kopiji, a heš tabela može biti odbačena. Pored toga, ako klon više nije potreban, onda se tokom sakupljanja otpada on može ukloniti sa drveta i drvo se može srušiti.
4
Primer sistema 13: sistem u Primeru sistema 11 se čini bržim korišćenjem "brzog klona" heš tabele da bi se zadržalo stanje (npr. stanje na bankovnom računu, stanje igre itd.). Ovo je isto kao u Sistemu 12, izuzev što je koren drveta heš tabela umesto arrayListe.
Primer sistema 14: sistem u Primeru sistema 11 se čini bržim korišćenjem "brzog klona" relacione baze podataka da bi se zadržalo stanje (npr. stanje na bankovnom računu, stanje igre itd.). Ovo je jedan objekat koji deluje kao omotač oko postojećeg Sistema upravljanja relacionom bazom podataka (Relational Database Management System, skr. RDBMS). Svaki očigledni "klon" je u stvari objekat sa ID brojem i pokazivačem ka objektu koji sadrži bazu podataka. Kada korisnikov kod pokuša da izvrši upit na Strukturisanom upitnom jeziku (engl. Structure Query Language, skr. SQL) na bazi podataka, taj upit se prvo modifikuje, pa se onda šalje pravoj bazi podataka. Prava baza podataka je identična sa bazom podataka kako je vidi klijentov kod, izuzev što svaka tabela ima jedno dodatno polje za ID klona. Na primer, pretpostavimo da postoji originalna baza podataka sa klonom ID 1 i da se onda naprave dva klona te baze podataka, sa ID 2 i 3. Svaki red u svakoj tabeli će imati 1, 2, ili 3 u ID polju klona. Kada dođe upit sa korisničkog koda u klon 2, upit se modifikuje tako da će upit čitati samo iz redova koji imaju 2 ili 1 u tom polju. Slično tome, očitavanja za 3 traže redove sa 3 ili 1 ID. Ako komanda Strukturiranog upitnog jezika (SQL) ide do klona 2 i kaže da se izbriše red i taj red ima 1, onda bi komanda trebala samo da promeni 1 u 3, što označava da taj red više ne dele klonovi 2 i 3, i da je sada vidljiv samo za 3. Ako postoji nekoliko klonova u radu, onda se može umetnuti nekoliko kopija reda, a svaki može biti promenjen u ID različitog klona, tako da su novi redovi vidljivi klonovima osim klona koji je upravo "izbrisao" red. Slično tome, ako se doda red klonu 2, onda se red dodaje tabeli sa ID 2. Modifikacija reda je ekvivalent brisanju, pa zatim umetanju. Kao i ranije, ako se nekoliko klonova sakupi kao otpad, onda se drvo može pojednostaviti. Struktura tog drveta će biti memorisana u dodatnoj tabeli koja nije dostupna klonovima, već se koristi isključivo interno.
Primer sistema 15: sistem u Primeru sistema 11 se čini bržim korišćenjem "brzog klona" sistema fajlova da bi se zadržalo stanje. Ovo je objekat koji deluje kao omotač oko sistema fajlova. Sistem fajlova je izveden povrh postojećeg sistema fajlova, uz korišćenje brzog klona relacione baze podataka da bi se upravljalo različitim verzijama sistema fajlova. Postojeći sistem fajlova čuva veliki broj fajlova, bilo u jednom direktorijumu ili raspodeljene prema imenu fajla (da bi direktorijumi ostali mali). Drvo direktorijuma može se čuvati u bazi podataka i nije opremljeno sistemom fajlova domaćina. Kada se fajl ili direktorijum klonira, "klon" je samo objekat sa ID brojem, a baza podataka se modifikuje da bi odrazila da sada postoji ovaj klon. Ako se klonira brzi klon sistema fajlova, korisniku onda izgleda kao da je kreiran i/ili definisan ceo novi hard disk drajv, inicijalizovan kopijom postojećeg hard drajva. Promene u jednoj kopiji ne moraju imati efekat na druge kopije. U stvarnosti, postoji upravo još jedna kopija svakog fajla ili direktorijuma, a kada se fajl modifikuje pomoću jednog klona, onda dolazi do kopiranja.
Primer sistema 16: sistem u Primeru sistema 15 u kome se kreira i/ili definiše poseban fajl na operativnom sistemu domaćina za svaki N-bajtni deo fajla u brzom klonu sistema fajlova. N može imati neku podesnu veličinu, kao što je, na primer, 4096 ili 1024. Na ovaj način, ako se promeni jedan bajt u velikom fajlu, onda će samo jedan deo velikog fajla biti kopiran i modifikovan. Ovo takođe povećava efikasnost kada se memoriše mnogo fajlova na drajvu koji se međusobno razlikuju samo za nekoliko bajtova.
Primer sistema 17: sistem u Primeru sistema 11 gde svaki član sadrži, u nekim ili svim događajima koje kreiraju i/ili definišu, heš stanja u nekom prethodnom trenutku, zajedno sa brojem događaja koji su se dogodili do tog trenutka, koji ukazuje da taj član prepoznaje i/ili identifikuje da sada postoji konsenzus o redosledu događaja. Pošto član sakupi potpisane događaje koji sadrže takav heš od većine korisnika za dato stanje, član onda to može memorisati kao dokaz konsenzusnog stanja u tom trenutku i izbrisati iz memorije događaje i transakcije pre tog trenutka.
Primer sistema 18: sistem u Primeru sistema 1 gde se operacije koje izračunavaju medijanu ili većinu zamenjuju ponderisanom medijanom ili ponderisanom većinom, gde su članovi ponderisani prema svojim "ulozima". Ulog je broj koji ukazuje koliko se broji glas tog člana. Ulog bi moglo biti vlasništvo u kriptovaluti ili samo proizvoljni broj koji se dodeljuje kada je član prvo pozvan da se pridruži, a onda se raspodeljuje među novim članovima koje član poziva da se pridruže. Stari događaji mogu biti odbačeni kada se dovoljno članova složi u vezi konsenzusnog stanja tako da je njihov ukupni ulog većina postojećeg uloga. Ako se celokupni redosled izračunava korišćenjem medijane rangova kojima su doprineli članovi, onda je rezultat broj gde polovina članova ima viši rang i polovina ima niži. Sa druge strane, ako se celokupni redosled izračunava korišćenjem ponderisane medijane, onda je rezultat broj gde je oko polovine ukupnog uloga pridruženo rangovima nižim od toga, a polovina višim. Ponderisano glasanje i medijane mogu biti korisni u sprečavanju sibil napada, gde samo jedan član poziva veliki broj korisnika "marioneta" da se pridruže, od kojih je svaka jednostavno pseudonim koji kontroliše pozivajući član. Ako je pozivajući član prinuđen da podeli svoje uloge sa pozvanima, onda marionete neće biti korisne napadaču da pokuša da kontroliše rezultate konsenzusa. Shodno tome, dokaz-o-ulogu može biti koristan u nekim okolnostima.
Primer sistema 19: sistem u Primeru sistema 1 u kome umesto samo jedne, distribuirane baze podataka, postoji mnoštvo baza podataka u hijerarhiji. Na primer, može postojati samo jedna baza podataka čiji korisnici su članovi i zatim nekoliko manjih baza podataka ili "komada", od kojih svaki ima podskup članova. Kada se dogode događaji u komadu, onda se oni sinhronizuju među članovima tog komada, a ne među članovima izvan tog komada. Onda, s vremena na vreme, pošto se utvrdi konsenzusni redosled unutar komada, rezultujuće stanje (ili događaji sa njihovim konsenzusnim celokupnim redosledom) se mogu podeliti sa celim članstvom velike baze podataka.
Primer sistema 20: sistem u Primeru sistema 11, sa sposobnošću da ima događaj koji ažurira softver radi ažuriranja stanja (npr. kakvo je snimljeno od strane promenljivog stanja baze podataka definisanog od strane člana sistema). Na primer, događaji X i Y mogu sadržati transakcije koje modifikuju stanje, u skladu sa softverskim kodom koji očitava transakcije unutar tih događaja, a onda na odgovarajući način ažurira stanje. Onda događaj Z može sadržati napomenu da je sada raspoloživa nova verzija softvera. Ako celokupni redosled kaže da se događaji dešavaju po redosledu X, Z, Y, onda stanje može biti ažurirano obradom transakcija u X starim softverom, zatim transakcije u Y novim softverom. Ali ako je konsenzusni redosled bio X, Y, Z, onda i X i Y mogu biti ažurirani starim softverom, što bi moglo dati različito konačno stanje. Zbog toga, u takvim primerima izvođenja, napomena da se kod ažurira se može desiti unutar događaja, tako da zajednica može postići konsenzus kada će se prebaciti sa stare verzije na novu verziju. Ovo obezbeđuje da članovi zadrže sinhronizovana stanja. Ovo takođe obezbeđuje da sistem može da nastavi da radi, čak i tokom ažuriranja, bez potrebe za rebutovanjem ili restartom procesa.
Primer sistema 21: sistem iz Primera sistema 1, gde se implementira protokol dokaz-o-ulogu da bi se ostvario konsenzus, a glasačka snaga svakog člana je proporcionalna iznosu kriptovalute koju član poseduje. Kriptovaluta u ovom primeru će u nastavku biti nazvana
4
Stejkoin (engl. Stakecoin). Članstvo u grupi ili populaciji je otvoreno, bez dozvoljavanja, shodno tome, ne mora biti poverenja između članova.
[0110] Protokol dokaza-o-ulogu može biti računarski manje skup od drugih protokola, na primer, protokola dokaza-o-radu. U ovom primeru, M (kao što je opisano gore) može biti 2/3 iznosa Stejkoina koji kolektivno poseduju članovi. Shodno tome, sistem sa distribuiranim bazama podataka može biti siguran (i može konvergirati kao što je nameravano) ako napadač ne može da dobije 1/3 ukupnih Stejkoina koje poseduju učestvujući članovi posmatrani zajedno. Sistem sa distribuiranim bazama podataka može nastaviti da funkcioniše na matematički garantovanom bezbednosnom nivou sve dok više od 2/3 Stejkoina poseduju pošteni aktivni članovi. Ovo omogućava da baza podataka ispravno konvergira.
[0111] Način da napadač zadobije kontrolu nad sistemom sa distribuiranim bazama podataka se može ostvariti pojedinačnim pregovaranjem sa vlasnicima Stejkoina unutar sistema sa distribuiranim bazama podataka radi kupovine njihovog Stejkoina. Na primer, Alisa može dobiti većinu Stejkoina kupovinom Stejkoina koje poseduju Bob, Kerol i Dejv, što ostavlja Eda u ranjivoj poziciji. Ovo je slično saterivanju u ugao na tržištu roba ili pokušaju da se kupi dovoljno deonica kompanije radi neprijateljskog preuzimanja. Opisani scenario ne predstavlja samo napad na sistem sa distribuiranim bazama podataka koji koristi Stejkoin, več takođe napad na sam Stejkoin. Ako jedan član zadobije skoro monopol nad kriptovalutom, takav član može manipulisati tržišnom vrednosti kriptovalute i podešavati je više puta tako da prodaje skupo i kupuje jeftino. Ovo može biti kratkoročno profitabilno, ali može definitivno podriti poverenje u kriptovalutu i možda dovesti do toga da ona bude univerzalno napuštena. Tržišna vrednost valute može biti nezavisna od tehnologije koja se koristi za prenos valute. Na primer, ako pojedinac ili entitet stekne vlasništvo nad većinom US dolara a svetu ili većinom budućeg roda kukuruza na svetu, onda takav pojedinac ili entitet može profitabilno potkopati tržište.
[0112] Napad izvršen skoro monopolskim sticanjem kriptovalute je teži, pošto je kriptovaluta vredna i rasprostranjena. Ako je kriptovaluta vredna, onda će veoma mnogo koštati da se kupi veliki udeo raspoloživih zaliha Stejkoina. Ako je kriptovaluta rasprostranjena, sa mnogo različitih ljudi koji poseduju Stejkoin, ovi pokušaji da se satera u ugao tržište Stejkoina će postati rano vidljivi, što će prirodno podići cenu Stejkoina, čineći još težim zadobijanje preostalih zaliha valute.
[0113] Drugi tip napada može biti izvršen sticanjem iznosa Stejkoina koji bi mogao biti mali u poređenju sa kolektivnim iznosom Stejkoina u mnoštvu sistema sa distribuiranim bazama podataka, ali veliki u poređenju sa iznosom Stejkoina koji poseduju članovi koji učestvuju u specifičnom sistemu sa distribuiranim bazama podataka. Ovaj tip napada se može izbeći kada je kriptovaluta specifično definisana za korišćenje u aplikaciji sistema sa distribuiranim bazama podataka. Drugim rečima, Stejkoin i implementacija sistema sa distribuiranim bazama podataka mogu biti istovremeno definisani tako da budu međusobno povezani i da svaki doprinosi povećanju vrednosti onog drugog. Slično navedenom, ne postoje dodatne implementacije distribuiranih baza podataka koje trguju Stejkoinom.
[0114] Može biti poželjno da se od početka ima vredna kriptovaluta kada se od početka definiše nova implementacija sistema sa distribuiranim bazama podataka. Mada se kriptovaluti tokom vremena može povećati njena vrednost, vredna kriptovaluta može biti korisna u ranim stadijumima sistema. U nekim slučajevima, konzorcijum entiteta učesnika može inicirati kriptovalutu i sistem sa distribuiranim bazama podataka povezan sa njom. Na primer, desetini velikih cenjenih korporacija ili organizacija koje su osnivači može biti potreban značajni iznos Stejkoina da bi se inicirala Stejkoin kriptovaluta i sistem sa distribuiranim bazama podataka. Sistem može biti konfigurisan tako da zaliha kriptovalute neće rasti brzo i imaće neki konačni limit veličine. Svaki osnivački entitet može imati inicijativu da učestvuje kao član u sistemu sa distribuiranim bazama podataka i implementaciji Stejkoina (npr. implementiranom kao sistem sa distribuiranim bazama podataka koji može biti strukturisan kao hashDAG sa konsenzusnim algoritmom). Pošto ne postoji dokaz-o-radu, može biti jeftino da se bude učestvujući član koji upravlja čvorom. Osnivački entiteti mogu biti dovoljno pouzdani da neće biti verovatno da njihov veliki udeo bude u dosluhu da bi podrio sistem, a naročito zbog toga što bi to moglo poništiti vrednost Stejkoina koje oni poseduju i implementiranog sistema sa distribuiranim bazama podataka.
[0115] U nekim implementacijama, drugi članovi se mogu pridružiti sistemu sa distribuiranim bazama podataka i drugi pojedinci ili entiteti mogu kupovati Stejkoin, bilo direktno od osnivačkih entiteta ili putem razmene. Sistem sa distribuiranim bazama podataka može biti konfigurisan da podstakne članove da učestvuju plaćanjem malih iznosa Stejkoina za učešće. Tokom vremena, sistem može postati znatno rasprostranjeniji, pri čemu se ulog konačno rasprostrani, tako da postane teško za bilo kog pojedinca ili entitet da satera tržište u ugao, čak i ako osnivački entiteti postignu dogovor da izvrše napad. U tom trenutku kriptovaluta može dostići nezavisnu vrednost; sistem sa distribuiranim bazama podataka može imati nezavisni nivo bezbednosti; i sistem može biti otvoren bez zahteva za dozvoljavanjem (npr. bez potrebe za pozivom za pridruživanje od strane osnivačkog člana). Shodno tome, uštedu na rekurentnim računarskim troškovima su zahtevali sistemi implementirani sa alternativnim protokolima, na primer, sistemi implementirani sa protokolima dokaza-o-radu.
4
[0116] Mada je gore opisan u vezi sa korišćenjem hashDAG distribuirane baze podataka, za implementaciju Primera sistema 21 se može koristiti bilo koji drugi podesni protokol za distribuiranu bazu podataka. Na primer, dok se specifični primeri brojeva i uloga mogu menjati, Primer sistema 21 se može koristiti za povećanje bezbednosti bilo kog podesnog sistema sa distribuiranim bazama podataka.
[0117] Očekuje se da gore opisani sistemi kreiraju i/ili ostvare efikasan mehanizam konvergencije za distribuirani konsenzus, sa konačnim konsenzusom. Može biti dokazano nekoliko teorema u vezi ovoga, kao što je prikazano u nastavku.
Primer teoreme 1: ako događaj x prethodi događaju y u parcijalnom redosledu, onda će po saznanju datog člana o drugim članovima u datom trenutku, svaki od drugih članova primiti indikaciju x pre y, ili još uvek nije primio indikaciju y.
Dokaz: ako događaj x prethodi događaju y u parcijalnom redosledu, onda je x predak od y. Kada član primi indikaciju y za prvi trenutak, taj član je već primio ranije indikaciju x (u kom slučaju su oni čuli za x pre nego za y) ili će biti slučaj da sinhronizacija obezbedi člana i sa x, i sa y (u kom slučaju će oni čuti za x pre nego za y u toku te sinhronizacije, jer se smatra da su događaji primljeni u toku samo jedne sinhronizacije konzistentni sa odnosima porekla kao što je opisano u vezi Primera sistema 5). QED
Primer teoreme 2: za bilo koji dati hashDAG, ako x prethodi y u parcijalnom redosledu, onda će x prethoditi y u celokupnom redosledu izračunatom za taj hashDAG.
Dokaz: ako x prethodi y u parcijalnom redosledu, onda je prema teoremi 1:
za svako i, rang(i,x) < rang(i,y)
gde je rang(i,x) rang dodeljen od strane člana i to događaju x, koji je 1 ako je x prvi događaj koji je primljen od strane člana i, 2 ako je drugi, i tako dalje. Neka med(x) bude medijanski rang(i,x) za svako i, i slično tome za med(y).
Za dato k, biraju se i1 i i2 tako da je rang(i1,x) k-ti najmanji x rang, i da je rang(i2,y) k-ti najmanji y rang. Onda:
rang(i1,x) < rang(i2,y)
Ovo je zbog toga što je rang(i2,y) veći ili jednak k od y rangova, od kojih je svaki striktno veći od odgovarajućeg x ranga. Zbog toga je rang(i2,y) striktno veći od najmanjeg k od x rangova i time je striktno veći od k-tog najmanjeg x ranga. Ovaj argument važi za bilo koje k.
4
Neka n bude broj članova (koji je broj od i vrednosti). Onda n mora biti neparan ili paran. Ako je n neparan, onda neka je k=(n+1)/2, i k-ti najmanji rang će biti medijana. Zbog toga je med(x) < med(y). Ako je n paran, onda kada je k=n/2, k-ti najmanji x rang će biti striktno manji od k-tog najmanjeg y ranga, a takođe će (k+1)-ti najmanji x rang biti striktno manji od (k+1)-tog najmanjeg y ranga. Tada će srednja vrednost dva x ranga biti manja od srednje vrednosti dva y ranga. Zbog toga je med(x) < med(y). Tada je u oba slučaja, medijana x rangova striktno manja od medijane y rangova. Tada, ako je celokupni redosled definisan sortiranjem akcija medijanskog ranga, onda će x prethoditi y u celokupnom redosledu. QED
Primer teoreme 3: Ako je "period brbljanja" dužina vremena potrebnog da se postojeći događaji prošire putem sinhronizacije do svih članova, onda:
posle 1 perioda brbljanja: svi članovi su primili događaje
posle 2 perioda brbljanja: svi članovi se slažu u vezi redosleda tih događaja
posle 3 perioda brbljanja: svi članovi znaju da je postignut sporazum
posle 4 perioda brbljanja: svi članovi dobijaju digitalne potpise od svih drugih članova, koji potvrđuju ovaj konsenzusni redosled.
[0118] Dokaz: neka S0 bude skup događaja koji su bili kreirani i/ili definisani u datom trenutku T0. Ako se svaki član konačno sinhronizuje sa svakim drugim članom beskonačno često, onda će sa verovatnoćom 1 konačno postojati trenutak T1 u kome su se događaji u S0 proširili do svakog člana, tako da je svaki član svestan svih događaja. To je kraj prvog perioda brbljanja. Neka S1 bude skup događaja koji postoje u trenutku T1 i koji nisu još postojali u T0. Onda će sa verovatnoćom 1 konačno postojati trenutak T2 u kome je svaki član primio svaki događaj u skupu S1, koji su oni koji su postojali u trenutku T1. To je kraj drugog perioda brbljanja. Slično tome, T3 je kada su se svi događaji u S2, koji su postojali u T2, ali ne pre T1, proširili do svih članova. Treba naglasiti da se svaki period brbljanja konačno završava sa verovatnoćom 1. U proseku, svaki će trajati sve dok se izvrši log2(n) sinhronizacija, ako ima n članova.
Do trenutka T1, svaki član će primiti svaki događaj u S0.
4
Do trenutka T2, dati član Alisa će primiti zapis svakog drugog člana koji je primio svaki događaj u S0. Alisa zbog toga može izračunati rang za svaku akciju u S0 za svakog člana (koji je redosled po kome je taj član primio tu akciju), a zatim sortirati događaje po medijani rangova. Rezultujući celokupni redosled se ne menja, za događaje u S0. To je zato što je rezultujući redosled funkcija redosleda u kome je svaki član prvo primio indikaciju svakog od tih događaja, koja se ne menja. Moguće je da će Alisin izračunati redosled imati neke događaje iz S1 uključene među S0 događaje. Ti S1 događaji još uvek mogu promeniti to gde se nalaze unutar sekvence S0 događaja. Ali relativni redosled događaja u S0 se neće menjati.
Do trenutka T3, Alisa će saznati celokupni redosled unije S0 i S1, a relativni redosled događaja u toj uniji se neće menjati. Pored toga, ona može pronaći unutar ove sekvence najraniji događaj iz S1 i može zaključiti da se sekvenca događaja pre S1 neće menjati, čak ni ubacivanjem novih događaji izvan S0. Zbog toga, do trenutka T3, Alisa može utvrditi da je postignut konsenzus u vezi redosleda događaja u istoriji pre prvog S1 događaja. Ona može digitalno potpisati heš stanja (npr. snimljen promenljivom stanja baze podataka definisanom od strane Alise) koji rezultuje iz ovih događaja koji se dešavaju po ovom redosledu i poslati potpis kao deo sledećeg događaja koji ona kreira i/ili definiše.
Do trenutka T4, Alisa će primiti slične potpise od drugih članova. U tom trenutku ona jednostavno čuva ovu listu potpisa zajedno sa stanjem koje oni verifikuju i ona može da odbaci događaje koje je ona čuvala pre prvog S1 događaja. QED
[0119] Ovde opisani sistemi opisuju distribuiranu bazu podataka koja postiže konsenzus brzo i bezbedno. Ovo može biti korisno za formiranje bloka za mnoge aplikacije. Na primer, ako transakcije opisuju transfer kriptovalute iz jednog novčanika za kriptovalutu u drugi i ako je stanje jednostavno izvod aktuelnog iznosa u svakom novčaniku, onda će ovaj sistem sačinjavati sistem kriptovalute koji izbegava skupi dokaz-o-radu u postojećim sistemima. Automatsko pravilo sprovođenja omogućava da se ovome dodaju karakteristike koje nisu zajedničke za aktuelne kriptovalute. Na primer, mogu se povratiti izgubljeni novčići, izbeći deflacija, sprovođenjem pravila da ako novčanik ne šalje, niti prima kriptovalutu tokom izvesnog vremenskog perioda, onda se taj novčanik briše, a njegova vrednost raspodeljuje drugim, postojećim novčanicima, proporcionalno iznosu koji trenutno sadrže. Na taj način zaliha novca se ne bi povećavala ili smanjivala, čak i ako je privatni ključ za novčanik izgubljen.
4
[0120] Sledeći primer je distribuirana igra, koja radi kao Masovna onlajn igra za više igrača (engl. Massively Multiplayer Online, skr. MMO) koja se igra na serveru, ali to ostvaruje bez korišćenja centralnog servera. Konsenzus se može ostvariti bez bilo kakvog centralnog servera koji ima kontrolu.
[0121] Sledeći primer je sistem društvenih medija koji je zasnovan na takvoj bazi podataka. Pošto su transakcije digitalno potpisane i članovi primaju informacije o drugim članovima, ovo obezbeđuje prednosti bezbednosti i podesnosti u odnosu na aktuelne sisteme. Na primer, može biti primenjen i-mejl sistem sa jakom anti-spam politikom, jer i-mejlovi ne bi imali krivotvorene povratne adrese. Takav sistem bi takođe postao unifikovani društveni sistem, koji bi kombinovao u jednoj jedinoj, distribuiranoj bazi podataka funkcije koje sada izvršavaju i-mejl, tvitovi, tekstovi, forumi, vikiji i/ili drugi društveni mediji.
[0122] Druge aplikacije mogu sadržati sofisticiranije kriptografske funkcije, kao što je grupa digitalnih potpisa, u kojoj grupa kao celina sarađuje da bi potpisala ugovor ili dokument. Ova i druge forme izračunavanja od strane mnoštva učesnika mogu biti korisno implementirane korišćenjem takvog distribuiranog konsenzusnog sistema.
[0123] Sledeći primer je sistem javnog registra. Svako može platiti da bi memorisao neke informacije u sistemu, plaćanjem malog iznosa kriptovalute (ili valute iz realnog sveta) po bajtu godišnje da bi memorisao informacije u sistemu. Ovi fondovi onda mogu biti automatski raspodeljeni članovima koji memorišu te podatke, a to su članovi koji mnogo puta vrše sinhronizaciju da bi radili na tome da ostvare konsenzus. On može automatski preneti članovima mali iznos kriptovalute svaki put kada se oni sinhronizuju.
[0124] Ovi primeri pokazuju da je distribuirana konsenzusna baza podataka korisna kao komponenta mnogih aplikacija. Pošto baza podataka ne koristi skupi dokaz-o-radu, već umesto toga može koristiti jeftiniji dokaz-o-ulogu, baza podataka može raditi uz rad celih čvorova na manjim kompjuterima ili čak mobilnim i ugrađenim uređajima.
[0125] Dok je gore opisan kao događaj koji sadrži heš dva prethodna događaja (jedan sopstveni heš i jedan strani heš), u drugim primerima izvođenja, član se može sinhronizovati sa dva druga člana da bi kreirao i/ili definisao događaj koji sadrži hešove tri prethodna događaji (jedan sopstveni heš i dva strana heša). U još nekim drugim primerima izvođenja, hešovi bilo kog broja događaja od prethodnih događaja od bilo kog broja članova mogu biti uključeni unutar događaja. U nekim primerima izvođenja, različiti događaji mogu sadržati različite brojeve hešova prethodnih događaja. Na primer, prvi događaj može sadržati hešove dva događaja, a drugi događaj može sadržati hešove tri događaja.
4
[0126] Dok su događaji gore opisani tako kao da sadrže hešove (ili kriptografske heš vrednosti) prethodnih događaja, u drugim primerima izvođenja, događaj može biti kreiran i/ili definisan tako da sadrži pokazivač, identifikator i/ili bilo koju drugu podesnu referencu na prethodne događaje. Na primer, događaj može biti kreiran i/ili definisan tako da sadrži serijski broj koji je pridružen prethodnom događaju i koristi se za njegovu identifikaciju, čime se ti događaji povezuju. U nekim primerima izvođenja, takav serijski broj može sadržati, na primer, identifikator (npr. adresu kontrole pristupa medijima (engl. media access control, skr. MAC), adresu Internet Protokola (IP), dodeljenu adresu i/ili slično) pridružen članu koji je kreirao i/ili definisao događaj i redosled događaja koji je definisao taj član. Na primer, član ima identifikator 10 i događaju koji je 15-ti događaj kreiran i/ili definisan od strane tog člana može biti dodeljen identifikator 1015 za taj događaj. U drugim primerima izvođenja, može biti korišćen bilo koji drugi podesni format za dodeljivanje identifikatora događajima.
[0127] U drugim primerima izvođenja, događaji mogu sadržati kompletne kriptografske hešove, ali samo delovi tih hešova se prenose u toku sinhronizacije. Na primer, ako Alisa šalje Bobu događaj koji sadrži heš H i J su prva 3 bajta H i Alisa utvrđuje da je od događaja i hešova koje je ona memorisala, H jedini heš koji počinje sa J, onda ona može poslati J umesto H u toku sinhronizacije. Ako Bob onda utvrdi da on ima drugi heš koji počinje sa J, onda on može odgovoriti Alisi zahtevom za kompletnim H. Na taj način se hešovi mogu komprimovati u toku prenošenja.
[0128] Dok su primeri sistema koji su prikazani i opisani gore opisani sa pozivom na druge sisteme, u drugim primerima izvođenja bilo koja kombinacija primera sistema i njima pridruženih funkcionalnosti može biti implementirana za kreiranje i/ili definisane distribuirane baze podataka. Na primer, Primer sistema 1, Primer sistema 2, i Primer sistema 3 se mogu kombinovati radi kreiranja i/ili definisanja distribuirane baze podataka. U sledećem primeru, u nekim primerima izvođenja, Primer sistema 10 može biti implementiran sa Primerom sistema 1, ali bez Primera sistema 9. U još jednom drugom primeru, Primer sistema 7 može biti kombinovan i implementiran sa Primerom sistema 6. U još nekim drugim primerima izvođenja, mogu biti implementirane bilo koje druge podesne kombinacije primera sistema.
[0129] Dok su gore opisane kao razmenjuju događaje da bi se dobila konvergencija, u drugim primerima izvođenja, instance distribuiranih baza podataka mogu razmenjivati vrednosti i/ili vektore vrednosti da bi se dobila konvergencija kao što je opisano u vezi Slika 8-13. Specifično, na primer, Slika 8 prikazuje tok informacija između prvog računarskog uređaja 400 iz sistema sa distribuiranim bazama podataka (npr. sistema 100 sa distribuiranim bazama podataka) i drugog računarskog uređaja 500 iz sistema sa distribuiranim bazama podataka (npr. sistema 100 sa distribuiranim bazama podataka), prema jednom primeru izvođenja. U nekim primerima izvođenja, računarski uređaji 400, 500 mogu biti strukturno i/ili funkcionalno slični računarskom uređaju 200 prikazanom na Slici 2. U nekim primerima izvođenja, računarski uređaj 400 i računarski uređaj 500 međusobno komuniciraju na sličan način kao što računarski uređaji 110, 120, 130, 140 međusobno komuniciraju unutar sistema 100 sa distribuiranim bazama podataka, koji je prikazan i opisan u vezi Slike 1.
[0130] Slično računarskom uređaju 200, koji je opisan u vezi Slike 2, svaki računarski uređaj 400, 500 može inicijalno definisati vektor vrednosti za parametar, ažurirati vektor vrednosti, izabrati vrednost parametra na bazi definisanog i/ili ažuriranog vektora vrednosti za parametar, i memorisati (1) definisani i/ili ažurirani vektor vrednosti parametra i/ili (2) izabranu vrednost parametra na bazi definisanog i/ili ažuriranog vektora vrednosti za parametar. Svaki od računarskih uređaja 400, 500 može inicijalno definisati vektor vrednosti parametra proizvoljan broj puta. Na primer, svaki od računarskih uređaja 400, 500 može inicijalno definisati vektor vrednosti parametra podešavanjem da svaka vrednost vektora vrednosti bude jednaka vrednosti koja je inicijalno memorisana u instancama 403, 503 distribuiranih baza podataka, respektivno. U sledećem primeru, svaki od računarskih uređaja 400, 500 može inicijalno definisati vektor vrednosti parametra podešavanjem da svaka vrednost vektora vrednosti bude jednaka slučajnoj vrednosti. Kako vektor vrednosti parametra treba da bude inicijalno definisan, onda on može biti izabran, na primer, od strane administratora sistema sa distribuiranim bazama podataka kojima pripadaju računarski uređaji 400, 500 ili pojedinačno ili kolektivno od strane korisnika računarskih uređaja (npr. računarskih uređaja 400, 500) sistema sa distribuiranim bazama podataka.
[0131] Svaki računarski uređaj 400, 500 takođe može memorisati vektor vrednosti parametra i/ili izabranu vrednost parametra u instancama 403, 503 distribuiranih baza podataka, respektivno. Svaka instanca 403, 503 distribuiranih baza podataka može biti implementirana u memoriji (nije prikazana na Slici 8) sličnoj memoriji 220, prikazanoj na Slici 2.
[0132] U koraku 1, računarski uređaj 400 zahteva od računarskog uređaja 500 vrednost parametra memorisanu u instanci 503 distribuirane baze podataka računarskog uređaja 500 (npr. vrednost memorisanu u specifičnom polju instance 503 distribuirane baze podataka). U nekim primerima izvođenja, računarski uređaj 500 može biti izabran od strane računarskog uređaja 400 iz skupa računarskih uređaja koji pripadaju sistemu sa distribuiranim bazama podataka. Računarski uređaj 500 može biti izabran slučajno, može biti izabran na bazi odnosa sa računarskim uređajem 400, na bazi blizine računarskom uređaju 400, može biti izabran na bazi zadate liste pridružene računarskom uređaju 400, i/ili sličnog. U nekim primerima izvođenja,
1
zato računarski uređaj 500 može izabrati računarski uređaj 400 iz skupa računarskih uređaja koji pripadaju sistemu sa distribuiranim bazama podataka, računarski uređaj 400 može izabrati računarski uređaj 500 više puta u nizu ili neko vreme ne sme da izabere računarski uređaj 500. U drugim primerima izvođenja, indikacija prethodno izabranog računarskog uređaja može biti memorisana u računarskom uređaju 400. U takvim primerima izvođenja, računarski uređaj 400 može čekati tokom prethodno određenog broja izbora pre nego što bude mogao da ponovo izabere računarski uređaj 500. Kao što je gore objašnjeno, instanca 503 distribuirane baze podataka može biti implementirana u memoriju računarskog uređaja 500.
[0133] U nekim primerima izvođenja, zahtev od računarskog uređaja 400 može biti signal poslat od strane komunikacionog modula računarskog uređaja 400 (nije prikazan na Slici 8). Ovaj signal može biti prenet preko mreže, kao što je mreža 105 (prikazana na Slici 1), i primljen od strane komunikacionog modula računarskog uređaja 500. U nekim primerima izvođenja, svaki od komunikacionih modula računarskih uređaja 400, 500 može biti implementiran unutar procesora ili memorije. Na primer, komunikacioni moduli računarskih uređaja 400, 500 mogu biti slični komunikacionom modulu 212 prikazanom na Slici 2.
[0134] Posle prijema, od računarskog uređaja 400, zahteva za vrednost parametra memorisanog u instanci 503 distribuirane baze podataka, računarski uređaj 500 šalje vrednost parametra memorisanog u instanci 503 distribuirane baze podataka računarskom uređaju 400 u koraku 2. U nekim primerima izvođenja, računarski uređaj 500 može preuzeti vrednost parametra iz memorije i poslati tu vrednost kao signal preko komunikacionog modula računarskog uređaja 500 (nije prikazan na Slici 8). U nekim slučajevima, ako instanca 503 distribuirane baze podataka već ne sadrži vrednost parametra (npr. transakcija još uvek nije definisana u instanci 503 distribuirane baze podataka), instanca 503 distribuirane baze podataka može zatražiti vrednost parametra od računarskog uređaja 403 (ako već nije pribavljena u koraku 1) i memorisati tu vrednost parametra u instanci 503 distribuirane baze podataka. U nekim primerima izvođenja, računarski uređaj 400 će onda koristiti ovu vrednost kao vrednost parametra u instanci 503 distribuirane baze podataka.
[0135] U koraku 3, računarski uređaj 400 šalje računarskom uređaju 500 vrednost parametra memorisanu u instanci 403 distribuirane baze podataka. U drugim primerima izvođenja, vrednost parametra memorisana u instanci 403 distribuirane baze podataka (korak 1) i zahtev za vrednost istog parametra memorisanu u instanci 503 distribuirane baze podataka (korak 3) mogu biti poslate kao samo jedan signal. U drugim primerima izvođenja, vrednost parametra memorisana u instanci 403 distribuirane baze podataka može biti poslata u različitom signalu od signala za zahtev za vrednost parametra memorisanu u instanci 503 distribuirane baze podataka. U
2
primerima izvođenja gde je vrednost parametra memorisana u instanci 403 distribuirane baze podataka šalje se signal koji je različit od signala za zahtev za vrednost parametra memorisanog u instanci 503 distribuirane baze podataka, a vrednost parametra je memorisana u instanci 403 distribuirane baze podataka, dva signala mogu biti poslata po bilo kom redosledu. Drugim rečima, bilo koji signal može biti poslat pre onog drugog.
[0136] Pošto računarski uređaj 400 primi vrednost parametra poslatu od strane računarskog uređaja 500 i/ili računarski uređaj 500 primi vrednost parametra poslatu od strane računarskog uređaja 400, u nekim primerima izvođenja, računarski uređaj 400 i/ili računarski uređaj 500 mogu ažurirati vektor vrednosti memorisan u instanci 403 distribuirane baze podataka i/ili vektor vrednosti memorisan u instanci 503 distribuirane baze podataka, respektivno. Na primer, računarski uređaji 400, 500 mogu ažurirati vektor vrednosti memorisan u instancama 403, 503 distribuiranih baza podataka tako da sadrže vrednost parametra primljenu od strane računarskih uređaja 400, 500, respektivno. Računarski uređaji 400, 500 takođe mogu ažurirati vrednost parametra memorisanu u instanci 403 distribuirane baze podataka i/ili vrednost parametra memorisanu u instanci 503 distribuirane baze podataka, respektivno, na bazi ažuriranog vektora vrednosti memorisanog u instanci 403 distribuirane baze podataka i/ili ažuriranog vektora vrednosti memorisanog u instanci 503 distribuirane baze podataka, respektivno.
[0137] Mada su koraci obeleženi 1, 2 i 3 na Slici 8 i u gornjem razmatranju, trebalo bi shvatiti da koraci 1, 2 i 3 mogu biti izvedeni po bilo kom redosledu. Na primer, korak 3 može biti izvršen pre koraka 1 i 2. Pored toga, komunikacija između računarskog uređaja 400 i 500 nije ograničena na korake 1, 2 i 3 prikazane na Slici 3, kao što je ovde detaljno opisano. Pored toga, pošto se završe koraci 1, 2 i 3, računarski uređaj 400 može izabrati bilo koji drugi računarski uređaj iz skupa računarskih uređaja unutar sistema sa distribuiranim bazama podataka sa kojim razmenjuje vrednosti (slično koracima 1, 2 i 3).
[0138] U nekim primerima izvođenja, podaci koji su preneti između računarskih uređaja 400, 500 mogu sadržati komprimovane podatke, kriptovane podatke, digitalne potpise, kriptografske kontrolne sume i/ili slično. Pored toga, svaki od računarskih uređaja 400, 500 može slati podatke drugom računarskom uređaju da bi potvrdio prijem podataka poslatih od strane drugog uređaja. Svaki od računarskih uređaja 400, 500 takođe može ignorisati podatke koji su više puta poslati od strane drugog uređaja.
[0139] Svaki od računarskih uređaja 400, 500 može inicijalno definisati vektor vrednosti parametra i memorisati ovaj vektor vrednosti parametra u instancama 403, 503 distribuiranih baza podataka, respektivno. Slike 9a-9c ilustruju primere vektora vrednosti parametra. Vektor može biti bilo koji skup vrednosti parametra (npr. jednodimenzionalni niz vrednosti parametra, niz vrednosti od kojih svaki ima više delova, itd.). Tri primera vektora su prikazana na Slikama 9a-9c za svrhe ilustracije. Kao što je prikazano, svaki od vektora 410, 420, 430 ima pet vrednosti za specifični parametar. Međutim, trebalo bi shvatiti da vektor vrednosti može imati bilo koji broj vrednosti. U nekim slučajevima, broj vrednosti uključen u vektor vrednosti može biti skup korisnika, situacija, slučajni, itd.
[0140] Parametar može biti proizvoljni objekt sa podacima koji može uzimati različite vrednosti. Na primer, parametar može biti binarni glas, u kome vrednost glasa može biti "DA" ili "NE" (ili binarna "1" ili "0"). Kao što je prikazano na Slici 9a, vektor vrednosti 410 je vektor koji ima pet binarnih glasova, sa vrednostima 411, 412, 413, 414, 415 koje su "DA", "NE", "NE", "DA", i "DA", respektivno. U sledećem primeru, parametar može biti skup elemenata podataka. Slika 9b prikazuje primer gde je parametar skup slova azbuke. Kao što je prikazano, vektor vrednosti 420 ima pet skupova od po četiri slova azbuke, sa vrednostima 421, 422, 423, 424, 425 koje su {A, B, C, D}, {A, B, C, E}, {A, B, C, F}, {A, B, F, G} i {A, B, G, H}, respektivno. U još jednom drugom primeru, parametar može biti skup koji je rangiran i/ili uređeni skup elemenata podataka. Slika 9c prikazuje jedan primer gde je parametar rangirani skup osoba. Kao što je prikazano, vektor vrednosti 430 ima pet rangiranih skupova od po šest osoba, sa vrednostima 431, 432, 433, 434, 435 koje su
(1. Alisa, 2. Bob, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk),
(1. Bob, 2. Alisa, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk),
(1. Bob, 2. Alisa, 3. Kerol, 4. Dejv, 5. Frenk, 6. Ed),
(1. Alisa, 2. Bob, 3. Kerol, 4. Ed, 5. Dejv, 6. Frenk), i
(1. Alisa, 2. Bob, 3. Ed, 4. Kerol, 5. Dejv, 6. Frenk),
respektivno.
[0141] Posle definisanja vektora vrednosti parametra, svaki od računarskih uređaja 400, 500 može izabrati vrednost parametra na bazi vektora vrednosti parametra. Ova selekcija se može izvršiti bilo kojim postupkom i/ili procesom (npr. pravilom ili skupom pravila). Na primer, selekcija se može izvršiti prema "pravilima većine", gde se bira da vrednost parametra bude vrednost koja se pojavljuje u više od 50% vrednosti sadržanih u vektoru. Da to ilustrujemo,
4
vektor vrednosti 410 (prikazan na Slici 9a) sadrži tri "DA" vrednosti i dve "NE" vrednosti. Prema "pravilima većine", vrednost izabranog parametra na bazi vektora vrednosti bila bi "DA", jer se "DA" pojavljuje u više od 50% vrednosti 411, 412, 413, 414, 415 (vektora vrednosti 410).
[0142] U sledećem primeru, selekcija se vrši prema "pojavi većine", gde se vrednost parametra bira tako da bude skup elemenata podataka, pri čemu je svaki element podataka koji se pojavljuje u više od 50% vrednosti uključen u vektor. Da to ilustrujemo korišćenjem Slike 9b, elementi podataka "A", "B" i "C" se pojavljuju u više od 50% vrednosti 421, 422, 423, 424, 425 vektora vrednosti 420. Pod "pojavom većine" bi vrednost izabranog parametra na bazi vektora vrednosti bila {A, B, C}, jer se samo ovi elementi podataka (tj. "A", "B" i "C") pojavljuju u tri od pet vrednosti vektora vrednosti 420.
[0143] U još jednom drugom primeru, selekcija može biti izvršena prema "rangu po medijani", gde se vrednost parametra bira tako da bude rangirani skup elemenata podataka (npr. karakterističnih vrednosti podataka unutar vrednosti vektora vrednosti), pri čemu je rang svakog elementa podataka jednak medijanskom rangu tih elemenata podataka u odnosu na sve vrednosti uključene u vektor. Da to ilustrujemo, dole je izračunat medijanski rang svakog elementa podataka na Slici 9c:
Alisa: (1, 2, 2, 1, 1); medijanski rang = 1;
Bob: (2, 1, 1, 2, 2); medijanski rang = 2;
Kerol: (3, 3, 3, 3, 4); medijanski rang = 3;
Dejv: (4, 4, 4, 5, 5); medijanski rang = 4;
Ed: (5, 5, 6, 4, 3); medijanski rang = 5;
Frenk: (6, 6, 5, 6, 6); medijanski rang = 6.
[0144] Shodno tome, po "rangu po medijani" vrednost rangiranog skupa elemenata podataka izračunata na bazi vektora vrednosti 430 bi bila (1. Alisa, 2. Bob, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk). U nekim primerima izvođenja, ako dva ili više elemenata podataka imaju istu medijanu (npr. nerešeno), redosled se može odrediti bilo kojim podesnim postupkom (npr. slučajno, prvom indikacijom ranga, poslednjom indikacijom ranga, po azbučnom redosledu i/ili numeričkom, itd.).
[0145] Kao dodatni primer, selekcija se može izvršiti prema "Kemeny Young glasanju", gde se vrednost parametra bira tako da bude rangirani skup elemenata podataka, pri čemu je rang izračunat tako da minimizira vrednost troškova. Na primer, Alisa se rangira pre Boba u vektorima vrednosti 431, 434, 435, za ukupno tri od pet vektora vrednosti. Bob se rangira pre Alise u vektorima vrednosti 432 i 433, za ukupno dva od pet vektora vrednosti. Vrednost troškova za rangiranje Alise pre Boba je 2/5, a vrednost troškova za rangiranje Boba pre Alise je 3/5. Shodno tome, vrednost troškova za Alisu pre Boba je manja i Alisa će biti rangirana pre Boba prema "Kemeny Young glasanju".
[0146] Podrazumeva se da su "pravila većine", "pojava većine", "rang po medijani" i "Kemeny Young glasanje" razmotreni kao primeri postupaka i/ili procesa koji bi se mogli koristiti za izbor vrednosti parametra na bazi vektor vrednosti parametra. Bilo koji drugi postupak i/ili proces se takođe može koristiti. Na primer, može biti izabrana vrednost parametra koja se pojavljuje u više od x% vrednosti uključenih u vektor, gde x% može biti bilo koji procenat (tj. nije ograničen na 50% koji se koriste u "pravilima većine"). Procenat (tj. x%) takođe može varirati između selekcija koje se izvode u različitim trenucima, na primer, u vezi sa vrednosti poverenja (ovde detaljno razmotrena).
[0147] U nekim primerima izvođenja, pošto računarski uređaj može slučajno da bira druge računarske uređaje sa kojima razmenjuje vrednosti, vektor vrednosti računarskog uređaja može u jednom trenutku sadržati više vrednosti iz drugog pojedinačnog računarskog uređaja. Na primer, ako je veličina vektora pet, računarski uređaj može imati slučajno izabran drugi računarski uređaj dva puta unutar pet poslednjih iteracija razmene vrednosti. Shodno tome, vrednost memorisana u instanci distribuirane baze podataka drugog računarskog uređaja bi bila uključena dva puta u vektor od pet vrednosti za računarski uređaj koji vrši zahtev.
[0148] Slike 10a-10d zajedno ilustruju, kao primer, kako vektor vrednosti može biti ažuriran dok jedan računarski uređaj komunicira sa drugim računarskim uređajem. Na primer, računarski uređaj 400 može inicijalno definisati vektor vrednosti 510. U nekim primerima izvođenja, vektor vrednosti 510 može biti definisan na bazi vrednosti parametra memorisanoj u instanci 403 distribuirane baze podataka na računarskom uređaju 400. Na primer, kada je prvo definisan vektor vrednosti 510, svaka vrednost vektora vrednosti 510 (tj. svaka od vrednosti 511, 512, 513, 514, 515) može biti skup jednak vrednosti parametra memorisanoj u instanci 403 distribuirane baze podataka. Da to ilustrujemo, ako je vrednost parametra memorisana u instanci 403 distribuirane baze podataka, u trenutku kada se definiše vektor vrednosti 510, "DA", onda bi svaka vrednost vektora vrednosti 510 (tj. svaka od vrednosti 511, 512, 513, 514, 515) trebala da bude skup "DA" kao što je prikazano na Slici 10a. Kada računarski uređaj 400 prima vrednost parametra memorisanu u instanci distribuirane baze podataka drugog računarskog uređaja (npr. instanci 504 distribuirane baze podataka računarskog uređaja 500), računarski uređaj 400 može ažurirati vektor vrednosti 510 tako da uključi vrednost parametra memorisanu u instanci 504 distribuirane baze podataka. U nekim slučajevima, vektor vrednosti 510 može biti ažuriran prema Prvi unutra, Prvi napolje (FIFO). Na primer, ako računarski uređaj 400 primi vrednost 516 ("DA"), računarski uređaj 400 može dodati vrednost 516 vektoru vrednosti 510 i izbrisati vrednost 511 iz vektora vrednosti 510 da bi definisao vektor vrednosti 520, kao što je prikazano na Slici 10b. Na primer, ako u poslednjem trenutku računarski uređaj primi vrednosti 517, 518, onda računarski uređaj 400 može dodati vrednosti 517, 518 vektoru vrednosti 510 i izbrisati vrednosti 512, 513, respektivno, iz vektora vrednosti 510, da bi definisao vektor vrednosti 530, 540, respektivno. U narednim slučajevima, vektor vrednosti 510 može biti ažuriran prema šemama drugačijim od Prvi ulazi, Prvi izlazi, kao što je Poslednji ulazi, Prvi izlazi (LIFO).
[0149] Pošto računarski uređaj 400 ažurira vektor vrednosti 510 da bi definisao vektore vrednosti 520, 530 i/ili 540, računarski uređaj 400 može izabrati vrednost parametra na bazi vektora vrednosti 520, 530, i/ili 540. Ova selekcija se može izvršiti prema bilo kom postupku i/ili procesu (npr. pravilu ili skupu pravila), kao što je razmotreno gore u vezi Slika 9a-9c.
[0150] U nekim slučajevima, računarski uređaji 400, 500 mogu pripadati sistemu sa distribuiranim bazama podataka koji memoriše informacije koje se odnose na transakcije koje uključuju finansijske instrumente. Na primer, svaki od računarskih uređaja 400, 500 može memorisati binarni glas (primer "vrednosti") o tome da li je specifična roba na raspolaganju za kupovinu (primer "parametra"). Na primer, instanca 403 distribuirane baze podataka računarskog uređaja 400 može memorisati vrednost "DA", koja ukazuje da je specifična roba zaista raspoloživa za kupovinu. Instanca 503 distribuirane baze podataka računarskog uređaja 500, sa druge strane, može memorisati vrednost "NE", koja ukazuje da specifična roba nije na raspolaganju za kupovinu. U nekim slučajevima, računarski uređaj 400 može inicijalno definisati vektor binarnih glasova na bazi binarnog glasa memorisanog u instanci 403 distribuirane baze podataka. Na primer, računarski uređaj 400 može postaviti svaki binarni glas unutar vektora binarnih glasova tako da bude jednak binarnom glasu memorisanom u instanci 403 distribuirane baze podataka. U ovom slučaju, računarski uređaj 400 može definisati vektor binarnih glasova sličan vektoru vrednosti 510. U nekom kasnijem trenutku, računarski uređaj 400 može komunicirati sa računarskim uređajem 500, zahtevajući da računarski uređaj 500 pošalje svoj binarni glas o tome da li je specifična roba na raspolaganju za kupovinu. Kada računarski uređaj 400 jednom primi binarni glas računarskog uređaja 500 (u ovom primeru, "NE", što ukazuje da specifična roba nije na raspolaganju za kupovinu), računarski uređaj 400 može ažurirati svoj vektor binarnih glasova. Na primer, ažurirani vektor binarnih glasova može biti sličan vektoru vrednosti 520. Ovo se može događati neograničeno, sve dok vrednost poverenja ne zadovolji prethodno određeni kriterijum (ovde je detaljno opisano u nastavku), periodično i/ili slično.
[0151] Slika 11 prikazuje algoritam 10 koji prikazuje korake koje izvodi računarski uređaj 110 unutar sistema 100 sa distribuiranim bazama podataka, prema jednom primeru izvođenja. U koraku 11, računarski uređaj 110 definiše vektor vrednosti parametra na bazi vrednosti parametra memorisane u instanci 113 distribuirane baze podataka. U nekim primerima izvođenja, računarski uređaj 110 može definisati vektor vrednosti parametra na bazi vrednosti parametra memorisane u instanci 113 distribuirane baze podataka. U koraku 12, računarski uređaj 110 bira drugi računarski uređaj unutar sistema sa distribuiranim bazama podataka 110 i zahteva od izabranog računarskog uređaja vrednost parametra memorisanu u instanci distribuirane baze podataka izabranog računarskog uređaja. Na primer, računarski uređaj 110 može slučajno izabrati računarski uređaj 120 između računarskih uređaja 120, 130, 140, i zahtevati od računarskog uređaja 120 vrednost parametra memorisanu u instanci 123 distribuirane baze podataka. U koraku 13, računarski uređaj 110 (1) prima, od izabranog računarskog uređaja (npr. računarskog uređaja 120), vrednost parametra memorisanu u instanci distribuirane baze podataka izabranog računarskog uređaja (npr. instanci 123 distribuirane baze podataka) i (2) šalje, izabranom računarskom uređaju (npr. računarskom uređaju 120), vrednost parametra memorisanu u instanci 113 distribuirane baze podataka. U koraku 14, računarski uređaj 110 memoriše vrednost parametra primljenu od izabranog računarskog uređaja (npr. računarskog uređaja 120) u vektoru vrednosti parametra. U koraku 15, računarski uređaj 110 bira vrednost parametra na bazi vektora vrednosti parametra. Ovaj izbor se može izvršiti u skladu sa bilo kojim postupkom i/ili procesom (npr. pravilom ili skupom pravila), kao što je gore razmotreno u vezi Slika 9a-9c. U nekim primerima izvođenja, računarski uređaj 110 može ponoviti izbor vrednosti parametra u različitim trenucima. Računarski uređaj 110 takođe može ponavljati ciklus od koraka 12 do 14 između svakog izbora vrednosti parametra.
[0152] U nekim slučajevima, sistem 100 sa distribuiranim bazama podataka može memorisati informacije koje se odnose na transakcije unutar masovne igre za više igrača (engl. Massively Multiplayer Game, skr. MMG). Na primer, svaki računarski uređaj koji pripada sistemu 100 sa distribuiranim bazama podataka može memorisati rangirani skup igrača (primer "vrednosti") po redosledu po kome je specifični predmet bio posedovan (primer "parametra"). Na primer, instanca 114 distribuirane baze podataka računarskog uređaja 110 može memorisati rangirani skup igrača (1. Alisa, 2. Bob, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk), sličan vrednosti 431, koji ukazuje da je posedovanje specifičnog predmeta počelo sa Alisom, pa je onda prešlo na Boba, pa je onda prešlo na Kerol, pa je onda prešlo na Dejva, pa je onda prešlo na Eda, i konačno je prešlo na Frenka. Instanca 124 distribuirane baze podataka računarskog uređaja 120 može memorisati vrednost rangiranog skupa igrača sličnu vrednosti 432: (1. Bob, 2. Alisa, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk); instanca 134 distribuirane baze podataka računarskog uređaja 130 može memorisati vrednost rangiranog skupa igrača sličnu vrednosti 433: (1. Bob, 2. Alisa, 3. Kerol, 4. Dejv, 5. Frenk, 6. Ed); instanca 144 distribuirane baze podataka računarskog uređaja 140 može memorisati vrednost rangiranog skupa igrača sličnu vrednosti 434: (1. Alisa, 2. Bob, 3. Kerol, 4. Ed, 5. Dejv, 6. Frenk); instanca distribuirane baze podataka petog računarskog uređaja (nije prikazan na Slici 1) može memorisati vrednost rangiranog skupa igrača sličnu vrednosti 435: (1. Alisa, 2. Bob, 3. Ed, 4. Kerol, 5. Dejv, 6. Frenk).
[0153] Pošto računarski uređaj 110 definiše vektor rangiranog skupa igrača, računarski uređaj može primiti vrednosti rangiranih skupova igrača od drugih računarskih uređaja sistema 100 sa distribuiranim bazama podataka. Na primer, računarski uređaj 110 može primiti (1. Bob, 2. Alisa, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk) od računarskog uređaja 120; (1. Bob, 2. Alisa, 3. Kerol, 4. Dejv, 5. Frenk, 6. Ed) od računarskog uređaja 130; (1. Alisa, 2. Bob, 3. Kerol, 4. Ed, 5. Dejv, 6. Frenk) od računarskog uređaja 140; i (1. Alisa, 2. Bob, 3. Ed, 4. Kerol, 5. Dejv, 6. Frenk) od petog računarskog uređaja (nije prikazan na Slici 1). Pošto računarski uređaj 110 primi vrednosti rangiranih skupova igrača od drugih računarskih uređaja, računarski uređaj 110 može ažurirati svoj vektor rangiranih skupova igrača tako da uključi vrednosti rangiranih skupova igrača primljenih od drugih računarskih uređaja. Na primer, vektor rangiranih skupova igrača memorisan u instanci 114 distribuirane baze podataka računarskog uređaja 110, posle prijema vrednosti rangiranih skupova koji su gore navedeni, može biti ažuriran tako da bude sličan vektoru vrednosti 430. Pošto se vektor rangiranih skupova igrača ažurira tako da bude sličan vektoru vrednosti 430, računarski uređaj 110 može izabrati rangirani skup igrača na bazi vektora rangiranih skupova igrača. Na primer, izbor se može izvršiti prema "rangu po medijani", kao što je razmotreno gore u vezi sa Slikama 9a-9c. Po "rangu po medijani", računarski uređaj 110 bi izabrao (1. Alisa, 2. Bob, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk) na bazi vektora rangiranih skupova igrača sličnog vektoru vrednosti 430.
[0154] U nekim slučajevima, računarski uređaj 110 ne prima celu vrednost od drugog računarskog uređaja. U nekim slučajevima, računarski uređaj 110 može primiti identifikator pridružen delovima cele vrednosti (takođe se naziva kompozitna vrednost), kao što je kriptografska heš vrednost, umesto samih delova. Da bi smo to ilustrovali, računarski uređaj 110, u nekim slučajevima, ne prima (1. Alisa, 2. Bob, 3. Kerol, 4. Ed, 5. Dejv, 6. Frenk), celu vrednost 434, od računarskog uređaja 140, već prima samo (4. Ed, 5. Dejv, 6. Frenk) od računarskog uređaja 140. Drugim rečima, računarski uređaj 110 ne prima od računarskog uređaja 140 (1. Alisa, 2. Bob, 3. Kerol), izvesne delove vrednosti 434. Umesto toga, računarski uređaj 110 može primiti od računarskog uređaja 140 kriptografsku heš vrednost pridruženu ovim delovima vrednosti 434, tj. (1. Alisa, 2. Bob, 3. Kerol).
[0155] Kriptografska heš vrednost unikatno predstavlja delove vrednosti kojima je pridružena. Na primer, kriptografski heš koji predstavlja (1. Alisa, 2. Bob, 3. Kerol) će biti različit od kriptografskih hešova koji predstavljaju:
(1. Alisa);
(2. Bob);
(3. Kerol);
(1. Alisa, 2. Bob);
(2. Bob, 3. Kerol);
(1. Bob, 2. Alisa, 3. Kerol);
(1. Kerol, 2. Bob, 3. Alisa);
itd.
[0156] Pošto računarski uređaj 110 primi od računarskog uređaja 140 kriptografsku heš vrednost pridruženu izvesnim delovima vrednosti 434, računarski uređaj 110 može (1) generisati kriptografsku heš vrednost korišćenjem istih delova vrednosti 431 memorisanih u instanci 113 distribuirane baze podataka i (2) uporediti generisanu kriptografsku heš vrednost sa primljenom kriptografskom heš vrednosti.
[0157] Na primer, računarski uređaj 110 može primiti od računarskog uređaja 140 kriptografsku heš vrednost pridruženu izvesnim delovima vrednosti 434, naznačenih italikom: (1. Alisa, 2. Bob, 3. Kerol, 4. Ed, 5. Dejv, 6. Frenk). Računarski uređaj onda može generisati kriptografsku heš vrednost korišćenjem istih delova vrednosti 431 (memorisanih u instanci 113 distribuirane baze podataka), naznačenih italikom: (1. Alisa, 2. Bob, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk). Pošto su delovi vrednosti 434 naznačeni italikom i delovi vrednosti 431 naznačeni italikom identični, primljena kriptografska heš vrednost (pridružena delovima vrednosti naznačenim italikom 434) će takođe biti identična generisanoj kriptografskoj heš vrednosti (pridruženoj delovima vrednosti 431 naznačenim italikom).
[0158] Upoređivanjem generisane kriptografske heš vrednosti sa primljenom kriptografskom heš vrednosti, računarski uređaj 110 može utvrditi da li da zahteva od računarskog uređaja 140 aktuelne delove pridružene primljenoj kriptografskoj heš vrednosti. Ako je generisana kriptografska heš vrednost identična primljenoj kriptografskoj heš vrednosti, računarski uređaj 110 može utvrditi da je kopija identična aktuelnim delovima pridruženim primljenoj kriptografskoj heš vrednosti koji su već memorisani u instanci 113 distribuirane baze podataka i zbog toga aktuelni delovi povezani sa kriptografskom heš vrednosti primljenom od računarskog uređaja 140 nisu potrebni. Sa druge strane, ako generisana kriptografska heš vrednost nije identična primljenoj kriptografskoj heš vrednosti, računarski uređaj 110 može zahtevati aktuelne delove pridružene primljenoj kriptografskoj heš vrednosti od računarskog uređaja 140.
[0159] Mada su gore razmotrene kriptografske heš vrednosti pridružene delovima samo pojedinačnih vrednosti, podrazumeva se da kriptografska heš vrednost može biti pridružena celoj pojedinačnoj vrednosti i/ili mnoštvu vrednosti. Na primer, u nekim primerima izvođenja, računarski uređaj (npr. računarski uređaj 140) može memorisati skup vrednosti u svojoj instanci distribuirane baze podataka (npr. instanci 144 distribuirane baze podataka). U takvim primerima izvođenja, posle prethodno određenog vremenskog perioda od ažuriranja vrednosti u instanci baze podataka, pošto vrednost poverenja (razmotrena u vezi Slike 13) za vrednost zadovoljava prethodno određeni kriterijum (npr. dostiže prethodno određeni prag), posle specifikovanog vremenskog perioda od kada je transakcija potekla i/ili na bazi bilo kojih drugih podesnih faktora, ta vrednost može biti uključena u kriptografsku heš vrednost sa drugim vrednostima kada se zahtevaju podaci od ili kada se šalju instanci druge baze podataka. Ovo smanjuje broj specifičnih vrednosti koje se šalju između instanci baza podataka.
[0160] U nekim slučajevima, na primer, skup vrednosti u bazi podataka može sadržati prvi skup vrednosti, koji sadrži transakcije između godine 2000 i godine 2010; drugi skup vrednosti, koji sadrži transakcije između godine 2010 i godine 2013; treći skup vrednosti, koji sadrži transakcije između godine 2013 i godine 2014; i četvrti skup vrednosti, koji sadrži transakcije između godine 2014 i sadašnjosti. Koristeći ovaj primer, ako računarski uređaj 110 zahteva od računarskog uređaja 140 podatke memorisane u instanci distribuirane baze podataka 144 računarskog uređaja 140, u nekim primerima izvođenja, računarski uređaj 140 može poslati računarskom uređaju 110 (1) prvu kriptografsku heš vrednost pridruženu prvom skupu vrednosti, (2) drugu kriptografsku heš vrednost pridruženu drugom skupu vrednosti, (3) treću kriptografsku heš vrednost pridruženu trećem skupu vrednosti; i (4) svaku vrednost iz četvrtog skupa vrednosti.
1
Kriterijumi kada se vrednost dodaje kriptografskom hešu mogu biti postavljeni od strane administratora, pojedinačnih korisnika, na bazi broja vrednosti koje su već u instanci baze podataka i/ili sličnom. Slanje kriptografske heš vrednosti umesto svake pojedinačne vrednosti smanjuje broj pojedinačnih vrednosti koje se obezbeđuju kada se razmenjuju vrednosti između instanci baza podataka.
[0161] Kada prijemni računarski uređaj (npr. računarski uređaj 400 u koraku 2 sa Slike 8) prima kriptografsku heš vrednost (npr. generisanu od strane računarskog uređaja 500 na bazi vrednosti u instanci 503 distribuirane baze podataka), taj računarski uređaj generiše kriptografsku heš vrednost korišćenjem istog postupka i/ili procesa i vrednosti u svojoj instanci baze podataka (npr. instanci 403 distribuirane baze podataka) za parametre (npr. transakcije u toku specifikovanog vremenskog perioda) korišćene za generisanje primljene kriptografske heš vrednosti. Prijemni računarski uređaj onda može da uporedi primljenu kriptografsku heš vrednost sa generisanom kriptografskom heš vrednosti. Ako se vrednosti ne podudaraju, prijemni računarski uređaj može zahtevati pojedinačne vrednosti koje su korišćene za generisanje primljenog kriptografskog heša od predajnog računarskog uređaja (npr. računarskog uređaja 500 na Slici 8) i upoređivanje pojedinačnih vrednosti iz instance predajne baze podataka (npr. instance 503 distribuirane baze podataka) sa pojedinačnim vrednostima za te transakcije u instanci prijemne baze podataka (npr. instanci 403 distribuirane baze podataka).
[0162] Na primer, ako prijemni računarski uređaj prima kriptografsku heš vrednost pridruženu transakcijama između godine 2000 i godine 2010, prijemni računarski uređaj može generisati kriptografski heš korišćenjem vrednosti za transakcije između godine 2000 i godine 2010 memorisane u instanci svoje baze podataka. Ako primljena kriptografska heš vrednost odgovara lokalno-generisanoj kriptografskoj heš vrednosti, prijemni računarski uređaj može pretpostaviti da su vrednosti za transakcije između godine 2000 i godine 2010 iste u obe baze podataka i neće tražiti dodatne informacije. Ako, međutim, primljena kriptografska heš vrednost ne odgovara lokalno-generisanoj kriptografskoj heš vrednosti, onda prijemni računarski uređaj može zatražiti pojedinačne vrednosti koje je predajni računarski uređaj koristio za generisanje primljene kriptografske heš vrednosti. Prijemni računarski uređaj onda može identifikovati neslaganje i ažurirati vektor vrednosti za tu pojedinačnu vrednost.
[0163] Kriptografske heš vrednosti se mogu oslanjati na bilo koji podesni proces i/ili heš funkciju za kombinaciju mnoštva vrednosti i/ili delova vrednosti u samo jedan identifikator. Na primer, bilo koji podesan broj vrednosti (npr. transakcije unutar vremenskog perioda) se može koristiti kao ulazi za heš funkciju i heš vrednost može biti generisana na bazi heš funkcije.
2
[0164] Mada gornje razmatranje koristi kriptografske heš vrednosti kao identifikator pridružen vrednosti i/ili delovima vrednosti, trebalo bi shvatiti da se mogu koristiti drugi identifikatori za predstavljanje mnoštva vrednosti i/ili delova vrednosti. Primeri drugih identifikatora obuhvataju digitalne otiske prstiju, kontrolne sume, regularne heš vrednosti, i/ili slično.
[0165] Slika 12 prikazuje algoritam (algoritam 20) koji prikazuje korake koje izvršava računarski uređaj 110 unutar sistema 100 sa distribuiranim bazama podataka, prema jednom primeru izvođenja. U primeru izvođenja prikazanom na Slici 12, vektor vrednosti se resetuje na bazi prethodno definisane verovatnoće. Slično navedenom, svaka vrednost u vektoru vrednosti se može resetovati na vrednost dosta često i na bazi verovatnoće. U koraku 21, računarski uređaj 110 bira vrednost parametra na bazi vektora vrednosti parametra, slično koraku 15 koji je prikazan na Slici 11 i razmotren gore. U koraku 22, računarski uređaj 110 prima vrednosti parametra od drugih računarskih uređaja (npr. računarskih uređaja 120, 130, 140) i šalje vrednost parametra memorisanu u instanci 113 distribuirane baze podataka drugim računarskim uređajima (npr. računarskim uređajima 120, 130, 140). Na primer, korak 22 može sadržati izvođenje koraka 12 i 13, prikazanih na Slici 11 i razmotrenih gore, za svaki od tih drugih računarskih uređaja. U koraku 23, računarski uređaj 110 memoriše vrednosti parametra primljene od drugih računarskih uređaja (npr. računarskih uređaja 120, 130, 140) u vektoru vrednosti parametra, slično koraku 14 prikazanom na Slici 11 i razmotrenom gore. U koraku 24, računarski uređaj 110 utvrđuje da li da resetuje vektor vrednosti na bazi prethodno definisane verovatnoće resetovanja vektora vrednosti. U nekim slučajevima, na primer, postoji 10% verovatnoće da će računarski uređaj 110 resetovati vektor vrednosti parametra pošto svaki put računarski uređaj 110 ažurira vektor vrednosti parametra memorisan u instanci 114 distribuirane baze podataka. U takvom scenariju, računarski uređaj 110 bi, u koraku 24, utvrdio da li da se resetuje ili ne, na bazi 10% verovatnoće. Utvrđivanje se može izvršiti, u nekim slučajevima, procesorom 111 računarskog uređaja 110.
[0166] Ako računarski uređaj 110 utvrdi da će resetovati vektor vrednosti na bazi prethodno definisane verovatnoće, računarski uređaj 110, u koraku 25, resetuje vektor vrednosti. U nekim primerima izvođenja, računarski uređaj 110 može resetovati svaku vrednost u vektoru vrednosti parametra tako da bude jednaka vrednosti parametra memorisanoj u instanci distribuirane baze podataka 113 u trenutku reseta. Na primer, ako je, neposredno pre reseta, vektor vrednosti vektor vrednosti 430, i vrednost parametra memorisana u instanci distribuirane baze podataka 113 je (1. Alisa, 2. Bob, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk) (na primer, po "rangu po medijani"), onda bi se svaka vrednost u vektoru vrednosti resetovala na istu (1. Alisa, 2. Bob, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk). Drugim rečima, svaka od vrednosti 431, 432, 433, 434, 435 vektora vrednosti 430 bi se resetovala na istu vrednost 431. Resetovanje svake vrednosti u vektoru vrednosti parametra na istu vrednost parametra memorisanog u instanci distribuirane baze podataka u trenutku reseta, koje je dosta često i na bazi verovatnoće, pomaže da sistem sa distribuiranim bazama podataka (kome računarski uređaj pripada) postigne konsenzus. Slično navedenom, resetovanje olakšava sporazum o vrednosti parametra između računarskih uređaja sistema sa distribuiranim bazama podataka.
[0167] Na primer, instanca 114 distribuirane baze podataka računarskog uređaja 110 može memorisati rangirani skup igrača (1. Alisa, 2. Bob, 3. Kerol, 4. Dejv, 5. Ed, 6. Frenk), sličan vrednosti 431, koja ukazuje da je posedovanje specifičnog predmeta počelo sa Alisom, pa je prešlo na Boba, pa je onda prešlo na Kerol, pa je onda prešlo na Dejva, pa je onda prešlo na Eda i konačno je prešlo na Frenka.
[0168] Slika 13 prikazuje algoritam (algoritam 30) koji prikazuje korake koje izvodi računarski uređaj 110 unutar sistema 100 sa distribuiranim bazama podataka, prema jednom primeru izvođenja. U primeru izvođenja prikazanog Slikom 13, izbor vrednosti parametra na bazi vektora vrednosti parametra se dešava kada je vrednost poverenja pridruženog instanci distribuirane baze podataka jednaka nuli. Vrednost poverenja može ukazivati na nivo "konsenzusa" ili sporazuma između vrednosti parametra memorisane u računarskom uređaju 110 i vrednosti parametra memorisane u drugim računarskim uređajima (npr. računarskim uređajima 120, 130, 140) sistema 100 sa distribuiranim bazama podataka. U nekim primerima izvođenja, kao što je ovde detaljno opisano, vrednost poverenja se inkrementno povećava (npr. povećava za jedan) svaki put kada je vrednost parametra koji računarski uređaj 110 primi od drugog računarskog uređaja jednaka vrednosti parametra memorisanoj u računarskom uređaju 110, a vrednost poverenja se dekrementno smanjuje (tj. smanjuje za jedan) svaki put kada vrednost parametra koji računarski uređaj 110 primi od drugog računarskog uređaja nije jednaka vrednosti parametra memorisanog u računarskom uređaju 110, ako je vrednost poverenja iznad nule.
[0169] U koraku 31, računarski uređaj 110 prima vrednost parametra od drugog računarskog uređaja (npr. računarski uređaj 120) i šalje vrednost parametra memorisanog u instanci 113 distribuirane baze podataka drugom računarskom uređaju (npr. računarskom uređaju 120). Na primer, korak 31 može sadržati izvođenje koraka 12 i 13, prikazanih na Slici 11 i razmotrenih gore. U koraku 32, računarski uređaj 110 memoriše vrednost parametra primljenog od drugog računarskog uređaja (npr. računarskog uređaja 120) u vektor vrednosti parametara, slično koraku 14 prikazanom na Slici 11 i razmotrenom gore. U koraku 33, računarski uređaj 110 utvrđuje da li je vrednost parametra koja je primljena od drugog računarskog uređaja (npr. računarskog uređaja 120) jednaka vrednosti parametra memorisanoj u instanci 113 distribuirane baze podataka. Ako
4
je vrednost parametra primljenog od drugog računarskog uređaja (npr. računarskog uređaja 120) jednaka vrednosti parametra memorisanoj u instanci 113 distribuirane baze podataka, onda računarski uređaj 110, u koraku 34, inkrementno povećava vrednost poverenja pridruženu instanci 113 distribuirane baze podataka za jedan i proces ilustrovan algoritmom 30 se vraća nazad na korak 31. Ako vrednost parametra primljena od drugog računarskog uređaja (npr. računarskog uređaja 120) nije jednaka vrednosti parametra memorisanoj u instanci 113 distribuirane baze podataka, onda računarski uređaj 110, u koraku 35, dekrementno smanjuje vrednost pridruženu instanci 113 distribuirane baze podataka za jedan, ako je vrednost poverenja veća od nule.
[0170] U koraku 36, računarski uređaj 110 određuje da li je vrednost poverenja pridružena instanci 113 distribuirane baze podataka jednaka nuli. Ako je vrednost poverenja jednaka nuli, onda računarski uređaj, u koraku 37, bira vrednost parametra na bazi vektora vrednosti za parametar. Ovaj izbor može biti izvršen u skladu sa bilo kojim postupkom i/ili procesom (npr. pravilom ili skupom pravila), kao što je gore razmotreno. Ako vrednost poverenja nije jednaka nuli, onda se proces ilustrovan algoritmom 30 vraća nazad na korak 31.
[0171] Kao što je gore razmotreno, vrednosti poverenja su pridružene instancama distribuiranih baza podataka. Međutim, trebalo bi shvatiti da vrednost poverenja takođe može biti pridružena vrednosti vektora memorisanog u instanci distribuirane baze podataka i/ili računarskog uređaja koji memoriše vrednost vektora (npr. unutar instance njegove distribuirane baze podataka) umesto instance distribuirane baze podataka ili dodatno njoj.
[0172] Vrednosti koje se odnose na vrednosti poverenja (npr. pragovi, vrednosti inkrementa i vrednosti dekrementa) koje se koriste u vezi Slike 13 su namenjene samo za ilustrativne svrhe. Podrazumeva se da se mogu koristiti druge vrednosti povezane sa vrednostima poverenja (npr. pragovi, vrednosti inkrementa i vrednosti dekrementa). Na primer, povećanje i/ili smanjenje vrednosti poverenja, koje se koristi u koracima 34 i 35, respektivno, može imati bilo koju vrednost. U sledećem primeru, prag poverenja od nula, koji se koristi u koracima 35 i 36, takođe može imati bilo koju vrednost. Pored toga, vrednosti koje se odnose na vrednosti poverenja (npr. pragovi, vrednosti inkrementa i vrednosti dekrementa) mogu se menjati u toku rada, tj. dok proces ilustrovan algoritmom 30 radi u petlji.
[0173] U nekim primerima izvođenja, vrednost poverenja može uticati na tok informacija između prvog računarskog uređaja iz sistema sa distribuiranim bazama podataka i drugog računarskog uređaja iz sistema sa distribuiranim bazama podataka, što je opisano gore u vezi Slike 8. Na primer, ako prvi računarski uređaj (npr. računarski uređaj 110) ima visoku vrednost poverenja pridruženu instanci njegove distribuirane baze podataka (npr. instanci 114 distribuirane baze podataka), onda prvi računarski uređaj može zahtevati od drugog računarskog uređaja manji deo vrednosti parametra (i kriptografsku heš vrednost pridruženu većem delu vrednosti parametra) nego što bi prvi računarski uređaj u suprotnom zahtevao od drugog računarskog uređaja (npr. ako prvi računarski uređaj ima nisku vrednost poverenja pridruženu instanci svoje distribuirane baze podataka). Visoka vrednost poverenja može ukazivati da je verovatno da će vrednost parametra memorisana u prvom računarskom uređaju biti u saglasnosti sa vrednosti parametra memorisanom u drugim računarskim uređajima iz sistema sa distribuiranim bazama podataka i, kao takva, kriptografska heš vrednost se koristi za verifikaciju saglasnosti.
[0174] U nekim slučajevima, vrednost poverenja prvog računarskog uređaja se može povećati da bi se dostigao prag za koji prvi računarski uređaj utvrđuje da više ne bi trebalo da zahteva specifične vrednosti, specifične delove vrednosti, i/ili kriptografske heš vrednosti pridružene specifičnim vrednostima i/ili specifičnim delovima vrednosti od drugih računarskih uređaja iz sistema sa distribuiranim bazama podataka. Na primer, ako vrednost od vrednosti poverenja zadovoljava specifični kriterijum (npr. dostigne prag), prvi računarski uređaj može utvrditi da je vrednost konvergirala i neće dalje zahtevati da razmenjuje ovu vrednost sa drugim uređajima. U sledećem primeru, vrednost može biti dodata kriptografskoj heš vrednosti na bazi njegove vrednosti poverenja koja zadovoljava kriterijum. U takvim slučajevima, može biti poslata kriptografska heš vrednost za skup vrednosti umesto pojedinačne vrednosti, pošto vrednost poverenja zadovoljava kriterijum, kao što je detaljno razmotreno gore. Razmena manje vrednosti i/ili manjih aktuelnih delova (vrednosti) sa kriptografskom heš vrednosti pridruženom preostalim delovima (vrednosti) može olakšati efikasnu komunikaciju između računarskih uređaja sistema sa distribuiranim bazama podataka.
[0175] U nekim slučajevima, pošto se vrednost poverenja za specifičnu vrednost parametra instance distribuirane baze podataka poveća, računarski uređaj pridružen toj instanci distribuirane baze podataka može zahtevati razmenu vrednosti za taj parametar sa drugim računarskim uređajima manje učestalo. Slično tome, u nekim slučajevima, pošto se vrednost poverenja za specifičnu vrednost parametra instance distribuirane baze podataka smanjuje, računarski uređaj pridružen toj instanci distribuirane baze podataka može zahtevati razmenu vrednosti za taj parametar sa drugim računarskim uređajima učestalije. Shodno tome, vrednost poverenja se može koristiti za smanjenje broja vrednosti razmenjenih između računarskih uređaja.
[0176] Dok su gore bili opisani različiti primeri izvođenja, trebalo bi shvatiti da su oni prezentovani samo kao ilustracija, a ne kao ograničenje. Tamo gde gore opisani postupci ukazuju da se izvesni događaji dešavaju po izvesnom redosledu, redosled izvesnih događaja može biti modifikovan. Pored toga, izvesni događaji mogu biti izvedeni istovremeno u paralelnom procesu kada je moguće, kao i sukcesivno, kao što je opisano gore.
[0177] Neki ovde opisani primeri izvođenja se odnose na računarski memorijski proizvod sa neprelaznim medijumom koji se može očitati računarski (takođe može biti nazivan neprelaznim medijumom koji može očitati procesor) koji ima na sebi instrukcije ili računarski kod za izvršavanje različitih operacija koje se implementiraju na kompjuteru. Medijum koji može očitati kompjuter (ili medijum koji može očitati procesor) je neprelazan u smislu da on ne sadrži prelazne signale koji se rasprostiru kao takvi (npr. elektromagnetni talas koji se noseći informacije rasprostire po transmisionom medijumu, kao što su prostor ili kabl). Medijumi i računarski čvor (takođe se može nazivati kodom) mogu biti oni koji su projektovani i konstruisani za specifičnu svrhu ili svrhe. Primeri neprelaznih medijuma koje može očitati kompjuter, ali bez ograničavanja na njih su: magnetni memorijski medijumi, kao što su hard diskovi, flopi diskovi i magnetna traka; optički memorijski medijumi, kao što su kompakt disk/digitalni video diskovi (engl. Compact Disc/Digital Video Discs, skr. CD/DVDs), kompakt disk memorije koje se mogu samo očitavati (engl. Compact Disc-Read Only Memories, skr. CD-ROMs) i holografski uređaji; magneto-optički memorijski medijumi, kao što su optički diskovi; noseći moduli za obradu talasnih signala; i hardverski uređaji koji su specijalno konfigurisani za memorisanje i izvršavanje programskog koda, kao što su integrisana kola za specifičnu primenu (engl. Application-Specific Integrated Circuits, skr. ASICs), programabilni logički uređaji (engl. Programmable Logic Devices, skr. PLDs), uređaji sa memorijom samo za očitavanje (engl. Read-Only Memory, skr. ROM) i memorijom sa slučajnim pristupom (engl. Random-Access Memory, skr. RAM). Drugi ovde opisani primeri izvođenja se odnose na računarski program kao proizvod, koji može obuhvatati, na primer, ovde razmotrene instrukcije i/ili računarski kod.
[0178] Primeri računarskog koda obuhvataju, ali nisu ograničeni na mikro-kod ili mikroinstrukcije, mašinske instrukcije, kao što su one proizvedene od strane kompajlera, kod koji se koristi za proizvodnju veb servisa i fajlove koji sadrže instrukcije višeg nivoa koje izvršava kompjuter korišćenjem prevodioca. Na primer, primeri izvođenja mogu biti implementirani korišćenjem komandnih programskih jezika (npr. C, Fortran, itd.), funkcionalnih programskih jezika (Haskell, Erlang, itd.), logičkih programskih jezika (npr. Prolog), objektno-orijentisanih programskih jezika (npr. Java, C++, itd.) ili drugih podesnih programskih jezika i/ili razvojnih alata. Dodatni primeri računarskog koda obuhvataju, ali nisu ograničeni na upravljačke signale, kriptovani kod i komprimovani kod.
[0179] Iako su gore bili opisani različiti primeri izvođenja, trebalo bi shvatiti da su oni prezentovani samo kao ilustracija, a ne kao ograničenje i da mogu biti napravljene različite promene u obliku i detaljima. Bilo koji deo ovde opisanih uređaja i/ili postupaka se može kombinovati u bilo koju kombinaciju, izuzev kombinacija koje se međusobno isključuju. Ovde opisani primeri izvođenja mogu sadržati različite kombinacije i/ili potkombinacije funkcija, komponenata i/ili karakteristika iz različitih opisanih primera izvođenja.
Claims (14)
1. Postupak za prvi računarski uređaj (110) konfigurisan da bude uključen u mnoštvo računarskih uređaja (110, 120, 130, 140) koji implementira distribuiranu bazu podataka (100) bez lidera preko mreže (105) koja je operativno povezana sa mnoštvom računarskih uređaja (110, 120, 130, 140), pri čemu prvi računarski uređaj (110) sadrži procesor (111) koji je operativno povezan sa instancom (114) distribuirane baze podataka (100), pri čemu postupak sadrži:
definisanje, u prvom trenutku i u procesoru (111) prvog računarskog uređaja (110), prvog događaja povezanog sa prvim mnoštvom događaja i koji sadrži referencu na najmanje dva događaja iz prvog mnoštva događaja, pri čemu je svaki događaj iz prvog mnoštva događaja sekvenca bajtova, pri čemu referenca na svaki događaj od najmanje dva događaja iz prvog mnoštva događaja ukazuje koji referencirani događaj se dogodio pre prvog događaja.
prijem, u drugom trenutku posle prvog trenutka i od drugog računarskog uređaja (120) iz mnoštva računarskih uređaja (110, 120, 130, 140), drugog događaja (1) definisanog drugim računarskim uređajem. (2) povezanog sa drugim mnoštvom događaja, i (3) koji sadrži referencu na najmanje dva događaja iz drugog mnoštva događaja, pri čemu je svaki događaj iz drugog mnoštva događaja sekvenca bajtova, pri čemu referenca na svaki događaj od najmanje dva događaja iz drugog mnoštva događaja ukazuje da se referencirani događaj dogodio pre drugog događaja. definisanje trećeg događaja koji sadrži referencu na prvi događaj i referencu na drugi događaj,
identifikaciju, uz korišćenje konsenzusnog algoritma, redosleda trećeg mnoštva događaja baziranog bar na prvom mnoštvu događaja i drugom mnoštvu događaja, a svaki događaj iz trećeg mnoštva događaja je najmanje jedan iz prvog mnoštva događaja ili drugog mnoštva događaja, pri čemu se redosled izračunava na bazi parcijalnog redosleda definisanog obrascem referenci između događaja, memorisanje u instanci (114) distribuirane baze podataka (100) redosleda trećeg mnoštva događaja,
pri čemu pomenuti konsenzusni algoritam implementira determinističku funkciju tako da svaki računarski uređaj iz mnoštva računarskih uređaja (110, 120, 130, 140) izračunava isti redosled trećeg mnoštva događaja.
2. Postupak prema zahtevu 1, koji dalje sadrži definisanje promenljive stanja baze podataka bazirano bar na redosledu trećeg mnoštva događaja.
3. Postupak prema zahtevu 1, pri čemu svaki događaj iz trećeg mnoštva događaja sadrži najmanje jednu transakciju koja je pridružena najmanje jednom transferu kriptovalute, indikaciji promene stanja na bankovnom računu, nalogu za prenos vlasništva nad predmetom ili modifikaciji stanja igre za više igrača.
4. Postupak prema zahtevu 1, pri čemu se svaki događaj iz trećeg mnoštva događaja pridružuje skupu transakcija iz mnoštva skupova transakcija, pri čemu postupak dalje sadrži pridruživanje redosleda koji je pridružen mnoštvu skupova transakcija sa mnoštvom vrednosti redosleda transakcija, a svaka vrednost redosleda transakcija iz mnoštva vrednosti redosleda transakcija se pridružuje transakciji iz najmanje jednog skupa transakcija od mnoštva skupova transakcija.
5. Postupak prema zahtevu 1, pri čemu je identifikacija redosleda trećeg mnoštva događaja bazirana bar delimično na vrednosti pondera koji se koristi kao ponder u izračunavanju ponderisane vrednosti skupa događaja, pri čemu postupak dalje sadrži izračunavanje ponderisane vrednosti bazirano na sumi skupa ponderisanih vrednosti, pri čemu se svaka ponderisana vrednost iz skupa ponderisanih vrednosti pridružuje instanci distribuirane baze podataka koja je definisala događaj iz skupa događaja.
6. Uređaj za primenu kao prvi računarski uređaj (110) konfigurisan da bude uključen u mnoštvo računarskih uređaja (110, 120, 130, 140) koji implementira distribuiranu bazu podataka (100) bez lidera preko mreže (105) koja je operativno povezana sa mnoštvom računarskih uređaja (110, 120, 130, 140), pri čemu uređaj sadrži:
instancu (114) distribuirane baze podataka (100); i
modul za konvergenciju baze podataka implementiran u memoriji (112) ili procesoru (111), pri čemu je modul za konvergenciju baze podataka operativno povezan sa instancom (114) distribuirane baze podataka (100),
modul za konvergenciju baze podataka je konfigurisan za definisanje, u prvom trenutku, prvog događaja povezanog sa prvim mnoštvom događaja i koji sadrži referencu na najmanje dva događaja iz prvog mnoštva događaja, pri čemu je svaki događaj iz prvog mnoštva događaja sekvenca bajtova, pri čemu referenca na svaki događaj od najmanje dva događaja iz prvog mnoštva događaja ukazuje koji referencirani događaj se dogodio pre prvog događaja,
modul za konvergenciju baze podataka koji je konfigurisan za prijem, u drugom trenutku posle prvog trenutka i od drugog računarskog uređaja (120) iz mnoštva računarskih uređaja (110, 120, 130, 140), drugog događaja (1) definisanog drugim računarskim uređajem (120), (2) povezanog sa drugim mnoštvom događaja, i (3) koji sadrži referencu na najmanje dva događaja iz drugog mnoštva događaja, pri čemu je svaki događaj iz drugog mnoštva događaja sekvenca bajtova, pri čemu referenca na svaki događaj od najmanje dva događaja iz drugog mnoštva događaja ukazuje da se referencirani događaj dogodio pre drugog događaja,
modul za konvergenciju baze podataka je konfigurisan za definisanje trećeg događaja koji sadrži referencu na prvi događaj i referencu na drugi događaj, modul za konvergenciju baze podataka je konfigurisan za identifikaciju, uz korišćenje konsenzusnog algoritma, redosleda trećeg mnoštva događaja baziranog bar na prvom mnoštvu događaja i drugom mnoštvu događaja, a svaki događaj iz trećeg mnoštva događaja je najmanje jedan iz prvog mnoštva događaja ili drugog mnoštva događaja, pri čemu se redosled izračunava na bazi parcijalnog redosleda definisanog obrascem referenci između događaja,
modul za konvergenciju baze podataka je konfigurisan za memorisanje u instanci (114) distribuirane baze podataka (100) redosleda trećeg mnoštva događaja, pri čemu pomenuti konsenzusni algoritam implementira determinističku funkciju tako da svaki računarski uređaj iz mnoštva računarskih uređaja (110, 120, 130, 140) izračunava isti redosled trećeg mnoštva događaja.
7. Uređaj prema zahtevu 6, pri čemu:
1
svaki događaj iz prvog mnoštva događaja se pridružuje (1) skupu transakcija iz prvog mnoštva skupova transakcija i (2) redosledu koji je pridružen skupu transakcija iz prvog mnoštva skupova transakcija,
svaki događaj iz drugog mnoštva događaja se pridružuje (1) skupu transakcija iz drugog mnoštva skupova transakcija i (2) redosledu koji je pridružen skupu transakcija iz drugog mnoštva skupova transakcija,
modul za konvergenciju baze podataka je konfigurisan za identifikaciju redosleda koji je pridružen mnoštvu transakcija baziranom na prvom mnoštvu događaja i drugom mnoštvu događaja, pri čemu je svaka transakcija iz mnoštva transakcija iz najmanje jednog skupa transakcija iz prvog mnoštva skupova transakcija ili iz najmanje jednog skupa transakcija iz drugog mnoštva skupova transakcija, i modul za konvergenciju baze podataka je konfigurisan za memorisanje u instanci (114) distribuirane baze podataka (100) redosleda koji je pridružen mnoštvu transakcija.
8. Uređaj prema zahtevu 6, pri čemu:
najmanje dva događaja iz prvog mnoštva događaja sadrže događaj koji je prethodno definisao modul za konvergenciju baze podataka i događaj koji je primljen iz trećeg računarskog uređaja (130) od mnoštva računarskih uređaja (110, 120, 130, 140)
9. Uređaj prema zahtevu 6, pri čemu:
najmanje dva događaja iz drugog mnoštva događaja sadrže događaj koji je prethodno definisao drugi računarski uređaj (120) i događaj koji je drugi računarski uređaj (120) primio od trećeg računarskog uređaja (130) od mnoštva računarskih uređaja (110, 120, 130, 140).
10. Uređaj prema zahtevu 6, pri čemu:
najmanje dva događaja iz prvog mnoštva događaja sadrže događaj koji je prethodno definisan od strane modula za konvergenciju baze podataka i događaj koji je primljen iz trećeg računarskog uređaja (130) od mnoštva računarskih uređaja (110, 120, 130, 140), i
referenca na najmanje dva događaja iz prvog mnoštva događaja sadrži heš vrednost povezanu sa događajem koji je prethodno definisan od strane modula za
2
konvergenciju baze podataka i heš vrednost koja je pridružena događaju koji je primljen iz trećeg računarskog uređaja (130) od mnoštva računarskih uređaja (110, 120, 130, 140).
11. Uređaj prema zahtevu 6, pri čemu:
prvi događaj sadrži indikaciju skupa računarskih uređaja od mnoštva računarskih uređaja (110, 120, 130, 140), pri čemu je prvi računarski uređaj (110) identifikovan kao da je (1) pridružen nevažećem događaju ili da je (2) pridružen nevažećoj transakciji pre prvog trenutka, i
drugi događaj sadrži indikaciju skupa računarskih uređaja od mnoštva računarskih uređaja (110, 120, 130, 140), pri čemu je drugi računarski uređaj (120) identifikovan kao da je (1) pridružen nevažećem događaju ili da je (2) pridružen nevažećoj transakciji pre drugog trenutka.
12. Uređaj prema zahtevu 6, pri čemu je redosled trećeg mnoštva događaja baziran bar delimično na ponderu koji je pridružen svakom računarskom uređaju iz mnoštva računarskih uređaja (110, 120, 130, 140)
13. Uređaj prema zahtevu 6, pri čemu je modul za konvergenciju baze podataka konfigurisan za prijem drugog događaja posle prijema svakog događaja iz drugog mnoštva događaja, ili, pri čemu je modul za konvergenciju baze podataka konfigurisan za prijem iz drugog računarskog uređaja (120) svakog događaja iz drugog mnoštva događaja izuzev događaja iz drugog mnoštva događaja definisanih od strane prvog računarskog uređaja (110), ili pri čemu je modul za konvergenciju baze podataka konfigurisan za definisanje promenljivih stanja baze podataka bazirano bar na (1) trećem mnoštvu događaja i (2) redosledu koji je pridružen trećem mnoštvu događaja.
14. Uređaj prema zahtevu 6, pri čemu treći događaj sadrži digitalni potpis pridružen prvom računarskom uređaju (110), ili pri čemu treći događaj sadrži vreme i datum, pri čemu su to vreme i datum pridruženi definisanju trećeg događaja.
Applications Claiming Priority (7)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201562211411P | 2015-08-28 | 2015-08-28 | |
| US14/988,873 US9390154B1 (en) | 2015-08-28 | 2016-01-06 | Methods and apparatus for a distributed database within a network |
| US15/153,011 US9529923B1 (en) | 2015-08-28 | 2016-05-12 | Methods and apparatus for a distributed database within a network |
| US201662344682P | 2016-06-02 | 2016-06-02 | |
| US15/205,688 US10318505B2 (en) | 2015-08-28 | 2016-07-08 | Methods and apparatus for a distributed database within a network |
| PCT/US2016/049067 WO2017040313A1 (en) | 2015-08-28 | 2016-08-26 | Methods and apparatus for a distributed database within a network |
| EP16842700.3A EP3341864B1 (en) | 2015-08-28 | 2016-08-26 | Methods and apparatus for a distributed database within a network |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| RS61195B1 true RS61195B1 (sr) | 2021-01-29 |
Family
ID=61557412
Family Applications (5)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| RS20201521A RS61196B1 (sr) | 2015-08-28 | 2016-08-26 | Postupci i uređaj za distribuiranu bazu podataka unutar mreže |
| RS20201570A RS61245B1 (sr) | 2015-08-28 | 2016-08-26 | Postupci i uređaj za distribuiranu bazu podataka unutar mreže |
| RS20201520A RS61195B1 (sr) | 2015-08-28 | 2016-08-26 | Postupci i uređaj za distribuiranu bazu podataka unutar mreže |
| RS20201522A RS61199B1 (sr) | 2015-08-28 | 2016-08-26 | Postupci i uređaj za distribuiranu bazu podataka unutar mreže |
| RS20201569A RS61244B1 (sr) | 2015-08-28 | 2016-08-26 | Postupci i uređaj za distribuiranu bazu podataka unutar mreže |
Family Applications Before (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| RS20201521A RS61196B1 (sr) | 2015-08-28 | 2016-08-26 | Postupci i uređaj za distribuiranu bazu podataka unutar mreže |
| RS20201570A RS61245B1 (sr) | 2015-08-28 | 2016-08-26 | Postupci i uređaj za distribuiranu bazu podataka unutar mreže |
Family Applications After (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| RS20201522A RS61199B1 (sr) | 2015-08-28 | 2016-08-26 | Postupci i uređaj za distribuiranu bazu podataka unutar mreže |
| RS20201569A RS61244B1 (sr) | 2015-08-28 | 2016-08-26 | Postupci i uređaj za distribuiranu bazu podataka unutar mreže |
Country Status (19)
| Country | Link |
|---|---|
| EP (6) | EP3399447B1 (sr) |
| JP (5) | JP6518838B6 (sr) |
| KR (3) | KR102432731B1 (sr) |
| CN (4) | CN110633327B (sr) |
| AU (7) | AU2016316777B2 (sr) |
| CA (3) | CA3027398C (sr) |
| CY (5) | CY1123628T1 (sr) |
| DK (5) | DK3341864T3 (sr) |
| ES (5) | ES2840070T3 (sr) |
| HR (5) | HRP20201935T1 (sr) |
| HU (5) | HUE053421T2 (sr) |
| LT (5) | LT3399447T (sr) |
| PL (4) | PL3399447T3 (sr) |
| PT (5) | PT3341864T (sr) |
| RS (5) | RS61196B1 (sr) |
| RU (1) | RU2709673C2 (sr) |
| SG (7) | SG10201911692XA (sr) |
| SI (5) | SI3341864T1 (sr) |
| SM (5) | SMT202000710T1 (sr) |
Families Citing this family (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210209885A1 (en) * | 2018-05-23 | 2021-07-08 | Centiglobe Ab | A system and a method for achieving consensus between multiple parties on an event |
| CN109218289B (zh) * | 2018-08-03 | 2021-03-26 | 中山大学 | 一种基于串行工作量证明的缠结网络的共识机制 |
| CN110851435B (zh) * | 2018-08-03 | 2022-02-11 | 杭州海康威视数字技术股份有限公司 | 一种存储数据的方法及装置 |
| SG11202103504UA (en) * | 2018-10-23 | 2021-05-28 | Tzero Ip Llc | Context based filtering within subsets of network nodes implementing a trading system |
| KR102130900B1 (ko) * | 2018-11-15 | 2020-07-06 | 주식회사 스마트코어 | 블록체인 시스템에서의 고속 합의 방법 |
| CN111222984B (zh) * | 2018-11-26 | 2023-04-18 | 本无链科技(深圳)有限公司 | 一种用于区块链分布式交易同步处理方法及系统 |
| CN109672733B (zh) * | 2018-12-20 | 2022-06-07 | 众安信息技术服务有限公司 | 基于dag的区块链的账本同步方法及设备 |
| CN109544344B (zh) * | 2018-12-24 | 2021-07-02 | 众安信息技术服务有限公司 | 基于dag的区块链的交易处理方法及设备 |
| CN109739689B (zh) * | 2018-12-25 | 2023-03-14 | 四川效率源信息安全技术股份有限公司 | 一种雕复SQL Server数据库文件的方法 |
| JP7069455B2 (ja) * | 2019-04-26 | 2022-05-18 | 株式会社アクセル | 情報処理装置 |
| CN113711202A (zh) * | 2019-05-22 | 2021-11-26 | 斯沃尔德斯股份有限公司 | 用于在分布式数据库中实现状态证明和分类帐标识符的方法和装置 |
| CN110209061B (zh) * | 2019-05-28 | 2022-08-09 | 九阳股份有限公司 | 一种智能控制系统中的事件上报处理方法及中控装置 |
| CN110445755A (zh) * | 2019-07-04 | 2019-11-12 | 杭州复杂美科技有限公司 | 交易攻击的防御方法、设备和存储介质 |
| CN110910237B (zh) * | 2019-11-20 | 2024-05-24 | 腾讯科技(深圳)有限公司 | 区块链中的数据处理方法、装置及智能终端、存储介质 |
| CN114730436A (zh) * | 2019-11-21 | 2022-07-08 | 松下电器(美国)知识产权公司 | 控制方法、装置、以及程序 |
| KR102308667B1 (ko) * | 2020-01-08 | 2021-10-05 | 고려대학교 산학협력단 | 배열 데이터베이스에서의 점진적인 상위 k 질의 처리 장치 및 방법 |
| PL3851974T3 (pl) * | 2020-01-20 | 2024-03-04 | Decard Ag | System i sposób realizowania algorytmu konsensusu skierowanego grafu acyklicznego (dag) za pośrednictwem protokołu gossip |
| CN111464826B (zh) * | 2020-04-14 | 2022-09-09 | 北京达佳互联信息技术有限公司 | 虚拟资源的榜单更新方法、装置、电子设备及存储介质 |
| WO2021226846A1 (en) * | 2020-05-12 | 2021-11-18 | Beijing Wodong Tianjun Information Technology Co., Ltd. | Systems and methods for establishing consensus in distributed communications |
| US10946283B1 (en) * | 2020-07-16 | 2021-03-16 | Big Time Studios Ltd. | Computer system and method for more efficiently storing, issuing, and transacting tokenized blockchain game assets managed by a smart contract |
| CN112150283B (zh) * | 2020-08-26 | 2023-08-04 | 深圳区块大陆科技有限公司 | 应用剩余面积计算法来进行链上累积和占比计算的方法 |
| JP2023544422A (ja) * | 2020-10-06 | 2023-10-23 | ヘデラ ハッシュグラフ,エルエルシー | ネットワーク内の分散データベースのための方法及び装置 |
| CN112488704B (zh) * | 2020-11-16 | 2024-03-19 | 华南师范大学 | 基于区块链的数据处理方法、系统、装置及介质 |
| WO2022260501A1 (ko) * | 2021-06-11 | 2022-12-15 | 삼성전자 주식회사 | 블록체인 네트워크에서 부분 원장을 가진 전자 장치 및 그의 동작 방법 |
| EP4307645A4 (en) * | 2021-06-11 | 2024-10-16 | Samsung Electronics Co., Ltd. | Electronic device having partial ledger in blockchain network, and operating method therefor |
| CN113810465B (zh) * | 2021-08-12 | 2022-08-12 | 清华大学 | 一种异步二元共识方法及装置 |
| CN113722548B (zh) * | 2021-08-30 | 2024-07-16 | 北京天空卫士网络安全技术有限公司 | 一种业务系统中引用关系的处理方法和装置 |
Family Cites Families (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6336139B1 (en) * | 1998-06-03 | 2002-01-01 | International Business Machines Corporation | System, method and computer program product for event correlation in a distributed computing environment |
| US6856993B1 (en) * | 2000-03-30 | 2005-02-15 | Microsoft Corporation | Transactional file system |
| US6966836B1 (en) * | 2000-11-16 | 2005-11-22 | Ea.Com, Inc. | Positive-return gambling |
| US7062490B2 (en) * | 2001-03-26 | 2006-06-13 | Microsoft Corporation | Serverless distributed file system |
| RU2376635C2 (ru) * | 2002-10-23 | 2009-12-20 | Закрытое акционерное общество "МедиаЛингва" | Способ и система проведения транзакций в сети с использованием сетевых идентификаторов |
| US7844745B1 (en) * | 2004-08-19 | 2010-11-30 | Nortel Networks Limited | Alternate home subscriber server (HSS) node to receive a request if a first HSS node cannot handle said request |
| US9104962B2 (en) * | 2007-03-06 | 2015-08-11 | Trion Worlds, Inc. | Distributed network architecture for introducing dynamic content into a synthetic environment |
| JP5211514B2 (ja) * | 2007-03-09 | 2013-06-12 | 富士通株式会社 | 更新装置、更新方法および更新プログラム |
| CA2700339A1 (en) * | 2007-06-11 | 2008-12-18 | Skillz Systems Inc. | Method and device for sports skill training |
| US8533582B2 (en) * | 2009-03-20 | 2013-09-10 | Xerox Corporation | Trail-based data content discovery, organization, and processing |
| WO2010134437A1 (ja) * | 2009-05-18 | 2010-11-25 | Nishiyama Shuhei | 仮想単一メモリストレージ上におけるメタ情報共有型分散データベース・システム |
| US8356007B2 (en) * | 2010-10-20 | 2013-01-15 | Microsoft Corporation | Distributed transaction management for database systems with multiversioning |
| US8862617B2 (en) * | 2010-02-09 | 2014-10-14 | Google Inc. | System and method for replicating objects in a distributed storage system |
| US8380659B2 (en) * | 2010-02-09 | 2013-02-19 | Google Inc. | Method and system for efficiently replicating data in non-relational databases |
| US20110250974A1 (en) * | 2010-04-07 | 2011-10-13 | Gary Stephen Shuster | Simulated gaming using prior game outcome |
| US8671074B2 (en) * | 2010-04-12 | 2014-03-11 | Microsoft Corporation | Logical replication in clustered database system with adaptive cloning |
| JP5431261B2 (ja) * | 2010-07-23 | 2014-03-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報管理システム、方法及びプログラム |
| US8868512B2 (en) * | 2011-01-14 | 2014-10-21 | Sap Se | Logging scheme for column-oriented in-memory databases |
| US8577873B2 (en) | 2011-03-30 | 2013-11-05 | Indian Statistical Institute | Determining a relative importance among ordered lists |
| US8732140B2 (en) * | 2011-05-24 | 2014-05-20 | Red Lambda, Inc. | Methods for storing files in a distributed environment |
| US9348883B2 (en) * | 2011-06-01 | 2016-05-24 | Clustrix, Inc. | Systems and methods for replication replay in a relational database |
| CA2845312A1 (en) * | 2011-08-01 | 2013-02-07 | Tagged, Inc. | Systems and methods for asynchronous distributed database management |
| US8935205B2 (en) * | 2011-11-16 | 2015-01-13 | Sap Ag | System and method of performing snapshot isolation in distributed databases |
| CN102831156B (zh) * | 2012-06-29 | 2014-12-31 | 浙江大学 | 一种云计算平台上的分布式事务处理方法 |
| FR2995437B1 (fr) * | 2012-09-07 | 2014-10-10 | Commissariat Energie Atomique | Dispositif de controle nucleaire pour reacteur refroidi au metal liquide de type rnr. |
| US9852232B2 (en) * | 2013-11-08 | 2017-12-26 | International Business Machines Corporation | Automating event trees using analytics |
| US10311152B2 (en) * | 2013-12-20 | 2019-06-04 | Hitachi Vantara Corporation | System for queue based object cloning |
| US10324922B2 (en) * | 2014-02-13 | 2019-06-18 | Salesforce.Com, Inc. | Providing a timeline of events regarding a database record |
-
2016
- 2016-08-26 KR KR1020197038923A patent/KR102432731B1/ko active Active
- 2016-08-26 LT LTEP18177124.7T patent/LT3399447T/lt unknown
- 2016-08-26 HU HUE18177127A patent/HUE053421T2/hu unknown
- 2016-08-26 DK DK16842700.3T patent/DK3341864T3/da active
- 2016-08-26 ES ES18177127T patent/ES2840070T3/es active Active
- 2016-08-26 ES ES18177129T patent/ES2840071T3/es active Active
- 2016-08-26 SM SM20200710T patent/SMT202000710T1/it unknown
- 2016-08-26 RS RS20201521A patent/RS61196B1/sr unknown
- 2016-08-26 SG SG10201911692XA patent/SG10201911692XA/en unknown
- 2016-08-26 AU AU2016316777A patent/AU2016316777B2/en not_active Ceased
- 2016-08-26 DK DK18177129.6T patent/DK3418915T3/da active
- 2016-08-26 PT PT168427003T patent/PT3341864T/pt unknown
- 2016-08-26 SM SM20200707T patent/SMT202000707T1/it unknown
- 2016-08-26 SM SM20200708T patent/SMT202000708T1/it unknown
- 2016-08-26 RU RU2018110579A patent/RU2709673C2/ru active
- 2016-08-26 LT LTEP18177122.1T patent/LT3399446T/lt unknown
- 2016-08-26 SI SI201631007T patent/SI3341864T1/sl unknown
- 2016-08-26 DK DK18177122.1T patent/DK3399446T3/da active
- 2016-08-26 RS RS20201570A patent/RS61245B1/sr unknown
- 2016-08-26 SG SG10201911700PA patent/SG10201911700PA/en unknown
- 2016-08-26 RS RS20201520A patent/RS61195B1/sr unknown
- 2016-08-26 EP EP18177124.7A patent/EP3399447B1/en active Active
- 2016-08-26 HU HUE16842700A patent/HUE052995T2/hu unknown
- 2016-08-26 LT LTEP16842700.3T patent/LT3341864T/lt unknown
- 2016-08-26 EP EP20199607.1A patent/EP3796186A1/en active Pending
- 2016-08-26 PT PT181771221T patent/PT3399446T/pt unknown
- 2016-08-26 SM SM20200711T patent/SMT202000711T1/it unknown
- 2016-08-26 SI SI201631008T patent/SI3399447T1/sl unknown
- 2016-08-26 CN CN201910908023.5A patent/CN110633327B/zh active Active
- 2016-08-26 SG SG10201903623WA patent/SG10201903623WA/en unknown
- 2016-08-26 CN CN201680061456.6A patent/CN108351882B/zh active Active
- 2016-08-26 CN CN202110765131.9A patent/CN113486089B/zh active Active
- 2016-08-26 HU HUE18177129A patent/HUE053423T2/hu unknown
- 2016-08-26 JP JP2018521625A patent/JP6518838B6/ja active Active
- 2016-08-26 LT LTEP18177129.6T patent/LT3418915T/lt unknown
- 2016-08-26 LT LTEP18177127.0T patent/LT3399448T/lt unknown
- 2016-08-26 ES ES16842700T patent/ES2836526T3/es active Active
- 2016-08-26 EP EP18177122.1A patent/EP3399446B1/en active Active
- 2016-08-26 SI SI201631015T patent/SI3399448T1/sl unknown
- 2016-08-26 SG SG10201911702QA patent/SG10201911702QA/en unknown
- 2016-08-26 PT PT181771270T patent/PT3399448T/pt unknown
- 2016-08-26 PT PT181771296T patent/PT3418915T/pt unknown
- 2016-08-26 SG SG10201805466SA patent/SG10201805466SA/en unknown
- 2016-08-26 PL PL18177124.7T patent/PL3399447T3/pl unknown
- 2016-08-26 RS RS20201522A patent/RS61199B1/sr unknown
- 2016-08-26 PT PT181771247T patent/PT3399447T/pt unknown
- 2016-08-26 EP EP18177127.0A patent/EP3399448B1/en active Active
- 2016-08-26 KR KR1020187008784A patent/KR102012435B1/ko active Active
- 2016-08-26 HU HUE18177124A patent/HUE053427T2/hu unknown
- 2016-08-26 CA CA3027398A patent/CA3027398C/en active Active
- 2016-08-26 SG SG10201805458PA patent/SG10201805458PA/en unknown
- 2016-08-26 HU HUE18177122A patent/HUE052785T2/hu unknown
- 2016-08-26 CA CA3129804A patent/CA3129804A1/en active Pending
- 2016-08-26 SI SI201631017T patent/SI3418915T1/sl unknown
- 2016-08-26 HR HRP20201935TT patent/HRP20201935T1/hr unknown
- 2016-08-26 DK DK18177124.7T patent/DK3399447T3/da active
- 2016-08-26 CA CA2996714A patent/CA2996714C/en active Active
- 2016-08-26 RS RS20201569A patent/RS61244B1/sr unknown
- 2016-08-26 PL PL16842700T patent/PL3341864T3/pl unknown
- 2016-08-26 CN CN201910908046.6A patent/CN110659331B/zh active Active
- 2016-08-26 SI SI201631006T patent/SI3399446T1/sl unknown
- 2016-08-26 DK DK18177127.0T patent/DK3399448T3/da active
- 2016-08-26 ES ES18177122T patent/ES2837476T3/es active Active
- 2016-08-26 EP EP16842700.3A patent/EP3341864B1/en active Active
- 2016-08-26 PL PL18177129.6T patent/PL3418915T3/pl unknown
- 2016-08-26 EP EP18177129.6A patent/EP3418915B1/en active Active
- 2016-08-26 SM SM20200709T patent/SMT202000709T1/it unknown
- 2016-08-26 SG SG10201912712VA patent/SG10201912712VA/en unknown
- 2016-08-26 ES ES18177124T patent/ES2837480T3/es active Active
- 2016-08-26 PL PL18177122.1T patent/PL3399446T3/pl unknown
- 2016-08-26 KR KR1020197023809A patent/KR102062896B1/ko active Active
-
2019
- 2019-03-28 AU AU2019202138A patent/AU2019202138B2/en not_active Ceased
- 2019-04-22 JP JP2019081303A patent/JP6686209B2/ja active Active
- 2019-09-13 AU AU2019229435A patent/AU2019229435B2/en not_active Ceased
- 2019-09-13 AU AU2019229437A patent/AU2019229437B2/en not_active Ceased
-
2020
- 2020-01-08 AU AU2020200149A patent/AU2020200149B2/en not_active Ceased
- 2020-03-12 AU AU2020201827A patent/AU2020201827B2/en not_active Ceased
- 2020-04-01 JP JP2020065934A patent/JP6811350B2/ja active Active
- 2020-12-03 HR HRP20201936TT patent/HRP20201936T1/hr unknown
- 2020-12-03 HR HRP20201937TT patent/HRP20201937T1/hr unknown
- 2020-12-10 HR HRP20201982TT patent/HRP20201982T1/hr unknown
- 2020-12-10 HR HRP20201983TT patent/HRP20201983T1/hr unknown
- 2020-12-14 CY CY20201101179T patent/CY1123628T1/el unknown
- 2020-12-14 JP JP2020206439A patent/JP6878670B2/ja active Active
- 2020-12-14 CY CY20201101180T patent/CY1123629T1/el unknown
- 2020-12-14 CY CY20201101181T patent/CY1123630T1/el unknown
- 2020-12-18 CY CY20201101198T patent/CY1123640T1/el unknown
- 2020-12-18 CY CY20201101199T patent/CY1123641T1/el unknown
-
2021
- 2021-02-12 AU AU2021200938A patent/AU2021200938B2/en not_active Ceased
- 2021-04-28 JP JP2021076407A patent/JP7184959B2/ja active Active
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| AU2021200938B2 (en) | Methods and apparatus for a distributed database within a network | |
| US12487990B2 (en) | Methods and apparatus for a distributed database within a network | |
| WO2017040313A1 (en) | Methods and apparatus for a distributed database within a network | |
| HK40049322A (en) | Methods and apparatus for a distributed database within a network | |
| HK1262934A1 (en) | Methods and apparatus for distributed database within a network | |
| HK1262934B (en) | Methods and apparatus for distributed database within a network | |
| HK1262933B (en) | Methods and apparatus for a distributed database within a network | |
| HK1262933A1 (en) | Methods and apparatus for a distributed database within a network | |
| HK40001698A (en) | Methods and apparatus for a distributed database within a network | |
| HK40001698B (en) | Methods and apparatus for a distributed database within a network | |
| HK1249233B (en) | Methods and apparatus for a distributed database within a network |