CN110610423B - 区块链智能合约平台支持有状态和无状态合约的处理方法 - Google Patents

区块链智能合约平台支持有状态和无状态合约的处理方法 Download PDF

Info

Publication number
CN110610423B
CN110610423B CN201910847997.7A CN201910847997A CN110610423B CN 110610423 B CN110610423 B CN 110610423B CN 201910847997 A CN201910847997 A CN 201910847997A CN 110610423 B CN110610423 B CN 110610423B
Authority
CN
China
Prior art keywords
contract
stateless
contracts
stateful
platform
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
CN201910847997.7A
Other languages
English (en)
Other versions
CN110610423A (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.)
Hangzhou Rivtower Technology Co Ltd
Original Assignee
Cryptape 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 Cryptape Co ltd filed Critical Cryptape Co ltd
Priority to CN201910847997.7A priority Critical patent/CN110610423B/zh
Publication of CN110610423A publication Critical patent/CN110610423A/zh
Application granted granted Critical
Publication of CN110610423B publication Critical patent/CN110610423B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Engineering & Computer Science (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种区块链智能合约平台支持有状态和无状态合约的处理方法、电子设备和计算机可读存储介质。其中方法包括:对于无状态合约,创建时添加无状态合约标记,区块链智能合约平台在执行过程中,如果检测到所述无状态合约标记,则禁止所述无状态合约中的所有函数访问存储空间,且禁止所述无状态合约接收输入信息;对于有状态合约,如果所述有状态合约需要调用其他合约,则被调用的合约必须为无状态合约,即被调用的合约必须包含无状态合约标记,若不包含无状态合约标记,则区块链智能合约平台报错,停止继续执行。采用以上方式可以避免区块链智能合约平台很多潜在的恶意攻击。

Description

区块链智能合约平台支持有状态和无状态合约的处理方法
技术领域
本发明属于区块链技术领域,具体涉及一种区块链智能合约平台支持有状态和无状态合约的处理方法、电子设备和计算机可读存储介质。
背景技术
区块链(blockchain),是一种分布式记账的技术方案,借由密码学串接并保存内容的串联交易记录(又称区块),每一个区块包含了前一个区块的加密摘要(唯一标识符)、时间戳和交易列表,任何交易都需要系统中的每一个共识节点参与并达成一致共识后才会存入区块中。
智能合约(smart contract),1994年由尼克萨博首次提出,是一种特殊协议,在区块链内制定合约时使用,可以包含一些任意数据或解析数据的函数,可以接收用户输入并引导虚拟机解析处理用户输入。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。现有的智能合约本质上是执行合约条款的计算机交易协议,区块链上的所有用户都可以看到基于区块链的智能合约。这种公开透明的特性,一方面降低区块链上的信任和交易成本,另一方面也对智能合约的安全性提出了非常高的要求。
同时区块链本身是一个分布式系统,任何改动和更新都需要系统中的所有共识节点参与,这种去中心化的特性,一方面降低了中心化作恶的道德风险,另一方面也让安全漏洞无法得到及时修复。在区块链上,任何安全漏洞在内都是公开可见的,一旦出现安全漏洞,开发者可能无法迅速修复。安全漏洞容易被攻击,面临区块链上的数据被篡改。如果区块链上保存的比较高价值的金融资产,那么后果就会更加严重。传统的智能合约存在多个合约之间相互依赖和调用的场景,但是被调用的合约函数并不严格要求为纯函数,导致被调用的函数的输出结果不是确定和可预期的,甚至会出现一些不容易观察和不可预料的副作用。
举例说明,现有的智能合约函数可以是纯函数,也可以是非纯函数。参照图1所示,给出了纯函数add和非纯函数random的示例。从图1中注释和函数执行结果可以看到,对于add函数来说,只要给定输入参数,那么输出结果就一定是确定的且可预期的;而对于random函数来说,输入参数只是给出了随机数产生的上限和下限,输出结果依然是随机、不确定且不可预期的。所以add函数是纯函数,random函数不是纯函数。如图2所示,当一个合约函数contract1调用另一个合约contract2的非纯函数function func2(){}时,被调用的非纯函数就可以放入无法提前预知的恶意攻击行为,从而产生意想不到的后果。过去几年很多知名的智能合约区块链平台,都因为上述特性出现过严重的安全漏洞。攻击者利用原合约函数可以调用其他合约的非纯函数的特性,将一些攻击代码放入被调用合约函数中,由于原合约在一开始并不知道被调用合约函数的行为,所以一开始无法完全预测被调用合约函数的结果,也就造成了合约的安全漏洞在一开始无法快速被识别,进而被恶意攻击导致出现严重后果。
发明内容
鉴于以上存在的技术问题,本发明用于提供一种区块链智能合约平台支持有状态和无状态合约的处理方法、电子设备和计算机可读存储介质,用于同时支持有状态合约和无状态合约的处理,将无状态合约设置成行为可预期的合约,且有状态合约只能调用无状态合约,不能调用其他的有状态合约,杜绝区块链智能合约平台存在的潜在的恶意攻击行为。
为解决上述技术问题,本发明采用如下的技术方案:
第一方面,本申请实施例提供一种区块链智能合约平台支持有状态和无状态合约的处理方法,包括:
对于无状态合约,创建时添加无状态合约标记,区块链智能合约平台在执行过程中,如果检测到所述无状态合约标记,则禁止所述无状态合约中的所有函数访问存储空间,且禁止所述无状态合约接收输入信息;
对于有状态合约,如果所述有状态合约需要调用其他合约,则被调用的合约必须为无状态合约,即被调用的合约必须包含无状态合约标记,若不包含无状态合约标记,则区块链智能合约平台报错,停止继续执行。
第一方面的一种可能设计中,所述无状态合约也称为依赖合约,是用于开发有状态合约的数据或解析数据的函数的集合,包含有独立于所有有状态合约的代码和数据。
第一方面的一种可能设计中,无状态合约中的函数为纯函数,在相同的输入值时,产生相同的确定的输出。
第一方面的一种可能设计中,有状态合约也称为可执行合约,用于接收用户输入并引导区块链智能合约平台解析处理用户输入,有修改自身存储空间的能力,允许通过合约间调用的方式调用依赖合约。
第一方面的一种可能设计中,所述智能合约平台通过引导虚拟机解析处理用户输入。
第二方面,本申请实施例提供一种电子设备,包括存储器、处理器及存储在所述存储器是上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行上述的区块链智能合约平台支持有状态和无状态合约的处理方法。
第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行实现上述的区块链智能合约平台支持有状态和无状态合约的处理方法。
采用本发明具有如下的有益效果:该技术方案相比于现有的智能合约平台,将合约类型由一种分为两种,分别是有状态(可执行)和无状态(依赖)合约,有状态合约跟现有的智能合约相似,依赖合约增加了禁止访问存储空间和禁止接收用户输入,这些限制保证了依赖合约函数都是纯函数,函数行为变得更确定和可预期。当依赖合约的行为变得确定和可预期后,可以避免很多潜在的恶意攻击。
附图说明
图1为纯函数和非纯函数的示例性说说明;
图2为现有技术中智能合约相互调用示例性说明;
图3为本发明实施例的区块链智能合约平台支持有状态和无状态合约的处理方法中智能合约相互调用示例性说明;
图4为本发明实施例的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种区块链智能合约平台支持有状态和无状态合约的处理方法,包括:
对于无状态合约,创建时添加无状态合约标记,区块链智能合约平台在执行过程中,如果检测到所述无状态合约标记,则禁止所述无状态合约中的所有函数访问存储空间,且禁止所述无状态合约接收输入信息;此处的输入信息可以为用户输入。
对于有状态合约,如果所述有状态合约需要调用其他合约,则被调用的合约必须为无状态合约,即被调用的合约必须包含无状态合约标记,若不包含无状态合约标记,则区块链智能合约平台报错,停止继续执行。
进一步的,具体实施过程中,无状态合约(stateless contract)也称为依赖合约(library contract),是用于开发有状态合约的数据或解析数据的函数的集合,包含有独立于所有有状态合约的代码和数据。当无状态合约中的函数为纯函数,在相同的输入值时,产生相同的确定的输出。即函数的输出和输入值以外的其他隐藏信息或状态无关,也和由I/O设备产生的外部输出无关。纯函数的行为逻辑和执行结果是可预期的。例如:一个由两个整数相加求和的函数,只要给定相同的输入参数,得到的结果永远都是一样的,且确定的。
有状态合约(stateful contract)也称为可执行合约(executable contract),用于接收用户输入并引导区块链智能合约平台解析处理用户输入,有修改自身存储空间(storage)的能力,允许通过合约间调用的方式调用依赖合约。
具体应用实例中,智能合约平台包括虚拟机,区块链智能合约平台可以引导虚拟机处理用户输入。
一具体应用实例中,参见图3,对于本发明实施例实现的区块链智能合约平台支持有状态和无状态合约的处理方法,contract2合约由于是无状态的,所以它的函数必须是纯函数,所有的行为和结果都是可预期的,这样攻击者就无法在无状态函数中放入攻击行为逻辑,contract1可执行合约调用contract2都是透明和安全的。
综上,本发明实施例提供的区块链智能合约平台支持有状态和无状态合约的处理方法,不管是有状态合约(可执行合约)还是无状态合约(依赖合约),都会在执行过程中做判断,对于依赖合约来说,只要检测到依赖合约标记,区块链智能合约平台就会禁止它访问存储空间,如果依赖合约中包含访问存储空间的非纯函数,平台就会报错并停止继续执行;对于可执行合约来说,调用其他合约时,会检测被调用合约是否是依赖合约,如果检测到被调用合约试图访问存储空间,平台就会报错并停止继续执行。该技术方案通过引入有状态和无状态合约,可以有效地避免在合约执行过程中出现的无法完全预测的意外结果,适依赖合约的执行过程变得更具有确定性和可预期,可以有效地避免恶意行为的侵入。
下面参照图4详细介绍本发明实施例的电子设备。在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口和存储器。其中,存储器可能包含能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器等。当然,该电子设备还可以包括其他业务所需的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外设部件互联标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,EISA)总线等。其中总线可以分为地址总线、数据总线和控制总线等。为了便于表示,图4中仅用一个双箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序,具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令,存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成内容推荐装置。处理器,执行存储器所存放的程序,并具体用于执行前文所述服务器作为执行主体时所执行的方法操作。
上述如本发明实施例区块链智能合约平台支持有状态和无状态合约的处理方法可以应用于处理器中,或者由处理器实现。处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各个步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(CentralProcessing Unit,CPU)、网络处理器(NetworkProcessor,NP)等,还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件或软硬结合的方式等,即以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作,使得区块链智能合约平台支持有状态和无状态合约的处理方法:
对于无状态合约,创建时添加无状态合约标记,区块链智能合约平台在执行过程中,如果检测到所述无状态合约标记,则禁止所述无状态合约中的所有函数访问存储空间,且禁止所述无状态合约接收用户输入;
对于有状态合约,如果所述有状态合约需要调用其他合约,则被调用的合约必须为无状态合约,即被调用的合约必须包含无状态合约标记,若不包含无状态合约标记,则区块链智能合约平台报错,停止继续执行。
进一步的,具体实施过程中,无状态合约(stateless contract)也称为依赖合约(library contract),是用于开发有状态合约的数据或解析数据的函数的集合,包含有独立于所有有状态合约的代码和数据。当无状态合约中的函数为纯函数,在相同的输入值时,产生相同的确定的输出。即函数的输出和输入值以外的其他隐藏信息或状态无关,也和由I/O设备产生的外部输出无关。纯函数的行为逻辑和执行结果是可预期的。例如:一个由两个整数相加求和的函数,只要给定相同的输入参数,得到的结果永远都是一样的,且确定的。
有状态合约(stateful contract)也称为可执行合约(executable contract),用于接收用户输入并引导区块链智能合约平台解析处理用户输入,有修改自身存储空间(storage)的能力,允许通过合约间调用的方式调用依赖合约。
具体应用实例中,智能合约平台包括虚拟机,区块链智能合约平台可以引导虚拟机处理用户输入。
其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
应当理解,本文所述的示例性实施例是说明性的而非限制性的。尽管结合附图描述了本发明的一个或多个实施例,本领域普通技术人员应当理解,在不脱离通过所附权利要求所限定的本发明的精神和范围的情况下,可以做出各种形式和细节的改变。

Claims (4)

1.一种区块链智能合约平台支持有状态和无状态合约的处理方法,其特征在于,包括:
智能合约平台包括虚拟机,区块链智能合约平台引导虚拟机处理用户输入;
对于无状态合约,创建时添加无状态合约标记,区块链智能合约平台在执行过程中,如果检测到所述无状态合约标记,则禁止所述无状态合约中的所有函数访问存储空间,如果无状态合约中包含访问存储空间的非纯函数,平台报错并停止继续执行,且禁止所述无状态合约接收输入 信息;所述无状态合约也称为依赖合约,是用于开发有状态合约的数据或解析数据的函数的集合,包含有独立于所有有状态合约的代码和数据;无状态合约中的函数为纯函数,在相同的输入值时,产生相同的确定的输出;
对于有状态合约,如果所述有状态合约需要调用其他合约,则被调用的合约必须为无状态合约,即被调用的合约必须包含无状态合约标记,若不包含无状态合约标记,则区块链智能合约平台报错,停止继续执行;有状态合约也称为可执行合约,用于接收用户输入并引导区块链智能合约平台解析处理用户输入,有修改自身存储空间的能力,允许通过合约间调用的方式调用依赖合约。
2.如权利要求1所述的区块链智能合约平台支持有状态和无状态合约的处理方法,其特征在于,所述智能合约平台通过引导虚拟机解析处理用户输入。
3.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行权利要求1或2所述的区块链智能合约平台支持有状态和无状态合约的处理方法。
4.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行实现权利要求1或2所述的区块链智能合约平台支持有状态和无状态合约的处理方法。
CN201910847997.7A 2019-09-09 2019-09-09 区块链智能合约平台支持有状态和无状态合约的处理方法 Active CN110610423B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910847997.7A CN110610423B (zh) 2019-09-09 2019-09-09 区块链智能合约平台支持有状态和无状态合约的处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910847997.7A CN110610423B (zh) 2019-09-09 2019-09-09 区块链智能合约平台支持有状态和无状态合约的处理方法

Publications (2)

Publication Number Publication Date
CN110610423A CN110610423A (zh) 2019-12-24
CN110610423B true CN110610423B (zh) 2023-02-10

Family

ID=68892418

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910847997.7A Active CN110610423B (zh) 2019-09-09 2019-09-09 区块链智能合约平台支持有状态和无状态合约的处理方法

Country Status (1)

Country Link
CN (1) CN110610423B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113360883B (zh) * 2021-06-10 2023-07-11 网易(杭州)网络有限公司 一种智能合约的处理方法、装置、计算机设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108664787A (zh) * 2018-05-15 2018-10-16 深圳市网心科技有限公司 合约部署、调用方法、合约审核设备、存储介质及系统
CN109345390A (zh) * 2018-09-25 2019-02-15 深圳市元征科技股份有限公司 一种智能合约访问方法、系统、设备及计算机存储介质

Also Published As

Publication number Publication date
CN110610423A (zh) 2019-12-24

Similar Documents

Publication Publication Date Title
US10678910B2 (en) Modifying web page code to include code to protect output
KR102396071B1 (ko) 소프트웨어 시스템의 자동화된 검증 기법
JP5985631B2 (ja) 信頼レベルのアクティブ化
US8990116B2 (en) Preventing execution of tampered application code in a computer system
US20180004940A1 (en) Method and apparatus for generating dynamic security module
CN110400217B (zh) 智能合约的规则变更处理方法及装置
WO2023035751A1 (zh) 移动端应用的智能混淆
Bratus et al. Implementing a vertically hardened DNP3 control stack for power applications
CN110659905A (zh) 交易验证方法、装置、终端设备以及存储介质
CN111461886B (zh) 区块链上不依赖智能合约的系统配置的管理方法和装置
CN110610423B (zh) 区块链智能合约平台支持有状态和无状态合约的处理方法
Maunero et al. A fpga-based control-flow integrity solution for securing bare-metal embedded systems
US20090319761A1 (en) Hardware constrained software execution
Seacord Combating java deserialization vulnerabilities with look-ahead object input streams (laois)
US11755723B2 (en) Device and method for validation of virtual function pointers
CN111884808B (zh) 一种防止交易跨链重放的方法、装置及电子设备
CN110989985B (zh) 基于Maven的依赖包的管理方法、装置、计算机设备及存储介质
KR102247233B1 (ko) 다중 레이어 기반 스마트 컨트랙트 감사 방법 및 그 장치
CN111273897A (zh) 一种区块链资源消耗方法、装置、储存介质及电子设备
CN113469811A (zh) 区块链交易处理方法及装置
Bratus et al. Exploitation as code reuse: On the need of formalization
Torres et al. Elysium: Automagically Healing Vulnerable Smart Contracts Using Context-Aware Patching [J]
KR102432775B1 (ko) 개인정보보호를 지원하는 스마트 컨트랙트 프로그래밍 시스템 및 방법
KR102398543B1 (ko) 영지식 증명 알고리즘이 적용된 검증 가능한 블록체인 가상머신
CN113721947A (zh) 一种区块链合约原地址升级的方法和装置

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
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20191224

Assignee: Hangzhou Xita Technology Co.,Ltd.

Assignor: CRYPTAPE Co.,Ltd.

Contract record no.: X2023330000231

Denomination of invention: The blockchain smart contract platform supports processing methods for both stateful and stateless contracts

Granted publication date: 20230210

License type: Common License

Record date: 20230407

EE01 Entry into force of recordation of patent licensing contract
TR01 Transfer of patent right

Effective date of registration: 20231220

Address after: 10/F, Guotou Building, No. 398 Shaoxing Road, Gongshu District, Hangzhou City, Zhejiang Province, 310000

Patentee after: Hangzhou Xita Technology Co.,Ltd.

Address before: 310000 No. 1301 and 1302, 13 / F, tower a, Huaxing Times Plaza, No. 478, Wensan Road, Xihu District, Hangzhou City, Zhejiang Province

Patentee before: CRYPTAPE Co.,Ltd.

TR01 Transfer of patent right