向区块链浏览器传输区块链数据的方法和设备
技术领域
本公开内容属于区块链技术领域,尤其涉及一种用于接收区块链数据的方法、一种用于发送区块链数据的方法、一种用于接收区块链数据的设备以及一种用于发送区块链数据的设备。
背景技术
区块链(Blockchain)技术是利用分布式节点共识算法来生成和更新数据,并将这些数据封装成一个一个的区块,利用密码学的方式保证数据传输和访问的安全,生成不可篡改和不可伪造的分布式账本,建立互相信任的数据网络。
区块链浏览器是一种浏览区块链信息的搜索工具,每一个区块所记载的内容都可以从区块链浏览器上进行查阅。通常,数字资产用户会使用区块链浏览器查询记录在区块中的交易信息,例如,数字资产用户在区块链浏览器中输入某钱包地址或某笔交易ID,就可以查询此钱包的余额和任意一笔交易的详细信息,或者通过在区块链浏览器中输入块高度、块哈希等来搜索某个特定区块的所有内容。
另外,区块链浏览器通常通过主动调用区块链服务的接口,查询需要的数据信息,从而记录了每一个区块的产生过程和区块中交易的内容,并且记录了区块链上账户的数字货币余额情况,从而更加完整的、公开的披露了数字货币的存量、增量、换手率等信息。
目前市面上已经存在较为成熟的区块链浏览器,但大部分是针对比特币(BitCoin)和以太坊(Ethereum)的区块链浏览器,例如:http://www.blockchain.com/explorer、http://etherscan.io/等。由于不同区块链产品产生的块数据不同、交易格式不同、账户格式不同、数据序列化格式不同,并且现有的区块链浏览器仅能够通过区块链节点获取所需要的数据,所以没有一款通用的区块链浏览器,可以支持多种不同的区块链产品。
发明内容
由于目前市场上的区块链浏览器一般都是针对已开发的区块链产品而进行开发生成的,也即,由于不同区块链产品所产生的块数据、交易数据等格式不同,因此一种区块链浏览器仅能适配一种区块链产品。由此,使得区块链浏览器的开发成本高、区块链浏览器的使用局限性大,进而无法满足越来越多针对多元化区块链产品搜索的需求。
针对上述问题,本公开内容的第一方面提出了一种用于接收区块链数据的方法,所述方法包括:
接收区块链节点发送的区块链数据,其中,所述区块链数据是块数据或交易数据,并且当所述区块链数据是块数据时,所述块数据对应的块数据结构体中至少包括块哈希、块高度以及块中交易数量,或者当所述区块链数据是交易数据时,所述交易数据对应的交易数据结构体中至少包括所属块高度、交易哈希、源头账户地址以及目的账户地址,其中,所述所属块高度对应于所述交易数据所属的区块的块高度;
对所述区块链数据进行安全认证;
对通过安全认证的区块链数据进行去重检查;以及
将通过去重检查的区块链数据存储在数据库中。
在根据本公开内容的第一方面的实施例中,在接收区块链节点发送的区块链数据之前,所述方法进一步包括:
接收所述区块链节点发送的查询请求,其中,所述查询请求用于请求查询区块链浏览器中所保存的所述区块链的最新块高度;
向所述区块链节点发送查询到的最新块高度。
在根据本公开内容的第一方面的实施例中,在对所述区块链数据进行安全认证与对通过安全认证的区块链数据进行去重检查之间,所述方法进一步包括:
将通过安全认证的区块链数据存入缓存队列中。
在根据本公开内容的第一方面的实施例中,对通过安全认证的区块链数据进行去重检查进一步包括:
对于所述块数据而言,将所述缓存队列中的每一个块数据结构体中的块高度与所述缓存队列中已存储的所有块高度进行比较,当未查找到与所述块数据结构体中的块高度相同的已存储的块高度时,确定所述块数据通过去重检查;或者
对于所述交易数据而言,将所述缓存队列中的每一个交易数据结构体中的交易哈希与所述缓存队列中已存储的所有交易哈希进行比较,当未查找到与所述交易数据结构体中的交易哈希相同的已存储的交易哈希时,确定所述交易数据通过去重检查。
在根据本公开内容的第一方面的实施例中,所述方法进一步包括:将所述数据库中具有相同块高度的块数据与交易数据相关联。
在根据本公开内容的第一方面的实施例中,所述方法进一步包括:提取所述交易数据结构体中的源头账户地址、目的账户地址以分别生成与所述源头账户地址相对应的账户信息、与所述目的账户地址相对应的账户信息。
针对上述问题,本公开内容的第二方面提出了一种用于发送区块链数据的方法,所述方法包括:
向区块链浏览器发送区块链数据;
其中,所述区块链数据是块数据或交易数据,并且当所述区块链数据是块数据时,所述块数据对应的块数据结构体中至少包括块哈希、块高度以及块中交易数量,或者当所述区块链数据是交易数据时,所述交易数据对应的交易数据结构体中至少包括所属块高度、交易哈希、源头账户地址以及目的账户地址,其中,所述所属块高度对应于所述交易数据所属的区块的块高度。
在根据本公开内容的第二方面的实施例中,在向区块链浏览器发送区块链数据之前,所述方法进一步包括:
向所述区块链浏览器发送查询请求,其中,所述查询请求用于请求查询所述区块链浏览器中所保存的所述区块链的最新块高度;
接收所述区块链浏览器发送查询到的最新块高度;以及
确定所述区块链的当前块高度大于所述查询到的最新块高度。
在根据本公开内容的第二方面的实施例中,在确定所述区块链的当前块高度大于所述查询到的最新块高度的情况下,向区块链浏览器发送区块链数据进一步包括:
向所述区块链浏览器发送块高度大于所述查询到的最新块高度的一个或多个块数据;或者
向所述区块链浏览器发送所属块高度大于所述查询到的最新块高度的一个或多个交易数据。
在根据本公开内容的第二方面的实施例中,向区块链浏览器发送区块链数据之前,所述方法进一步包括:
当要发送的区块链数据是块数据时,将所述块数据中的块哈希、块高度以及块中交易数量按照所述区块链浏览器接收数据的格式进行格式转换形成相应的块数据结构体;或者
当要发送的区块链数据是交易数据时,将所述交易数据中的所属块高度、交易哈希、源头账户地址以及目的账户地址按照所述区块链浏览器接收数据的格式进行格式转换形成相应的交易数据结构体。
针对上述问题,本公开内容的第三方面提出了一种用于接收区块链数据的设备,所述设备包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
接收区块链节点发送的区块链数据,其中,所述区块链数据是块数据或交易数据,并且当所述区块链数据是块数据时所述块数据对应的块数据结构体中至少包括块哈希、块高度以及块中交易数量,或者当所述区块链数据是交易数据时所述交易数据对应的交易数据结构体中至少包括所属块高度、交易哈希、源头账户地址以及目的账户地址,其中,所述所属块高度对应于所述交易数据所属的区块的块高度;
对所述区块链数据进行安全认证;
对通过安全认证的区块链数据进行去重检查;以及
将通过去重检查的区块链数据存储在数据库中。
在根据本公开内容的第三方面的实施例中,在接收区块链节点发送的区块链数据之前,当所述指令执行时使得所述处理器进一步执行以下操作:
接收所述区块链节点发送的查询请求,其中,所述查询请求用于请求查询所述区块链浏览器中所保存的所述区块链的最新块高度;
向所述区块链节点发送查询到的最新块高度。
在根据本公开内容的第三方面的实施例中,在对所述区块链数据进行安全认证与对通过安全认证的区块链数据进行去重检查之间,当所述指令执行时使得所述处理器进一步执行以下操作:
将通过安全认证的区块链数据存入缓存队列中。
在根据本公开内容的第三方面的实施例中,对通过安全认证的区块链数据进行去重检查进一步包括:
对于所述块数据而言,将所述缓存队列中的每一个块数据结构体中的块高度与所述缓存队列中已存储的所有块高度进行比较,当未查找到与所述块数据结构体中的块高度相同的已存储的块高度时,确定所述块数据通过去重检查;或者
对于所述交易数据而言,将所述缓存队列中的每一个交易数据结构体中的交易哈希与所述缓存队列中已存储的所有交易哈希进行比较,当未查找到与所述交易数据结构体中的交易哈希相同的已存储的交易哈希时,确定所述交易数据通过去重检查。
在根据本公开内容的第三方面的实施例中,当所述指令执行时使得所述处理器进一步执行以下操作:将所述数据库中具有相同块高度的块数据与交易数据相关联。
在根据本公开内容的第三方面的实施例中,当所述指令执行时使得所述处理器进一步执行以下操作:提取所述交易数据结构体中的源头账户地址、目的账户地址以分别生成与所述源头账户地址相对应的账户信息、与所述目的账户地址相对应的账户信息。
针对上述问题,本公开内容的第四方面提出了一种用于发送区块链数据的设备,所述设备包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
向区块链浏览器发送区块链数据,
其中,所述区块链数据是块数据或交易数据,并且当所述区块链数据是块数据时所述块数据对应的块数据结构体中至少包括块哈希、块高度以及块中交易数量,或者当所述区块链数据是交易数据时所述交易数据对应的交易数据结构体中至少包括所属块高度、交易哈希、源头账户地址以及目的账户地址,其中,所述所属块高度对应于所述交易数据所属的区块的块高度。
在根据本公开内容的第四方面的实施例中,在向区块链浏览器发送区块链数据之前,当所述指令执行时使得所述处理器进一步执行以下操作:
向所述区块链浏览器发送查询请求,其中,所述查询请求用于请求查询所述区块链浏览器中所保存的所述区块链的最新块高度;
接收所述区块链浏览器发送查询到的最新块高度;
确定所述区块链的当前块高度大于所述查询到的最新块高度。
在根据本公开内容的第四方面的实施例中,在确定所述区块链的当前块高度大于所述查询到的最新块高度的情况下,向区块链浏览器发送区块链数据进一步包括:
向所述区块链浏览器发送块高度大于所述查询到的最新块高度的一个或多个块数据;或者
向所述区块链浏览器发送所属块高度大于所述查询到的最新块高度的一个或多个交易数据。
在根据本公开内容的第四方面的实施例中,向区块链浏览器发送区块链数据之前,当所述指令执行时使得所述处理器进一步执行以下操作:
当要发送的区块链数据是块数据时,将所述块数据中的块哈希、块高度以及块中交易数量按照所述区块链浏览器接收数据的格式进行格式转换形成相应的块数据结构体;或者
当要发送的区块链数据是交易数据时,将所述交易数据中的所属块高度、交易哈希、源头账户地址以及目的账户地址按照所述区块链浏览器接收数据的格式进行格式转换形成相应的交易数据结构体。
本公开内容的向区块链浏览器传输区块链数据的方法和设备一方面能够利用不同种类的区块链中区块链数据的共性(例如,块数据均包括块高度、块哈希等参数,交易数据均包括交易哈希、所属块高度等参数)设计本公开内容所公开的区块链浏览器能够接收的数据格式以实现对不同种类区块链中的区块链数据的接收,另一方面能够通过对区块链数据进行安全认证、去重检查等方式来选择适合的区块链数据并将其保存在数据库中;进而能够实现可以接收不同种类区块链的数据的通用区块链浏览器,以便于各种区块链产品的使用,并且为每个需要使用区块链浏览器的区块链产品节约了开发成本。
附图说明
结合附图并参考以下详细说明,本公开的各实施例的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实施例,在附图中:
图1为依据本公开内容的用于接收区块链数据的方法的流程图;
图2为依据本公开内容的用于发送区块链数据的方法的流程图;
图3为依据本公开内容的区块链浏览器300的架构图;
图4a-4c为依据本公开内容的区块链浏览器中存储的各种数据的示意图;以及
图5示出了依据本公开内容用于传输区块链数据的设备500的示意图。
具体实施方式
以下参考附图详细描述本公开的各个示例性实施例。附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
本文所使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其他内容。术语“基于”是“至少部分地基于"。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”,等等。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。
本公开内容的实施例主要关注以下技术问题:由于不同区块链产品的块数据格式不同、交易数据格式不同、账户信息格式不同、数据序列化格式不同等原因,现有技术中不存在通用的区块链浏览器,使得必须针对不同的区块链产品开发不同的区块链浏览器,那么需要花费大量的人力、物力去满足该需求。
为了解决上述问题,本公开内容实现了向区块链浏览器传输区块链数据的方法能够实现不同的区块链产品可以向同一通用区块链浏览器发送各种区块链数据(例如,区块链的块数据、交易数据等),并且可以在该通用区块链浏览器中记录、展示任一区块链的块信息、交易内容、账户信息等。
实施例1
图1示出了用于接收区块链数据的方法的示例性流程图。在本实施例中,区块链浏览器可以实施图1所示的方法,具体如下:
步骤110:接收区块链节点发送的区块链数据。
在本步骤中,所述区块链数据是块数据或交易数据。当所述区块链数据是块数据时,所述块数据对应的块数据结构体中至少包括块哈希、块高度以及块中交易数量,或者当所述区块链数据是交易数据时,所述交易数据对应的交易数据结构体中至少包括所属块高度、交易哈希、源头账户地址以及目的账户地址,其中,所述所属块高度对应于所述交易数据所属的区块的块高度。
并且在本步骤之前,区块链浏览器可以首先向区块链节点发送如何实现字段提取的软件工具开发包(也即,Software Development Kit,简写为SDK),以便区块链节点能够根据该SDK的指导将其将要发送到区块链浏览器区块链数据按照该区块链浏览器能够接收的规范格式进行格式转换生成相关的数据结构体。
例如,在本实施例中,区块链浏览器能够接收的块数据结构体、交易数据结构体均采用JSON格式进行序列化,使得块数据结构至少包括块哈希、高度以及块中交易数量,交易数据结构体至少包括所属块高度、交易哈希、源头账户地址以及目的账户地址。另外,该交易数据结构体可选地还可以包括智能合约地址、交易金额以及存储数据。
另外,由于不同区块链的块数据中的块中交易数量、交易数据中的交易金额等可能是不同数据格式的(例如,二进制、十进制、十六进制等),因此区块链节点在将数据发送区块链浏览器之前,将上述参数的数据格式转换成区块链浏览器能够接收的统一的二进制或十进制或十六进制格式。
上述步骤的实施,能够使得所公开的区块链浏览器来接收各种区块链产品所生成的不同数据格式的区块链数据。
在步骤110之前,区块链浏览器可能选择性地接收所述区块链节点发送的查询请求,其中,所述查询请求用于请求查询区块链浏览器中所保存的所述区块链的最新块高度。然后,区块链浏览器向所述区块链节点发送查询到的最新块高度。
上面所描述的步骤使得区块链节点能够准确了解区块链浏览器中已经保存的该区块链节点所对应的区块链的数据;当区块链节点判断查询到的最新块高度与该节点所要发送的数据的块高度相同,则无需再向该区块链浏览器发送数据;当区块链节点判断该节点所要发送的数据的块高度大于所接收的查询到的最新块高度,则向该区块链浏览器发送高于所述最新块高度的块数据或交易数据。
步骤120:对所述区块链数据进行安全认证。
本实施例中,可以采用而不限于采用摘要认证技术实现对区块链数据的安全认证,以避免重放请求攻击。
在步骤120之后,区块链浏览器还需要将通过安全认证的区块链数据存入缓存队列中,以便于区块链浏览器能够依次对所接收的数据进行后续去重检查。
步骤130:对通过安全认证的区块链数据进行去重检查。具体包括:
对于所述块数据而言,将所述缓存队列中的每一个块数据结构体中的块高度与所述缓存队列中已存储的所有块高度进行比较,当未查找到与所述块数据结构体中的块高度相同的已存储的块高度时,确定所述块数据通过去重检查;当查找到与所述块数据结构体中的块高度相同的已存储的块高度时,表明该块数据未通过去重检查并将块数据丢弃。
对于所述交易数据而言,将所述缓存队列中的每一个交易数据结构体中的交易哈希与所述缓存队列中已存储的所有交易哈希进行比较,当未查找到与所述交易数据结构体中的交易哈希相同的已存储的交易哈希时,确定所述交易数据通过去重检查;当查找到与所述交易数据结构体中的交易哈希相同的已存储的交易哈希时,表明该交易数据未通过去重检查并将该交易数据丢弃。
步骤140:将通过去重检查的区块链数据存储在数据库中。
另外,在步骤140之后,区块链浏览器还能够进行以下操作:
将所述数据库中具有相同块高度的块数据与交易数据相关联,并利用块数据中的块中交易数量确定所接收的与该块数据相关联的交易数量是否与块中交易数量一致;当一致时,表明接收交易数据的数量正确;否则表明所接收交易数据的数量错误。
提取所述交易数据结构体中的源头账户地址、目的账户地址以分别生成与所述源头账户地址相对应的账户信息、与所述目的账户地址相对应的账户信息。并且,区块链浏览器根据所接收的交易数据分别计算与所述源头账户地址相对应的账户信息、与所述目的账户地址相对应的账户信息中的账户余额。
如图4a-4c所示,区块链浏览器可以将块数据、交易数据以及账户信息分别以数据表的形式存储在数据库中。如图4a所示,在存储块数据的数据表中包括以下参数:块高度、块哈希以及块中交易数量。如图4b所示,在存储交易数据的数据表中包括以下参数:所属块高度、交易哈希、源头账户地址、目的账户地址、智能合约地址、交易金额以及存储数据。如图4c所示,在存储账户信息的数据表中包括以下参数:账户地址、账户余额。
在本实施例中,区块链浏览器可以利用所存储的任一区块链的所有交易数据中的源头账户地址、目的账户地址以及交易金额来分别计算与源头账户地址对应的账户信息中的账户余额以及与目的账户地址对应的账户信息中的账户余额。
在上述所公开的方法中,能够通过接收符合区块链浏览器的规范的块数据或交易数据,并通过安全认证及去重检查来将所接收的数据存储在数据库中,以便于实现在区块链节点或用户向区块链浏览器发起搜索请求时,区块链浏览器将其已记录的任一区块链的块信息、交易内容、账户信息进行相应地展示。
实施例2
如图2所示,本公开内容进一步公开用于发送区块链数据的方法。在本实施例中,区块链节点可以具体进行如下操作:
步骤210:向所述区块链浏览器发送查询请求。其中,所述查询请求用于请求查询所述区块链浏览器中所保存的所述区块链的最新块高度。
步骤220:接收所述区块链浏览器发送查询到的最新块高度。
步骤230:确定所述区块链的当前块高度是否大于所述查询到的最新块高度。
当区块链节点在向区块链浏览器发送区块链数据之前执行上述动作时,在确定所述区块链的当前块高度大于所述查询到的最新块高度的情况下,执行步骤240;否则,区块链节点再次执行步骤210。
对步骤210-230的执行,使得区块链节点能够在向区块链浏览器发送区块链数据之前确认要发送的数据对于区块链浏览器而言是否有效。进而能够降低区块链浏览器对数据安全认证和去重检查的压力。
步骤240:经由网络路径(也即,http协议接口)向区块链浏览器发送区块链数据。在本步骤中,所发送的区块链数据是块数据或交易数据,其中,该区块链节点根据上述的SDK对要发送的块数据或交易数据进行格式转换以生成符合区块链浏览器规范的块数据结构体或交易数据结构体。
例如,当要发送的区块链数据是块数据时,将所述块数据中的块哈希、块高度以及块中交易数量按照所述区块链浏览器接收数据的格式进行格式转换形成相应的块数据结构体;或者当要发送的区块链数据是交易数据时,将所述交易数据中的所属块高度、交易哈希、源头账户地址以及目的账户地址按照所述区块链浏览器接收数据的格式进行格式转换形成相应的交易数据结构体;并且所述所属块高度对应于所述交易数据所属的区块的块高度。
并且,步骤240进一步包括:
第一,向所述区块链浏览器发送块高度大于所述查询到的最新块高度的一个或多个块数据。
第二,向所述区块链浏览器发送所属块高度大于所述查询到的最新块高度的一个或多个交易数据。
例如,当区块链浏览器中存储的最新块高度是H,而区块链的当前块高度是H+3,那么区块链节点可以向区块链浏览器分别发送块高度为H+1、H+2和H+3的块数据或交易数据。
另外,在步骤240之前,所述方法进一步包括:
当要发送的区块链数据是块数据时,将所述块数据中的块哈希、块高度以及块中交易数量按照所述区块链浏览器接收数据的格式进行格式转换形成相应的块数据结构体;或者
当要发送的区块链数据是交易数据时,将所述交易数据中的所属块高度、交易哈希、源头账户地址以及目的账户地址按照所述区块链浏览器接收数据的格式进行格式转换形成相应的交易数据结构体。
替代地,本实施例中,区块链节点可以无需执行步骤210-230而直接执行步骤240,以向区块链浏览器发送区块链数据。则此时区块链节点向区块链浏览器发送的区块链数据可以是无需根据块高度来限定的块数据或交易数据。
在上述所公开的方法中,各种区块链产品的区块链节点能够向区块链浏览器发送符合区块链浏览器的规范的块数据或交易数据,以便于区块链浏览器通过安全认证及去重检查来将所接收的数据存储在数据库中。另外,区块链节点能够在向区块链浏览器发送区块链数据之前首先对要发送的区块链数据进行筛选以减少区块链浏览器安全认证、去重检查的工作量。
图3示出了本文所公开的区块链浏览器架构的示例性图示,在图3中可知,区块链浏览器架构可以包括展示层310、业务逻辑层320以及数据层330。区块链浏览器架构的展示层310、业务逻辑层320以及数据层330可以实现如图1所示的接收区块链数据的方法。具体地,可以通过展示层310接收区块链节点发送的区块链数据,并利用业务逻辑层320实现如图1所示的对区块链数据的安全认证和去重检查,当区块链数据通过了安全认证和去重检查之后,将该区块链数据存入数据层330中,另外,用户可以通过展示层310向区块链浏览器300发起搜索请求。
图5示出了用于实现如图1和图2所示的方法的设备500的示意性框图。应当理解,设备500可以实现为向区块链浏览器传输区块链数据的方法的功能。从图5中可以看出设备500包括中央处理单元(CPU)501(例如,处理器),其可以根据存储在只读存储器(ROM)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序指令,来执行各种适当的动作和处理。在RAM 503中,还可存储该设备500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许该设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
用于实现如图1所示方法的设备500的存储器503中存储有指令,该指令在由处理器501执行时使得处理器501执行以下动作:
接收区块链节点发送的区块链数据,其中,所述区块链数据是块数据或交易数据,并且当所述区块链数据是块数据时所述块数据对应的块数据结构体中至少包括块哈希、块高度以及块中交易数量,或者当所述区块链数据是交易数据时所述交易数据对应的交易数据结构体中至少包括所属块高度、交易哈希、源头账户地址以及目的账户地址,其中,所述所属块高度对应于所述交易数据所属的区块的块高度;
对所述区块链数据进行安全认证;
对通过安全认证的区块链数据进行去重检查;以及
将通过去重检查的区块链数据存储在数据库中。
在依据本公开内容的一个实施例中,在接收区块链节点发送的区块链数据之前,当所述指令执行时使得所述处理器501进一步执行以下操作:
接收所述区块链节点发送的查询请求,其中,所述查询请求用于请求查询所述区块链浏览器中所保存的所述区块链的最新块高度;
向所述区块链节点发送查询到的最新块高度。
在依据本公开内容的一个实施例中,在对所述区块链数据进行安全认证与对通过安全认证的区块链数据进行去重检查之间,当所述指令执行时使得所述处理器501进一步执行以下操作:
将通过安全认证的区块链数据存入缓存队列中。
在依据本公开内容的一个实施例中,对通过安全认证的区块链数据进行去重检查进一步包括:
对于所述块数据而言,将所述缓存队列中的每一个块数据结构体中的块高度与所述缓存队列中已存储的所有块高度进行比较,当未查找到与所述块数据结构体中的块高度相同的已存储的块高度时,确定所述块数据通过去重检查;或者
对于所述交易数据而言,将所述缓存队列中的每一个交易数据结构体中的交易哈希与所述缓存队列中已存储的所有交易哈希进行比较,当未查找到与所述交易数据结构体中的交易哈希相同的已存储的交易哈希时,确定所述交易数据通过去重检查。
在依据本公开内容的一个实施例中,当所述指令执行时使得所述处理器501进一步执行以下操作:
将所述数据库中具有相同块高度的块数据与交易数据相关联。
在依据本公开内容的一个实施例中,当所述指令执行时使得所述处理器进一步执行以下操作:
提取所述交易数据结构体中的源头账户地址、目的账户地址以分别生成与所述源头账户地址相对应的账户信息、与所述目的账户地址相对应的账户信息。
用于实现如图2所示方法的设备500的存储器503中存储有指令,该指令在由处理器501执行时使得处理器501执行以下动作:
向区块链浏览器发送区块链数据,其中,所述区块链数据是块数据或交易数据,并且当所述区块链数据是块数据时所述块数据对应的块数据结构体中至少包括块哈希、块高度以及块中交易数量,或者当所述区块链数据是交易数据时所述交易数据对应的交易数据结构体中至少包括所属块高度、交易哈希、源头账户地址以及目的账户地址,其中,所述所属块高度对应于所述交易数据所属的区块的块高度。
在依据本公开内容的一个实施例中,在向区块链浏览器发送区块链数据之前,当所述指令执行时使得所述处理器501进一步执行以下操作:
向所述区块链浏览器发送查询请求,其中,所述查询请求用于请求查询所述区块链浏览器中所保存的所述区块链的最新块高度;
接收所述区块链浏览器发送查询到的最新块高度;
确定所述区块链的当前块高度大于所述查询到的最新块高度。
在依据本公开内容的一个实施例中,在确定所述区块链的当前块高度大于所述查询到的最新块高度的情况下,向区块链浏览器发送区块链数据进一步包括:
向所述区块链浏览器发送块高度大于所述查询到的最新块高度的一个或多个块数据;或者
向所述区块链浏览器发送所属块高度大于所述查询到的最新块高度的一个或多个交易数据。
在依据本公开内容的一个实施例中,向区块链浏览器发送区块链数据之前,当所述指令执行时使得所述处理器进一步执行以下操作:
当要发送的区块链数据是块数据时,将所述块数据中的块哈希、块高度以及块中交易数量按照所述区块链浏览器接收数据的格式进行格式转换形成相应的块数据结构体;或者
当要发送的区块链数据是交易数据时,将所述交易数据中的所属块高度、交易哈希、源头账户地址以及目的账户地址按照所述区块链浏览器接收数据的格式进行格式转换形成相应的交易数据结构体。
本公开内容通过提供向通用区块链浏览器传输区块链数据的方法和设备能够同时支持多种不同的区块链产品并且能够记录、展示任一区块链的数据信息,进而解决了现有技术中需要花费大量的人力、物力来针对单独的区块链产品开发相应的区块链浏览器的问题。
替代地,上述的传输区块链数据的方法能够通过计算机程序产品来实现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
应当注意,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上所述仅为本公开的实施例可选实施例,并不用于限制本公开的实施例,对于本领域的技术人员来说,本公开的实施例可以有各种更改和变化。凡在本公开的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的实施例的保护范围之内。
虽然已经参考若干具体实施例描述了本公开的实施例,但是应该理解,本公开的实施例并不限于所公开的具体实施例。本公开的实施例旨在涵盖在所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。