最近一种创建去中心化在线货币(称为比特币)的方法引起了人们的兴趣。目标是要有一种在没有中央权力机构,没有双重支出或伪造货币的情况下转移货币的方法。他们的方法是让网络中的所有节点都尝试通过工作量证明计算来验证交易,然后将验证最多的交易视为正式交易。如果攻击者想要伪造官方记录(以扭转他们的第一笔支出并再次使用硬币),那么他们必须拥有网络中大部分的计算能力。最大的缺点是,在此方案中,所有交易的记录必须是公开的,比特币论文的作者认为这是必须的:

确认没有交易的唯一方法是:注意所有交易。在基于造币厂的模型中,造币厂知道所有交易,并确定哪个先到。要在没有受信任方的情况下完成此交易,必须公开宣布交易。

在所有此类方案中所有交易都必须是公开的吗?当您拥有中央权力机构/铸币厂时,可以实现成绩单,但是我只对可能采用去中心化方法感兴趣。
注意事项
我最初是在cstheory上问这个问题的。另外,我不熟悉crypto.SE上的标记,因此不胜感激!

评论

一旦比特币Stackexchange网站进入公开测试版,这个问题应该迁移到那里吗? bitcoin.stackexchange.com

@ ripper234不,不应该。这已经是我提出问题的第二个位置了(最初是在cstheory上提出的),并且在该问题的元讨论中决定我应该重新发布。通常,仅当问题不在原始站点上时才迁移问题;这个问题似乎在这里很重要,并且已经产生了很好的答案。

商定,数字货币理论应保留在crypto.SE中。

#1 楼

为了使这种方案奏效,如果我有一些货币,我必须能够将其赠予亚伯,我必须能够将其赠予贝思,但我无法将其赠予亚伯和贝思。这意味着将货币提供给亚伯必须以某种方式使我无法将货币提供给贝丝,即使我以前可以做到这一点。 >

可以有一个中央机构。要将硬币交给亚伯,我必须告诉中央当局我已经这样做了。然后,中央机关将禁止我将硬币交给贝丝。这意味着分发硬币既需要中央机构的批准,也需要向中央机构报告。
可以有一个分布式安全设备。要将硬币交给Abel,我必须告诉持有硬币的安全设备实例。一旦将硬币交给贝斯,设备就会禁止我将硬币交给贝斯。这意味着必须将硬币存放在物理安全的设备中。实际上,还需要中央机构来加载设备并向它们颁发密钥。 (我需要证明交易中涉及安全的设备,这要求该设备具有证书,这需要某些颁发证书的权限。)
至少所有交易的某些方面都可以公开。因此,如果我将硬币交给亚伯,贝丝便可以轻松找到一条记录。贝丝会知道硬币不是我的。

比特币选择第三种方法。这似乎是加密分散货币的最佳方法。没有第四种方法。

现在,有关交易的唯一需要公开的信息就是足以证明我拥有硬币并证明我没有将其转移到其他地方的信息。碰巧的是,比特币协议泄漏的信息比这多得多(例如,我将硬币转移到的帐户)。如果需要的话,可以设计该协议以减少公开信息。

硬币需要追溯到其起源。但是,是否可以跟踪他们通过的特定帐户是一个实现决策。例如,假设的硬币可以使用以下机制:爱丽丝想向鲍勃发送一些硬币。她知道鲍勃的公钥。她仅为此交易生成一个随机私钥,并使用Bob的公钥对其进行加密。然后,她发布了一笔交易,该交易将与她生成的随机私钥相对应的硬币转移到公众手中,以及她使用鲍勃的公钥加密的同一密钥的加密版本。

现在,鲍勃将看到一笔交易。他的私钥可以索取。没有人会知道交易是对Bob的,因为Bob的公钥或其任何类似物都不会出现在区块链中。鲍勃不知道这些硬币是来自爱丽丝的,其他任何人都不知道这些硬币是去了鲍勃的。

这种方法仍然使硬币完全可追溯。但是在区块链中从来没有可追溯的账户。

这解决了比特币的两个“问题”。如果我在某个地方发布比特币地址,任何人都可以看到该帐户获得了多少比特币。如果有人想转让无法追踪的比特币给我,他必须从我那里获得一个一次性使用帐户,如果他想匿名给我这些硬币,他就很难做到。您仍然可以使用比特币生成和使用一次性帐户,但是您无法广播它们,或者它们不再是一次性帐户。有人没有简单的方法可以匿名地向您请求一个。海量钱包在计算上不切实际。但是,我已经找到了解决这个问题的绝妙方法,但是这个答案已经太长了。

评论


$ \ begingroup $
您能解释一下无法跟踪硬币通过的帐户的实现吗?既然可以很好地回答我的问题。
$ \ endgroup $
– Artem Kaznatcheev
2011年8月25日在17:07

$ \ begingroup $
当然。要将硬币转移到Beth,请执行以下操作:1)生成随机密钥。 2)用Beth的公钥加密秘密密钥。 3)将硬币的转移发布到与您生成的私钥和加密的私钥相对应的公钥中。 4)为了索要硬币,贝丝使用她的秘密密钥解密了秘密密钥,然后可以消费硬币。 5)永远不会泄露Beth的公钥或帐户信息。有效地,您生成了一个一次性帐户来接收这些硬币,并告诉Beth如何以Beth可以理解的方式索取它们。
$ \ endgroup $
– David Schwartz
2011年8月25日17:16



$ \ begingroup $
@David:据我了解比特币,任何人都可以拥有一个想要的账户,甚至建议对每笔交易使用一个新的帐号(=密钥对)。这是否不等于您建议的方案(贝丝现在还需要跟踪更多的私钥)? (此外,您对私人和秘密的使用似乎有点混乱。)
$ \ endgroup $
–PaŭloEbermann
11年8月26日在11:09

$ \ begingroup $
不,这不是等效的。假设我想在杂志上刊登广告,并给人们一个可以用来向我发送比特币的地址。我该怎么做并隐藏广告产生了多少比特币?贝丝不必跟踪任何其他私钥-加密的私钥会发布在区块链中。只要有需要,她都可以使用单个私钥对其进行解密。
$ \ endgroup $
– David Schwartz
11年8月26日在11:34

$ \ begingroup $
“但是,我已经找到了解决这个问题的绝妙解决方案,但是这个答案已经太久了。”,我确定您做了Fermat先生;)
$ \ endgroup $
–capn
2012年4月19日在17:58

#2 楼

Zerocash是一种去中心化的货币计划。 Zerocash事务完全隐藏了事务的来源,金额和目的地。

它通过称为zkSNARK的加密工具实现了这一目标,该工具可以有效地证明“零知识”中语句的有效性。 “,也就是说,您泄漏的只是语句的真实性。打个比方,将硬币看作是您已解锁以证明您拥有它的锁盒。但是,在Zerocash中,您使用zkSNARK来证明可以解锁盒子。由于此操作是在零知识的情况下完成的,因此除了该语句的真实性外,没有任何信息会泄漏。

这比这更复杂,我在此省略了许多细节,但是它相当近似发生了。

评论


$ \ begingroup $
提到Zerocash很有趣,但是不幸的是,您的回答并没有解释关键部分:为什么在花硬币之前,我可以证明自己拥有硬币,但是花了之后,证明不再起作用?
$ \ endgroup $
–吉尔斯'所以-不再是邪恶的'
2015年12月27日在10:17

$ \ begingroup $
零现金似乎可以通过使公开哪些硬币被转移的信息成为现实,从而确保您不会花费双倍;在转移过程中,旧硬币被销毁,而新硬币则具有同等价值。因此,尽管它隐藏了交易的详细信息,但仍要求将发生交易的事实公开。
$ \ endgroup $
– Logan R. Kearsley
19年2月8日在20:57