在下面的例子中,小明打算使用零幣協議將普維幣轉給小紅以進行匿名交易。
下面是該貨幣間轉換的具體過程
小明發出轉換960 額度的普維零幣的指令。
零幣協議以最大面值的普維零幣,將小明的960 普維幣轉換為等額的普維零幣 。
.在這個過程中, 小明已提交驗證資訊 以證明這個轉賬貨幣的所有權(該所有權證明是一串特定的序列號,以供零幣協議追蹤特定普維零幣面額的所有權)。
小明的賬戶收支資訊會相應的更新
每減少960的普維幣,相應的會增加960的普維零幣。
小明還看到,新增的960 的普維零幣由以下貨幣面額組成:1張 500 的普維零幣,4張 100 的普維零幣,1張 50 的普維零幣,和1張10 的普維零幣。
支付過程的具體介紹
小明發起將960個普維幣轉給小紅的普維幣地址的指令。
零幣協議收到並驗證了小明的驗證資訊,證明了其所有權。驗證過後,轉賬餘額既已生成。
零幣協議在小紅的普維幣地址建立了960個普維幣。
小紅收到匿名轉賬人的960 個普維幣。
小明的賬戶收支平衡會相應更新即減少960個普維零幣。
面額的闡釋
為了在確保系統高度的完備性的同時提高交易效率,普維幣採用了一套基於整數的硬幣面額體系。採用該體系可以將普維幣轉換為普維零幣, 並用普維零幣作為約轉憑證。 (可類比之前提到的賭場籌碼示例)
普維零幣使用的面額是:1,5,10,50,100,500,1000和5000.
這套面額的設計讓其兼具了簡便性、實用性、和安全性。
減少交易的可追溯性的終極方法是隻使用1種面額(例如額度為1的普維零幣),但這樣做並不是很實際,因為大宗交易需要大量的硬幣。
而僅使用一個非常大的額度則會增加貨幣交易的可追溯性和不安全性,因此該額度體系最終確立為8種硬幣面額。
這種額度設計實現其功能的最優性,其面額確保了硬幣轉換的適度性。
隨著普維幣價值的變化,我們也會根據實際使用者需求相應的調整該面額體系 。
當您使用普維零幣進行支付時,你只需要提供等額其他型別貨幣的證明即可。
這意味著所有的普維零幣的轉換都將以整數進行(以十進位制進行轉換),這樣一來在轉換成普維零幣的前後,兩個不同的地址之間的匹配是無法操作,但同時其他等額的普維幣和普維零幣之間的約轉則不會受到影響。
面額設計思路
當鑄幣(普維幣轉換為普維零幣)時,演算法將自動確定該轉換的使用面額。
當普維零幣支付(或傳送)到制定的普維幣地址時,演算法又將自動確定該過程中使用的面額。
1)如果你設定了某個額度的交易金額,系統會自動匹配可能的最大面額以給出相應額度的貨幣
2) 否則:支付的最小化(a)可設定略微比支付金額更高的一個面額(如九十九可設定為一百)並用其支付,(b)如果不行的話,則從較大的面額逐級向下匹配,直到達到剛好超過所需的額度
3) 或者:硬幣的最少化。如果約轉的金額額度太小,系統會找到其四捨五入的額度,以最大限度地減少收到的硬幣數量。
自動轉換
當不同使用者轉換的普維零幣的面額更豐富時,普維零幣可以保障更強的使用者隱私性。
所以,為了增強其高效性,普維幣錢包有一個功能,可把錢包餘額中的一部分金額設定普維幣自動轉換為普維零幣的功能,從而免去手動操作轉換。
當錢包/守護程式啟動時,自動轉化功能啟動,錢包被解鎖(完全或部分)並同步區塊鏈。
這意味著,如果您的錢包被加密並鎖定,自動提供的功能將不會啟用。
當錢包被解鎖時,它仍然不會涉及任何被鎖定的未花費的交易輸出(UTXO),例如用作主節點的抵押部分。
– 預設百分比:10%。可以透過GUI或透過命令列選項`-zeromintpercentage = <n>`或pivx.conf`zeromintpercentage = <n>`來改變,其值不能少於10%。
— 預設狀態:已啟用。可以透過命令列選項“-enablezeromint = 0”或pivx.conf“enablezeromint = 0”來禁用(例如交換過程中)
使用者現在可以透過UI設定自動約轉的自定義優先面額,命令列選項`-preferredDenom = <n>`或pivx.conf`preferredDenom = <n>`<n>代表可用面額之一`1/5 / 10/50/100/500/1000 / 5000`或者`0`(0代表完全沒有偏好,讓自動約轉自主完成)。
當硬幣數量不足時,自動約轉功能會等硬幣足額時在進行自定義面額的自動約轉。
每傳入一個新區塊,它都會:檢查有多少可用硬幣。
這不包括未鑄好的硬幣和鎖定的硬幣(如主節點中的)
檢查可用的零幣或普維零幣的數額
檢查百分比是否低於目標百分比
如果百分比低於目標百分比,它會:
計算需要將多少個普維幣轉換成普維零幣,例如2015
使用下一個較小的面額(這裡是1000 普維幣)並轉換1000 普維零幣
重新整理並重復,直到足夠的普維零幣被鑄造好。
在我上面的示例中,第一個區塊將用於開始轉換 1000 個普維零幣,下一個區塊將用於轉換下一個1000 普維零幣,接著轉換10 個普維零幣和5個 普維零幣(假設沒有新的普維幣改變可用普維幣的基值)。
使用相應面額,並每個區塊只使用一個面額的原因是確保其高效性。特定面額不需要轉成更小面額,單次區塊轉換某個面額的速度較快 。
例外:如果需要轉換大量的普維幣,我們不會使用5000 普維幣的最大面額,而使用6666 普維幣從而讓分配的面值(6666 = 5000 + 1000 + 500 + 100 + 50 + 10 + 5 + 1,這是我們的8個可用面值)分佈得更加平均。
普維零幣自動約轉的過程 (基於預設設定)在“零點議定書”執行之前,小明有17,900的普維幣餘額。 其中,他有一個主節點,所以他賬戶中的10,000 個普維幣被儲存在主節點的專用地址並被鎖定為抵押品。 小明還沒有使用“硬幣管理”來鎖定剩餘的7,900 普維幣。接著,零幣議定書開始執行零幣協議對每個地址的執行過程如下所示:
判定硬幣是否被鎖定。
如果硬幣未鎖定,則將該部分數額的10%從普維幣轉換為普維零幣。
如果硬幣被鎖住,自動約轉不適用。
小明看到他的賬戶中減少了790 個普維幣,這相當於他未鎖的硬幣數額的10%。
小明也能看到他的賬戶增加了790 個普維零幣。 由於他沒有設定任何普維零幣面額的偏好,他現在有以下可用的面額:
· 1個500面額的普維零幣
· 2個100面額的普維零幣
· 1個50面額的普維零幣
· 4個10面額的普維零幣
支付安全等級
當支付普維零幣面額時,使用者獲得從1-100選擇安全級別的提示。 這種間接的方式,透過設定安全級別引數,允許使用者選擇多少硬幣來混淆他們的交易。
例如,當安全級別設定為1時,它在您把轉換的硬幣新增至區塊鏈之前,將區塊鏈中的所有鑄造硬幣都拿走,然後把新轉換的10個區塊的硬幣都新增進來。
當安全級別為2時, 它會執行類似操作,只不過會將新轉換的20個區塊新增進來。 當安全級別為100時, 它會將最大量的新轉換的鑄幣新增到區塊鏈的當前末端。
安全級別越高,計算更復雜和花費的時間也越多。 儘管需要更長時間,但如需最大程度的匿名交易,推薦使用100的安全級別。
處理變更
由於普維零幣是由固定面額組成的,因此會出現支付金額不能由現有的面值來湊成的情況。
例如,如果您有一個1000面額的普維零幣,但是您希望將985個普維幣傳送到某一個地址,那麼對方將收到15個普維幣的找零。
如果您將您的找零的地址與您其他普維幣地址混淆的話,這些找零可能會危及此次交易的隱私性,因為這些零錢將返回到您的現有地址。
為了防止這種情況,有兩種方法可以使用。
第一個選擇是使用內建的功能,自動將零錢轉換成普維零幣。
這種操作會按照指定的數額約轉成普維零幣,以普維零幣完成支付,然後將剩餘的普維幣自動也轉成普維零幣。
這是最方便的方法。然而,不能兌換成任一面值的零錢(最低面額是1)將被轉換為費用。
第二種選擇是把零錢轉到特定的普維幣地址,這讓您在處理日常普維幣賬戶時,花費額外的精力來單獨處理零錢這一部分。採用這種方式時使用者有可能會出錯,如果您很看重交易的匿名性,則不建議使用該選項。
普維零幣的資料完整性
每個轉換的普維零幣的面額都有其唯一的序列號。 該序列號儲存在當地的錢包(wallet.dat)中, 而不是存在區塊鏈中。
這意味著,當一個新的普維零幣被轉換後,您的當地錢包(wallet.dat)應該會有備份。因為以前的備份中不會有新轉換的普維零幣的序列號。
序列號和其他重要的普維零幣資料在交易完成和釋出到網路之前會被提交給資料庫(wallet.dat)。
這可以最大限度地降低在普維零幣遇到意外事件期間損失新鑄造的普維零幣的風險,例如電腦出現故障或網際網路連線出現問題。
因其是基於本地資料庫的設計,在每次轉換成普維零幣時,您的錢包都必須備份,以確保您的面額序號是最新的。
技術規格(v1.0)
主要特點:自定義累加器檢查點系統
累加器加密:RSA-2048
普維零幣面額:1,5,10,50,100,500,1000,5000
造幣時間:> = 0.5秒
支付時間:> = 2.5秒
最大單筆支付限額:35,000 PIV
最大單筆支出面額計數限制:7
區塊大小:2 MB(在v3.0.0版本 普維零幣錢包之前區塊大小為1 MB)
費用(轉換):根據每次轉換普維零幣的面額收取相應數額0.01的普維幣。
費用(支付):免費將普維零幣轉成普維幣。
轉換成普維零幣所需的最小普維幣量:6
支付前確認的最小普維零幣量:20
實用普維零幣支付的其他要求:支付普維零幣前需要新增 3個轉換到累加器中。
作者:雅基曼,四毫升
技術輸入:spock,presstab,fuzzbawls,mrs-x