54 论托管与多重签名交易
比特币协议中包含需要多重签名的交易,这种类型的交易也可用于托管服务。例如可以有三个签名密钥,但签署交易时只需要其中的两个就可以。在这种情况下,第一个归付款人,第二个归收款人,第三个归托管代理人。如果没有争议或冲突,付款人和收款人便可签署交易,于是收款人就能收到资金。
如果发生争议,托管代理人将要审查争议以决定支持付款人还是收款人,并由决定支持的一方签署交易。这与银行支票类似,需要付款人、收款人和托管代理人三人当中任何两人签名方有效。现在确实存在比特币交易的托管服务。下面三组帖子包含了关于如何处理托管以及托管对比特币影响的讨论。
一种半自动托管机制的提案
Olipro发表,2010年7月30日,下午07:29:08
托管的基本工作是由两个人通过第三方进行货物或服务的交换。
在交易双方都诚实的情况下,托管业务基本上可以自动完成,因为买家收到商品就会批准付款,只有在发生争议时才需要第三方介入。因此我提出以下的规则:
1. 产生一笔给定数额的托管交易,用您的密钥为该笔交易授权,而且该交易所在的区块包含接收方的密钥和数据,直到买家发出的后续区块批准,才能取走该区块中的资金,没有卖家批准,买家也无法收回这笔钱。
2. 进入网络的交易得到验证后,卖家即发出商品,一旦买家收到货物,就会创建一条放款交易,卖家从而得到比特币。
3. 如果发生纠纷,双方拒绝以某种方式放款,这种情况显然有必要由第三方来仲裁,此时需要由买卖双方共同签名授权第三方,将原托管交易的所有权移交给第三方,然后由第三方仲裁。
回复:一种半自动托管机制的提案
中本聪发表,2010年8月5日,下午06:08:30
可以提供一种需要两个签名才能支付比特币的交易。产生一笔需要由付款方和收款方双方签名方可支付的款项。要解除托管,您为收款方提供您的一半签名 ,收款方也可以提供给您他的一半签名以退回这笔款项。这个简单案例没有中介 。唯一可依靠的就是拒绝放款,实质上等同于把这笔钱烧掉。
回复:一种半自动托管机制的提案
中本聪发表,2010年8月7日,下午08:04:59
引自:jgarzik,2010年8月5日,下午07:00:30
因为资源问题,这种交易不太可能用作托管机制。
真的吗?您认为人们不能理解其中的好处吗?(如果您的回答是根本没有任何好处,那我估计别人可能也都无法理解。)
中本聪在这里创建了一个关于托管处理的专门讨论帖。
托管
中本聪发表,2010年8月7日,下午08:13:52
这里将概述可能由软件实现的托管交易。这尚未实现而且近期可能也没时间去实现,只是想让你们知道存在着哪些可能性。
基本托管:买方将一笔支付款进行托管。卖方收到一笔支付款处于托管中的交易,除非买方解锁,否则卖方无法使用这笔款项。买方可以在任何时候解除托管放款,当然也可以永不放款。也不允许买方收回款项,但确实给了他为泄愤不放款而烧掉钱的选择。卖方有权将钱退回买方。
虽然这种制度并不能保证各方不受损失,但它确保作弊行为无法从中获利。 卖方不发货就不会收到货款。买方仍然拿不回钱,但至少卖方不存在诈骗的金钱动机。
买方不能因为无法付款而获益。他无法收回托管的钱。也无法由于余额不足而付款失败。卖家可以看到这笔款项已经与自己的密钥绑定,无法再发给其他人。
经济学家现在会说奸商可能会开始谈判,比如“只要放款,我就会把一半还给你”,但是在那个时候已经毫无信任可言,满腔怒火对谈判无补。如果这个骗子已经违背承诺,又怎么可能信守给你一半的承诺?我认为只要金额不是太大, 原则上几乎每个人都会拒绝。
回复:托管
jgarzik发表,2010年8月 7日,下午09:25:40
我认为买方除了烧掉钱外没有别的办法,这会限制它的使用。
回复:托管
aceat 64发表,2010年8月8日,上午02:55:59
引自:jgarzik,2010年8月7日,下午09:25:40
我认为买方除了烧掉钱外没有别的办法,这会限制它的使用。
也许我们可以引入一种仲裁的方式。如果买卖双方都同意,这笔钱可以转给第三方。由第三方来仲裁,是把钱还给买方,还是交给卖方,或由第三方骗走( 显然您要选择一个值得信赖的仲裁人)。
回复:托管
jgarzik发表,2010年8月8日,上午03:58:03
引自:aceat64,2010年8月8日,上午02:55:59 引自:jgarzik,2010年8月7日,下午09:25:40
我认为买方除了烧掉钱外没有别的办法,这会限制它的使用。
也许我们可以引入一种仲裁的方式。如果买卖双方都同意,这笔钱可以转给
第三方。由第三方来仲裁,是把钱还给买方,还是交给卖方,或由第三方骗走( 显然您要选择一个值得信赖的仲裁人)。
这就是现在网上托管业务的运作方式。买卖双方同意让第三方实际持有这笔钱。买卖双方都认可中立的第三方将遵循的交易解决和赎回规则。由中立的第三方将资金支付给其中一方。
这里有一个很不错的概述: https://www.escrow.com/solutions/escrow/process.asp 可能会有人选择使用比特币专用的签名托管方法。但我认为“烧钱”会成为完全避免使用比特币托管的动力,而不是诚实地使用比特币托管。
回复:托管
aceat 64发表,2010年8月8日,上午05:49:44
我喜欢这组讨论中Olipro的建议:http://bitcointalk.org/index.phptopic=645.
0。
买卖双方都将等量的比特币放入托管账户,除非买方签字,卖方不能取回这两笔钱。如果双方都同意,可以选择将资金返回原所有人,或两笔钱都转给双方商定的仲裁人。他建议仲裁人只有买方那一半的控制权,我的看法稍有不同,我认为应由仲裁人控制双方钱款,这样双方在该问题上均有比特币利益。
回复:托管
jgarzik发表,2010年8月10日,下午06:53:57
引自:nimnul,2010年8月10日,下午05:51:49
中本聪的解决方案很好,因为如果客户可以拿回自己的钱,对卖方来说这会是个大问题。看看网上信用卡支付和退款的现状。退款是卖方心中的痛,比特币必须竭力避免。
问下真实的商家是否愿意告诉客户:这笔钱可能永远消失,谁都拿不回。
回复:托管
nelisky发表,2010年8月10日,下午08:20:36
无论选择什么样的托管技术,根据定义,我认为托管始终需要可信的实体。 在我看来,当进展顺利时,自动化的工作流足够简单:
•买方把比特币发送给托管账户,并指明收款人的地址。
•卖方看到托管账户中的比特币后,注明比特币将发往的地址。
•买方把款放给卖方。
•托管账户会在x天后自动完成放款。
•双方均可提出申诉。
而这些是我会实现自动化的全部。当出现问题时,双方都应该向托管方支付费用(这笔费用可以在开户时提前支付?),这样每个人都会有一些损失。那么托管方就必须进行调解。
因为存在费用和调解人,所以长远而言成功欺诈可能没有什么经济价值。托管方的理想人选是已经赢得信任的人,如果都是在本地,我们中的一些“普通人” 可能为了赚取一点费用就会袒护一方。
虽然烧钱的方案在防止经济欺诈行为方面有效,但却不能阻止报复,而且如果一方不诚实,实际上会让每个人都遭受损失。我肯定不赞同这种方法。
回复:托管
中本聪发表,2010年8月11日,上午01:30:02
引自:jgarzik,2010年8月10日,下午06:53:57
问下真实的商家是否愿意告诉客户:这笔钱可能永远消失,谁都拿不回。
这句话听起来好像钱会莫名其妙就没了,而且即使双方想合作也拿不回来。
买东西时付了钱就不能把钱拿回来的。顾客似乎觉得这样挺好的。我提的方案不比这个差。
任何一方都可以选择放款给另一方。
引自:nelisky,2010年8月10日,下午08:20:36
虽然烧钱的方案在防止经济欺诈行为方面有效,但却不能阻止报复,而且如果一方不诚实,实际上会让每个人都遭受损失。我肯定不赞同这种方法。
那您也必须反对普遍的先付款制度,这种情况会造成顾客损失。
预先付款:顾客损失,小偷拿到钱。简单托管:顾客损失,但小偷也没拿到钱。
你们的意思是不是先付款更好,因为至少小偷可以拿到钱了,所以至少有人可以拿到钱?
设想有人偷了您的物品。您拿不回来,但是假设物品有可以远程触发的自毁开关,您会这么做吗?小偷知道您所有的每件物品都有自毁开关,即使他们偷了也毫无用处,当然您还是找不回来,这是不是件好事呢?如果他们归还了赃物, 您还可以重新激活。
设想如果黄金被盗将变成铅。当小偷归还后又变回黄金。
在我看来,问题可能是如何正确地表达。首先,从博弈论的角度,对“烧钱 ”理解不要过于直接。这笔钱从未被真正地烧毁。可以在未来随时释放。
回复:托管
ribuck发表,2010年8月11日,上午 11:13:12
引自:Inedible,2010年8月11 日,上午01:52:53
我对无法减轻交易过程中的恶意感到遗憾,目前只有“烧毁”付款和永不发货两种手段。
下面只不过是做恶的虚构案例,但真实的威胁仍然存在。
例如:
A出售笔记本电脑。
B请求购买并托管了2000枚比特币。
A声称发货但从未发货。
B从未收到货,所以不释放比特币。
A并不在乎,因为意图就是要让B“支付”比特币却毫无回报。
对这个案例你是怎么想:
A出售价格为2000比特币的笔记本电脑,并托管了2500比特币作为抵押。
B提出购买并托管了2500比特币。
A确认货物已寄出,但实际上一直没送。
B—直没收到货,所以一直不释放比特币。
A现在在乎了,因为他有2500枚比特币作为抵押处于托管中。
因此发出笔记本电脑符合A的利益,否则他将会损失抵押的2500枚比特币。确认收到笔记本电脑也符合B的利益,否则他也会损失“额外的” 500枚比特币。
尴尬的情况是,如果A和B都是诚实的,但是没有投保的快递服务把笔记本电脑搞丟了或损坏了,或交易一方在解除托管之前死亡。
后来又出现了以下一组讨论。
如何进行分布式比特币托管服务?
harding发表,2010年9月26日,上午01:16:18
概要:赋予比特币分布式托管的能力将使其优于所有其他的交换媒介,这有可能会提高其采用率。详情如下。
对于分布式货币,集中式的托管似乎是比特币今天的标准。例如:
爱丽丝想从鲍勃那里购买价值5美元的比特币,但是爱丽丝和鲍勃都无法完全信任对方,所以他们去了一个双方都信任的地方,比如Mt.Gox。他们在那儿存放各自的钱,并交由Mt.Gox为他们进行交易。
并不是攻击Mt.Gox(我喜欢),但是否能脱离它的托管服务呢?
一个几乎分布式的替代品:
查理是一个可信的第三方,生成了比特币私钥。
然后查理用UNIX命令split将私钥一分为二,一半给爱丽丝,一半给鲍勃。 鲍勃存入价值5美元的比特币到拆分的比特币账户。
爱丽丝用公开区块验证这笔交易,并用PayPal发送5美元给鲍勃。
鲍勃验证PayPal交易。
鲍勃把他那一半私钥发给爱丽丝,这样爱丽丝就可以拿到鲍勃之前存入的比特币。
(简单起见,我省略了PayPal的部分细节,比如谁支付交易费以及应该等待多久以避免退款欺诈。我还忽略了鲍勃执行最后一步的动机。)
如果用一些更复杂的方案来替换UNIX命令split,可以做出更高级近乎完全分布式的案例。例如,一种像ssss的夏米尔(Shamir)秘密共享方案的实现。类似于ssss的工具允许爱丽丝和鲍勃指定仲裁方以防发生分歧。
当然问题在于我们必须相信查理不会滥用他创建私钥的完整副本。
理想的解决方案是由爱丽丝和鲍勃各自生成自己那一半私钥。我不完全理解现代秘钥对中的数学,但我觉得当前的算法有可能实现。
是否有另一种方法让爱丽丝和鲍勃各自获得一半秘钥,而无需把整个秘钥提供给任意一方?
Dave
回复:如何进行分布式比特币托管服务?
中本聪发表,2010年9月26日,下午05:34:26
可以支持需要两个签名交易的网络尚未实现。这部分的描述在这里: http://bitcointalk.org/index.phptopic=750.0
这绝对比没有托管的直接支付更安全,但还没有达到真人仲裁托管那么好,假设您充分信任人。
在这种托管机制下,骗子不可能成功,但您还是有可能蒙受损失。这至少失去了骗钱的动机。卖方确信这笔钱是留给他的,而买方保留尚未支付给卖方的优势,直到买卖完成。
[1]参见http://en.wikipedia.org/wiki/Shamir’s_Secret_Sharing。