具体实施方式
以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
区块链是一种按照时间顺序来将数据区块顺序相连组合而成的链式数据结构,并且以密码学方式保证数据区块不可篡改和不可伪造。区块链中的每个区块通过包括该区块链中紧接其之前的前一个区块的加密散列而链接到该前一个区块。每个区块还包括时间戳、该区块的加密哈希以及一个或多个交易。对已经被区块链网络的节点验证的交易进行哈希处理并形成Merkle树。在Merkle树中,对叶节点处的数据进行哈希处理,并且针对Merkle树的每个分支,在该分支的根处级联该分支的所有哈希值。针对Merkle树执行上述处理,直到整个Merkle树的根节点。Merkle树的根节点存储代表该Merkle树中的所有数据的哈希值。当一个哈希值声称是Merkle树中存储的交易时,可以通过判断该哈希值是否与Merkle树的结构一致来进行快速验证。
区块链网络是用于管理、更新和维护一个或多个区块链结构的计算节点网络。在本说明书中,区块链网络可以包括公有区块链网络、私有区块链网络或联盟区块链网络。
在公有区块链网络中,共识过程由共识网络的节点控制。例如,在公有区块链网络中可以存在成千上万个实体协作处理,每个实体操作该公有区块链网络中的至少一个节点。因此,公有区块链网络可以被认为是参与实体的公有网络。在一些示例中,大多数实体(节点)必须按序对每个区块进行签名,并且将签名后的区块添加到区块链网络的区块链中。公有区块链网络的示例可以包括特定对等支付网络。
公有区块链网络支持公有交易。公有交易在公有区块链网络内的所有节点之间共享,并且存储在全局区块链中。全局区块链是指跨所有节点复制的区块链。为了达成共识(例如,同意向区块链添加区块),在公有区块链网络内实现共识协议。共识协议的示例包括但不限于:工作量证明(POW,proof-of-work),权益证明(POS,proof-of-stake)和权威证明(POA,proof-of-authority)。
私有区块链网络被提供来用于特定实体。私有区块链网络中的各个节点的读写权限被严格控制。因此,私有区块链网络通常也称为许可网络,其对允许谁参与网络以及的网络参与水平(例如,仅在某些交易情形下)进行限制。在私有区块链网络中,可以使用各种类型的访问控制机制(例如,现有参与方对添加新实体进行投票,监管机构控制许可等)。
联盟区块链网络在参与实体之间是私有的。在联盟区块链网络中,共识过程由授权节点控制。例如,由若干个(例如,10个)实体(例如,金融机构,保险公司)组成的联盟可以操作联盟区块链网络,每个实体操作该联盟区块链网络中的至少一个节点。因此,联盟区块链网络可以被认为是参与实体的私有网络。在一些示例中,每个参与实体(节点)必须按序对每个区块进行签名,并将该区块添加到区块链。在一些示例中,可以由参与实体(节点)的子集(例如,至少7个实体)来对每个区块进行签名,并将该区块添加到区块链。
图1示出了本说明书实施例的示例环境100的示意图。如图1所示,示例环境100允许实体参与区块链网络102。区块链网络102例如可以是公有链、私有链或联盟链的区块链网络。示例环境100可以包括计算设备104、106、108、110、112和网络114。在一实施例中,网络114可以包括局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)、因特网或其组合,并连接至网站、用户设备(例如计算设备)和后端系统。在一实施例中,计算设备104、106、108、110、112可以通过有线和/或无线通信方式访问网络114。
在某些情况下,计算设备106、108可以是云计算系统的节点(未显示),或者每个计算设备106、108可以是单独的云计算系统,包括由网络互连并作为分布式处理系统工作的多台计算机。
在一实施例中,计算设备104~108可以运行任何适当的计算系统,使其能够作为区块链网络102中的节点。例如,计算设备104~108可以包括但不限于服务器、台式计算机、笔记本电脑、平板电脑计算设备和智能手机。在一实施例中,计算设备104~108可以归属于相关实体并用于实现相应的服务,例如,该服务可以用于对某一实体或多个实体之间的交易进行管理。
在一实施例中,计算设备104~108分别存储有区块链网络102对应的区块链账本。计算设备104可以是(或包含)用于提供浏览器功能的网络服务器,该网络服务器可基于网络114提供与区块链网络102相关的可视化信息。在一些情况下,计算设备104可以不参与区块验证,而是监控区块链网络102以确定其他节点(譬如可以包括计算设备106-108)何时达成共识,并据此生成相应的区块链可视化用户界面。
在一实施例中,计算设备110和112可以是与区块链网络102相连的客户端设备。例如,计算设备110可以是医疗机构平台处的终端设备,以及计算设备112可以是广告监管平台处的终端设备。计算设备110和112可以包括但不限于服务器、台式计算机、笔记本电脑、平板电脑计算设备和智能手机。
在一实施例中,计算设备104可以接收客户端设备(例如计算设备110或计算设备112)针对区块链可视化用户界面发起的请求。在一些情况下,区块链网络102的节点也可以作为客户端设备,比如计算设备108的用户可以使用运行在计算设备108上的浏览器向计算设备104发送上述请求。
响应于上述请求,计算设备104可以基于存储的区块链账本生成区块链可视化用户界面(如网页),并将生成的区块链可视化用户界面发送给请求的客户端设备。如果区块链网络102是私有类型或联盟类型的区块链网络,对区块链可视化用户界面的请求可以包括用户授权信息,在生成区块链可视化用户界面并发送给请求的客户端设备之前,可以由计算设备104对该用户授权信息进行验证,并在验证通过后返回相应的区块链可视化用户界面。
区块链可视化用户界面可以显示在客户端设备上(例如可显示在图1所示的用户界面116中)。当区块链账本发生更新时,用户界面116的显示内容也可以随之发生更新。此外,用户与用户界面116的交互可能导致对其他用户界面的请求,例如显示区块列表、区块详情、交易列表、交易详情、账户列表、账户详情、合约列表、合约详情或者用户对区块链网络实施搜索而产生的搜索结果页面等。
图2示出了本说明书实施例的摄像设备与区块链网络构成的网络200的示例架构示意图。
如图2所示,摄像设备210作为区块链网络214的客户端,与服务器设备220通信连接,服务器设备220是区块链网络214中的区块链节点或者其组成部分。图2示出的服务器设备220连接摄像设备210仅作为一个示例,服务器设备220还可以与其他多个摄像设备通信连接。
摄像设备210进行拍摄并生成影像数据,比如图像或者视频。摄像设备210将所生成的影像数据发送给服务器设备220。例如,写字楼安装有若干摄像设备以用来对写字楼内进行监控,这些摄像设备都与写字楼设置的服务器设备网络连接,摄像设备在拍摄过程中实时生成视频数据,并实时将视频数据发送给服务器设备进行存储。
服务器设备220作为区块链网络214中的区块链节点或其组成部分,可以将接收到的影像数据上链至区块链216进行存储,这样可以避免已存储的影像数据被删除或者被篡改。
此外,影像数据获取装置230和影像数据验证装置240也可以作为区块链网络214中的区块链节点或其组成部分,影像数据获取装置230可以从区块链216上查询并获取图像数据帧,影像数据验证装置240可以从区块链216上查询对应的第一哈希值,并基于第一哈希值对待验证图像数据的图像数据帧进行验证。
在另一示例中,摄像设备可以是区块链网络中的区块链节点或其组成部分。在该示例中,摄像设备在生成影像数据后可以直接将所生成的影像数据打包上链至区块链进行存储。
在另一示例中,摄像设备与服务器设备连接,服务器设备与区块链网络中的区块链节点通信连接。在该示例中,摄像设备可以将生成的影像数据发送给服务器设备,服务器设备再将接收到的影像数据发送给通信连接的区块链节点,再由区块链节点将影像数据打包上链至区块链以进行存储。
图3示出了本说明书实施例的基于区块链的影像数据记录方法的一个示例的流程图。
影像数据记录方法可以由摄像设备来执行,本说明书实施例中的摄像设备可以包括网络摄像机、监控摄像头、可以联网的行车记录仪以及可以联网的相机等中的任一种。下面以网络摄像机为例进行说明。
如图3所示,在块310,监测摄像设备中的图像传感器的影像数据输出。
摄像设备至少包括光学镜头和图像传感器,摄像设备的光学镜头可以由若干透镜系统组成。
图4示出了由光学镜头和图像传感器构成的摄像设备生成图像数据帧的一个示例的示意图。如图4所示,当摄像设备进行拍摄时,被拍摄对象的光线经过光学镜头的折射,在图像传感器的成像面上生成光信号。图像传感器采集生成的光信号,并将采集的光信号转换成电信号,并通过编码方式来输出用于呈现成一帧图像的图像数据,例如,图4所示的依次输出第1帧图像、第2帧图像、第3帧图像和第4帧图像。图像传感器可以包括CCD(chargecoupled device,电荷耦合器件)、CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)以及胶片等。
在本说明书的一个示例中,影像数据可以包括视频数据或静态图像数据,静态图像数据可以是一张图像。当记录的影像数据是静态图像数据时,图像传感器输出的一帧图像数据帧即为所需记录的静态图像数据。当记录的影像数据是视频时,图像传感器输出的若干图像数据帧构成的视频即为所需记录的视频数据。
在块320,在监测到图像传感器输出影像数据的图像数据帧时,对输出的图像数据帧进行哈希计算以得到图像数据帧的第一哈希值。
哈希计算是将(作为字符串数据提供的)图像数据帧转换为固定长度的第一哈希值(也被作为字符串数据提供)的过程。通过对图像数据帧进行哈希计算后,即使图像数据帧出现轻微更改,也会导致得到完全不同的第一哈希值。第一哈希值通常是通过使用哈希函数来对图像数据帧进行哈希计算而生成的。哈希函数的示例包括但不限于安全散列算法(SHA)-256,其输出256比特的第一哈希值。
当影像数据是视频数据时,视频数据由多帧图像数据帧构成,图像传感器按照拍摄的时间顺序依次输出各个图像数据帧。当图像传感器每输出一帧图像数据帧时,摄像设备对输出的该图像数据帧进行哈希计算以得到该图像数据帧的第一哈希值,直至对构成该视频数据的所有图像数据帧都执行了哈希计算。图像数据帧与第一哈希值是一一对应的,不同的图像数据帧对应的第一哈希值不同。
摄像设备生成的每一图像数据帧都是由摄像设备中的图像传感器生成的,所生成的图像数据帧再经由摄像设备中的其他部件进行后续处理,比如,将多帧图像合成为一个视频,或者,将所生成的图像或者视频存储至内存卡或传输给其他设备。因此,影像数据的图像数据帧在生成并由图像传感器输出时就进行哈希计算得到对应的第一哈希值,避免了图像数据帧在后续处理过程中以及传输过程中被删除或被篡改,从而使得生成的影像数据的源头可信。
在本说明书的一个示例中,图像数据帧具有图像索引信息,图像索引信息与图像数据帧是一一对应的,图像索引信息可以用于在区块链上查询对应的图像数据帧。
图像索引信息可以包括时间戳信息,每一图像数据帧的图像索引信息所包括的时间戳信息是该图像数据帧对应的时间戳。例如,图像数据帧对应的时间戳是:2020年1月25日12时3分20秒,则该图像数据帧的图像索引信息中的时间戳信息为:2020年1月25日12时3分20秒。
在另一示例中,图像索引信息还可以包括摄像设备的设备标识和/或摄像位置信息。设备标识可以用于指示生成图像数据帧的摄像设备,在一个示例中,每一图像数据帧对应唯一的摄像设备,每个摄像设备对应唯一的设备标识,则每一图像数据帧对应唯一的设备标识。
摄像位置信息可以用于指示图像数据帧对应的拍摄位置。在一个示例中,摄像设备设置有GPS等定位装置,当摄像设备进行拍摄时,定位装置可以实时地为每一图像数据帧定位,以确定每一图像数据帧的拍摄位置。在一个示例中,拍摄位置信息可以用世界坐标表示,还可以用文字描述,例如,拍摄位置信息为:北京市朝阳区。
在该示例中,每一图像数据帧具有包括有时间戳、设备标识以及摄像位置信息等多种信息的图像索引信息,这些信息可以从不同维度来表征对应的图像数据帧。后续将图像数据帧对应的多种信息记录在区块链上,从而利用这些信息可以从不同维度来验证图像数据帧是否可信,提高了图像数据帧的可信度。
在块330,将图像数据帧的第一哈希值以及图像索引信息记录至区块链。
在一个示例中,属于同一图像数据帧的第一哈希值和图像索引信息可以被打包成一个区块记录在区块链上。
在一个示例中,摄像设备作为区块链的区块链网络的区块链节点。摄像设备在获得图像数据帧的第一哈希值和图像索引信息后,可以将图像数据帧的第一哈希值以及图像索引信息打包成区块,该区块包括图像索引信息以及对应的第一哈希值。
然后,将区块广播给区块链网络的共识节点来进行共识处理,在共识节点达成共识后,将区块记录在区块链上。
图5示出了本说明书实施例的共识过程的示例的示意图。在本说明书中,第一哈希值和图像索引信息可以被认为是区块链中的交易数据。在图5的示例中,摄像设备所在的区块链节点作为区块链网络的主节点(即,记账节点,下文中称为主节点R0)。
主节点R0将打包而成的区块广播给区块链网络中的所有共识节点来进行共识处理,例如,主节点R0将打包而成的区块广播给备份节点R1、R2以及R3进行共识处理。注意,共识过程被示为包括4个网络节点R0,R1,R2和R3仅用于说明目的,共识过程也可以包括任何合适数量的网络节点。
在本说明书的实施例中,共识过程可以采用PoW(工作量证明算法)、PoS(权益证明算法)和PBFT(实用拜占庭容错算法)等等实现。下面以PBFT共识过程为例来进行说明。
如图5所示,PBFT共识处理的过程包括:预准备阶段(Pre-prepare)510、准备阶段(Prepare)520以及确认阶段(Commit)530。
具体地,在510,主节点R0对要记录到区块链中的车辆数据片段打包为消息m,然后生成预准备消息Pre-prepare,并且在给定的时间间隔内,将预准备消息Pre-prepare 发送(例如,广播)给备份节点R1、R2和R3。预准备消息Pre-prepare表明主节点R0正在启动共识过程。
在本说明书的实施例中,如图6所示,预准备消息Pre-prepare的格式可以为:<<PRE-PREPARE,epoch,seq,D(m),signature-p>,m,j>。这里,“PRE-PREPARE”表示预准备消息的协议标识,“epoch”表示R0作为主节点的时代,“seq”表示所需共识的提议(即,向区块链216增加该区块)的提议编号,“D(m)”表示请求消息集合的摘要,“signature-p”表示R0的签名,“m”表示请求消息的具体内容(即,区块中的各条认证信息的具体内容),以及“j”表示R0的节点标识。这里,D(m)通过对区块中的各条认证信息集合进行哈希计算而得到。
在准备阶段520,对于每个备份节点(R1、R2或R3),在接收到预准备消息Pre-prepare并检测预准备消息Pre-prepare合法后,可以将预准备消息Pre-prepare存储在本地日志中,并生成用于响应预准备消息Pre-prepare的准备消息Prepare,再将所生成的准备消息Prepare广播至其他节点。准备消息Prepare指示备份节点已从主节点接收到预准备消息Pre-prepare,并且正在响应预准备消息Pre-prepare发送应答。
相应地,每个备份节点也会接收到其他备份节点发送的预准备消息Pre-prepare。以备份节点R1为例,备份节点R1接收到主节点R0发送的预准备消息Pre-prepare之后,会将生成的准备消息Prepare广播至主节点R0、备份节点R2和R3。相应地,备份节点R1也会接收到主节点R0、备份节点R2和R3发送的准备消息Prepare。
在本说明书中,备份节点广播的准备消息Prepare可以用于表示该备份节点在准备阶段520所做出的共识承诺。
在本说明书中,如图6所示,准备消息Prepare的格式可以是:<PREPARE,epoch,seq,D(m),i,signature-i>。这里,“PREPARE”表示准备消息Prepare的协议标识,“i”表示发送准备消息Prepare的节点的节点标识,“signature-i”表示发送准备消息Prepare的节点的签名。准备消息Prepare中的“epoch”、“seq”以及“D(m)”的含义与上述预准备消息Pre-prepare中的“epoch”、“seq”以及“D(m)”的含义相同。
在确认阶段530,当网络节点从其他网络节点接收到足够数量的准备消息Prepare时,该网络节点确定已经达成共识。例如,如果主节点R0或备份节点R1,R2或R3接收到Quorum个(例如,2f + 1,其中f表示故障网络节点的数目)准备消息Prepare,则确定在网络节点之间达成共识。然后,主节点R0或备份节点R1,R2或R3会向其他节点广播确认消息Commit。
在本说明书中,如图6所示,确认消息Commit的格式可以是:<COMMIT,epoch,seq,D(m),p,signature-p>。其中,“COMMIT”表示确认消息Commit的协议标识,“p”表示发送确认消息Commit的节点的节点标识,“signature-p”表示发送确认消息Commit的节点的签名。确认消息Commit中的“epoch”、“seq”以及“D(m)”的含义与上述预准备消息Pre-prepare中的“epoch”、“seq”以及“D(m)”的含义相同。
在本说明书中,节点发送确认消息Commit并将确认消息Commit存储至本地日志中,以表示该节点在确认阶段530所做出的共识承诺。
在如上针对发起的提议达成共识后,主节点将该区块记录到区块链中,由此完成将第一哈希值以及图像索引信息记录到区块链中。
在另一个示例中,摄像设备可以作为区块链的区块链网络的客户端,摄像设备与该区块链网络通信连接。在一个示例中,摄像设备与区块链网络中的至少一个区块链节点通信连接。
摄像设备可以将图像数据帧的第一哈希值和图像索引信息提供给区块链网络的对应区块链节点,该对应区块链节点与摄像设备通信连接。对应区块链节点在接收到图像数据帧的第一哈希值和图像索引信息后,可以将第一哈希值和图像索引信息打包成区块,该区块中包括第一哈希值和图像索引信息。然后,对应区块链节点将区块广播给区块链节点中的所有共识节点来进行共识处理,在所有共识节点达成共识后,可以将区块记录到区块链上。
在本说明书的一个示例中,在图像数据帧的第一哈希值以及图像索引信息记录在区块链上后,区块链节点会反馈图像数据帧的第一哈希值以及图像索引信息在区块链上的存储地址,根据该存储地址可以从区块链上查询到第一哈希值以及图像索引信息。
每一图像数据帧的图像索引信息与该图像数据帧的第一哈希值以及图像索引信息在区块链上的存储地址之间具有索引关系。索引关系中的图像索引信息可以包括全部信息或部分信息。
例如,区块链上记录的图像索引信息包括时间戳信息、设备标识以及摄像位置信息,索引关系中的图像索引信息仅包括时间戳信息。每一图像数据帧的索引关系是时间戳信息与存储地址之间的对应关系,由此,基于各个图像数据帧的时间戳信息即可以获取该图像数据帧的第一哈希值以及图像索引信息在区块链上的存储地址,进而从区块链上获取该图像数据帧的第一哈希值以及图像索引信息。
在一个示例中,各个图像数据帧对应的索引关系按照时间戳顺序被记录在索引表中。当利用区块链上记录的第一哈希值和图像索引信息对待验证视频进行校验时,确定该待验证视频的第一帧和最后一帧对应的时间戳,然后从索引表中查询第一帧时间戳和最后一帧时间戳,该第一帧时间戳和最后一帧时间戳以及之间的所有图像数据帧都是用来对待验证视频进行校验的,当待验证视频的图像帧数量与索引表中查询到的图像数据帧的数量一致,且每一帧都验证通过时,可以验证视频的完整性,确保视频中的图像帧没有被删除或遗漏。
在该示例中,利用索引表中按时间戳记录的索引关系可以验证视频的完整性,避免视频中的图像帧出现丢失或者被删除的情况,从而提高后续针对视频验证的准确度及可信度。
在本说明书的一个示例中,还可以将图像数据帧、图像数据帧的第一哈希值以及图像索引信息记录至区块链。在该示例中,针对同一图像数据帧,该图像数据帧以及对应的第一哈希值和图像索引信息可以打包成一个区块记录在区块链上。
基于该示例中区块链记录的图像数据帧,影像数据获取设备可以从区块链上获取影像数据的图像数据帧。影像数据获取设备是区块链的区块链网络中的一个区块链节点,影像数据获取设备本地存储有图像数据帧。
图7示出了本说明书实施例的基于区块链的影像数据获取方法的一个示例的流程图。如图7所示,在710,影像数据获取设备从影像数据请求方接收针对摄像设备所拍摄的影像数据的影像数据获取请求。
在该示例中,影像数据请求方可以是区块链网络的客户端,与影像数据获取设备通信连接。影像数据获取请求可以包括待获取影像数据的时间段信息。时间段信息可以包括待获取影像数据中的第一图像数据帧的时间戳与最后一图像数据帧的时间戳之间的时间段,时间段信息还可以包括待获取影像数据中的每一图像数据帧的时间戳信息。
在720,影像数据获取设备在区块链中查询所具有的时间戳信息与时间段信息匹配的图像数据帧。所匹配出的图像数据帧即为待获取影像数据中的图像数据帧。
在730,影像数据获取设备将所查询到的图像数据帧发送给影像数据请求方,以供影像数据请求方使用。
在本说明书的一个示例中,在将图像数据帧的第一哈希值以及图像索引信息记录在区块链之前,还可以针对图像数据帧,使用摄像设备的私钥对图像数据帧的第一哈希值和图像索引信息进行签名,再将经过签名的图像数据帧的第一哈希值以及图像索引信息记录在区块链上。
通过摄像设备的私钥签名从而避免第一哈希值以及图像索引信息在传输过程中被篡改,进一步提高了区块链上所存储的第一哈希值和图像索引信息的可信度。
此外,影像数据获取设备从区块链上获取影像数据时,需要利用摄像设备的公钥对影像数据的各个图像数据帧的签名进行验证,提高了所获取的图像数据帧的可信度。
影像数据验证设备从区块链上获取第一哈希值时,需要利用摄像设备的公钥对所获取的第一哈希值的签名进行验证,以确保该第一哈希值是由摄像设备生成的图像数据帧得到的,从而保证了影像数据验证的准确性。
图8示出了本说明书实施例的基于区块链的影像数据验证方法的一个示例的流程图。影像数据验证设备可以是区块链的区块链网络中的一个区块链节点,影像数据验证设备本地存储有摄像设备所拍摄的图像数据帧的第一哈希值以及图像索引信息。
如图8所示,在810,影像数据验证设备可以从影像数据验证方接收针对摄像设备所拍摄的影像数据的影像数据验证请求。影像数据验证请求包括待验证影像数据的图像数据帧以及对应的时间戳信息。
在820,影像数据验证设备对待验证影像数据的图像数据帧进行哈希计算,以得到第二哈希值。
在830,影像数据验证设备在区块链中查询与各个第二哈希值的时间戳信息对应的第一哈希值。
在840,影像数据验证设备将各个第二哈希值与对应的第一哈希值进行比较。
在850,影像数据验证设备基于各个第二哈希值与对应的第一哈希值之间的比较结果,向影像数据验证方发送用于指示待验证影像数据是否验证通过的通知信息。
在各个第二哈希值都与对应的第一哈希值相同时,向影像数据验证方发送用于指示待验证影像数据可用的通知信息。在各个第二哈希值中存在至少一个第二哈希值与对应的第一哈希值不同时,向影像数据验证方发送用于指示待验证影像数据不可用的通知信息。
在图8中示出的影像数据验证方案中,待验证影像数据可以被存储在第三方影像数据存储方,在需要将影像数据作为证据使用时,可以从第三方影像数据存储方获取影像数据,并且使用区块链上记载的哈希值来验证所获取的影像数据是否真实,从而有效地防止影像数据被篡改,并且由于影像数据没有存储在区块链上,由此可以节省区块链的存储空间。
在另一示例中,图像索引信息还包括摄像设备的设备标识和/或摄像位置信息,影像数据验证请求还包括图像数据帧对应的设备标识和/或摄像位置信息。除了将各个第二哈希值与对应的第一哈希值进行比较以外,还可以将待验证影像数据中各个图像数据帧的设备标识和/或摄像位置信息与区块链上记录的对应的设备标识和/或摄像位置信息进行比较。
然后,基于各个第二哈希值与对应的第一哈希值之间的比较结果,以及针对设备标识和/或摄像位置信息的比较结果,向影像数据验证方发送用于指示待验证影像数据是否验证通过的通知信息。
通过验证图像数据帧的哈希值可以确定待验证影像数据中的图像数据帧是可信的,通过验证设备标识可以确定待验证影像数据是可信设备生成的,通过验证摄像位置信息可以确定待验证影像数据的位置信息可信。
图9示出了本说明书实施例的基于区块链的影像数据记录装置800的一个示例的方框图。如图9所示,影像数据记录装置900可以包括监测单元910、哈希计算单元920和上链处理单元930。
监测单元910被配置为监测摄像设备中的图像传感器的影像数据输出。监测单元910的操作可以参考上面参照图3描述的块310的操作。
哈希计算单元920被配置为在监测到图像传感器输出影像数据的图像数据帧时,对输出的图像数据帧进行哈希计算以得到图像数据帧的第一哈希值,图像数据帧具有图像索引信息,图像索引信息包括时间戳信息。哈希计算单元920的操作可以参考上面参照图3描述的块320的操作。
上链处理单元930被配置为将图像数据帧的第一哈希值以及图像索引信息记录至区块链。上链处理单元930的操作可以参考上面参照图3描述的块330的操作。
当摄像设备作为区块链的区块链网络的客户端时,上链处理单元930被配置为将图像数据帧的第一哈希值以及图像索引信息提供给区块链网络的对应区块链节点,以经由该对应区块链节点记录至区块链。
当摄像设备作为区块链的区块链网络的区块链节点时,上链处理单元链830可以包括区块生成模块、共识处理模块和区块记录模块。
区块生成模块被配置为将图像数据帧的第一哈希值以及图像索引信息打包成区块,区块包括图像索引信息以及对应的第一哈希值。
共识处理模块被配置为将所述区块广播给所述区块链网络的共识节点来进行共识处理。
区块记录模块被配置为在共识节点达成共识后,将区块记录在区块链上。
影像数据记录装置900还可以包括签名单元。签名单元被配置为针对图像数据帧,使用摄像设备的私钥对图像数据帧的第一哈希值和图像索引信息进行签名。上链处理单元930被配置为将经过签名的图像数据帧的第一哈希值以及图像索引信息记录至区块链。
上链处理单元930还可以被配置为将图像数据帧、图像数据帧的第一哈希值以及图像索引信息记录至区块链。
本说明书实施例还提供一种摄像设备,该摄像设备可以包括上述图9示出的任一示例的影像数据记录装置。
图10示出了本说明书实施例的基于区块链的影像数据获取装置900的一个示例的方框图。如图10所示,影像数据获取装置1000可以包括数据获取请求接收单元1010、数据查询单元1020和数据发送单元1030。
数据获取请求接收单元1010被配置为从影像数据请求方接收针对摄像设备所拍摄的影像数据的影像数据获取请求,影像数据获取请求包括待获取影像数据的时间段信息。数据获取请求接收单元1010的操作可以参考上面参照图7描述的块710的操作。
数据查询单元1020被配置为在区块链中查询所具有的时间戳信息与时间段信息匹配的图像数据帧。数据查询单元1020的操作可以参考上面参照图7描述的块720的操作。
数据发送单元1030被配置为将所查询到的图像数据帧发送给影像数据请求方,以供影像数据请求方使用,其中,摄像设备所拍摄的图像数据帧、图像数据帧的第一哈希值以及图像索引信息按照如上述所述的影像数据记录方式存储在区块链的区块中。数据发送单元1030的操作可以参考上面参照图7描述的块730的操作。
图11示出了本说明书实施例的基于区块链的影像数据验证装置1100的一个示例的方框图。如图11所示,影像数据验证装置1100可以包括数据验证请求接收单元1110、哈希计算单元1120、哈希值查询单元1130、哈希值比较单元1140和通知单元1150。
数据验证请求接收单元1110被配置为从影像数据验证方接收针对摄像设备所拍摄的影像数据的影像数据验证请求,影像数据验证请求包括待验证影像数据的图像数据帧以及对应时间戳信息。数据验证请求接收单元1110的操作可以参考上面参照图8描述的块810的操作。
哈希计算单元1120被配置为对待验证影像数据的图像数据帧进行哈希计算,以得到第二哈希值。哈希计算单元1120的操作可以参考上面参照图8描述的块820的操作。
哈希值查询单元1130被配置为在区块链中查询与各个第二哈希值的时间戳信息对应的第一哈希值。哈希值查询单元1130的操作可以参考上面参照图8描述的块830的操作。
哈希值比较单元1140被配置为将各个第二哈希值与对应的第一哈希值进行比较。哈希值比较单元1140的操作可以参考上面参照图8描述的块840的操作。
通知单元1150被配置为基于各个第二哈希值与对应的第一哈希值之间的比较结果,向所述影像数据验证方发送用于指示所述待验证影像数据是否验证通过的通知信息,其中,摄像设备所拍摄的图像数据帧的第一哈希值以及图像索引信息按照如上述任一所述的影像数据记录方式存储在区块链的区块中。通知单元1150的操作可以参考上面参照图8描述的块850的操作。
以上参照图1到图11,对根据本说明书实施例的基于区块链的影像数据记录、获取、验证方法及装置的实施例进行了描述。
本说明书实施例的基于区块链的影像数据记录、获取及验证装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本说明书实施例中,基于区块链的影像数据记录、获取及验证装置例如可以利用电子设备实现。
图12示出了本说明书实施例的用于将影像数据记录到区块链的方法的电子设备1200的方框图。
如图12所示,电子设备1200可以包括至少一个处理器1210、存储器(例如,非易失性存储器)1220、内存1230和通信接口1240,并且至少一个处理器1210、存储器1220、内存1230和通信接口1240经由总线1250连接在一起。至少一个处理器1210执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1210:监测摄像设备中的图像传感器的影像数据输出;在监测到图像传感器输出影像数据的图像数据帧时,对输出的图像数据帧进行哈希计算以得到图像数据帧的第一哈希值,图像数据帧具有图像索引信息,图像索引信息包括时间戳信息;以及将图像数据帧的第一哈希值以及图像索引信息记录至区块链。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1210进行本说明书的各个实施例中以上结合图1-11描述的各种操作和功能。
根据一个实施例,提供了一种例如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-11描述的各种操作和功能。
具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
图13示出了本说明书实施例的用于从区块链获取影像数据的方法的电子设备1300的方框图。
如图13所示,电子设备1300可以包括至少一个处理器1310、存储器(例如,非易失性存储器)1320、内存1330和通信接口1340,并且至少一个处理器1310、存储器1320、内存1330和通信接口1340经由总线1350连接在一起。至少一个处理器1310执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1310:从影像数据请求方接收针对摄像设备所拍摄的影像数据的影像数据获取请求,影像数据获取请求包括待获取影像数据的时间段信息;在区块链中查询所具有的时间戳信息与时间段信息匹配的图像数据帧;以及将所查询到的图像数据帧发送给影像数据请求方,以供影像数据请求方使用,其中,摄像设备所拍摄的图像数据帧、图像数据帧的第一哈希值以及图像索引信息按照上述所述的影像数据记录方式存储在区块链的区块中。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1310进行本说明书的各个实施例中以上结合图1-11描述的各种操作和功能。
根据一个实施例,提供了一种例如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-11描述的各种操作和功能。
具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
图14示出了本说明书实施例的用于基于区块链的影像数据验证的方法的电子设备1400的方框图。
如图14所示,电子设备1400可以包括至少一个处理器1410、存储器(例如,非易失性存储器)1420、内存1430和通信接口1440,并且至少一个处理器1410、存储器1420、内存1430和通信接口1440经由总线1450连接在一起。至少一个处理器1410执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1410:从影像数据验证方接收针对摄像设备所拍摄的影像数据的影像数据验证请求,影像数据验证请求包括待验证影像数据的图像数据帧以及对应时间戳信息;对待验证影像数据的图像数据帧进行哈希计算,以得到第二哈希值;在区块链中查询与各个第二哈希值的时间戳信息对应的第一哈希值;将各个第二哈希值与对应的第一哈希值进行比较;以及基于各个第二哈希值与对应的第一哈希值之间的比较结果,向影像数据验证方发送用于指示待验证影像数据是否验证通过的通知信息,其中,摄像设备所拍摄的图像数据帧的第一哈希值以及图像索引信息按照如上述任一所述的影像数据记录方式存储在区块链的区块中。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1410进行本说明书的各个实施例中以上结合图1-11描述的各种操作和功能。
根据一个实施例,提供了一种例如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-11描述的各种操作和功能。
具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本说明书实施例的一部分。
本说明书各部分操作所需的计算机程序代码可以用任意一种或多种程序语言编写,包括面向对象编程语言,如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB、NET以及Python等,常规程序化编程语言如C语言、Visual Basic 2003、Perl、COBOL 2002、PHP以及ABAP,动态编程语言如Python、Ruby和Groovy,或者其他编程语言等。该程序编码可以在用户计算机上运行,或者作为独立的软件包在用户计算机上运行,或者部分在用户计算机上运行另一部分在远程计算机运行,或者全部在远程计算机或服务器上运行。在后一种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或者在云计算环境中,或者作为服务使用,比如软件即服务(SaaS)。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
以上结合附图详细描述了本说明书的实施例的可选实施方式,但是,本说明书的实施例并不限于上述实施方式中的具体细节,在本说明书的实施例的技术构思范围内,可以对本说明书的实施例的技术方案进行多种简单变型,这些简单变型均属于本说明书的实施例的保护范围。
本说明书内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本说明书内容。对于本领域普通技术人员来说,对本说明书内容进行的各种修改是显而易见的,并且,也可以在不脱离本说明书内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本说明书内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。