PIVX Zerocoin (zPIV) Tekniskt dokument

Revision 0.9
Senast uppdaterad 16 oktober 2017

PIVX ÖVERSIKT

PIVX är en Bitcoin-baserad community-centrerad kryptovaluta med fokus på decentralisering, integritet och användning i det verkliga livet. Den använder ett energieffektivt “Proof of Stake” protokoll och ett avancerat Masternode-nätverk för en innehållsrik och community-baserad utveckling, tillsammans med ett blockchain-baserat självfinansierat treasury-system som garanterar hållbarheten.

PIVX strävar ständigt efter att uppnå ett bättre ledningssystem, omedelbara privata transaktioner och utbytbarhet för att förbli nästa generationens kryptovaluta.
Enkelt förklarat så är PIVX i grunden en form av digitala pengar som enkelt kan överföras över hela världen på ett ögonblick med nästan obefintliga transaktionsavgifter. Du kan konvertera dina pengar till PIVX på olika börser och genom att hålla dom i en plånbok, tjäna belöningar som motsvarar ränta, handla på en börs för att köpa andra digitala valutor eller köpa varor och tjänster online och offline där det accepteras. Den ägs inte eller styrs av någon enskild person eller organisation och dess nätverk är säkrat av tusentals noder runt om i världen av sina användare. Målet med PIVX är att vara en avancerad digital valuta som är snabb, säker, decentraliserad och privat.

KRYPTOVALUTANS TRANSAKTIONS INTEGRITET

De vanligaste kryptovalutorna såsom Bitcoin har ett välkänt publikationssystem där alla transaktioner är synliga och spårbara genom sin blockutforskare. Detta resulterar i att allt och alla har förmågan att se alla tillhörande transaktioner och saldon men ännu viktigare; dess tillhörande adresser också. Det innebär att historiken från den tidigare adress ägaren nu är synlig via din egen adress när mynten har gått igenom blockchain och hamnat i din egen plånboksadress.

En adress kan verka som om den är helt anonym, men om du har gjort en transaktion med en adress som genereras av börserna och/eller andra handelstjänster, har du i själva verket länkat din anonyma adress med en adress som kan leda till din identitet.

I de flesta scenarier är en sådan öppenhet inte ett problem. Men det kan bli ett allvarligt problem om det mynt du äger, en gång var förknippat med en oönskad historia eller om din adress var av intresse för potentiella tjuvar.

Till exempel, ett mynt du mottog var från en adress ägd av en person eller organisation som har bedrivit olaglig verksamhet och övervakades och spårades av myndigheterna. Detta betyder nu att du kan ifrågasättas om ditt förhållande till den tidigare ägaren av de mynt som du nu äger trots att du fått dem lagligt. Detta kan också innebära att mynt med sådan historia kan anses vara mindre värdefulla än andra mynt och resultera i nedsatt utbytbarhet.

VÅR LÖSNING = ZEROCOIN PROTOCOL (zPIV)

För att komma till rätta med detta problem, med början av uppdateringen av v3.0.0-kärnplånboken den 7 oktober 2017, har PIVX implementerat ett välkänt protokoll som heter Zerocoin, med många anpassade förbättringar som möjliggör transaktions anonymitet i blockchain-nivå i samband med att det inte kan länkas.
Vi kallar detta zPIV, där PIV är en enhet av PIVX och z prefixet är för Zerocoin.

Vad zPIV tillhandahåller är en protokollbaserad myntblandningstjänst med noll kunskapsbevis för att ta bort länken mellan avsändaren och mottagaren med 100% anonymitet och ospårbarhet. Detta innebär att varje mynt som skickas med zPIV nu är 100% användbar eftersom den inte har någon bestämbar historia som är kopplad till dem.

Användningen av zPIV betyder också att ditt saldo kan maskeras och undvika att utnyttjas av potentiella tjuvar. Detta är en mycket unik funktion som nästan ingen annan kryptovaluta har, som för närvarande finns på marknaden.

PIVX zPIV-ackumulatorer är krypterade med hjälp av RSA-2048 [1] “challenge generated keys” som negerar behovet av en utvecklarrelaterad setup och innebär att ingen individ känner till faktorerna. Detta innebär att allas integritet säkerställs genom användningen av zPIV.

UNIK FAKTOR

I skrivande stund (SEP 2017) är PIVX den enda “proof of stake” valutan att ha genomfört hela Zerocoin-protokollets ideologier i praxis. Medan det bygger på det ursprungliga biblioteket för libzerocoin som skapades av akademiska kryptografer, är majoriteten av PIVX zPIV-kod anpassad, vilket å ocksgör zPIV mycket unikt.
Original Zerocoin Whitepaper: https://isi.jhu.edu/~mgreen/ZerocoinOakland.pdf

Till skillnad från de flesta andra kryptovalutor som för närvarande använder ett zerocoin baserat protokoll, använder PIVX zPIV ett mycket effektivt “accumulator checkpointing system” som gör det möjligt för zPivs-utbetalningsprocess att använda kontrollpunkter som innehåller alla präglingar som gjordes innan zPiv-mynten spenderades, liksom en användarens valda antal zPiv-präglingar bortom kontrollpunkten. Detta möjliggör en stor pool av mynt i ackumulatorn, medan den fortfarande har mycket mindre beräkningskrav. PIVXs zPiv-implementering ger en minimal resursförbrukning och gör zPIV-transaktioner till en av de snabbaste privata överföringarna på marknaden idag.

PIVX zPIV TEKNISKA FÖRDELAR

  1. Mindre transaktionsstorlekar med i genomsnitt 25% över något annat aktuellt genomförande i en produktionsmiljö (ytterligare optimering i verk)
  2. Snabb verifiering och nätverkssynkronisering
  3. Direkt tilldelning av zPIV till en PIVX-adress
  4. Multipla Zerocoin-valörer är möjliga i en enda transaction
  5. Möjlighet att spendera exakta mängder och utfärda den återstående ändringen till antingen en PIVX-adress eller mera zPiv.

VERKLIGA FÖRDELAR MED ATT ANVÄNDA zPIV

  1. zPIV kan gömma din myntbalans från nyfikna ögon som skyddar dig från att vara en måltavla.
    ~Så din zPIV-balans är inte kopplad till någon särskild adress.
  2. zPIV kan dölja transaktionshistoriken för de mynt som skickas.
    ~Källan och måladresserna är inte synliga vilket gör den privat, säker och fungibel.
  3. .zPIVs anonyma transaktioner är mycket snabba.
    ~Det tar så lite som 0,5 sekunder att mynta och 2,5 sekunder att spendera zPIV.
  4. Automatisk omställning till zPIV är aktiverad som standard men transparenta överförings alternativ är fortfarande tillgängligt.
    ~Det innebär att du alltid kan skicka en helt transparent transaktion vid behov.

HUR ANONYMITET UPPNÅS

  1. Mynta (konvertera) din PIV till zPIV-valörer. (Wallet auto-mintar lite som standard)
  2. Spendera (skicka) dina zPIV som PIV till en intern eller extern PIVX plånboksadress

I grunden samlar zerocoinprotokollerna (kombinerar) alla zPIV som människor har konverterat (myntat) från deras PIV-balans till inställda valörer och använder dem för att skicka när en utgift initieras. Tänk på att poolingen inte betyder att allas zPIV lagras på ett centralt läge. Snarare håller den offentliga blockchainen (decentraliserad blockchain) koll på hur många zPIV som skapas.

När du vill skicka några zPIV till en PIVX-adress skickar din plånbok ett nollkännandebevis till blockchain som gör att zPIV kan konverteras tillbaka till PIV och skickas till måladressen i ett enda steg.
Eftersom zPiv-spenderingen skapar helt nya mynt om en spenderare kan ge “noll kännedom” om att hon har mynt i den ackumulerade poolen (ackumulatorn), kommer myntets transaktionshistorik från sina tidigare associerade adresser att kopplas bort och resulterar därmed i en ospårbar transaktion.

Till sist, en enkel analogi. Tänk på zPIV som casino chips. Du ger din 100 dollarsedel (dvs PIV) till kassören och du får 1x $ 10, 2x $ 20, 1x $ 50 dollar chips (dvs zPIV). Det innebär att du inte längre äger den särskilda 100-dollarsedeln du bytte ut och har istället ”bevis på” att du fortfarande äger 100 dollar. Nu när du behöver 50 dollar av det tillbaka som fiat (PIV), ger du dina marker (zPIV) tillbaka till kassan och kassören levererar en helt ny, 50 dollarsedel till en mottagare du väljer.

zPIV Prägling & Spenderings bearbetning

I detta exempel vill Kirby skicka PIV till Heidi med Zerocoin-protokollet för att anonymisera transaktionen

Steg för steg Präglings Process

  • Kirby initierar en begäran om att mynta 960 zPIV.
  • Zerocoin-protokollet omvandlar Kirby’s 960 PIV till motsvarande mängd zPIV, med användning av de största tillgängliga zPIV-valörerna.
  • Bakom kulisserna har Kirby fått hemlig kunskap som bevisar ägandet av denna prägling (ett unikt serienummer som används av Zerocoin-protokollet för att spåra ägande av specifika zPIV-belopp).
  • Kirbys saldo uppdateras i enlighet med detta
  • Med en minskning av 960 PIV och en ökning av 960 zPIV.
  • Kirby ser också att 960 zPIV består av följande belopp som har lagts till: 1x 500 zPIV, 4x 100 zPIV, 1x50 zPIV, 1x10 zPIV.

Steg för steg i spenderings processen

  • Kirby initierar en sändning av 960 zPIV till Heidi’s PIVX-adress.
  • Zerocoin-protokollet tar emot och validerar Kirbys hemliga kunskap som bevisar ägande. När den har använts kan den ursprungliga samlade balansen inte spenderas igen.
  • Zerocoin Protocol skapar 960 PIV på Heidis PIVX-adress.
  • Heidi tar emot 960 PIV från en anonym avsändare.
  • Kirbys saldo uppdateras i enlighet med detta – med en minskning på 960 zPIV.

Förklaring av valörer

För att förbättra sin transaktions effektivitet, samtidigt som den behåller en hög grad av komplexitet, har PIVX implementerat en uppsättning heltals baserade gemensamma nämnare för myntens (PIV) belopp som omvandlas till en pool av mynt till zPIV. (ungefär som casino chipsen ovan)

De beteckningar som används av zPIV är: 1, 5, 10, 50, 100, 500, 1000 och 5000. Användandet av denna uppsättning av valörer ger en bra balans mellan enkelhet, användbarhet och säkerhet. Det ultimata sättet att minska spårbarheten skulle vara att bara använda 1 valör (dvs 1 zPIV), men det är inte så praktiskt att göra det, eftersom stora transaktioner skulle kräva en stor mängd mynt.

Användning av en mycket stor uppsättning kan potentiellt öka spårbarheten till en osäker nivå, så det blev en kompromiss på en uppsättning av 8 möjliga myntbeteckningar. Denna uppsättning ses som ett ”bra mellanting” eftersom den inte innehåller några mynt som anses vara för låga eller för höga i värde. Eftersom värdet av PIV ändras, är det tänkbart att vi kommer att utvidga eller ändra denna uppsättning för att bemöta användarnas behov.

När du spenderar dina zPIV, kommer du helt enkelt ha ett bevis på att du har ett mynt med den beteckningen som inkluderar andra zPIV-präglingar av den beteckningen.

Det innebär att alla zPIV-betalningar kommer att göras i heltal (med en ändring som utfärdas för decimalmängder) vilket gör det nästan omöjligt att matcha beloppet före zPIV och efter zPIV från 2 olika adresser eftersom det finns många andra identiska zPIV- till PIV transaktioner gjorda.

Valör logik

Vid myntning (konvertering) eller utgifter (sända) zPIV, bestämmer varje algoritm automatiskt de använda valörerna.
När du spenderar (skickar) zPIV till en PIVX-adress, kommer följande algoritm automatiskt att bestämma de valörer som användes av användaren.

  1. Om du har exakt mängd börjar du med den största möjliga valören och går sen ner tills du når det totala.
  2. Annars: Minimera utgifterna (a) hitta nästa beteckning högre än utgiftsbeloppet (om möjligt) och använd det om det finns tillgängligt, (b) om det inte är tillgängligt börja med de större valörerna och gå ner tills du når ett belopp som är precis över vad som behövs.
  3. Eller: Minimera förändringen. Om det inte går att få ett exakt belopp, försök att hitta beloppet över vad som behövs, vilket minimerar hur många mynt du får över.

Auto Prägling

Sekretessen för zPIV blir effektivare när det finns flera av varje valör från många olika källor. För att säkerställa dess effektivitet har PIVX plånboken en funktion att auto prägla (konvertera) en konfigurerbar mängd PIV från plånbokens saldo till zPIV utan att man manuellt behöver konvertera.

Automint (mynta/prägla) startar när plånboken/daemon startas, och plånboken är upplåst (antingen helt eller bara för staking) och blockchainen synkroniseras. Det innebär att om din plånbok är krypterad och låst kommer inte auto-mint-funktionen att göras. När plånboken är upplåst kommer den fortfarande inte att röra någon UTXO som är låst, såsom de som används som säkerhet för masternoder.

– standardprocentandel: 10%. Kan ändras via GUI eller via kommandoradsalternativet
– zeromint% = <n> eller pivx.conf` zeromint% = <n> `får inte vara mindre än 10%.
– standard status: Aktiverad. Kan deaktiveras (t.ex. för börser) via kommandoradsalternativet
– enablezeromint = 0` eller pivx.conf `enablezeromint = 0

Användaren kan nu konfigurera ett visst belopp för Automint via användargränssnittet, kommandoradsalternativet `-preferredDenom = <n>` eller pivx.conf `preferredDenom = <n>` <n> är en av de tillgängliga valörerna `1/5 / 10/50/100/500/1000/5000 ”eller” 0 ”(betyder ingen preferens alls och låta Automint göra vad som helst).

Om det inte finns tillräckligt med mynt för det angivna beloppet väntar Automint tills det finns tillräckligt med mynt.

Med varje inkommande nytt block händer följande:

  1. Kontrollera hur många präglade mynt är tillgängliga.
  2. Detta utesluter omogna mynt och låsta mynt (t ex från masternoder)
  3. Kontrollera hur mycket Zerocoin / zPIV är tillgängligt
  4. Kontrollera om procentsatsen ligger under målprocenten

Om procentsatsen ligger under målprocenten gör den följande:

  1. Beräknar hur många PIV behöver konverteras till zPIV, t.ex. 2015
  2. Använder nästa mindre valör (här 1000 PIV) och myntar 1000 zPIV
  3. Upprepa tills tillräckligt många zPIV är myntade.

I mitt exempel ovan skulle det första inkommande blocket utlösa en prägling av 1000 zPIV, nästa gång också 1000 zPIV, den tredje 10 zPIV och den fjärde en 5 zPIV (förutsatt att ingen ny inkommande PIV ändrar basmängden av tillgängliga PIV).

Anledningen till att använda nästa mindre valör och att bara använda en benämning per block är prestanda, det är uppenbart att exakta valörer inte behöver delas upp i exakta valörer, och en enda mint kan göras inom rimlig tid.

Undantag: Om en stor mängd PIV behöver präglas använder vi INTE vår största benämning på 5000 PIV men 6666 PIV för att få en jämnare fördelning av tillgängliga valörer (6666 = 5000 + 1000 + 500 + 100 + 50 + 10 + 5 + 1, som är våra 8 tillgängliga valörer).

zPIV Automint Process

(baserat på standardinställningar)

 

  1. Kirby, före lanseringen av Zerocoin-protokollet, har ett saldo på 17 900 PIV. Han äger en masternode, så 10 000 PIV av hans balans hålls låst som säkerhet via masternodens dedikerade adress. Kirby har inte använt Coin Control för att låsa de återstående 7 900 PIV.
  2. Zerocoin Protocol är implementerat.
  3. Zerocoin Protocol behandlar varje enskild adress individuellt enligt följande:
  4. Bestäm om mynten är låsta.
  5. Om mynten inte är låsta, konvertera 10% av PIV till zPIV.
  6. Om mynten är låsta, gör ingenting.
  7. Kirby ser att hans saldo har minskat med 790 PIV, vilket motsvarar 10% av sina mynt som inte är låsta.
  8. Kirby ser också att hans saldo har ökat med 790 zPIV. Eftersom han inte har angett några preferenser för zPIV-valörer har han nu följande valörer att spendera:
  • 1x 500 zPIV
  • 2x 100 zPIV
  • 1x 50 zPIV
  • 4x 10 zPIV

Spenderings säkerhetsnivå

När du spenderar zPIV-mynt, uppmanas en användare att ange en säkerhetsnivå som man väljer mellan 1-100. På ett indirekt sätt tillåter parametern Security Level användaren att välja hur många mynt som ska ändras “obfuscate” med sin transaktion.

En säkerhetsnivå på 1, till exempel, skulle ta alla präglade mynt i blockchainen innan din myntning läggs till blockchainen, och skulle sedan lägga till några mynt som präglades inom de kommande 10 blocken. En säkerhetsnivå på 2 skulle göra detsamma, förutom att lägga till de 20 följande värdena av myntningar. En säkerhetsnivå på 100 lägger till det maximala antalet präglingar upp till den aktuella sidan av blockchainen.

Ju högre säkerhetsnivå, ju mer beräkning och tid det tar att spendera. Även om det tar längre tid, rekommenderas en nivå på 100 för transaktioner som kräver maximal anonymitet.

Hantering av förändring

Eftersom zPIV består av fasta valörer kommer det att finnas tillfällen då det belopp som behövs för att spendera inte kan bestå av befintliga valörer. Om du till exempel har en 1000 zPIV-valör men du vill skicka 985 PIV till en adress kommer det att finnas en skillnad på 15 PIV som kommer att tas emot som ändring. Denna ändring kan äventyra transaktionens integritet eftersom det kan leda tillbaka till din befintliga adress om du felaktigt blandar in din ändring med dina andra PIVX-adresser.

För att förhindra detta finns det två metoder som kan användas. Första alternativet är användningen av den inbyggda funktionen som automatiskt omvandlar ändringen tillbaka till zPIV. Denna kommer att spendera zPIV i den önskade mängden PIV till måladressen, och sedan mynta den återstående balansen av PIV tillbaka till zPIV. Detta är den bekvämaste metoden. Förändringar som inte kan konverteras till en valör (den lägsta valören är 1) kommer att omvandlas till en avgift.
Det andra alternativet är att utfärda små valörer till en vanlig PIVX-adress, vilket ger dig möjlighet att hantera segregeringen av den Piv från ditt dagliga Piv-saldo. Det här alternativet kan leda till misstag och rekommenderas inte om anonymitet är viktigt för transaktionen.

zPIV-data integritet

Varje präglad zPIV-valör är kopplad till ett unikt serienummer som lagras i den lokala plånboken och inte på blockchainen. Det innebär att när en ny zPIV-beteckning är myntad, bör wallet.dat säkerhetskopieras eftersom den tidigare säkerhetskopieringen inte kommer att ha serienumren för de nya zPIV-mynten.

Serienummret och andra viktiga zPIV-data är bundna till databasen (wallet.dat) innan transaktionen är klar och sänds till nätverket. Detta minimerar risken för att du förlorar dina nya zPIV-valörer genom en oväntad händelse under sammanslagningen av zPIV, till exempel en PC-krasch eller problem med internetanslutningen.

På grund av sin lokala databasdesign är det viktigt att din plånbok blir säkerhetskopierad efter varje nytt zPIV-mynt för att se till att serienumren är uppdaterade.

Tekniska specifikationer (v1.0)
Nyckelfunktioner: Custom accumulator checkpointing system
Accumulator kryptering: RSA-2048
zPIV Valörer: 1, 5, 10, 50, 100, 500, 1000, 5000
Mynt tid: >= 0.5 seconds
Spenderings tid: >= 2.5 seconds
Maximal enskild spenderingsgräns: 35,000 PIV
Maximal singel spenderings denomineringstalsgräns: 7
Block size: 2 MB (var 1 MB före v3.0.0 zPIV wallet)
Avgifter (mynt): 0.01 PIV per myntad zPIV valör.
Avgifter (spendera): Ingen avgift för att spendera zPIV tillbaka till PIV.
Minimum PIV-bekräftelse som krävs för att minta zPIV: 6
Minsta zPIV-bekräftelse som krävs före utgifter: 20
Ytterligare krav före zPiv kan spenderas: 3 präglingar läggs till ackumulatorn efter ditt tillägg.
Författare
Skriven av: jakiman, 4ml
Tekniskt kunnande: spock, presstab, fuzzbawls, mrs-x
Översatt: crypt0swede

REFERENSER
[1] https://en.wikipedia.org/wiki/RSA-2048

FAQ

1. So is zPIV a new coin? Is this effectively a coin swap?

No. zPIV is not a new coin. It is a protocol-level pooling of existing PIV using zero-knowledge proofs.

2. Will I lose or affect my coins?

No. You will not lose your coins whatsoever (except for any fees associated with minting). However, as part of the zPIV pooling using everyone’s wallet to increase its complexity, it will convert 10% of your PIV into zPIV within your own wallet. You are free to spend that zPIV back to your PIV address to keep it in PIV if desired. No. You will not lose your coins whatsoever. However, as part of the zPIV pooling using everyone’s wallet to increase its complexity, it will convert 10% of your PIV into zPIV within your own wallet. You are free to spend that zPIV back to your PIV address to keep it in PIV if desired.

3. How does it work with exchanges such as Bittrex?

As zPIV is sent only as PIV when sending to an address, there is zero incompatibility with any existing exchanges. zPIV is used within your own desktop wallet only to increase transaction privacy. The actual coin transfers and PIV balance will always be under your control.

4. Can I stake my zPIV balance?

Unfortunately, zPIV staking is not available currently but it is under consideration for future revisions.

5. Do I have to use zPIV?

No. You can use your PIV balance and transfers just like now without using zPIV.

6. Why are zPIV minted in different denominations?

Denominations are used to help keep things more anonymous. Imagine if you created 6543.123456 zerocoins and then soon after someone else received 6543.123456 PIV. It’s very likely that you are the one paying the amount. By using a limited number of zerocoin denominations (currently 8), you’ll never see amounts like that and thus less likely be identified. For maximum anonymity, only 1 zerocoin denomination would be used – say equivalent to 1 PIV for example. However, that would make transactions very difficult since you’d have to pack up 20 separate 1 zPIV codes into a transaction if you wanted to pay 20 zPIV, versus simply using 2 codes of 10 zPIV denominations. As the amounts get larger it becomes even more useful to use larger denominations. It is similar to buying a new car using $1 bills – which would be pretty crazy for everyone involved.

 

For the best anonymity it is better to have a number of zerocoins at each of the denominations handy and ready for spends. For the above example (in our case rounded up to integer number of zPIVs), it would be better to Mint something like 7000 zPIV (i.e. 1 5000 zPIV and 2 1000 zPIVs) so that you could later pay out 6543 to someone, rather than minting exactly that amount.  That way it is much less likely that someone could link the transactions. This is also while it is important to create a large pool of denominations both overall and at least some spread for each user ahead of any actual transactions.

7. Are there any fees for using zPIV?

Yes and No. It costs 0.01 piv per minted denomination but is free to spend zPIV (convert/send zPIV back to PIV address)

 

E.g. Converting 7 PIV into 7 zPIV will involve minting 3 denominations of 1,1,5 zPIV. So this will cost 0.03 PIV in fees.

8. Do the developers have the private key to decrypt zPIV transactions?

No. RSA-2048 challenge was used to setup the encryption so no individual knows the factors.

9. Whenever I get new stake rewards, my wallet initiates the auto-mint and mints some extra zPIV coins. Why is this so & can it be disabled?

This is due to the auto mint algorithm detecting that your zPIV balance is below 10% as a result of the extra stake reward. You can prevent dust auto-minting by modifying the `Preferred zPIV Denomination` in `Options`. When you change this to a larger denomination amount, Auto-mint will only mint when your wallet balance increases enough to be able to satisfy the minimum denomination value.