公证通(Factom)技术白皮书


摘要:

Factom利用比特币区块链技术来革新商业社会和政府部门的数据管理数据记录方式。

利用区块链技术帮助各种各样应用程序的开发,包括审计系统医疗信息记录,供应链管理,投票系统,财产契据,法律应用金融系统等。开发者能够创造新的应用程序,并把数据保存在区块链上面,同时不用受到直接把数据写入比特币区块链的各种限制:例如写入的数据速度,成本,大小等限制。

Factom维护了一个永久不可更改的、基于时间戳记录的、区块链数据网络。大大减少了进行独立审计、管理真实记录、遵守政府监管条例的成本和难度。
商业社会和政府部门可以利用Factom简化数据记录的管理,记录商业活动,并解决数据记录安全性和符合监管的问题。

Factom正在革新整个世界对数据的记录方式,并利用比特币区块链技术来保护您的数据安全。

 

一、概要

诚信是具备颠覆性的” – 保罗·斯诺

 在当今的全球经济中,信任是稀有的。这种信任的缺乏,造成了大量资源的投入来进行审计和记录核查,从而降低了全球效率,投资回报率和经济繁荣。此外,如2010年美国的次贷危机等事件表明,目前的审计和核查流程是非常不准确和低效的,容易造成问题。 Factom提供了世界上首个准确的,可核查的和不可更改的审计公证流程和方法,从此我们不再需要盲目信任。

 在过去,记录靠手工完成,数据的保护,同步更新和真实性的验证都非常困难。其中的一部分流程被计算机自动化以后,并没有使这些事情变得容易,反而是变得更加困难,因为电脑记录是如此容易被更改。权限和可靠性被四分五裂的分割到无数的独立系统中。

 区块链提供了一个分布式的机制进行数据锁定,使数据可以被核查和独立审计。比特币区块链是现存最值得信赖的不可变的数据存储,但这往往只限于比特币交易上。 Factom能使企业获得最新的区块链技术,而又无需在采用虚拟货币的问题上陷入麻烦。

 在本文中,我们将介绍Factom是如何创建一个分布式的,自治的协议,并把比特币区块链从BiTCOin网络中剥离。我们将讨论 客户端自定义的记录链(Chains of Entries),客户端如何验证记录条目,分布式共识算法, 基于区块链锚定的安全机制等。

111

 

二、Factom设计目标

用Factom创建更快,更便宜,无膨胀的方式来开发区块链应用

 中本聪推出的比特币区块链彻底改变了交易记录的方式。在这以前从未存在过永久的,分散的,和无需信任的分类账。开发商纷纷开始开发建立在这个分类帐之上的应用程序。不幸的是,由于比特币一些初始的设计权衡, 他们已经碰到了几个核心的约束和问题:

 1)速度 – 因为比特币的分布式设计和工作量证明的共识方法,工作量难度会被调整到以保持大致10分钟确认时间。对于希望更大的安全性的应用中,多个确认可能是必需的。一个常见的要求是要等待6确认,这可能会导致等待时间超过一个小时。

 2)成本 – 默认的交易成本大约是0.01 mBTC(约0.003美元美元于2014年11月)。 BTC的交易价格一直不停的波动。如果BTC的价格上涨,则交易成本也上去了。这对需要管理非常大的数字交易数据的应用程序来讲, 是一个严重的成本障碍。此外,还有许多因素,如对区块大小的限制和奖励减半等,会导致交易费用增加。

3)区块链膨胀 – 比特币区块大小限制目前是1MB,交易流量的上限是每秒7交易。任何应用程序想要使用区块链写入和存储信息都将会增加流量。这个问题已致使各方寻求增加区块大小限制。

 Factom是旨在解决这三大核心约束的协议。 Factom协议为应用程序提供的功能和特性超越了虚拟货币。 Factom构建了一个标准的,有效的,安全的基础,这将使应用程序的运行速度更快,更便宜,并且不会造成区块链膨胀

 

三、Factom生态系统

Factom生态系统的几个主要部件,描述如下:

121

一旦系统建立后,Factoids(即Factom币)和用户帐户会被激活,用户将会交易Factom币。Factom和比特币具有以下主要的互动:

 1.应用程序用户使用Factom币(Factoids)购买数据条目信用(Entry CredIT

2.应用程序记录数据条目

3. Factom服务器创建条目区块和目录区块

4. Factom将目录区块的哈希值锚定到比特币区块链

这些数据条目和区块链互动的部分请细看下面的几个章节。

 

安全性和证明

Factom如何保障条目的安全记录?

 Factom把比特币的功能拓展到其货币属性之外的事件记录的功能。 Factom设有最小的规则集,用于永久记录数据条目。 Factom让客户的应用程序来执行大多数的数据验证任务。唯一Factom强制实施的验证是那些通过协议要求交易Factoids,购买条目信用,并确保条目正确付款和记录。

 Factom具有关于激励运行网络和内部一致性的一些规则,但它不能检查用户记录的信息本身的真实性和有效性。

比特币交易限制被限制为从一组输入值集合映射到到一组输出值集合。只要满足输入值条件的输入值集合(通常需要一定的签名)就可以保证系统输入的有效性。这是可以实现自动化一个验证过程,所以可以使审计过程是容易的。例如,为了记录的房地产的产权转让,Factom可以只记录转让发生那一刻的过程。现实世界中,房地产产权的转让的规则是非常复杂的。 例如,一个地方管辖机构可能对房地产购买者有不同的和特殊的要求,如果买家是外国人,农民,或兼职居民,则购买限制条件是不一样的。房地产的地段位置,房屋价格,或建筑类别等不同属性,也可以使房地产被归到不同的类别中。每个类别都可以有自己的规则来反映智能合约的验证和执行过程。在这种情况下,单独一个加密签名不足以充分验证所有权转移的有效性。 此时Factom更多是用来记录房地产所有权转移和交易的发生,而不是验证房地产所有权转移是否有效。

比特币矿工主要执行两个任务。首先,他们解决双重花费的问题。看到两次花同样的一笔资金的相互冲突的交易发生时,他们选择哪一个是可以受理的和接受的。矿工(连同其他全结点)的第二个任务是进行交易验证和审核。由于比特币矿工只受理有效的交易,一个被包含在区块的交易是可以被假定为已经被审核。轻型客户端并不需要知道比特币的完整历史来看接受的资金是否已经被花掉了。 (见SPV客户端)。

Factom服务器和审核服务器如何验证数据条目?

 Factom把比特币矿工做的事情分为两个任务:按照顺序记录条目和审计条目的有效性

 1 – Factom服务器接受数据条目,并将它们装入到不同的区块,并修复条目的顺序。 10分钟后,该条目的顺序通过插入到比特币区块链的一个锚定而变得不可逆转。 Factom通过对10分钟内收集的数据创建哈希值,然后把这个哈希值记录到比特币的区块链来实现这个功能。

2 – 条目的审计是一个独立的过程,可以依靠信任第三方或不依靠信任第三方来完成。审计是至关重要的,因为条目在被包括在Factom数据集之前, Factom是无法验证它们的真伪的。

 以信任为基础的审计,轻型客户端可以信任他们选择一个称职的审计师。一个项目被输入到系统中以后,审计人员将可以验证输入是否有效。审计师将提交自己的加密签名条目。签名会显示该条目通过了所有审计师认为需要做的的检查。审计要求的条件实际上可能是一个Factom链的一部分。以之前的房地产为例,审计师会仔细检查财产转移是否符合当地标准。审核员将公开证明,财产转移是有效的。

 不依靠信任的审计系统将类似于比特币网络。如果一个系统的有效性像比特币网络的数学定义一样完美,那么它可以实现程序化的审计过程。如果用于转移的规则能够由计算机进行审核,则应用程序可以下载有关的数据,并进行自我审计和审核过程。该应用程序可以通过下载数据条目,验证数据条目,并决定条目是否有效,从而使该应用程序建立起对系统的感知。

 Mastercoin, CO.N.Erparty, 和Colored Coin也有类似的信任模型。这些都是基于客户端的验证协议,这意味着交易被嵌入到比特币的区块链上。比特币矿工不审核其有效性;因此,基于这些协议的无效的交易如果被故意设计伪装成有效的交易也可以嵌入到比特币的区块链上。支持这些协议之一的客户端通过对区块链扫描并寻找潜在的交易,检查它们的有效性,并对控制这些数字资产的地方建立说明和解释(通常是一个比特币地址)。在这些协议中,都是由客户端来执行自我审计。

要把这些由客户端验证的协议搬到Factom上,将会只是一个如何定义协议中的交易并建立一个链来保存交易的问题。和比特币相比,交易协议在Factom下不会有太大的不同。不同之处在于信息在Factom上很容易表达,而不必以某种特殊方式对其进行编码并嵌入比特币的交易信息中。

证明否定

 比特币,土地登记,以及许多其他系统需要解决的一个根本性的问题:证明否定。他们证明了某个“东西”已经被转移到某个人,并证明这个“东西”还没有被转移给其他人。在无界系统里,否定的证明是不可能的,而在一个有界系统里它是很有可能的。 加密货币通过限制交易数据可以存在的地方来解决这个问题。比特币交易只能在比特币区块链里找到。如果某个交易没在比特币区块链里被找到,那它在比特币协议下就不存在,因此,该比特币就尚未被发送两次(双花)。

某些土地所有权记录系统是相似的。假设在一个系统里,土地转让要在政府登记,而且法律制度规定,未记录的转让是无效的(sans litigation)。如果一个人要检查某个产权是否明确(即,没有其他人声称这片土地所有权),答案就在政府登记处。利用政府记录可以证明为否定,土地不被第三方拥有。如果产权登记不是必须的,政府的注册表只能证明什么已被登记。私人转让很可能存在,注册表也就不能代表全部的转让情况。

 在上述两种情况下,否定可以在某个环境中得到证明。以万事达币(Mastercoin)为例,这个证明是强而有力的。而土地登记,则仅限于被注册的环境下,可能遭到一定的质疑和挑战。现实世界是复杂的。Factom的设计,针对的不只是精确的数字资产,而且是物质的世界中复杂的现实情况。

 在Factom中,数据分类有层次结构。 Factom只在链中记录数据条目;诸多用户定义的链在Factom执行的协议中没有互相依赖关系。这不同于比特币,每一笔比特币交易是都存在潜在的双重支付,因此它必须被验证。和把所有数据合并在一起成一个总账相比,Factom通过把条目放到多个链当中,可以让应用程序在较小的空间内搜索数据。

 如果Factom要用来管理土地转让,使用某个链来记录的应用程序可以安全地忽略在其他链上的条目,比如那些本来用于保安摄像机的记录的链就不与需要更新。如果政府法庭判决需要变更土地转让记录,那么和其相关的链将被更新,以反映上述判决的结果。但更改的历史不会丢失,并且如果这样的土地产权变更的更改从法律或其他角度来讲无效的话,它的记录的内容和顺序在Factom上都不能被更改或隐藏。

 尼克·萨博(Nick Szabo)在关于“房产俱乐部”的论述中,与本系统有许多重叠。以下是他在论文“安全产权与所有者权限”中的一个要点:

 虽然暴徒还可以通过暴力攫取物质资产,但延续存在的正确的所有权记录将是留在盗用者眼中的眼中钉

 

应用程序如何验证Factom链?

Factom不验证条目;条目是由用户客户端和应用程序来验证的。只要应用程序了解并熟知该条链应遵循的规则,那么无效条目的存在也不会引起不合理的干扰。在链里的不遵守规则的条目可以被应用程序忽略。

用户可以给他们的链设置任意规则,并且可以使用任意方法给这条链的用户传达这条链的规则。在这条链中的第一个数据条目可以被设计成这条链的一组规则,或某个审计程序的哈希值,等等。这些规则可以被应用程序理解,并通过运行Factom,在网络中忽略掉不符合这些规则的客户端应用程序。

 强制执行的序列可以在每条链的规则中指定。不符合这种顺序规定的条目将被应用程序拒绝。然而,那些被规则或审计程序拒绝的条目仍可能被Factom记录在这条链上。这种链的用户将需要运行审计程序,来验证这种序列。Factom服务器将不会使用审计程序来验证此类规则。

上面所述的应用程序验证(与用户自定义链相结合)提供了许多优点:

 1.应用程序可以在Factom上录入任何应用程序可以理解的条目。比如,验证帐户报表的哈希列表,可以像资产的交易一样简单方便的被记录下来。

2.规则的执行是非常高效的。分布式网络必须执行验证规则,然后要求所有节点做所有验证。客户端验证只需要对这些规则关心的系统来执行验证。 Factom允许链使用任何一种语言来设计定义规则,可以使用任何外部数据,并选择在任何平台上运行。一个应用程序所做的决定,对另外一个应用程序不会产生任何影响。

3. Factom服务器对记录下来的条目的内容没有多少认知。我们用一个承诺方案来限制对条目的了解:在服务器承诺记录条目之后再透露该条目的内容。这使得Factom的记录条目的角色很简单,也使得各个服务器的工作流程很公开。 Factom服务器接受来自节点网络的信息,它们的决定和行为总是一目了然的。如不履行规则,就会被Factom自己的审核和来自Factom网络外面的审核所发现。所以,一个Factom服务器是否履行记录条目的责任就可以很容易被第三方核实; Factom不可能掩盖潜在的错误行为

4.写入记录的速度可以非常快,因为由Factom服务器把所需检查的次数降至最低。

5.针对Factom某个链的证明不需要管其它任何链的内容。用户只需拥有他们使用的Factom的部分数据,可以忽略其余部分。

 

Factom联合服务器如何管理链?

究其核心,Factom是用一种去中心化的方式来收集,打包,安全保护数据,并把数据锚定到比特币的区块链上。 Factom以联邦服务器的网络来实现这个目标。这些服务器不断变换在系统中所承担的责任,永远不会只有一个服务器在控制整个系统,每个服务器都只是系统中的一部分。Factom的服务器每一分钟变换一次角色,没有服务器会永久控制系统的任何一部分。

在开始创建一个目录区块的时候,每个联邦服务器需要对某一部分的用户链负责。过程是这样的:

 1.所有服务器重设其进程列表(Process List)为空。

2.用户通与其条目信用的积分(Entry Credit)相关的公钥提交付款

3.根据用于支付的公钥,轮值服务器接受该付款。

4.该服务器向网络广播该支付被接受。

5.用户看到支付被接受, 然后提交条目。

6.根据条目的ChainID,其中一台服务器把条目加入其进程列表,并添加进入到相应链的区块中(如果这是该链的第一个条目, 那就创建这个新链)。

7.

QQ群:697897716
support@bt110.com
手机号:18194064302
QQ号:3471780458
扫描添加微信客服 扫描关注微信公众号