合同管理装置与方法
技术领域
本发明涉及区块链,尤其涉及利用区块链对合同的管理技术。
背景技术
在商业领域,商业合同是重要的法律文件,在合同的准备签订过程中,一般面临多次修改。通常,修改后的合同都是通过不同文档进行管理。因此,不同修改版本的合同需要人工进行核对,检查到底哪些地方进行了修改,因此导致合同版本管理混乱,没有办法清晰地进行合同版本溯源,也无法防止合同篡改。
发明内容
本说明书实施例提供一种改进的合同管理方案,利用区块链技术来进行合同版本管理,从而解决版本演变跟踪的问题,明晰地看到一份合同的版本演变。按照本发明,在一份更改后的合同上链存证时,都会与上一个版本的合同的上链证据例如哈希值进行关联。而不同合同版本的合同的关联关系通过这些上链证据进行串接来清楚看到,从而可通过这些上链证据快速定位到某一个版本的合同内容,也能进一步明晰看到每一个版本的内容。在本发明中,这里的“合同内容”既可以是指基于合同全部文本,也可以是指该合同全部文本生成的合同的至少一部分,例如合同摘要。
按照本发明一个方面,提供一种用于合同管理的装置,包括合同获取模块,获取合同的当前版本的至少一部分合同内容;关联模块,确定该合同是否存在第一上链证据,该第一上链证据是将该合同的先前版本上区块链存证时返回的证据,其中,如果不存在该第一上链证据,则该关联模块输出该至少一部分合同内容;如果存在该第一上链证据,则将该至少一部分合同内容与该第一上链证据相关联地输出;提交模块,将该关联模块的输出作为上链内容上区块链存证,并接收与该合同的当前版本对应的第二上链证据,作为上区块链存证结果。
按照本发明一个方面,提供一种用于合同管理的方法,包括合同获取步骤,获取合同的当前版本的至少一部分合同内容;证据关联步骤,确定该合同是否存在第一上链证据,该第一上链证据是将该合同的先前版本上区块链存证时返回的证据,其中,如果不存在该第一上链证据,则输出该至少一部分合同内容;如果存在该第一上链证据,则将该至少一部分合同内容与该第一上链证据相关联地输出;上链存证步骤,将该证据关联步骤中的输出作为上链内容上区块链存证,并接收与该合同的当前版本对应的第二上链证据,作为上区块链存证结果。
按照本发明一个方面,提供一种合同查询方法,包括:从串接的上链证据中选择一个上链证据,该上链内容包含合同的至少一部分合同内容;从区块链获取与所选择的上链证据对应的上链内容,其中如果该上链内容关联有另一上链证据,则确认所述合同存在先前版本,其中该先前版本的合同的上链内容可从所述区块链中与该另一上链证据对应的区块中获取。
按照本发明一个方面,提供一种计算设备,包括:至少一个处理器,以及与所述至少一个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行本发明的方法。
按照本发明一个方面,提供一种非暂时性机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行本发明的方法。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的变形。
图1是本发明一个实施例的合同管理装置示意图;
图2是本发明另一个实施例的合同管理装置示意图;
图3是根据本发明一个实施例的合同管理方法的处理流程示意图;
图4是根据本发明另一个实施例的合同查询方法的流程示意图;
图5是根据本发明一个实施例的实现合同管理装置的计算机示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书中的一部分实施例,而不是全部的实施例。基于本说明书中的一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例保护的范围。
区块链技术也被称之为分布式账本技术,是一种互联网数据库技术,其特点包括去中心化、公开透明本、数据无法篡改。目前区块链技术已经从单纯的数字货币应用延伸到经济社会的各个领域,如金融服务、供应链管理、文化娱乐、房地产、医疗保健、电子商务等应用场景。在这些应用中,用户交易数据例如链下签署的合同内容可以存储到区块链中。
需要说明的是,本说明书实施例中所述的链下或后续涉及的链上主要是指是否是在区块链上进行的数据操作,如合同的准备、生成等进行的区块链之外的操作可以为链下相关的操作,将合同或合同摘提交到区块链上、区块链节点的验证、数据存储等为链上操作,如将数据提交到区块链上存储可以称为上链存证。此外,传统的合同通常是合同参与方经过商议和讨论达成一致后,记录在纸张上。本说明书实施例中所涉及的合同,可以以数字化或其他计算机数据存储形式存储的电子合同,且该合同可以是电子数据格式的电子文档。
图1示出了根据本发明一个实施例的合同管理装置100的方框图。在本发明中,合同管理装置100既可以是执行链下操作的独立设备,也可以是区块链上的一个节点。当用户通过合同管理装置100或其它设备完成当前版本合同后,可选择将合同以电子文档形式予以保存,为便于以下描述,将该合同的当前版本简记为CFi,其中i代表同一合同的当前第i个修订版本。
如图所示,合同管理装置100包括合同获取模块200、关联模块300以及提交模块400。合同获取模块200获取当前版本合同CFi的至少一部分合同内容CCCi。按照本发明一个实施例,合同获取模块200可通过直接读取用户指定的存储位置的CFi的电子文件的形式来获取CFi的当前合同内容CCCi。在一个示例中,当前合同内容CCCi可以当前版本合同CFi的完整内容。而在另一个示例中,当前合同内容CCCi可以是当前版本合同CFi的合同摘要等一部分内容。这里合同摘要包括但不限于以下各项中一个或多个:合同编辑者、合同编辑时间、合同的版本号以及合同内容主体的至少一部分,例如包括合同关键词等。为此,如图1所示,合同获取模块200可进一步包括摘要生成单元202,用于基于当前版本合同CFi生成合同摘要。
关联模块300确定该当前版本合同CFi是否存在上一版本的上链证据BCHashi-1,BCHashi-1是将先前版本合同CFi-1的至少一部分合同内容CCCi-1上区块链存证时返回的证据,这里i≥1。如果不存在上链证据BCHashi-1,即当前合同CFi是第一版合同,即i=1,关联模块300输出合同CFi的合同内容CCCi,如前所述,当前合同内容CCCi既可以是合同的全部内容,也可以是合同摘要。为便于说明,这里将关联模块300输出的合同内容标记为CCCi′,显然,这里CCCi′=CCCi。
如果关联模块300确定当前版本合同CFi存在上链证据BCHashi-1,即此时i>1,则关联模块300将上链证据BCHashi-1与当前合同内容CCCi相关联,例如将上链证据BCHashi-1合并到当前合同内容CCCi中,由此关联模块300输出关联有上链证据BCHashi-1的更新的合同内容CCCi′,即CCCi′=CCCi+BCHashi-1。
提交模块400从关联模块300接收关联模块300输出的合同内容CCCi′,在合同管理装置100为一区块链节点时,提交模块400可将合同内容CCCi′直接上区块链存证并返回与当前版本CFi对应的上链证据BCHashi。而在合同管理装置100为一独立于区块链的链下装置时,提交模块400可将合同内容CCCi′传送给一区块链节点,由该区块链节点将合同内容CCCi′上区块链存证并返回与当前版本合同CFi对应的上链证据BCHashi,提交模块400接收从区块链节点返回的上链证据BCHashi,并将其存储在例如本地存储器中,以供下次关联模块300查询使用。
按照本发明的另一个示例,为了清楚地看到同一合同各版本的关联关系,如图1所示,合同管理装置100还包括一个证据串接模块500,用于将提交模块400接收到的当前版本合同CFi的上链证据BCHashi与该合同的先前所有版本的上链证据BCHash1~BCHashi-1串接起来,例如将上链证据BCHashi串接在上链证据BCHashi-1之后。不难理解,为便于区分,不同的上链证据之间可以用明显的标识符分隔开。此外,如果当前上链证据BCHashi就是第一版本合同的上链证据,即i=1,则上链证据BCHash1就作为串接上链证据中的第一个证据。通过将上链证据串接起来,就可以通过串接的证据快速定位到某一个版本的合同,实现合同的快速查找。
在本发明的另一实施例中,合同管理装置100还包括一个合同查询模块600。该查询模块600向用户提供一个接口以便于用户从串接的上链证据BCHash1~BCHashn中选择任一个上链证据,例如选择了BCHashi,这里n表示当前存在n个版本。查询模块600从区块链中获取与上链证据BCHashi对应的合同内容CCCi′。基于合同内容CCCi′,用户可以获悉当前版本合同CFi的全部合同内容或合同摘要信息等至少一部分合同内容。此外,查询模块600还可以进一步确认当前合同内容CCCi′是否关联有上链证据BCHashi-1。如果该当前合同内容CCCi′中包含有上链证据BCHashi-1,则表明当前版本CFi还存在先前版本合同CFi-1。由此,合同查询模块600可以根据用户的指示,基于上链证据BCHashi-1从区块链中获取到先前版本CFi-1的先前合同内容CCCi-1′。如果当前合同内容CCCi′中未包含有任何上链证据,则表明该当前合同内容CCCi为第一版本合同CF1的内容,否则还可以查询更早版本的合同内容。
在本发明的另一实施例中,在提交模块400将合同内容CCCi′提交之前,还可以进一步对合同内容CCCi′进行加密。图2示出了根据该实施例的合同管理装置100′。如图2所示,除了合同获取模块200、关联模块300、提交模块400、证据串接模块500以及合同查询模块600之外,合同管理装置100′还包括加密模块700。加密模块700对关联模块300输出的合同内容CCCi′进行加密以生成加密文本ETi,作为更新的上链内容。随后,提交模块400将该加密文本ETi上区块链存证并接收与当前版本CFi对应的上链证据BCHashi。按照一个实施例,加密模块700在接收到当前合同内容CCCi′后,对其可执行二项加密处理。其中一项加密处理是利用哈希算法,对合同内容CCCi′执行哈希运算以生成检验哈希值hashi,该检验哈希值hashi主要用于验证上到区块链上的合同内容是否被篡改。另一种加密处理是利用加密钥cKeyi对当前合同内容CCCi′进行加密以生成内容加密合同CECi,以防止上到区块链上的合同内容被不期望的人看到。随后,加密模块700将包括有检验哈希值hashi与内容加密合同CECi的加密文本ETi传送给提交模块400以进行上链存证。在本例中,加密所采用的加密钥可以是随机产生的公钥-私钥(cKeyi-dKeyi)对中的公钥,而私钥则用于查询合同内容时解密使用。图2还示出合同查询模块600的一个示例性配置,该查询模块600可实现对加密的合同的查看。
如图2所示,合同查询模块600包括版本选择单元602以及解密单元604。版本选择单元602根据用户的指示从串接的上链证据BCHash1~BCHashn中选择一个上链证据,例如选择了BCHashi,如前所述,上链证据BCHash1~BCHashn是由证据串接模块500生成并存储的。然后版本选择单元602从区块链中获取与选择的上链证据BCHashi对应的加密文本ETi并提供给解密单元604。
解密单元604利用解密钥dKeyi对加密文本ETi中的内容加密合同CECi进行解密以获得当前合同内容CCCi′。此外,解密单元604按照预定的哈希算法对解密得到的合同内容CCCi′执行哈希运算,并将计算得到的临时哈希值Hash′i与加密文本ETi中的验证值Hashi进行比较,从而确定合同内容CCCi′是否被篡改。如果结果匹配,则当前合同内容CCCi′中包含的合同内容CCCi为真实文本,否则为篡改文本。
如前所述,在当前版本CFi非第一版合同CF1情况下,合同内容CCCi′还包括有上一版合同的上链证据BCHashi-1。因此,如果用户希望查看上一版合同CFi-1的内容,则版本选择单元602从区块链中获取与上链证据BCHashi-1对应的加密文本ETi-1。随后,解密单元604利用解密钥dKeyi-1对加密文本ETi-1中的内容加密合同CECi-1进行解密以获得合同内容CCCi-1′。此外,解密单元604按照预定的哈希算法对解密得到的合同内容CCCi-1′执行哈希运算,并将计算得到的临时哈希值Hashi-1′与加密文本ETi-1中的验证值Hashi-1进行比较,从而确定合同内容CCCi-1′是否被篡改。如果结果匹配,则当前合同内容CCCi-1′中包含的合同内容CCCi-1为真实文本。由此,用户可以查看第i-1版本合同CFi-1的合同内容,例如合同全文或摘要信息。以此,用户可以查看第i-2甚至更早版本的合同内容。
图3示出根据本发明一个实施例的合同管理方法的流程图。如图所示,在步骤302,合同管理装置获取当前版本合同CFi的至少一部分合同内容CCCi,如前所述,当前合同内容CCCi既可以是合同的整体内容,也可以是包含合同编辑者、完成时间以及合同关键词等的合同摘要等至少一部分内容。
在步骤304,确定当前版本合同CFi是否存在先前版本的上链证据BCHash1~BCHashi-1,上链证据BCHash1~BCHashi-1是将先前版本合同CF1~CFi的至少一部分合同内容CCC1~CCCi-1上区块链存证时返回的证据。在另一示例中,也可以仅确定最后一次上链证据BCHashi-1。如果不存在任何上链证据,则输出仅包含当前合同内容CCCi的CCC′i;否则如果存在上链证据,则将最后一次上链证据BCHashi-1与当前合同内容CCCi进行关联,例如将上链证据BCHashi-1合并到当前合同内容CCCi中,从而得到并输出关联有上一版上链证据BCHashi-1的当前合同内容CCCi′。
在步骤306,将在步骤304输出的当前合同内容CCCi′作为上链内容上区块链存证并接收与该当前版本CFi对应的上链证据BCHashi。
在另一实施例中,为了能通过上链证据快速地定位到某一版本合同,该流程还包括步骤308,将接收到的当前版本合同CFi的上链证据BCHashi与先前所有版本的合同的上链证据BCHash1~BCHashi-1串接起来,例如,将上链证据BCHashi串接在上链证据BCHashi-1之后。
在另一实施例中,为了增加信息安全性,在步骤306实施上链存证处理之前,该流程还可以进一步包括合同加密步骤。在该步骤中,接收在步骤304输出的当前合同内容CCCi′,然后,利用哈希算法,对当前合同内容CCCi′执行哈希运算以生成检验哈希值Hashi。此外,利用加密钥cKeyi对当前合同内容CCCi′进行加密以生成内容加密合同CECi。随后,在步骤306,将加密步骤产生的检验哈希值Hashi与内容加密合同CECi作为待上链的加密文本ETi全部上链存证。
利用本发明实施例提供的合同查询模块600可实现对不同版本合同的查询流程。如前所述,合同查询模块600可以从串接的上链证据BCHash1~BCHashn中选择一个上链证据BCHashi,然后,从区块链获取与所选择的上链证据BCHashi对应的当前版本CFi的合同内容CCCi′,其中如果该当前合同内容CCCi′关联有另一上链证据BCHashi-1,则确认当前合同CFi存在先前版本CFi-1,其中该先前版本合同CFi-1的合同内容CCCi-1′可从所述区块链中与上链证据BCHashi-1对应的区块中获取。图4示出了根据一个具体实施例的合同查询处理流程。
如图所示,首先,在步骤402,根据用户的指示从存储的串接上链证据BCHash1~BCHashn中选择一个上链证据,例如选择了BCHashi。然后在步骤404,按照所选择的BCHashi,从区块链的区块中获取与BCHashi对应的加密文本ETi。
在步骤406,利用解密钥dKeyi对加密文本ETi中的内容加密合同CECi进行解密以获得当前合同内容CCCi′。此外,按照预定的哈希算法对解密得到的合同内容CCCi′执行哈希运算,并将计算得到的临时哈希值Hashi′与加密文本ETi中的验证值Hashi进行比较,从而确定合同内容CCCi′是否被篡改。如果比较结果匹配,则当前合同内容CCCi′中包含的合同内容CCCi为真实文本,否则为篡改文本。由此,用户可以查看当前版本的合同内容CCCi。
按照另一实施例,该流程还包括步骤408,可以进一步确定当前合同内容CCCi′是否还包括有上一版合同的上链证据BCHashi-1。如果确认还包含有上链证据BCHashi-1,则前进到步骤410,等待接收用户是否查看上一版合同CFi-1内容的指示。如果确认用户希望进一步查看上一版合同CFi-1,则前进到步骤412,获取上一版合同CFi-1的上链证据BCHashi-1,然后进程返回到步骤404。在步骤404,按照上链证据BCHashi-1,从区块链的区块中获取与BCHashi-1对应的加密文本ETi-1。,然后前进到步骤406,利用解密钥dKeyi-1对加密文本ETi-1中的内容加密合同CECi-1进行解密以获得先前合同内容CCCi-1′。如上所述,通过验证哈希值Hashi-1来确定合同内容CCCi-1′是否被篡改。如果比较结果匹配,则当前合同内容CCCi-1′中包含的合同内容CCCi-1为真实文本,否则为篡改文本。由此,用户可以查看合同内容CCCi-1,例如合同全文或摘要信息。这里需要指出的是,用于先前合同加密文本ETi-1的解密钥dKeyi-1与当前合同的解密钥dKeyi可以相同或不同,并通过随机方式产生。以此方式,用户可以查看第i-2甚至更早版本的合同内容。
如果在步骤410,确定用户不希望查看上一版合同CFi-1内容,则在步骤414进程结束。如果在步骤408确定当前合同内容CCCi′不包括有上一版合同的上链证据BCHashi-1,则表明当前合同为第一版本合同,因此进程前进到步骤414,进程结束。
这里需要指出的是,虽然结合上述描述了本发明的实施例,但本发明并不限于此。例如,图1、2中的各模块或单元可以包括处理器、电子设备、硬件设备、电子部件、逻辑电路、存储器、软件代码、固件代码等,或者它们的任意组合。技术人员还将认识到的是,结合本文公开内容描述的各种说明性的逻辑方框、模块和方法步骤可以实现为电子硬件、计算机软件或二者的组合。以软件实现为例,作为一个逻辑意义上的合同管理装置,是通过处理器将非易失性存储器中对应的计算机程序指令读取内存中运行形成的。从硬件层面而言,如图5所示,在一种实现方式中,根据本发明的合同管理装置由一个或多个计算机实现。除了图5所示的处理器、内存、网络接口以及非易失性存储器之外,实施例中实现合同管理装置的计算机通常根据其实际功能,还可以包括其它硬件,对此不再赘述。
本发明另一实施例提供的机器可读介质上存储有机器可读指令,该机器可读指令在被计算机执行时,使计算机执行本文公开的前述的任一种方法。具体地,可以提供配有机器可读介质的系统或者装置,在该机器可读介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统的计算机读出并执行存储在该机器可读介质中的机器可读指令。在这种情况下,从机器可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的机器可读介质构成了本发明的一部分。
需要说明的是,上述各流程和合同管理的结构图中不是所有的步骤或模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。