CN110489429B - 数据获取方法、装置、计算机可读存储介质和计算机设备 - Google Patents

数据获取方法、装置、计算机可读存储介质和计算机设备 Download PDF

Info

Publication number
CN110489429B
CN110489429B CN201910854777.7A CN201910854777A CN110489429B CN 110489429 B CN110489429 B CN 110489429B CN 201910854777 A CN201910854777 A CN 201910854777A CN 110489429 B CN110489429 B CN 110489429B
Authority
CN
China
Prior art keywords
key
intelligent contract
value
target
hash value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910854777.7A
Other languages
English (en)
Other versions
CN110489429A (zh
Inventor
李茂材
刘区城
王宗友
孔利
蓝虎
杨常青
时一防
周开班
朱耿良
陈秋平
张劲松
刘攀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910854777.7A priority Critical patent/CN110489429B/zh
Publication of CN110489429A publication Critical patent/CN110489429A/zh
Application granted granted Critical
Publication of CN110489429B publication Critical patent/CN110489429B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Computing Systems (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请涉及一种数据获取方法、装置、存储介质和计算机设备,该方法包括:接收键值对获取请求,键值对获取请求是通过调用第一智能合约发送的,键值对获取请求携带有待获取键;根据键值对获取请求通过第一智能合约调用代理智能合约,通过代理智能合约调用预编译智能合约;预编译智能合约获取第一智能合约地址,根据第一智能合约地址和待获取键确定待获取目标键;向外部服务器发送目标值获取请求,目标值获取请求携带待获取目标键,外部服务器用于根据待获取目标键在数据库中查找对应的目标值;获取外部服务器返回的待查询目标键对应的目标值。能够使外部服务器中的数据被使用。

Description

数据获取方法、装置、计算机可读存储介质和计算机设备
本申请是于2019年08月22日提交中国专利局,申请号为201910777476.9, 发明名称为“数据存储方法、装置、计算机可读存储介质和计算机设备”的分案 申请,其全部内容通过引用结合在本申请中
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据获取存储方法、装置、计 算机可读存储介质和计算机设备。
背景技术
随着区块链技术的发展,智能合约越来越多的被应用在区块链中,智能合约 是一种旨在以信息化方式传播、验证或执行合同的计算机协议。目前,智能合约 通常将合约数据保存在虚拟机所在的节点服务器本地硬盘中。当智能合约的海 量数据需要存储时,由于虚拟机所在的节点服务器本地硬盘的存储容量有限,存 在海量数据无法存储的问题。
发明内容
基于此,有必要针对节点服务器本地硬盘的存储容量有限的技术问题,提供 一种数据获取方法、装置、计算机可读存储介质和计算机设备。
一种数据存储方法,包括:
接收键值对存储请求,键值对存储请求是通过调用第一智能合约发送的;
根据键值对存储请求通过第一智能合约调用代理智能合约;
通过代理智能合约调用预编译智能合约,预编译智能合约获取第一智能合 约地址和待存储键值对;
预编译智能合约将第一智能合约地址与待存储键值对中的待存储键拼接得 到目标待存储键,根据目标待存储键和待存储键对应的待存储值确定目标待存 储键值对,将目标待存储键值对存储到外部服务器数据库中;
预编译智能合约计算目标待存储键值对的目标哈希值,将目标哈希值返回 代理智能合约;
代理智能合约根据目标哈希值更新存储哈希值,将存储哈希值写入区块中。
一种数据存储装置,包括:
请求接收模块,用于接收键值对存储请求,键值对存储请求是通过调用第一 智能合约发送的;
合约调用模块,用于根据键值对存储请求通过第一智能合约调用代理智能 合约;
信息获取模块,用于通过代理智能合约调用预编译智能合约,预编译智能合 约获取第一智能合约地址和待存储键值对;
外部存储模块,用于预编译智能合约将第一智能合约地址与待存储键值对 中的待存储键拼接得到目标待存储键,根据目标待存储键和待存储键对应的待 存储值确定目标待存储键值对,将目标待存储键值对存储到外部服务器数据库 中;
目标哈希值计算模块,用于预编译智能合约计算目标待存储键值对的目标 哈希值,将目标哈希值返回代理智能合约;
存储哈希值更新模块,用于代理智能合约根据目标哈希值更新存储哈希值, 将存储哈希值写入区块中。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运 行的计算机程序,该处理器执行程序时实现以下步骤:
接收键值对存储请求,键值对存储请求是通过调用第一智能合约发送的;
根据键值对存储请求通过第一智能合约调用代理智能合约;
通过代理智能合约调用预编译智能合约,预编译智能合约获取第一智能合 约地址和待存储键值对;
预编译智能合约将第一智能合约地址与待存储键值对中的待存储键拼接得 到目标待存储键,根据目标待存储键和待存储键对应的待存储值确定目标待存 储键值对,将目标待存储键值对存储到外部服务器数据库中;
预编译智能合约计算目标待存储键值对的目标哈希值,将目标哈希值返回 代理智能合约;
代理智能合约根据目标哈希值更新存储哈希值,将存储哈希值写入区块中。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执 行时,使得处理器执行以下步骤:
接收键值对存储请求,键值对存储请求是通过调用第一智能合约发送的;
根据键值对存储请求通过第一智能合约调用代理智能合约;
通过代理智能合约调用预编译智能合约,预编译智能合约获取第一智能合 约地址和待存储键值对;
预编译智能合约将第一智能合约地址与待存储键值对中的待存储键拼接得 到目标待存储键,根据目标待存储键和待存储键对应的待存储值确定目标待存 储键值对,将目标待存储键值对存储到外部服务器数据库中;
预编译智能合约计算目标待存储键值对的目标哈希值,将目标哈希值返回 代理智能合约;
代理智能合约根据目标哈希值更新存储哈希值,将存储哈希值写入区块中。
上述数据存储方法、装置、计算机可读存储介质和计算机设备,通过第一智 能合约调用代理智能合约,代理智能合约调用预编译合约,通过预编译合约将待 存储键值对中的待存储键与第一智能合约地址拼接得到目标待存储键,然后将 目标待存储键值对存储到外部服务器数据库中,扩展了区块链节点服务器的存 储容量,从而突破本地存储容量的限制,使得需要大量存储的区块链业务也可以 使用智能合约来实现。然后通过计算目标待存储键值对的目标哈希值,使用代理 智能合约根据目标哈希值更新存储哈希值,将存储哈希值写入区块中,保证在外 部服务器存储的键值对也能间接的保存到区块链中,保证了区块链节点数据的 一致性。
附图说明
图1为一个实施例中数据存储方法的应用环境图;
图2为一个实施例中数据存储方法的流程示意图;
图3为一个实施例中传统合约数据存储的示意图;
图4为一个实施例中本申请合约数据存储的示意图;
图5为一个实施例中部署智能合约的流程示意图;
图6为一个实施例中序列化键值对的流程示意图;
图7为一个实施例中更新存储哈希值的流程示意图;
图8为一个实施例中计算根哈希值的流程示意图;
图9为一个实施例中获取键值对的流程示意图;
图10为一个具体实施例中数据存储方法的流程示意图;
图11为图10具体实施例中代理合约的示意图;
图12为图10具体实施例中预编译合约的示意图;
图13为一个实施例中数据存储装置的结构框图;
图14为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施 例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用 以解释本申请,并不用于限定本申请。
图1为一个实施例中数据存储方法的应用环境图。参照图1,该数据存储方 法应用于数据存储系统。该数据存储系统包括终端110和区块链中的节点服务 器120。终端102和节点服务器104通过网络连接。终端102具体可以是台式终 端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。 节点服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实 现。
具体地,节点服务器104接收终端102发送键值对存储请求,键值对存储 请求是通过调用第一智能合约发送的。节点服务器104根据键值对存储请求通 过第一智能合约调用代理智能合约。节点服务器104通过代理智能合约调用预 编译智能合约,预编译智能合约获取第一智能合约地址和待存储键值对。预编译 智能合约将第一智能合约地址与待存储键值对中的待存储键拼接得到目标待存 储键,根据目标待存储键和待存储键对应的待存储值确定目标待存储键值对,将 目标待存储键值对存储到外部服务器数据库中。预编译智能合约计算目标待存 储键值对的目标哈希值,将目标哈希值返回代理智能合约。代理智能合约根据目 标哈希值更新存储哈希值,将存储哈希值写入区块中。
如图2所示,在一个实施例中,提供了一种数据存储方法。本实施例主要以 该方法应用于上述图1中的节点服务器104来举例说明。参照图2,该数据存储方 法具体包括如下步骤:
S202,接收键值对存储请求,键值对存储请求是通过调用第一智能合约发送 的。
其中,键值对存储是数据库最简单的组织形式,键值对(key-value)中每 个键(key)后面对应着相应的值(value),当按下相应的键时,就会输出相应 的结果。比如“姓名=张三”,其中,该键值对中的键位“姓名”,值为“张三”。 第一智能合约是用户自定义的外部存储智能合约,是普通智能合约,普通智能合 约不能直接访问外部存储的数据。比如,第一智能合约是用户注册的智能合约, 该用户注册的智能合约要存储的数据可以是用户注册的相关信息,包括用户注 册账号,注册姓名、注册性别等其他注册信息。将用户注册的相关信息转换为键 值对的形式,发送键值对存储请求。
具体地,用户终端调用第一智能合约发送保存第一智能合约数据即键值对 的请求,区块链节点服务器接收到用户终端通过调用第一智能合约发送键值对 存储请求。
S204,根据键值对存储请求通过第一智能合约调用代理智能合约。
其中,代理智能合约是预编译合约的代理合约,通过代理智能合约可以调用 预编译智能合约。第一智能合约继承自该代理智能合约。
具体地,区块链节点服务器据键值对存储请求通过第一智能合约调用代理 智能合约中的存储键值对的方法。
S206,通过代理智能合约调用预编译智能合约,预编译智能合约获取第一智 能合约地址和待存储键值对。
其中,预编译智能合约用于将合约数据存储到外部数据库中,该预编译智能 合约是预先编译并指定预编译合约地址后内置到区块链节点服务器中的。第一 智能合约地址用于标识第一智能合约,可以根据该第一智能合约地址查找到第 一智能合约。待存储键值对是指第一智能合约需要存储到外部数据库的键值对 数据。
具体地,区块链节点服务器通过代理智能合约调用预编译智能合约中存储 键值对的方法,预编译智能合约获取第一智能合约地址和待存储键值对。
S208,预编译智能合约将第一智能合约地址与待存储键值对中的待存储键 拼接得到目标待存储键,根据目标待存储键和待存储键对应的待存储值确定目 标待存储键值对,将目标待存储键值对存储到外部服务器数据库中。
其中,目标待存储键是指要存储到外部服务器数据库中的键(key),该键是 第一智能合约地址与待存储键值拼接得到的。比如,待存储键为“01”,第一智 能合约地址为“10”,则目标待存储键可以是“1001”。目标待存储键值对是指目 标待存储键和对应的待存储值形成的键值对。外部服务器是指节点服务器以外 的服务器,比如,外部服务器可以是云服务器,还可以是分布式服务器等等。
具体地,智能合约通常在节点服务器虚拟机中执行。区块链节点服务器执行 预编译智能合约将第一智能合约地址与待存储键值对中的待存储键拼接得到目 标待存储键,根据目标待存储键和待存储键对应的待存储值确定目标待存储键 值对,节点服务器向外部服务器发送目标待存储键值对的存储请求,外部服务器 接收到存储请求,将目标待存储键值对存储到数据库中。其中,将合约地址拼接 待存储键作为目标待存储键,然后将目标待存储键值对存储到数据库,能够使不 同的智能合约更新相同的键时,值就不同相互覆盖,提高了存储键值对的通用性。
S210,预编译智能合约计算目标待存储键值对的目标哈希值,将目标哈希值 返回代理智能合约。
其中,目标哈希值是指目标待存储键值对的哈希值。每个需要存储目标待存 储键值对都有对应的目标哈希值。
具体地,区块链节点服务器执行预编译智能合约,预编译智能合约计算目标 待存储键值对的目标哈希值,将目标哈希值返回给代理智能合约。
S212,代理智能合约根据目标哈希值更新存储哈希值,将存储哈希值写入区 块中。
其中,存储哈希值是所有已存储的键值对哈希值的哈希值,该存储哈希值只 有一个。代理智能合约还用于根据目标哈希值更新存储哈希值。
具体地,当预编译智能合约将目标待存储键值对存储到外部服务器数据库 中时,预编译智能合约将计算已存储目标待存储键值的哈希值返回给代理智能 合约,代理智能合约根据目标哈希值更新存储哈希值,然后将更新后的存储哈希 值写入区块中。
上述数据存储方法中,通过第一智能合约调用代理智能合约,代理智能合 约调用预编译合约,通过预编译合约将待存储键值对中的待存储键与第一智能 合约地址拼接得到目标待存储键,然后将目标待存储键值对存储到外部服务器 数据库中,扩展了区块链节点服务器的存储容量,从而突破本地存储容量的限制, 使得需要大量存储的区块链业务也可以使用智能合约来实现。然后通过计算目 标待存储键值对的目标哈希值,使用代理智能合约根据目标哈希值更新存储哈 希值,将存储哈希值写入区块中,保证在外部服务器存储的键值对也能间接的保 存到区块链中,保证了区块链节点中数据的一致性。
如图3所示,为一个实施例中传统合约数据存储的示意图。明显的,传统的 区块链技术中智能合约通过将合约数据保存到虚拟机所在的节点服务器硬盘中, 即节点服务器硬盘存在存储容量有限的问题。而本申请如图4所示,为一个实施 例中将合约数据存储到外部存储数据库中示意图,本申请扩展了节点服务器的 存储容量,使合约数据不仅能够存储到本地存储数据库中,还能够存储到外部存 储数据库中,能够存储海量的合约数据,使区块链技术的应用场景大大扩展。
在一个实施例中,如图5所示,在步骤S202之前,即在所述接收键值对存 储请求,所述键值对存储请求是通过调用第一智能合约发送之前,还包括步骤:
S502,获取第一智能合约、代理智能合约和预编译智能合约,将第一智能合 约和代理智能合约部署区块链中。
其中,智能合约是运行在区块链中的可执行代码,
具体地,区块链节点服务器获取第一智能合约和代理智能合约,将第一智能 合约和代理智能合约,即当获取到智能合约时,调用智能合约编辑器将智能合约 代码编译成为虚拟机字节码,然后将字节码通过接口发送到区块链网络中,经过 全网验证后写入区块链中。
S504,生成第一智能合约地址和代理智能合约的地址。
其中,代理智能合约的地址用于唯一标识代理智能合约。使用智能合约的地 址可以查找到相应的智能合约。
具体地,区块链节点服务器生成第一智能合约地址和代理智能合约的地址。
在上述实施例中,通过将第一智能合约和代理智能合约部署区块链中,保证 能够正常调用智能合约。
在一个实施例中,如图6所示,步骤S208,即将目标待存储键值对存储到 外部服务器数据库中,包括:
S602,将目标待存储键值对序列化,得到序列化后的目标待存储键值。
其中,序列化是指是将对象的状态信息转换为可以存储或传输的形式的过 程。
具体地,区块链节点服务器将将目标待存储键值对序列化,得到序列化后的 目标待存储键值对,该序列化后的目标待存储键值对
S604,将序列化后的目标待存储键值存储到外部服务器数据库中。
具体地,区块链节点服务向外部服务器数据库发送目标待存储键值对存储 请求,该存储请求携带有序列化后的目标待存储键值对,外部服务器接收存储请 求后,将序列化后的目标待存储键值对保存到数据库中。
在上述实施例中,通过将目标待存储键值对序列化,得到序列化后的目标待 存储键值,将序列化后的目标待存储键值存储到外部服务器数据库中,即可以保 存任意类型的数据结构,提高了存储方法的通用性。
在一个实施例中,如图7所示,步骤S212,即代理智能合约根据目标哈希 值更新存储哈希值,包括步骤:
S702,获取历史存储哈希值,计算历史存储哈希值和目标哈希值的哈希值, 得到存储哈希值。
S704,将存储哈希值存储到本地数据库中。
其中,历史存储哈希值是指历史已经存储到外部服务器数据库中的键值对 的哈希值。本地数据库是指区块链节点服务器中的数据库。
具体地,区块链节点服务器可以从本地数据库中获取到历史存储哈希值,计 算历史存储哈希值和目标哈希值的哈希值,得到存储哈希值。然后将存储哈希值 存储到本地数据库中。比如,历史存储哈希值为“11”,目标哈希值为“12”,则 得到的存储哈希值为“1112”的哈希值。然后将“1112”的哈希值存储到本地 数据库中。
在上述实施例中,通过计算历史存储哈希值和目标哈希值的哈希值去更新 存储哈希值,将更新后的存储哈希值存储到本地数据库中,方便后续的使用。
在一个实施例中,如图8所示,步骤S212,即将存储哈希值写入区块中写 入区块中,包括步骤:
S802,获取区块内容和存储哈希值,计算区块内容和存储哈希值对应的根哈 希值。
S804,将根哈希值写入区块头。
其中,区块内容是指要写入区块链新区块体中的内容,根哈希值是指状态树 根节点的哈希值。每个区块上都包含这样的一个状态结点,方便节点间状态的互 相验证,保证在交易的每个区块且每时每刻,所有节点的状态是一致的。
具体地,区块链节点获取区块内容和存储哈希值,计算区块内容和存储哈希 值对应的根哈希值,然后将根哈希值写入区块头。
在上述实施例中,通过计算区块内容和存储哈希值对应的根哈希值,将根哈 希值写入区块头,能够使外部存储的键值对间接的写入区块链,即对外部存储的 改动也是经过共识的,并且能够保证区块链节点数据的一致性。
在一个实施例中,如图9所示,数据存储方法还包括步骤:
S902,接收键值对获取请求,键值对获取请求是通过调用第一智能合约发送 的,键值对获取请求携带有待获取键。
其中,待获取键是指需要获取键值对中值对应的键,比如,键值对是“姓名 -张三”,当需要获取键“姓名”对应的值“张三”时,发送键值对获取请求,该 键值对获取请求携带有待获取键“姓名”。
具体地,区块链节点服务器接收到终端发送的键值对获取请求,键值对获取 请求是通过调用第一智能合约发送的,键值对获取请求携带有待获取键。
S904,根据键值对获取请求通过第一智能合约调用代理智能合约,通过代理 智能合约调用预编译智能合约。
S906,预编译智能合约获取第一智能合约地址,根据第一智能合约地址和待 获取键确定待获取目标键。
具体地,区块链节点根据键值对获取请求通过第一智能合约调用代理智能 合约,代理智能合约调用预编译智能合约,预编译智能合约获取第一智能合约地 址,预编译智能合约将待获取键和第一智能合约地址拼接得到待获取目标键。
S908,向外部服务器发送目标值获取请求,目标值获取请求携带待获取目标 键,外部服务器用于根据待获取目标键在数据库中查找对应的目标值。
具体地,区块链节点服务器向外部服务器发送目标值获取请求,该目标值获 取请求携带待获取目标键,外部服务器接收到目标值获取请求,解析得到待获取 目标键,然后在数据库中查找待获取目标键对应的目标值,将查找到的目标值返 回区块链节点服务器。
S910,获取外部服务器返回的待查询目标键对应的目标值。
具体地,区块链节点服务器获取外部服务器返回的待查询目标键对应的目 标值,可以根据待获取键和目标值得到键值对,将得到的键值对返回对应的发送 键值对获取请求的终端进行显示。
在上述实施例中,当接收到键值对获取请求时,通过第一智能合约调用代理 智能合约,通过代理智能合约调用预编译智能合约,然后预编译智能合约确定待 获取目标键,根据待获取目标键从外部服务器数据库中获取到对应的目标值,得 到键值对。能够使保存在外部服务器的数据被使用,拓展了应用场景。
在一个具体的实施例中,如图10所示,合约调用者调用(call)“自定义 的外部存储合约”发起保存键值对请求,自定义的外部存储合约调用(call)代 理合约的存储方法。如图11所示,为代理合约Estorage的示意图,该代理合约 Estorage中的put方法用于存储键值对。代理合约Estorage调用(call)预编 译合约PrecompileEstorage,如图12所示,为预编译智能合约 PrecompileEstorage的示意图。预编译智能合约PrecompileEstorage将自定义 的外部存储合约的地址与键值对中的键拼接形成新键,然后使用Put方法将新 键及对应的值进行外部存储。同时计算新键及对应的值的哈希值,将新键及对应 的值的哈希值返回给代理合约Estorage,代理合约Estorage根据预编译智能合 约PrecompileEstorage返回的哈希值更新存储哈希值storageHash。即计算历 史存储哈希值和PrecompileEstorage返回的哈希值的哈希值,得到更新后的存 储哈希值storageHash,然后将更新后的存储哈希值storageHash存储到本地数 据库中。并且,更新后的存储哈希值storageHash会参与区块链中新区快根哈 希的计算,将计算得到的根哈希写入区块链新区快的区块头中。
在一个具体的实施例中,自定义的外部存储合约可以是注册信息的外部存 储合约,则待存储键值对为注册信息转换成的,然后可以将注册信息的键值对存 储到外部服务器数据库中。
在一个具体的实施例中,自定义的外部存储合约可以是医院患者信息的外 部存储合约,则待存储键值对为患者信息转换成的,然后可以将患者信息的键值 对存储到外部服务器数据库中。
在一个具体的实施例中,自定义的外部存储合约可以是应用日志的外部存 储合约,则待存储键值对为日志信息转换成的,然后可以将日志信息的键值对存 储到外部服务器数据库中。
在一个具体的实施例中,自定义的外部存储合约可以是用户行为数据的外 部存储合约,则待存储键值对为用户行为数据转换成的,然后可以将用户行为数 据的键值对存储到外部服务器数据库中。其中,用户行为数据可以是访问网站的 行为数据。
在一个具体的实施例中,合约调用者调用(call)“自定义的外部存储合约” 发起键值对获取请求,该获取请求中携带有待获取键。区块链节点服务器中自定 义的外部存储合约调用(call)代理合约的数据获取方法。如图11所示,为代 理合约Estorage的示意图,该代理合约Estorage中的get方法用于调用预编 译智能合约PrecompileEstorage的get方法,预编译智能合约 PrecompileEstorage的get方法将自定义的外部存储合约地址和待获取键拼接 成新键,然后使用get方法从外部服务器数据库中获取到新键对应的目标值, 最后将获取到的目标值和待获取键作为键值对返回给合约调用者对应的终端进 行展示。
应该理解的是,虽然图5-9的流程图中的各个步骤按照箭头的指示依次显 示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确 的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执 行。而且,图5-9中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些 子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行, 这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或 者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图13所示,提供了一种数据存储装置1300,包括:
请求接收模块1302,用于接收键值对存储请求,键值对存储请求是通过调 用第一智能合约发送的;
合约调用模块1304,用于根据键值对存储请求通过第一智能合约调用代理 智能合约;
信息获取模块1306,用于通过代理智能合约调用预编译智能合约,预编译 智能合约获取第一智能合约地址和待存储键值对;
外部存储模块1308,用于预编译智能合约将第一智能合约地址与待存储键 值对中的待存储键拼接得到目标待存储键,根据目标待存储键和待存储键对应 的待存储值确定目标待存储键值对,将目标待存储键值对存储到外部服务器数 据库中;
目标哈希值计算模块1310,用于预编译智能合约计算目标待存储键值对的 目标哈希值,将目标哈希值返回代理智能合约;
存储哈希值更新模块1312,用于代理智能合约根据目标哈希值更新存储哈 希值,将存储哈希值写入区块中。
在一个实施例中,数据存储装置1300,还包括:
合约部署模块,用于获取所述第一智能合约、所述代理智能合约和所述预编 译智能合约,将所述第一智能合约和所述代理智能合约部署区块链中;
地址生成模块,用于生成所述第一智能合约地址和代理智能合约的地址。
在一个实施例中,外部存储模块1308还用于将所述目标待存储键值对序列 化,得到序列化后的目标待存储键值;将所述序列化后的目标待存储键值存储到 所述外部服务器数据库中。
在一个实施例中,存储哈希值更新模块1312还用于获取历史存储哈希值, 计算所述历史存储哈希值和所述目标哈希值的哈希值,得到所述存储哈希值;将 所述存储哈希值存储到本地数据库中。
在一个实施例中,存储哈希值更新模块1312还用于获取区块内容和所述存 储哈希值,计算所述区块内容和所述存储哈希值对应的根哈希值;将所述根哈希 值写入区块头。
在一个实施例中,数据存储装置1300,还包括:
获取请求接收模块,用于接收键值对获取请求,所述键值对获取请求是通过 调用第一智能合约发送的,所述键值对获取请求携带有待获取键;
预编译合约调用模块,用于根据所述键值对获取请求通过所述第一智能合 约调用代理智能合约,通过所述代理智能合约调用预编译智能合约;
目标键确定模块,用于所述预编译智能合约获取所述第一智能合约地址,根 据所述第一智能合约地址和所述待获取键确定待获取目标键;
请求发送模块,用于向所述外部服务器发送目标值获取请求,所述目标值获 取请求携带所述待获取目标键,所述外部服务器用于根据所述待获取目标键在 数据库中查找对应的目标值;
目标值获取模块,用于获取所述外部服务器返回的所述待查询目标键对应 的所述目标值。
图14示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可 以是图1中的区块链节点服务器104。如图14所示,其内部结构图可以如图14 所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中, 该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括 非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程 序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环 境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程 序被处理器执行时以实现一种数据存储方法。
本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关 的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定, 具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件, 或者具有不同的部件布置。
在一个实施例中,本申请提供的数据存储装置可以实现为一种计算机程序 的形式,计算机程序可在如图14所示的计算机设备上运行。计算机设备的存储 器中可存储组成该数据存储装置的各个程序模块,比如,图13所示的请求接收 模块1302、合约调用模块1304、信息获取模块1306、外部存储模块1308、目标 哈希值计算模块1310和存储哈希值更新模块1312。各个程序模块构成的计算机 程序使得处理器执行本说明书中描述的本申请各个实施例的数据存储方法中的 步骤。
例如,图14所示的计算机设备可以通过如图13所示的数据存储装置中的 请求接收模块1302执行步骤S202。计算机设备可通过合约调用模块1304执行 步骤S204。计算机设备可通过信息获取模块1306执行步骤S206。计算机设备 可通过外部存储模块1308执行步骤S208。计算机设备可通过目标哈希值计算模 块1310执行步骤S210。计算机设备可通过存储哈希值更新模块1312执行步骤 S212。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存 储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述数据存储方 法的步骤。此处数据存储方法的步骤可以是上述各个实施例的数据存储方法中 的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计 算机程序被处理器执行时,使得处理器执行上述数据存储方法的步骤。此处数据 存储方法的步骤可以是上述各个实施例的数据存储方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易 失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例 的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或 其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器 可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦 除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM) 或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态 RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、 增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线 (Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器 总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实 施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的 组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细, 但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的 普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进, 这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求 为准。

Claims (10)

1.一种数据获取方法,包括:
接收键值对获取请求,所述键值对获取请求是通过调用第一智能合约发送的,所述键值对获取请求携带有待获取键;
根据所述键值对获取请求通过所述第一智能合约调用代理智能合约,通过所述代理智能合约调用预编译智能合约;
所述预编译智能合约获取所述第一智能合约地址,根据所述第一智能合约地址和所述待获取键确定待获取目标键;
向外部服务器发送目标值获取请求,所述目标值获取请求携带所述待获取目标键,所述外部服务器用于根据所述待获取目标键在数据库中查找对应的目标值;
获取所述外部服务器返回的所述待获取目标键对应的所述目标值,其中,所述代理智能合约预先获取历史存储哈希值,计算历史存储哈希值和键值对对应的哈希值的哈希值,得到存储哈希值,并将所述存储哈希值写入区块中,所述键值对是根据所述待获取目标键和所述目标值得到的键值对,所述历史存储哈希值是指历史已经存储到外部服务器数据库中的键值对的哈希值。
2.根据权利要求1所述的方法,其特征在于,在所述接收键值对获取请求,所述键值对获取请求是通过调用第一智能合约发送的,所述键值对获取请求携带有待获取键之前,还包括:
接收键值对存储请求,所述键值对存储请求是通过调用第一智能合约发送的;
根据所述键值对存储请求通过所述第一智能合约调用代理智能合约;
通过所述代理智能合约调用预编译智能合约,所述预编译智能合约获取第一智能合约地址和待存储键值对;
所述预编译智能合约根据所述第一智能合约地址与所述待存储键值对确定目标待存储键值对,将所述目标待存储键值对存储到外部服务器数据库中;
所述预编译智能合约计算所述目标待存储键值对的目标哈希值,将所述目标哈希值返回所述代理智能合约;
所述代理智能合约根据所述目标哈希值更新存储哈希值,将所述存储哈希值写入区块中。
3.根据权利要求2所述的方法,其特征在于,在所述接收键值对存储请求,所述键值对存储请求是通过调用第一智能合约发送之前,还包括:
获取所述第一智能合约和所述代理智能合约,将所述第一智能合约和所述代理智能合约部署区块链中;
生成所述第一智能合约地址和代理智能合约的地址。
4.根据权利要求2所述的方法,其特征在于,所述将所述目标待存储键值对存储到外部服务器数据库中,包括:
将所述目标待存储键值对序列化,得到序列化后的目标待存储键值;
将所述序列化后的目标待存储键值存储到所述外部服务器数据库中。
5.根据权利要求2所述的方法,其特征在于,所述代理智能合约根据所述目标哈希值更新存储哈希值,包括:
获取历史存储哈希值,计算所述历史存储哈希值和所述目标哈希值的哈希值,得到所述存储哈希值;
将所述存储哈希值存储到本地数据库中。
6.根据权利要求2所述的方法,其特征在于,将所述存储哈希值写入区块中写入区块中,包括:
获取区块内容和所述存储哈希值,计算所述区块内容和所述存储哈希值对应的根哈希值;
将所述根哈希值写入区块头。
7.一种数据获取装置,其特征在于,所述装置包括:
获取请求接收模块,用于接收键值对获取请求,所述键值对获取请求是通过调用第一智能合约发送的,所述键值对获取请求携带有待获取键;
预编译合约调用模块,用于根据所述键值对获取请求通过所述第一智能合约调用代理智能合约,通过所述代理智能合约调用预编译智能合约;
目标键确定模块,用于所述预编译智能合约获取所述第一智能合约地址,根据所述第一智能合约地址和所述待获取键确定待获取目标键;
请求发送模块,用于向外部服务器发送目标值获取请求,所述目标值获取请求携带所述待获取目标键,所述外部服务器用于根据所述待获取目标键在数据库中查找对应的目标值;
目标值获取模块,用于获取所述外部服务器返回的所述待获取目标键对应的所述目标值,将所述目标值返回请求终端,其中,所述代理智能合约预先获取历史存储哈希值,计算历史存储哈希值和键值对对应的哈希值的哈希值,得到存储哈希值,并将所述存储哈希值写入区块中,所述键值对是根据所述待获取目标键和所述目标值得到的键值对,所述历史存储哈希值是指历史已经存储到所述外部服务器数据库中的键值对的哈希值。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
请求接收模块,用于接收键值对存储请求,所述键值对存储请求是通过调用第一智能合约发送的;
合约调用模块,用于根据所述键值对存储请求通过所述第一智能合约调用代理智能合约;
信息获取模块,用于通过所述代理智能合约调用预编译智能合约,所述预编译智能合约获取第一智能合约地址和待存储键值对;
外部存储模块,用于所述预编译智能合约根据所述第一智能合约地址与所述待存储键值对确定目标待存储键值对,将所述目标待存储键值对存储到外部服务器数据库中;
目标哈希值计算模块,用于所述预编译智能合约计算所述目标待存储键值对的目标哈希值,将所述目标哈希值返回所述代理智能合约;
存储哈希值更新模块,用于所述代理智能合约根据所述目标哈希值更新存储哈希值,将所述存储哈希值写入区块中。
9.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述方法的步骤。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述方法的步骤。
CN201910854777.7A 2019-08-22 2019-08-22 数据获取方法、装置、计算机可读存储介质和计算机设备 Active CN110489429B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910854777.7A CN110489429B (zh) 2019-08-22 2019-08-22 数据获取方法、装置、计算机可读存储介质和计算机设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910777476.9A CN110489421B (zh) 2019-08-22 2019-08-22 数据存储方法、装置、计算机可读存储介质和计算机设备
CN201910854777.7A CN110489429B (zh) 2019-08-22 2019-08-22 数据获取方法、装置、计算机可读存储介质和计算机设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201910777476.9A Division CN110489421B (zh) 2019-08-22 2019-08-22 数据存储方法、装置、计算机可读存储介质和计算机设备

Publications (2)

Publication Number Publication Date
CN110489429A CN110489429A (zh) 2019-11-22
CN110489429B true CN110489429B (zh) 2021-03-16

Family

ID=68552820

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910854777.7A Active CN110489429B (zh) 2019-08-22 2019-08-22 数据获取方法、装置、计算机可读存储介质和计算机设备
CN201910777476.9A Active CN110489421B (zh) 2019-08-22 2019-08-22 数据存储方法、装置、计算机可读存储介质和计算机设备

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910777476.9A Active CN110489421B (zh) 2019-08-22 2019-08-22 数据存储方法、装置、计算机可读存储介质和计算机设备

Country Status (1)

Country Link
CN (2) CN110489429B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110930152B (zh) * 2019-12-04 2023-05-26 腾讯科技(深圳)有限公司 一种基于区块链的数据处理方法及相关设备
CN111596954B (zh) * 2020-05-12 2023-08-01 杭州溪塔科技有限公司 一种基于区块链的分布式版本控制方法及系统
CN111782732B (zh) * 2020-07-21 2024-09-10 深圳市腾讯网域计算机网络有限公司 一种数据处理方法、装置及计算机可读存储介质
CN111737266B (zh) * 2020-07-31 2020-11-24 支付宝(杭州)信息技术有限公司 区块数据访问方法、区块数据存储方法及装置
CN112215706B (zh) * 2020-09-17 2023-06-30 中国科学院计算技术研究所数字经济产业研究院 分布式智能合约系统及实现方法
CN112416940B (zh) * 2020-11-27 2024-05-28 深信服科技股份有限公司 键值对存储方法、装置、终端设备以及存储介质
CN113179294B (zh) * 2021-03-15 2023-02-07 华东师范大学 一种基于智能合约的schema统一存取方法
CN113672632A (zh) * 2021-08-06 2021-11-19 戈尔特西斯科技(济南)有限公司 基于智能合约的链上历史数据变更记录快速查询调用方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7539661B2 (en) * 2005-06-02 2009-05-26 Delphi Technologies, Inc. Table look-up method with adaptive hashing
CN107507005B (zh) * 2017-08-01 2020-09-11 众安信息技术服务有限公司 一种基于联盟链的链外数据访问方法和系统
EP3522088B1 (en) * 2018-02-05 2022-03-16 Nokia Technologies Oy Securing blockchain access through a gateway
CN108830720B (zh) * 2018-06-21 2021-04-30 北京京东尚科信息技术有限公司 智能合约运行方法、装置、系统和计算机可读存储介质
CN109377363B (zh) * 2018-09-26 2020-08-18 电子科技大学 一种基于区块链的物联网数据交易架构及其交易安全方法
CN109445820A (zh) * 2018-10-29 2019-03-08 深圳市元征科技股份有限公司 一种智能合约升级方法、系统、设备及计算机存储介质
CN109634932B (zh) * 2018-11-30 2021-03-23 北京瑞卓喜投科技发展有限公司 一种智能合约存储方法及存储系统
CN109670335A (zh) * 2018-12-20 2019-04-23 众安信息技术服务有限公司 用于在区块链与链外数据之间进行交互的方法及装置
CN109684333B (zh) * 2018-12-24 2021-02-09 杭州复杂美科技有限公司 一种数据存储及裁剪方法、设备和存储介质
CN109710694A (zh) * 2018-12-26 2019-05-03 深圳市网心科技有限公司 数据处理方法、设备、存储介质和区块链系统
CN111614464B (zh) * 2019-01-31 2023-09-29 创新先进技术有限公司 区块链中安全更新密钥的方法及节点、存储介质
CN109981679B (zh) * 2019-04-08 2021-08-10 上海点融信息科技有限责任公司 在区块链网络中执行事务的方法和装置

Also Published As

Publication number Publication date
CN110489421A (zh) 2019-11-22
CN110489421B (zh) 2023-11-14
CN110489429A (zh) 2019-11-22

Similar Documents

Publication Publication Date Title
CN110489429B (zh) 数据获取方法、装置、计算机可读存储介质和计算机设备
CN108287839B (zh) 一种页面加载方法和设备
CN109766124B (zh) 业务开发方法、装置、计算机设备和存储介质
CN110866198B (zh) 静态资源缓存方法、系统、装置、计算机设备和存储介质
CN111245548A (zh) 基于时间戳的数据同步方法、装置和计算机设备
CN109586948A (zh) 更新系统配置数据的方法、装置、计算机设备和存储介质
CN110555041A (zh) 数据处理方法、装置、计算机设备和存储介质
CN111143462A (zh) 数据导出的方法、装置、计算机设备和存储介质
CN110213392B (zh) 数据分发方法、装置、计算机设备和存储介质
CN112256318B (zh) 一种用于依赖产品的构建方法及设备
CN109284125B (zh) 大数据平台中的依赖包配置方法、装置、设备及介质
CN110531984B (zh) 代码编译方法、装置、系统、计算机设备和存储介质
CN113515322B (zh) 应用程序加载方法、装置、计算机设备和可读存储介质
CN112615759A (zh) 全链路压测组件、全链路压测方法及装置
CN108595280B (zh) 接口适配方法、装置、计算机设备和存储介质
CN111026988A (zh) 一种页面加载的方法、装置、系统及计算机设备
CN111752975A (zh) 基于Redis的数据加载方法、装置、计算机设备和存储介质
BR112018074497B1 (pt) Método para prevenir que um servidor seja atacado e dispositivo para prevenir que um servidor seja atacado
CN113254753B (zh) 一种页面回退方法、装置、电子设备及存储介质
CN112783866B (zh) 数据读取方法、装置、计算机设备和存储介质
CN117492787A (zh) 一种软件升级方法、终端设备及网络设备
CN116466884A (zh) 一种数据写入方法、装置、计算机设备和存储介质
CN115640471A (zh) 短链接生成方法、装置、计算机设备及存储介质
CN113157306A (zh) 一种资源打包管理方法、装置、设备及存储介质
KR102433764B1 (ko) 서비스 모니터링 시스템 및 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40016819

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant