一种基于区块链的链化数据库及操作方法与流程

文档序号:26750923发布日期:2021-09-25 02:28阅读:149来源:国知局
一种基于区块链的链化数据库及操作方法与流程

1.本发明涉及区块链领域,尤其涉及一种基于区块链的链化数据库及操作方法。


背景技术:

2.目前政府与政府之间、政府与企业之间、企业与企业之间的联系与结合越来越紧密。这种联系与结合不仅仅是政策上、流程上的联合,更是各种信息系统和业务系统之间的对接。而这些数据的对接中产生或需要读取的数据都依赖于数据库的维护以及数据库的权限管理。尤其在供应链管理中,生产、制造、物流、分销、零售、政府监管等参与方需要上游企业和制造企业合作维护一个供应数据库。这个数据库关系企业的商业机密和财务数据,所以不能将数据库放在云端进行开放的访问和读取。
3.因此,这些数据库中的数据需要满足加密、防伪、可追溯、以及对不同的对象共享不同的数据内容等特性。而这些正是区块链技术的长处和优势,即通过区块链技术既可以保证数据库防篡改和追溯性,又可以解决数据的分布式同步共享问题。
4.但是,简单的将区块链技术与数据库结合并不是有效的。因为其中存在着许多亟待解决的方案和技术难题。对传统的区块链、联盟链来说,直接将数据库进行上链操作,面临着如下的问题:1.数据需要重新迁移;2.数据库应用需要重写;3.相关操作人员需要重新培训;4.整个业务系统对外接口要改为区块链技术为主的接口,加大了数据库的整合和维护代价。
5.在现有的联盟链中,大家遵循着排序

共识

执行的顺序。在排序阶段,一批交易按一定顺序排列。在共识阶段,这些参与联盟链的组织依照某种协议对已排好序的交易达成共识。如果能够达成共识,则每个组织在本地执行相应交易。最后,每个组织能达到相同的状态。
6.但是在这个流程中有很强的假设,即每个组织在自己本地执行相应交易时不会发生问题。由于每条交易对应着一个数据库操作,如果每个组织使用的是不同的数据库,则很难保证每个组织能达到相应的状态或者组织内部修改某条数据。
7.这些问题能否解决、关键技术是否高效,取决于新的方案设计在结合区块链的优势的同时,能否避免传统方案中存在的问题。


技术实现要素:

8.为了解决这些问题,本发明将链化已有的数据库,在降低数据上链难度的同时,以



作为信息通信和业务流程的载体,提高通道和数据存储的安全可控性;并最终使这些数据库通过链化数据库技术达到同步、互联、交互、安全、可控、保险、易用。
9.本发明的具体技术方案如下:
10.排序阶段:在排序阶段,一批交易输入按顺序排列成一个数据块。这里的输入可以是各个组织将要采取的数据库举动,简称为举动块。
11.执行阶段:在执行阶段,每个组织收到一个在排序阶段产生的数据库举动。各个组
织在验证数字签名后,在自己本地的关系数据库上执行该举动。该举动会对本地数据库产生相应的后果,而共识协议就是基于这些后果达成的。每个组织可以收到不同的举动块,也可以对于相同的举动块有不同的解读,并作用在不同的本地数据库上。
12.共识阶段:在共识阶段,各个组织会根据在执行阶段产生的后果达到共识。首先,大家会对于某个特定的后果达成共识。如果某个组织的后果与共识后果一致,则该组织将它加载在自己本地的链上,并进入下一轮。只有在大家都一致时,我们才说达到共识。
13.恢复阶段:如果有组织与共识后果不一致,则该组织会从这个状态中恢复。
14.具体的,一种基于区块链的链化数据库,包括链化服务器、检测服务器、排序服务器、执行服务器和共识服务器;所述链化服务器和客户端通信连接;所述链化服务器和所述检测服务器通信连接;所述排序服务器和所述链化服务器通信连接;所述执行服务器和所述排序服务器通信连接;所述执行服务器和所述共识服务器通信连接。
15.一种基于区块链的链化数据库操作方法,包括以下步骤,
16.s1,链化服务器接收来自于客户端的交易列表,所述交易列表的交易包括数据库操作信息和签名信息;所述链化服务器先对所述交易列表的每条交易的签名信息进行验证,然后将签名信息验证通过的交易发送给检测服务器;
17.s2,所述检测服务器接收到来自于所述链化服务器发送的交易后,对所述交易进行检测,并将是否同意所述交易的信息发送给所述链化服务器;
18.s3,所述链化服务器接收到来自于所述检测服务器发送的是否同意交易的信息后,对所述检测服务器同意的交易打包成链化交易,并将所述链化交易发送给排序服务器;
19.s4,所述排序服务器接收到来自于所述链化服务器发送的所述链化交易信息后,对所述链化交易信息进行排序,并将排序后的排序交易信息发送给执行服务器;
20.s5,所述执行服务器接收到所述排序交易信息后,先检测接收到的每条交易的签名信息的的合法性,然后在自己本地的数据库执行签名信息合法的交易的数据库操作信息;在执行数据库操作过程中收集摘要表;在执行完所有操作之后,所述执行服务器生成摘要表的hash值,并将所述摘要表的hash值发送给共识服务器;
21.s6,所述共识服务器接收到所述摘要表的hash值后,与其他组织的共识服务器通信,检查是否有其他摘要表的hash值达到共识要求;如果有其他摘要表的hash值达到共识要求,则将共识的摘要表的hash值发送至各相应的执行服务器;
22.s7,所述执行服务器接收到所述共识的摘要表的hash值后,与自己的摘要表的hash值进行比较,如果一致,则不进行操作。
23.优选的,步骤s7,所述执行服务器接收到所述共识的摘要表的hash值后,与自己的摘要表的hash值进行比较,如果一致,则不进行操作;如果不一致,则执行服务器执行数据库的数据恢复操作。
24.优选的,步骤s2,所述检测服务器接收到来自于所述链化服务器发送的交易后,对所述交易信息是否满足自己本地的完整性进行检测,并将是否同意所述交易的信息发送给所述链化服务器。
25.优选的,步骤s3,所述链化服务器接收到来自于所述检测服务器发送的是否同意交易的信息后,查询接收的所述检测服务器同意的交易所涉及的组织,并和所涉及的组织进行通信,询问所涉及的组织是否同意所述检测服务器同意的交易,对所涉及的组织全部
同意的所述检测服务器同意的交易打包成链化交易,并将所述链化交易发送给排序服务器。
26.优选的,步骤s4,所述排序服务器接收到来自于所述链化服务器发送的所述链化交易信息后,以fifo的方式将交易排序,然后将已排序的交易发送给kafka节点,所述kafka节点将排序交易发送给执行服务器。
27.优选的,步骤s5,所述执行服务器接收到所述排序交易信息后,先检测接收到的每条交易的签名信息的的合法性,然后对合法交易的数据库操作信息进行操作顺序的优化,然后在自己本地的数据库执行优化后的操作;在执行数据库操作过程中利用sql

99trigger收集摘要表;在执行完所有操作之后,所述执行服务器生成摘要表的hash值,并将所述摘要表的hash值发送给共识服务器。
28.优选的,所述数据库操作信息包括插入操作、删除操作、更新操作。
29.优选的,所述签名信息为数字签名。
30.与现有技术相比,本发明具有以下优势:
31.本发明根据任意阶段至共识阶段的流程,结合了数据库操作和区块链技术,构造了任意共识系统的流程架构,进而实现数据库中数据的不可篡改、可追溯等特性。
32.高效性:通过任意共识技术,可以极大地提高交易达成的效率,且采用以日志为中心的设计,不仅减少链上数据存储所需空间,还提高了检索效率。
33.易用性:通过整合各种调用接口,优化执行过程,最终实现简化人员的操作流程。本发明不但具备交易和区块链实时监控的能力,其简单可行的上层开发架构和扩展性能还减少了维护所需要的代价。
附图说明
34.图1为本发明的整体结构示意图。
35.图2为本发明任意共识系统的示意图。
具体实施方式
36.下面对本发明的实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
37.实施例1
38.参照附图1,一种基于区块链的链化数据库,包括链化服务器、检测服务器、排序服务器、执行服务器和共识服务器;所述链化服务器和客户端通信连接;所述链化服务器和所述检测服务器通信连接;所述排序服务器和所述链化服务器通信连接;所述执行服务器和所述排序服务器通信连接;所述执行服务器和所述共识服务器通信连接。
39.参照附图1,一种基于区块链的链化数据库操作方法,包括以下步骤,
40.s1,链化服务器接收来自于客户端的交易列表,所述交易列表的交易包括数据库操作信息和签名信息;所述链化服务器先对所述交易列表的每条交易的签名信息进行验证,然后将签名信息验证通过的交易发送给检测服务器。
41.s2,所述检测服务器接收到来自于所述链化服务器发送的交易后,对所述交易信息是否满足自己本地的完整性进行检测,并将是否同意所述交易的信息发送给所述链化服
务器。
42.s3,所述链化服务器接收到来自于所述检测服务器发送的是否同意交易的信息后,查询接收的所述检测服务器同意的交易所涉及的组织,并和所涉及的组织进行通信,询问所涉及的组织是否同意所述检测服务器同意的交易,对所涉及的组织全部同意的所述检测服务器同意的交易打包成链化交易,并将所述链化交易发送给排序服务器。
43.s4,所述排序服务器接收到来自于所述链化服务器发送的所述链化交易信息后,以fifo(先进先出:first input first output)的方式将交易排序,然后将已排序的交易发送给kafka节点,所述kafka节点将排序交易发送给执行服务器。
44.s5,所述执行服务器接收到所述排序交易信息后,先检测接收到的每条交易的签名信息的的合法性,然后对合法交易的数据库操作信息进行操作顺序的优化,然后在自己本地的数据库执行优化后的操作;在执行数据库操作过程中利用sql

99trigger收集摘要表;在执行完所有操作之后,所述执行服务器生成摘要表的hash值,并将所述摘要表的hash值发送给共识服务器。
45.s6,所述共识服务器接收到所述摘要表的hash值后,与其他组织的共识服务器通信,检查是否有其他摘要表的hash值达到共识要求;如果有其他摘要表的hash值达到共识要求,则将共识的摘要表的hash值发送至各相应的执行服务器。
46.s7,所述执行服务器接收到所述共识的摘要表的hash值后,与自己的摘要表的hash值进行比较,如果一致,则不进行操作;如果不一致,则执行服务器执行数据库的数据恢复操作。
47.所述数据库操作信息包括插入操作、删除操作、更新操作。
48.所述签名信息为数字签名。
49.参照附图2,本发明调换执行顺序为:排序

执行

共识,即只需要要求各个组织节点在执行之后达到共识,而不要求在执行前保持相同的排序。因为不管在排序或者执行阶段产生错误,都可以在共识阶段发现这些错误。这也就将之前的三阶段变换为两阶段,即任意和共识阶段,称为任意共识系统。
50.在共识阶段,各个组织尝试着对于任意阶段之后的各组织的状态达成共识。如果可以,则相应的结果放在联盟里面。如果有一个组织不能和大家达成共识,就必须执行恢复操作。如果没办法达成共识,则所有组织都执行恢复操作。
51.为使数据生成过程不可逆转,又能对数据进行快速、多维度的访问,本发明采用以日志为中心的设计思想。即在区块链中,把区块可抽象成日志系统,日志系统是链的操作日志,记录着链的状态变化过程。因此,区块的产生就是日志连续产生的过程。
52.为降低操作难度以及接口对接问题,避免在实际应用过程中数据迁移及人员训练等系统性的整合与维护代价。本发明把对数据库的操作转换为对区块链网络的交易,使得原来针对数据库的操作变为对区块链节点的操作。
53.本发明给出灵活合理的接口调用,实现解析源数据库在线日志或归档日志的功能。利用数据库的解析操作,可以获得数据的增删改变化,再将这些变化应用到其他数据库,实现数据库之间的同步;同时采用给出数据库摘要表的代理节点方案,使得企业数据库可高效对接区块链。
54.另外需要阐明的是,本发明的链化数据库是基于任意共识系统。其中任意共识系
统是利用摘要日志等方式,最终使得各个组织之间对所执行的结果达成共识。对于未达成共识的节点进行回滚数据等操作。
55.本发明的技术方案主要有任意共识系统、链化数据库的操作流程、系统架构以及数据恢复机制。
56.1.效果函数
57.定义操作效果:组织在自己本地数据库上的操作会带来一些效果,而共识基于这些效果达成。在这里,本发明考虑符合sql

99的关系数据库。选择sql

99,有两个原因:一是希望企业中已有的数据库能够被链化;二是可以利用sql

99的trigger来实现一个数据来源无关的摘要(digest)表。对于每个sql的行为(insert,update,delete),生成一个摘要项。每个摘要项的格式为[pk,serial:int,hash:int,t]。这里的pk是数据表的primary key,serial是一个严格增长的整数,用来区分同一个pk表中的不同项,hash是该改变项的hash值(对于delete操作,是在delete之前该项的hash值),t就是操作的类型(insert,update,delete)。
[0058]
虽然摘要表记录了数据库中的变化,但还不能完全定义共识协议中所需要的效果,实际效果是由块来定义的。一个块包含下列几项:
[0059]
(1)操作列表:每条数据库操作由其对应的sql代码表示。
[0060]
(2)操作是否成功:由比特串构成,代表相应的数据库操作是否完成。
[0061]
(3)摘要表hash:前面所定义的摘要表的hash值。
[0062]
(4)前一个块的hash值:前一个块的hash值,由此构成一条hash链。
[0063]
摘要表hash,有如下两种方案可以参考:
[0064]
(1)对每行数据进行hash后,构建merkel树,取得根节点的hash值为最终的摘要表hash值。
[0065]
(2)h1=hash(第一行数据字符串)
[0066]
h2=hash(h1+第二行数据字符串)
[0067]
h3=hash(h2+第三行数据字符串)
[0068]
……
[0069]
h
n
=hash(h
n
‑1+第n行数据字符串)
[0070]
最后的h
n
即为数据表的hash值。
[0071]
2.任意共识系统
[0072]
任意共识系统是在执行相应操作之后,对所产生的结果达成共识。这就限制了一些组织对数据的私自操作。也就是说,任意共识系统保证了,对不信任彼此的参与组织,在各自进行操作后仍能对交易达成共识。任意共识系统包含任意阶段和共识阶段两个步骤:
[0073]
任意阶段。虽然获取的交易输入是按照一定的顺序的,但是每个组织可能收到的执行序列却不尽相同。假设a
l,1
,a
l,2


a
l,t
为到t轮为止,组织o
l
所执行的操作。定义这一系列操作所产生的效果函数f
l
(
·

·
),其中效果函数具体表现为摘要表。当操作满足当前状态时,即该操作符合数据库规定,组织可以执行该操作,得到一个新的累积效果e
l,t
,即
[0074]
e
l,t
=f
l
(e
l,t
‑1,a
l,t
)
[0075]
其中初始值e
l,0
≠φ。可以从初始值,通过迭代,得到在t轮时的累积效果。
[0076]
共识阶段。根据在t轮的累积效果,各个组织达成共识。否则的话,系统没办法进入
到t+1轮。为了达到共识,可以采取不同的共识机制,例如fabric共识机制或者本文后面列出的阈值共识机制。如果达成共识,则每个组织o
l
会自行决定达成的共识累积效果是否与自己的本地累积效果相同。如果相同的话则该效果被加入到本地链中,并进入t+1轮。如果与本地的累积效果不同,则该组织o
l
不能进入t+1轮,并尝试进行数据恢复。如果本轮没有达成共识,则所有组织进入恢复模式。
[0077]
任意共识系统的共识协议:因为是联盟链,所以可以进行投票来达到共识。需要指定一个共识准则,即多少组织达到相应的效果。简单来说,每个组织对于网络中出现的块进行清点,也就是清点该块的hash值出现的次数(包含自己块的hash值)。当某一hash值出现次数超过准则值时,且该hash值与自己产生的块hash值相同时,将相应的块加载在本地链里面。
[0078]
3.系统架构
[0079]
一个链化数据库系统包括参与组织(数目大于等于3),一个不受信任的排序服务器,一些kafka节点负责传输排序服务器的信息。
[0080]
每一个参与组织运行一个或者多个的链化服务器,检测服务器,执行服务器以及共识服务器。hash函数可以利用sm3中的hash算法,签名和验证可以用sm2中的数字签名算法。所有在链化系统中传输的消息都需要数字签名来保证其完整性和有效性。下面简介每个服务器的作用:
[0081]
链化服务器:链化服务器首先收到来自于客户的已签名的交易(即数据库操作)列表。每个链化服务器存储一套规则(即相关的操作需要哪些组织同意)。对于每条交易,链化服务器与检测服务器通信,询问它是否同意该交易。在规则内所有组织都同意该交易的时候,链化服务器将交易以及同意信息打包成链化交易,并发送给排序服务器。
[0082]
检测服务器:检测服务器收到来自链化服务器的交易信息后,检查该交易信息是否满足自己本地的完整性检测,并将是否同意的信息发还给链化服务器。
[0083]
排序服务器:排序服务器收到来自链化服务器的链化交易信息,并以fifo的方式将交易排序。在每个时间段,将已排序的交易发送给kafka节点。kafka节点将排序交易发送给执行服务器。
[0084]
执行服务器:在收到来自排序服务器的排序交易之后,首先检测数字签名的合法性。然后(操作顺序可优化)在自己本地的数据库上并行执行相关(数字签名合法的)操作。在执行中利用sql

99trigger收集摘要表。在执行完所有操作之后,服务器生成ledger块以及相应的hash值,并将hash值发送给共识服务器。
[0085]
共识服务器:共识服务器收到来自执行服务器的hash值,并与其他组织的共识服务器通信,检查是否有一个hash值达到共识要求。如果有且与自己的hash值相同,则将该块加到本地的链里面。如果没有,执行恢复操作。
[0086]
由此,系统的业务流程如下:
[0087]
(1)客户端:发送交易信息(如:己方账户,对方账户,交易金额,签名)。
[0088]
(2)链化服务器:收到交易;验证签名;询问检测服务器是否同意交易。
[0089]
(3)检测服务器:收到交易信息;交易完整性检查(即是否满足交易条件,如账户余额是否充足等);返回检查结果,进行签名等操作后,发送给链化服务器。
[0090]
(4)链化服务器:收到检查结果;查询相关的操作需要哪些组织同意,并发送相关
的组织;收到相关组织的同意交易信息;签名后,打包成链化交易,发送给排序服务器。
[0091]
(5)排序服务器:收到链化交易信息;以fifo的方式将交易排序;每个时间段,把排序的交易打包;将交易排序发送给执行服务器。
[0092]
(6)执行服务器:对排序后的交易检测签名合法性;在本地数据库上对交易执行操作;对执行的操作生成摘要表;把摘要表的hash发送给共识服务器。
[0093]
(7)共识服务器:对执行服务器的hash值达成共识;对共识的hash值发送给各个执行服务器。
[0094]
(8)执行服务器:收到共识hash值,如果一致,则不进行操作;如果不一致,需要回滚数据库至与其他服务器一致的节点,并获取其他服务器中的数据,以更新并最终得到与其他服务器一致的摘要表hash。
[0095]
4.数据恢复机制
[0096]
在组织的本地累积摘要表不同于在达成共识的摘要表时,该组织需要执行数据恢复机制。产生这个差异的原因可能是该组织对于数据库操作的理解错误,或者在该数据库操作中存在不确定性因素,或者该组织的数据库管理者在篡改数据。对于不能达到共识的数据库,该组织首先重新执行该轮数据库操作,得到一个新的累积摘要表。如果该摘要表与共识摘要表相符,则该组织达成共识。否则,该组织分情况执行以下数据恢复机制。
[0097]
下面所描述的恢复机制基于两点考量:一是数据库状态是否包含在本地累积摘要表中;二是该数据库的操作是否可以理解,其中包含白盒与黑盒(即不理解操作的语义)两种情况。
[0098]
(1)不能自动恢复:在数据库状态没有被包含在累积摘要表中或者没有获取数据库操作序列权限时,需要人工进行相应的恢复工作。
[0099]
(2)完全回放:在数据库状态没有被包含在累积摘要表中,但是可以黑盒获取数据库操作序列的时候,该组织可以从一开始按顺序执行数据库操作进行数据库恢复。
[0100]
(3)从状态中部分回放:在数据库状态被包含在累积摘要表中,而且可以黑盒获取数据库操作序列的时候,该组织可以在之前任意达成共识的数据库状态中回放自该状态开始的数据库操作,从而恢复数据。
[0101]
(4)可优化完全回放:在数据库状态没有被包含在累积摘要表中,而且可以白盒获取数据库操作序列的时候,该组织可以在对数据库操作进行优化之后再进行完全回放,从而有效的恢复数据库。
[0102]
(5)从状态中可优化部分回放:这是最常见的情况。在数据库状态被包含在累积摘要表中,而且可以白盒获取数据库操作序列的时候,该组织可以从之前达成共识时所对应的逻辑映像中进行可优化部分回放。
[0103]
本发明以日志为中心,生成摘要表hash以实现任意共识系统,使得各个组织在执行操作后达成共识,把业务流程转变为两阶段,即任意阶段和共识阶段。
[0104]
因此,本发明具有以下优势:
[0105]
本发明根据任意阶段至共识阶段的流程,结合了数据库操作和区块链技术,构造了任意共识系统的流程架构,进而实现数据库中数据的不可篡改、可追溯等特性。
[0106]
高效性:通过任意共识技术,可以极大地提高交易达成的效率,且采用以日志为中心的设计,不仅减少链上数据存储所需空间,还提高了检索效率。
[0107]
易用性:通过整合各种调用接口,优化执行过程,最终实现简化人员的操作流程。本发明不但具备交易和区块链实时监控的能力,其简单可行的上层开发架构和扩展性能还减少了维护所需要的代价。
[0108]
上述实施例和图式并非限定本发明的产品形态和式样,任何所属技术领域的普通技术人员对其所做的适当变化或修饰,皆应视为不脱离本发明的专利范畴。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1