不记名的合约
不记名的凭证
不记名的凭证,在标准化的合约上,实现了可转移的权利。 每一种类型的合约(例如,电子货币中“币”的每一种面值)对应一个数字签名,这就类似于每一种联邦储备钞票或者股票凭证,都对应于一个特定的模板。
在最简洁的不记名凭证协议中,发行方和转移代理(对我们而言,是同一实体,但经常是分开的)生成一个序列号(实际上是一个非常大,难以猜出的随机数,而不是一个顺序号),并添加到已发行凭证的列表中。当转移代理清算一次转移时,要对签名进行检查,以确定不记名合约的类型,并验证这种合约确实存在。然后对该合约的已发行列表进行检查,确定存在该序列号,随之删除序列号。 另一种方法是,发行方可以让接受方生成序列号,然后,在清算的时候,检查签名并将该序列号保存到已清算凭证的列表中。 签名的作用,是保证凭证确实是特定类型的不记名合约,而序列号则保证该合约的那一个实例,没用用来结算或者偿付一次以上。在这些简单的协议版本中,转移代理可以在所有的转移中,将受让方和出让方联系起来。 为了实现货币和物理不记名凭证的隐私保护性,我们需要添加不可追踪的特性。
不可追踪的转移
不可追踪的特性可以这样达成,将上文提到的第二个变化,也就是已结算凭证的列表,与盲签名以及融合效应结合起来。足够多的标准合约实例,在一定时间段中发布出来,并混合在一起。 在一个凭证的发布和结算之间,还会有很多相同签名的凭证被结算,这样以来,通过签名将某个结算链接到某个发行,就是完全不可能的了。在混合效应和“模板”被盗的风险之间,需要平衡:发行的额度越小,暴露“模版”的风险越小,但可追踪性越大。而更大的发行,则意味着更大的暴露风险和更大的机密性。
盲签名的使用,让凭证的转移,无法根据顺序号建立链接。 来自转移代理的隐私性,可以用“受让方无法链接”的形式、“出让方无法链接”的形式,或者“双盲”的形式。在“双盲”的形式下,转移代理无法链接受让方和出让方两者,甚至在转移代理和另一方合谋的情况,也无法链接。
不记名凭证有一种“在线”类型,每次转移就进行结算,所以既可以验证也可以观察到。 不记名凭证还有一种“离线”类型,每次转移并不需要结算,只在最后结算之后,才可以验证。 结算是通过披露所有中间持有者的结算名称达成。这些中间持有者,转移“目标”多次了。(一种合约违规)
这种“无法链接”的特性,也常被称为“匿名”。至于账户是发布到实际姓名还是假名,还有受让方与出让方是否能够互相辨识的问题,则与在线模式下的转移代理的“无法链接”特性无关。 在离线模式下,账户的身份(最起码,要有高知名度或者安全的假名)是必须的:传递一个离线凭证两次就会泄露身份。 此外,通信渠道让 Eve 可以链接受让方与出让方,除非他们预防性的使用了匿名的邮包。 在线结算,确实让很多种类的交易,不再使用身份标示。当然对于通常的信用和担保,身份标示依然有用,甚至是必须的。
如果试图对已经结算的序列号进行再次结算,我们就面对错误/欺诈的困境,这种困境和我们在复式记账法中的情况一致。DigiCash 中所用的 ecash(tm) 协议,实际上就利用了这种情况未定、二次转移的凭证,以进行网络故障的恢复。当凭证在网络上丢失后,转移者无法判定接受者是否已经收到并结算完成。直接与转移代理进行二次转移,可以解决这个难题。 当然,只对在线协议有效。 在离线协议中,将错误从欺诈中区分出来,是非常急迫的问题,但现在还没有非常满意的解决方案。这个问题难就难在意图的主观性上。
守恒对象
对分布式对象的发布和结算转移,限制了对象的使用。 这个对象,从经济学的角度,称为“稀缺的”,正如物理对象的应用也是有限的一样。 “守恒对象”为软件世界的经济,提供了一个基础,从而能够模仿稀缺物理对象的经济特性。“守恒对象”可以用来可选择性的排除稀缺的物理资源(例如 CPU 时间、网络贷款和响应时间等。),也可以用于智力劳动的成果-只要你愿意支付代价在网络上进行信息交互,而不是与落地的机构打交道(例如,内容版权管理)。“数量守恒”特性为其所应用的对象和资源,提供免于服务攻击的保护。记名凭证协议,可以用于对象的特定实例或者实例集引用的转移,如同可以用在转移其他类型的标准对象。
数字货币
数字不记名凭证最重要的例子是数字货币。 其发行和转移的代理称之为“铸币厂”。不记名凭证协议,支持在线支付,同时实现了不记名票据的特性,特别是无法伪造(通过结算机制)和转移保密性(通过混合及盲签)。
为了实现购买服务的完整交易,我们经常需要比数字货币协议更多的东西;我们需要一种协议,来保证当支付完成后,服务肯定会得到执行。当前的商业系统使用各种不同的技术来实现这一点,比如认证的邮件、面对面的交换、以来信用历史以及通过代收中介机构来扩展信用等。 此领域的潜在的智能合约协议,在“信用”一章中进行讨论。
内容版权管理
内容保护合约,让出版商可以提供内容给用户直接访问,而不是通过对远程服务器的查询进行间接和部分的访问。软件在线分发的内容保护,可以让软件在用户的本地运行,而不是远程运行,同时还能对用户之行出版商的合约权利和版权。 这种本地应用的支付软件,通常称之为“超级分布式”。
水印
水印算法的原理,是替换掉内容的一小部分-通常是一张图; 替换声音稍差,但替换文字很难。 替换上来的二进制位包含出版者和浏览者的身份信息,也许还包含合约相关的其它信息。思路是,当调查者扫描发布的内容时,水印能指出合约的违约人(或者对版权法的侵犯)。
水印调查可以由一种比较廉价的技术协助,这种技术就是网络蜘蛛。 这种蜘蛛能过在网络上寻找被再次分发的水印材料。 创建初始版本的客户,就能知晓。
对水印的一种攻击手段,就是使用对阅读软件合法的其它型式替换掉水印。水印的二进制位与图片重要的二进制位,可以纠缠起来,模糊一片,但用密码学的标准来看,则没有那么严重。 另外的攻击就是从客户那里盗取内容,然后直接分发。 水印能指出受害者,但不能指出窃贼。
只要下大功夫,所有的水印算法都可以攻破。这些算法就可以作为软件在全球范围内分发。首次破解算法的投入完成后,后续的破解成本就非常小。 另外,当水印被消除后,内容就可以分发,甚至以安全的匿名方式公开。
总的来说,对于低价值、时效性强的信息的盗版,水印算法加大了盗版者的风险。对于许多种内容都是有效的,例如新闻或者产品更新。 它并不能阻止对高价值内容的再次分发。由于水印需要可跟踪的身份,所以降低了客户的隐私性,并且需要注册和授权,为内容购买的交易带来了附加成本。
受控制的 CPU
与热闹的宣传相反,实际上根本没有强大的内容保护软件。 水印差不多就是了,但依然离计算机安全的标准相差甚远。 许多人都企图开发这样的技术,也获得了几百种专利,但依然没有根本性的突破。
还有一种结果,许多发行者,将研发费用,投入到非常激进的替代技术上,可以称之为“安全 CPU (SPU)”。这种 CPU 对电脑的主人进行“安全”检查! 为了执行版权或者内容合约,SPU 监控所有与内容相关的操作。 有些营销文章甚至主张,出版商不仅拥有传统的版权,甚至还拥有监控内容使用情况的新“权利”。明显的,这种非个人计算机,将是研发的核心所在。
这种激进的 SPU 项目,说明了内容合约对出版者的重要性,以及我们为了在线维护纸质时代的知识产权,需要付出的高昂代价。为了避免从服务器上间接、部分查看内容的模式,实现直接、本地模式的浏览内容,强大的内容保护就是必须的。而代价则是,在我们自己的计算机上将失去控制权,并且在我们的操作中失去隐私。
在线内容市场在上下两种力道中被挤压。上面,是对高价值内容的随意分发。下面,是为了对低价值内容收费而带来的心智成本-因需要注册、可跟踪身份所带来的成本。 这之间的市场规模,是一个开放的问题。 “信息需要自由”,但作者和出版商要求付费。 当前内容市场,对于难以复制的媒介,例如书、电影、CD-ROM等的需求是巨大的,每年高达几千亿美元。而在互联网上,则是免费内容的天下。 以服务订阅的形式,分发时效性强的内容,在多数情况下,是一个好方法。我们依然能过看到互联网内容市场将会有多大,为了获得合法内容,客户对失去隐私权和对他们计算机的控制上的过分要求,能够容忍到什么程度。
商誉系统
商誉可以视作,一个代理为其赢得的信用数量。商誉系统最终必须基于事实,而非主观的意见,或者有效的信任。例如,如果我们想要一个良好的信用评级系统,我们需要非常自信,代理收集的信用记录必须非常准确。商誉信息,典型的,都是由被信任,可以执行该任务的中介收集并分发。商誉可以用公共数据库实现(例如信用评级服务),或者使用证书,证书由跟踪的中介发布,由用户携带。记名者并不希望显示他的负面证书,所以证书通常都只有正面。但是我们希望保护我们自己,一样不受负面行为源头影响,所以能够搜索出负面源头与正面源头一样重要。
用标签,将很多交易的结果打包在一起-标签包括唯一的名称、或者统一的 ID、或者“真的名字” - 对于各方来说,是让他们携带负面证书的最大动因。 多数人因为已经积累了足够多的正面商誉,对他们而言几乎不可能重新开始。
Robin Hanson 观察发现,在使用全局唯一名称的环境中,使用一个本地的名称就意味着隐藏了负面的证书,所以使用全局名称就是一个平衡。使用本地名称还有一个问题,我们的关系常常无法清楚的划分成标准的服务类型,即便对于我们希望将其扩展到的新领域,也是一样。另一方面,本地名称对隐私非常重要。 我建议,随着我们与对方更加亲密,互相更加透明,我们应该更多的披露我们本地名称给对方。
虽然全局名称的平衡,对于我们很多关系是有效的,依然还存在许多领域,使用本地名称的“相对性”收益,与很少或者难以将新来者从攻击者那里区分开来所导致的成本相比,要大的多。例如,www.firefly.com 的偏好跟踪服务,通过使用假名,提高了参与度,也保护了客户,避免暴露信息给陌生人,造成信息的滥用。另一方面,信用交易都需要身份信息,因为合约的披露,一般来说,比隐私要重要。
全局性名称的公共秘钥,虽然在隐私上存在很多缺点,很可能是跟踪负面商誉的最佳方法,当然也并非完美。在基于 ID 秘钥系统的系统中,有一个重要的难题:当旧的秘钥被滥用,或将被他人滥用,重新生成一个新的秘钥的功能(秘钥撤销);其他人如何确定他们是与同一个人在打交道的功能。这两种功能是冲突的。这也给了人们一个机会,选择性的披露正面的证书,隐藏负面的证书。例如,某人的信用评级非常差,他就可以撤销信用评价差的秘钥,然后创建一个新的,选择性的将好的评价更新到新的秘钥上。 (比如说,让他们的母校重新做一个新学位)。
美国当前所用的统一(非加密的)秘钥,也就是社会保险号(SSN),是很难撤销的;换个姓名是很容易的。 这种政策并非是偶然的,全局性名称身份在经济上最大的好处就是跟踪负面商誉,而一旦可以撤销,那就没有任何作用了。 因为 SSN 是一个共享的数据库秘钥,不是用来辨识身份不详的交易,那么就没有必要去撤销它,除非想要删除负面历史,而这个并非我们所期望。将一个秘密的授权秘钥(必须是可以撤销的)与公共统一的 ID 结合起来,是有问题的。
信用
智能合约中的一个最基本的关键问题是,如何保障信用。 不仅仅在贷款中,任何合约,只要在合约执行与合约条款的相应执行之间存在短暂的延迟,那么就存在这个问题。
在当前的实践中,有几种部分有效的流程,用来保证合约的执行:
* 商誉(特别是信用报告): 常常是有效的,但也只有那么一点点。 因为对于债主来说,很难分辨一个行为对于未来商誉的影响是什么,(比如,未支付一个账单,借一笔很大的贷款等),虽然这个行为在今天是清楚的、本地的、有益的影响。 在个人消费者中,对于当期和远期的结果,也存在更多的不均衡,其实即便对于拥有很高信用评级的大机构,这也是一个相关因素。
* 担保交易:抵押权,第三方保管,等等。
* 未来收入的扣押
* 法律强制,特别是执行抵押资产、扣押物的控制转移
这些流程都有一个基本的共同属性-破坏了信用交易的隐私性 - 换句话说,这些方法都引进了第三方来跟踪商誉或者强制执行还款。 信用交易,难道必然带来动机上的巨大不均衡,只能通过第三方才能解决?或者我们可以发明一个安全的协议,让信用交易,很少或者根本不再依赖第三方的干涉?
本地名称信用评级
在商誉经济中,人们发现有三个重要的因素:
持有的价值: 如果拥有商誉,未来可以期待的利益
摒弃的价值: 进行欺诈带来的利益,这将会破坏商誉
重建的成本: 重新建立商誉的成本
相应的,Peter Swire 描述了“信用名称”导致的安全不充分、以及不安全贷款所面临的两个问题:
反向选择: 曾经的“老赖”,只要重新注册获得新的服务,就能过重新开始。这样下去,就非常有利于“老赖”。 也解决这个问题,我们可以使用乔姆盲签技术。这种技术,将上一个名称所建立的正面商誉传递到现在的信用民称,同时任何人都无法将这两个名字建立关联。新进入系统的人,如果没有正面的商誉,则会被拒绝。
退出问题:经历时间,某个信用名称可以建立非常好的信用评级。 当那限额达到非常高的时候,借款人可能非常快速的消费了所有限额。一个恶意的借款人,只要在前一个名称之下拥有很高的信用评级,就能够有组织、有系统的从出借人哪里进行欺诈。前提是“摈弃的价值”大于“重建的成本”。为了解决这个问题,出借人必须对新的“信用名称”收取更高的利率,并且对可跟踪的名称用非常非常慢的速度提高信用额度。 诚实的借款人,将要补贴不诚实的借款人,这种补贴比之当前的信用卡系统中的补贴,范围还要大。
抵押信用
如果对抵押资产的物理控制,可以实现共享,那么抵押信用就不会破坏隐私性。于是,在上面所述的例子中,只要可以实现回收,汽车贷款就可以使用抵押的方式。
抵押贷款在线的实现方法,最标准的机制就是第三方托管。第三方托管下,由一个受信任的中介持有消息,直到来自双方的消息都已收到。 另外,可选的是,内容也被验证,前提是内容是可验证的,当然这就要牺牲一定的隐私性。随之,第三方将消息发送到接受者,并附上收据。 消息可以包含任何种类的数据:内容,记名凭证等。
撕开的工具
Alice 想叫一辆纽约的出租车,为此她愿意付款 100 美元,但是她不信任出租车司机 Bob,担心提前付款后,Bob 不送她到目的地。 Bob 呢,也不信任 Alice,担心到了行程的终点,Alice 拒绝付款。这样的交易可以按照一种方式执行,即 Alice 将一张 100 美元的钞票撕成两半,并把其中的一半交与 Bob。 待行程结束,她将另一半交与 Bob,Bob 便可以把两个一半合成一张可以使用的 100 美元钞票。 Alice 拒绝付款,则她没有任何好处可得。 Bob 呢,则必须按照承诺将她送往目的地。双方都做出了经济学家所谓的“可信承诺”,保证各自执行合约。 Markus Jacobsson 已经将此创意实现了数字化,创造了一种“可撕开的数字货币”协议。 和数字货币的其它特性一样,这个创意可以进一步用于撕开其它各种记名工具--特别是那些价值可以分成两半的。 如果转移是双方互盲的,则转移代理无从知道参与者是谁,也就不会偏向其中的某方。 然而,转移代理必须能够对合约的执行证据进行评估,这种协议也只在存有这种证据(比如,证据以消息收据的形式存在)的地方可行。
撕开的钞票,与使用转移代理作为第三方托管代理类似。 使用第三方托管代理的好处是,无须在双方和第三方之间使用额外的匿名渠道。 缺点则是,转移代理必须承担主要的附加工作,也就是作为裁判方,对执行的证据进行评估(或者,最低程度,必须对转包这个工作,并实施裁判方的判断,进行负责)。
信用卡
信用卡技术,在对第三方的防护上,所做甚少,特别是在隐私领域。但信用卡的一个合约特性非常有意思,值得注意,那就是退款机制。有了退款机制,消费者就可以声明某商品并非自己所购,从而获得退款。 发卡方对消费者和商家的退款数量进行跟踪; 太多的退款发生,你就会被踢出这个系统。 这种方法提供了有效机制,实现了退款,又无须采取昂贵的侵权诉讼程序。许多消费者会仔细阅读那些小字体的条款,并对退款的限制了如指掌,他们在收到并消费了所购商品后,也会申请退款; 发卡方没有可行的方法检查出这些欺诈行为,唯一的防范方法就是限制每位消费者的退款次数。 许多商家激烈的抱怨这种消费者“窃贼”,而且有意的攻击行为足以令商家破产。但商家还是必须接受信用卡,因为消费者在使用。退款的机制,让消费者在购买质量不明的商品时,更加坦然,特别是邮寄购买和在互联网上订购。 对于解决零售商和消费者之间信息不对称的问题,退款机制,是一种粗糙的,但部分有效的解决方案。
时段型工具
“延时释放”货币在一定时日之后生效,“时段货币”在约定的一定时间后失效。数字造币厂可以发行这种货币,令这种货币到期失效或者到期激活。 另一种发行发放是,由第三方也可以在特定的时间,发行托管的秘钥。由于第三方代理对秘钥进行加密,而且代理并不知道秘钥的作用,所以第三方代理没有动机去欺诈。 总的特性是,转移和赎回都是基于区间集,或者有效期,在有效期内,要么可以,要么不可以执行合约。 这种技术类似于债券分发的优惠券。
未知数量的已知借款人
Hal Finney 描述过一种混合型贷款,能够将借款人与借款金额分离。 潜在借款人的身份是公开的,执行付款的系统也是公开的,只是借出和借入的金额是未知的。系统的起点是,参与者将不公开的金额投入资金池中,收取该金额的收据(记名债券)。 然后所有的参与者按照一个标准金额借出款项。 参与者是净借款人,还是净借出人,以及所有借入借出的金额,都是个人隐私。当贷款到期,所有的参与者都按那个标准金额还款,然后债权人按照记名债券的金额要求回款。 实际的借款金额(如果是负数,则为贷出金额)是按公开数额借出的金额,减去投入资金池的金额。 这样一来结果是,当参与者无法偿还那标准金额时,负的信用就会积累,而由于无法分辨参与者谁是借方谁是贷方,正的信用就非常小。 如果未来的借出人想投资正的参与者,那么人们只要长期保持投入和借出平衡,就可以因为零借入而获得高的信用评级。
总结
智能合约结合了协议、用户界面、以及这些用户界面所表达的承诺,在公共网络上签订并形成安全的关系。这就给了我们新的方法,去确立和保障数字型关系,这种关系在与它们的祖先,那些僵化的纸质合约比较起来,显得无比强大。 智能合约减少了交易由当事人、第三方和他们的工具所带来的心智和计算上的成本。
Mark Miller 预言了互联网的法则,以及随之附带的设备,都将由法律和计算机安全的伟大结合而提供。 若是这样,智能合约则会是这个结合的一个主要推动力。