为什么DNC钱包只有一个地址?

Unknown view 315 2015-1-22 04:57
share to
Scan QR code with WeChat

这要从DNC余额更新的计算量说起。

一、DNC余额更新的计算量从何而来

DNC使用了环签名技术,使得发送地址不可知;使用了隐身地址,使得接收地址不可知。这与比特币的地址机制完全不同,比特币的地址在块链上是可知的,因而比特币钱包和DNC钱包检查余额的机制也完全不同。

比特币钱包的余额检查机制:直接在区块链中查找发送地址和接收地址之中,其中一个地址是自己地址的交易,如果是则计算该交易后的余额。

DNC钱包的余额检查机制:因为匿名特性,DNC地址在区块链中被隐藏,DNC钱包没法直接知道交易中是否有自己的币,因而钱包要对区块链中的每个交易进行核实,该核实过程又涉及到发送机制,因而一并描述如下。

DNC发送币机制:

(1)用户输入目标地址和金额

(2)钱包向公钥A打币,公钥A与目标地址有密码学联系,并且在交易中附加信息B,该信息B用于接收者接收币。只有接收者的私钥和附加信息B才能生成公钥A的私钥,正确接收币。

DNC金额检查机制:

(1)检查地址生成时间,小于地址生成时间的交易直接跳过。

(2)对每个区块的每一个交易进行计算

(3)计算方法:用自己私钥与附加信息B,生成公钥C,检查公钥C是否等于A,如果相等,则是自己的币,如果不是则是别人的币。

以上计算过程在每检查一个交易就要进行一次,因而余额检查的计算量远比比特币钱包要大得多。

二、简要说明

现在大家明白,DNC在更新余额时需要很多计算量,下面来回答”为什么DNC钱包只有一个地址?“这个问题。

(1)DNC钱包多个地址,从技术上可以实现,但是目前不支持多地址,这是由于DNC的匿名特性所需要的计算量以及用户接受程度所决定的。

(2)DNC金额检查机制在更新余额时需要较大计算量,因而比较费时,具体原理见第一节“DNC余额更新的计算量从何而来“。多一个地址将多一倍计算量,对于用户来说可能难以接受。

就目前的普通电脑而言,在区块链14万区块已经更新完毕的情况下,一个地址(假定地址产生时间在2014年10月份)要区块链开始更新余额,直到14万区块,估计需要2-3小时(假定的最长时间,当然,实际使用中随时保存同步信息,且地址产生时间不是2014年10月份,因而无需这么长时间)。如果是10个地址,则需要24小时左右。

如果地址产生时间离现在比较近,比如1个月前产生的地址,更新时只需检查这1个月产生的交易即可,会节省很多时间。如果一个地址使用的时间比较长,钱包同步文件比较大,有个方法可以解决这个问题:新生成一个钱包,然后把币打到新地址上。

(3)虽然DNC只有一个主地址,但在块链上出现的接收公钥(接收地址)是无穷尽的,只不过别人通过块链上的接收公钥无法推导出主地址。

(4)另外,DNC通过新建和打开可以更新多个钱包,而无需像比特币一样,更将钱包文件得自己去数据目录下拷贝和重命令。从0.7.0.4版本开始,可以设定默认钱包,打开程序时将自动打开默认钱包。

(5)对于交易所,1000个用户如果要生成1000个地址,那么这个计算量和数据存贮量就比较可观了,需要更多的计算和存贮资源来支撑。

(6)我们正在研究DNC地址、在线钱包、手机钱包、轻钱包技术,如果能够绕过计算量和存贮量问题,也不排除在以后推出支持多地址钱包的可能性。

btcfans公众号

Scan QR code with WeChat

From the Internet
Disclaimer:

Previous: 腾讯哈勃分析引擎捕获勒索比特币病毒CTB Next: 加文•安德烈森:比特币区块扩容测试结果

Related