普维零币(zPIV)技术白皮书

0.9修改版

20171016日最新更新

普维币概览

.普维币是一个基于比特币的以社区为中心的加密货币,专注于管理的分权性,交易的隐私性和真实性。它使用节能的股权证书协议,构建了二级主节点网络,采用以社区为本的友好兼爱的治理理念, 并拥有以自主资金库系统为基础的区块链以确保其稳定性和可持续性。

普维币不断努力构建更好的治理体系,即时隐秘的交易平台,并充分开发其互换性,从而为下一代加密货币做准备。

通俗地说,普维币是一种在线数字货币,在收取微乎其微的交易费的情况下实现货币的全世界流通和交易。

您可以将各种币种兑换成普维币,持有时即可赚取类似利息的奖励,也可在交易所买卖其他数字货币,并支持您在线或离线购买各种商品或服务。

普维币并非由任何个人或组织所拥有或管理,其网络由在全球数千个节点持有者的用户进行维护。

普维币致力于成为一个快速,安全,分权的,私密的高级数字货币。

加密货币的交易隐私

像比特币这样的大多数常见的加密货币都有一个众所周知的公共分类账系统,所有的交易都可以通过其区块浏览器进行查看和追踪。

这种方式可以让每个用户查看其所有相关的交易和余额,更重要的是用户也可以看到个人交易相关的地址。

这意味着,一旦硬币通过区块链到达自己的钱包地址,用户就可以通过自己的地址查看到该地址之前所有者的网络流通历史。

一个地址可能看起来像是完全匿名的,但如果您使用由交易所和/或其他商户服务商生成的地址进行交易,实质上您已将您的匿名地址与个人身份的地址关联起来。

在大多数情况下,这种信息透明可能不是问题。但如果你所持有的硬币曾经有不良历史,或者你的地址成为潜在盗贼的目标,这时该问题便不容小觑。

例如,您收到的钱币来自一个从事非法活动并由主管部门监督和跟踪的个人或组织所拥有的地址。

 

现在这意味着,在合法交易货币并不认识之前货币持有者的情况下,您可能会被问到您与之前的货币持有者之间的关系。

这也意味着相较于其他无历史风险的硬币,此类拥有风险历史的硬币会被视为低值货币 。

我们的解决方案= 普维币零币协议(zPIV)

为了解决这个问题,从2017年10月7日开始,发布了v3.0.0核心钱包的系统更新,普维币采用了零币高级审查协议。 它具有许多自定义增强功能,通过交易过程的不可链接,实现区块链交易的匿名性。

我们称之为普维零币(zPIV),其中PIV取自普维币(PIVX),z是零币(Zerocoin)的首字母缩写。

 

普维零币(zPIV)协议提供的是一个协议级别的硬币混合服务,它使用“零知识证明” (“零知识证明”是一种特殊的交互式来切断发送者和接收者之间的链接,并保证百分之百的匿名性和不可追踪性。

这意味着使用普维零币协议(zPIV)发送的每个硬币现在都是100%可兑换的,因为它们没有可识别的历史记录。

普维零币协议(zPIV)的使用也意味着您的账户余额可以隐藏起来,以避免称成为小偷的目标。该功能在目前的加密货币市场上仍属首创,独占鳌头 。

采用普维零币协议(zPIV)的普维币累加器,使用RSA-2048 [1]生成的密钥进行加密,从而免去开发人员信任安装设置,即个人信息的更高隐秘性。

这意味着通过使用普维零币协议(zPIV)可以保障每个用户的隐私。

产品特点

根据 2017年九月前文所述,普维币是唯一采用完整的零币协议理念和具体措施的股权证书加密货币。

在密码学领域的学者创建的原始自由零币(libzerocoin)公共存储库的基础上,大多数普维零币(以下代指PIVX zPIV)代码是自定义的,这也成就了普维零币(zPIV)的独特性。

原始的零币白皮书链接:https//isi.jhu.edu/~mgreen/ZerocoinOakland.pdf

与目前使用零币协议的其他加密货币不同,普维零币(PIVX zPIV)使用非常高效的累加器检查点系统,该系统允许普维零币的支付流程使用检查点和检查点外的用户选定的普维零币铸币。其中,检查点包含所有未支付过的普维零币铸币。

这样让蓄积器中存储大量的硬币,同时维持相对较小的计算需求。

普维零币(PIVX’s zPiv)实现最小的生产能耗,并让普维零币交易成为当今市场上最快的私人转账业务之一。

普维零币(PIVX zPIV)的技术优势

  1. 更低的经营成本。与类似生产环境中其他交易相比,其生产成本低25%(实现生产的进一步优化)。

2.快速验证和优越的网络同步性能

3.直接将普维零币协议应用于普维币的地址设置上

4.单次交易中可实现多个零币额度消费

5.能实现精确的金额支付,并将余额转为普维币或普维零币(zPiv)。

 

使用普维零币(zPIV)的实际优点

普维零币(zPIV)可以隐藏你的硬币余额,从而保护你免受攻击。

所以你的普维零币(zPIV)余额没有链接到某个特定的地址。

普维零币(zPIV)可以隐藏交易中的硬币的交易记录。

      源地址和目标地址不可见,从而保证它的私密性,安全性和交易性。

普维零币(zPIV)匿名交易快速。

     使用普维零币(zPIV)只需要0.5秒的时间来铸币和2.5秒的时间来支付。

默认情况下自动转换为普维零币(zPIV),但透明转账功能仍适用。

      这意味着您可以随时在需要时进行完全透明的交易。

HOW ANONYMITY IS ACHIEVED

如何实现异同

  1. 将您的普维币转成普维零币(zPIV)相应的面值。 (电子钱包自动设置一些系统默认值)

2.将您的普维零币协议(zPIV)作为普维币支付(发送)到任何内部或外部普维币钱包地址

 

实际上,零币协议蓄积了(已包含)人们已经用普维币兑换(即铸造普维零币)的一定面值的普维零币,并可以用于各类交易的支付

大家需要理解的是,该蓄积过程并不意味着每个人的普维零币都存储在一个集中的特定的位置。

相反,公共分类账系统(分权式区块链)会记录所产普维零币的数量。

当您想要将一定数额的普维零币转账(支付)到某个普维币地址时,您的钱包会向区块链发送一个零知识证明,允许普维零币转回普维币,并将货币转至指定的目标地址。上述过程均能在一个步骤中完成。

如果支付人可以提供零知识证明已证明她在蓄积池(累加器)中持有硬币,普维币用户既可以兑换普维零币进行交易的支付。 而由于普维零币的支付过程中创造了全新的硬币, 那么新生成的硬币的交易历史地址不会被链接,从而使得该货币交易难以追踪。

最后,我们可以用一个简单的比喻来形容该过程。

您可以把普维零币想象成赌场的筹码。

您把100美元的钞票(即普维币)交给收银员,你可以得到大约110美元,220美元,150美元的筹码(即普维零币)。

这样您不再拥有那张100美元的钞票,而拥有能证明你持有100美元的筹码。

 

现在,当你需要换回50美元的钞票(即普维币)时,您只需把您的筹码(普维零币)交给收银员,收银员就会给您一个全新的50美元的钞票。

 

普维零币(zPIV)的转换和支付过程

在下面的例子中,小明打算使用零币协议将普维币转给小红以进行匿名交易。

下面是该货币间转换的具体过程

小明发出转换960 额度的普维零币的指令。

零币协议以最大面值的普维零币,将小明的960 普维币转换为等额的普维零币

.在这个过程中, 小明已提交验证信息 以证明这个转账货币的所有权(该所有权证明是一串特定的序列号,以供零币协议追踪特定普维零币面额的所有权)。

小明的账户收支信息会相应的更新

每减少960的普维币,相应的会增加960的普维零币。

小明还看到,新增的960 的普维零币由以下货币面额组成:1 500 的普维零币,4 100 的普维零币,1 50 的普维零币,和110 的普维零币。

支付过程的具体介绍

小明发起将960个普维币转给小红的普维币地址的指令。

零币协议收到并验证了小明的验证信息,证明了其所有权。验证过后,转账余额既已生成。

 

零币协议在小红的普维币地址创建了960个普维币。

小红收到匿名转账人的960 个普维币。

小明的账户收支平衡会相应更新即减少960个普维零币。

面额的阐释

为了在确保系统高度的完备性的同时提高交易效率,普维币采用了一套基于整数的硬币面额体系。采用该体系可以将普维币转换为普维零币, 并用普维零币作为约转凭证。 (可类比之前提到的赌场筹码示例)

普维零币使用的面额是:1,5,10,50,100,500,10005000.

 

这套面额的设计让其兼具了简便性、实用性、和安全性。

减少交易的可追溯性的终极方法是只使用1种面额(例如额度为1的普维零币),但这样做并不是很实际,因为大宗交易需要大量的硬币。

而仅使用一个非常大的额度则会增加货币交易的可追溯性和不安全性,因此该额度体系最终确立为8种硬币面额。

 

这种额度设计实现其功能的最优性,其面额确保了硬币转换的适度性。

 

随着普维币价值的变化,我们也会根据实际用户需求相应的调整该面额体系

当您使用普维零币进行支付时,你只需要提供等额其他类型货币的证明即可。

这意味着所有的普维零币的转换都将以整数进行(以十进制进行转换),这样一来在转换成普维零币的前后,两个不同的地址之间的匹配是无法操作,但同时其他等额的普维币和普维零币之间的约转则不会受到影响。

面额设计思路

当铸币(普维币转换为普维零币)时,算法将自动确定该转换的使用面额。

当普维零币支付(或发送)到制定的普维币地址时,算法又将自动确定该过程中使用的面额。

1)如果你设置了某个额度的交易金额,系统会自动匹配可能的最大面额以给出相应额度的货币

2) 否则:支付的最小化(a)可设定略微比支付金额更高的一个面额(如九十九可设置为一百)并用其支付,(b)如果不行的话,则从较大的面额逐级向下匹配,直到达到刚好超过所需的额度

3) 或者:硬币的最少化。如果约转的金额额度太小,系统会找到其四舍五入的额度,以最大限度地减少收到的硬币数量。

 

自动转换

当不同用户转换的普维零币的面额更丰富时,普维零币可以保障更强的用户隐私性。

 

所以,为了增强其高效性,普维币钱包有一个功能,可把钱包余额中的一部分金额设置普维币自动转换为普维零币的功能,从而免去手动操作转换。

当钱包/守护程序启动时,自动转化功能启动,钱包被解锁(完全或部分)并同步区块链。

这意味着,如果您的钱包被加密并锁定,自动提供的功能将不会启用。

当钱包被解锁时,它仍然不会涉及任何被锁定的未花费的交易输出(UTXO),例如用作主节点的抵押部分。

默认百分比:10%。可以通过GUI或通过命令行选项`-zeromintpercentage = <n>`pivx.conf`zeromintpercentage = <n>`来改变,其值不能少于10%。

默认状态:已激活。可以通过命令行选项“-enablezeromint = 0”或pivx.confenablezeromint = 0”来禁用(例如交换过程中)

用户现在可以通过UI设置自动约转的自定义优先面额,命令行选项`-preferredDenom = <n>`pivx.conf`preferredDenom = <n>`<n>代表可用面额之一`1/5 / 10/50/100/500/1000 / 5000`或者`0`0代表完全没有偏好,让自动约转自主完成)。

当硬币数量不足时,自动约转功能会等硬币足额时在进行自定义面额的自动约转。

每传入一个新区块,它都会:

检查有多少可用硬币。

  1.     这不包括未铸好的硬币和锁定的硬币(如主节点中的)

检查可用的零币或普维零币的数额

检查百分比是否低于目标百分比

如果百分比低于目标百分比,它会:

计算需要将多少个普维币转换成普维零币,例如2015

使用下一个较小的面额(这里是1000 普维币)并转换1000 普维零币

刷新并重复,直到足够的普维零币被铸造好。

 

在我上面的示例中,第一个区块将用于开始转换 1000 个普维零币,下一个区块将用于转换下一个1000 普维零币,接着转换10 个普维零币和5 普维零币(假设没有新的普维币改变可用普维币的基值)。

使用相应面额,并每个区块只使用一个面额的原因是确保其高效性。特定面额不需要转成更小面额,单次区块转换某个面额的速度较快

例外:如果需要转换大量的普维币,我们不会使用5000 普维币的最大面额,而使用6666 普维币从而让分配的面值(6666 = 5000 + 1000 + 500 + 100 + 50 + 10 + 5 + 1,这是我们的8个可用面值)分布得更加平均。

  1. 普维零币自动约转的过程 (基于默认设置)在“零点议定书”执行之前,小明有17,900的普维币余额。 其中,他有一个主节点,所以他账户中的10,000 个普维币被保存在主节点的专用地址并被锁定为抵押品。 小明还没有使用“硬币管理”来锁定剩余的7,900 普维币。

    接着,零币议定书开始执行

    零币协议对每个地址的执行过程如下所示:

    判定硬币是否被锁定。

    如果硬币未锁定,则将该部分数额的10%从普维币转换为普维零币。

    如果硬币被锁住,自动约转不适用。

    小明看到他的账户中减少了790 个普维币,这相当于他未锁的硬币数额的10%。

    小明也能看到他的账户增加了790 个普维零币。 由于他没有设置任何普维零币面额的偏好,他现在有以下可用的面额:

    •              1500面额的普维零币
    •               2100面额的普维零币
    •               150面额的普维零币
    •               410面额的普维零币

    支付安全等级

    当支付普维零币面额时,用户获得从1-100选择安全级别的提示。 这种间接的方式,通过设置安全级别参数,允许用户选择多少硬币来混淆他们的交易。

    例如,当安全级别设置为1时,它在您把转换的硬币添加至区块链之前,将区块链中的所有铸造硬币都拿走,然后把新转换的10个区块的硬币都添加进来。

    当安全级别为2时, 它会执行类似操作,只不过会将新转换的20个区块添加进来。 当安全级别为100时, 它会将最大量的新转换的铸币添加到区块链的当前末端。

    安全级别越高,计算更复杂和花费的时间也越多。 尽管需要更长时间,但如需最大程度的匿名交易,推荐使用100的安全级别。

    处理变更

    由于普维零币是由固定面额组成的,因此会出现支付金额不能由现有的面值来凑成的情况。

    例如,如果您有一个1000面额的普维零币,但是您希望将985个普维币发送到某一个地址,那么对方将收到15个普维币的找零。

    如果您将您的找零的地址与您其他普维币地址混淆的话,这些找零可能会危及此次交易的隐私性,因为这些零钱将返回到您的现有地址。

    为了防止这种情况,有两种方法可以使用。

    第一个选择是使用内置的功能,自动将零钱转换成普维零币。

    这种操作会按照指定的数额约转成普维零币,以普维零币完成支付,然后将剩余的普维币自动也转成普维零币。

    这是最方便的方法。然而,不能兑换成任一面值的零钱(最低面额是1)将被转换为费用。

    第二种选择是把零钱转到特定的普维币地址,这让您在处理日常普维币账户时,花费额外的精力来单独处理零钱这一部分。采用这种方式时用户有可能会出错,如果您很看重交易的匿名性,则不建议使用该选项。

    普维零币的数据完整性

    每个转换的普维零币的面额都有其唯一的序列号。 该序列号存储在当地的钱包(wallet.dat)中, 而不是存在区块链中。

    这意味着,当一个新的普维零币被转换后,您的当地钱包(wallet.dat)应该会有备份。因为以前的备份中不会有新转换的普维零币的序列号。

    序列号和其他重要的普维零币数据在交易完成和发布到网络之前会被提交给数据库(wallet.dat)。

    这可以最大限度地降低在普维零币遇到意外事件期间损失新铸造的普维零币的风险,例如电脑出现故障或互联网连接出现问题。

    因其是基于本地数据库的设计,在每次转换成普维零币时,您的钱包都必须备份,以确保您的面额序号是最新的。

    技术规格(v1.0

    主要特点:自定义累加器检查点系统

    累加器加密:RSA-2048

    普维零币面额:15105010050010005000

    造币时间:> = 0.5

    支付时间:> = 2.5

    最大单笔支付限额:35,000 PIV

    最大单笔支出面额计数限制:7

    区块大小:2 MB(在v3.0.0版本 普维零币钱包之前区块大小为1 MB

    费用(转换):根据每次转换普维零币的面额收取相应数额0.01的普维币。

    费用(支付):免费将普维零币转成普维币。

    转换成普维零币所需的最小普维币量:6

    支付前确认的最小普维零币量:20

    实用普维零币支付的其他要求:支付普维零币前需要添加 3个转换到累加器中。

     

    作者

    作者:雅基曼,四毫升

    技术输入:spockpresstabfuzzbawlsmrs-x

    参考文献

    参见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.