CN108170449A - 一种区块链系统中核心协议的升级方法 - Google Patents

一种区块链系统中核心协议的升级方法 Download PDF

Info

Publication number
CN108170449A
CN108170449A CN201711449386.4A CN201711449386A CN108170449A CN 108170449 A CN108170449 A CN 108170449A CN 201711449386 A CN201711449386 A CN 201711449386A CN 108170449 A CN108170449 A CN 108170449A
Authority
CN
China
Prior art keywords
block
protocol
code
core
protocol code
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.)
Pending
Application number
CN201711449386.4A
Other languages
English (en)
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN201711449386.4A priority Critical patent/CN108170449A/zh
Publication of CN108170449A publication Critical patent/CN108170449A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种区块链系统中核心协议的升级方法,该方法包括如下步骤:A、在区块链的区块结构中,增加核心协议代码Protocol Code和投票统计Votes域;B将Protocol Code的发布者设置为所述区块链核心开发组保留地址,规定该地址在创世区块内部硬编码无法变更;所有记账节点均验证Protocol Code签名,签名不通过则视为非法数据;C、通过区块链客户端节点从当前最新区块的Protocol Code存储区获取编译后的虚拟机字节码,如果当前最新区块有Protocol Code数据,将升级代码通过公开渠道进行讨论和投票;如果同意核心协议升级,则将Protocol Code数据上链后开始投票,投票通过则生效。采用本发明,可以避免区块链开发者和社区的分裂或产生软、硬分叉的可能性。

Description

一种区块链系统中核心协议的升级方法
技术领域
本发明涉及区块链技术,尤其涉及一种区块链系统中核心协议的升级方法。
背景技术
当前区块链技术被认为是继蒸汽机、电力、互联网之后的下一代颠覆性的核心技术。如果说蒸汽机释放了人们的生产力,电力解决了人们基本的生活需求,互联网彻底改变了信息传递的方式,那么区块链作为构造信任的机器,将可能彻底改变整个人类社会价值传递的方式。
区块链技术(Blockchain Technology,BT)是一种互联网数据库技术,其特点是去中心化、公开透明,允许每个人均可参与数据库记录。区块链的基本概念包括:交易(Transaction),一次操作,导致账本状态的一次改变,如添加一条记录;区块(Block),记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;链(Chain),由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。
如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。
假设数据库是一本账本,读写数据库就可以看做一种记账的行为,区块链技术的原理是在一段时间内由一部分人来记账,然后将账本的这一页信息发给整个系统里的其他所有人。这也就相当于改变数据库所有的记录,发给全网的其他每个节点,所以区块链技术也称为分布式账本(Distributed Ledger)技术。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。而所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。
区块链系统由于其天生的去中心化特性,不能象普通软件那样进行版本迭代强制用户升级其客户端及协议。现有区块链系统中的协议升级往往会引发区块链“软分叉”或“硬分叉”现象,从而造成巨大的损失,这更进一步限制了区块链系统的应用场景。所谓的软分叉,是指区块链交易的数据结构(即“共识”)发生改变时,未升级的节点可以验证已经升级的节点生产出的区块,而且已经升级的节点也可以验证未升级的节点生产出的区块。所谓的硬分叉,是指区块链的区块格式或交易格式(即“共识”)发生改变时,未升级的节点拒绝验证已经升级的节点生产出的区块,不过已经升级的节点可以验证未升级节点生产出的区块,然后大家各自延续自己认为正确的链,所以分成两条链。
以比特币为例,社区关于区块扩容至今仍然存在巨大的争议,导致比特币协议进化缓慢,区块容量严重不足,曾出现过近100万笔交易在交易池等待被写入区块的现象。用户很多时候不得不额外支付高昂的“交易加速费”,因此严重影响了用户体验。此外,现有区块链系统,如从以太坊的“硬分叉”来看,虽然暂时解决了The DAO问题,但是又产生了ETH和ETC“重资产”和社区分裂的“副作用”。
发明内容
有鉴于此,本发明的主要目的在于提供一种区块链系统中核心协议的升级方法,通过将核心协议内置于区块数据结构中,利用对区块链上数据的追加机制来实现核心协议的升级,以避免开发者和社区的分裂或产生软、硬分叉的可能性。
为达到上述目的,本发明的技术方案是这样实现的:
一种区块链系统中核心协议的升级方法,包括如下步骤:
A、在区块链的区块结构中,增加新的数据类型,即增加核心协议代码ProtocolCode和投票统计Votes域;
B、将所述Protocol Code的发布者设置为所述区块链核心开发组保留地址,规定该地址在创世区块内部硬编码无法变更;所有记账节点均验证Protocol Code签名,签名不通过则视为非法数据;
C、通过区块链客户端节点从当前最新区块的Protocol Code存储区获取编译后的虚拟机字节码,如果当前最新区块有Protocol Code数据,说明核心协议需要升级,则将升级代码通过公开渠道进行讨论和投票;如果所述投票统计Votes域中投票结果显示超过一定比例的社区成员同意核心协议升级,则将Protocol Code数据上链后开始投票,投票通过则生效。
其中,步骤B之后还包括:
通过区块链客户端节点从当前最新区块的Protocol Code存储区获取编译后的虚拟机字节码,如果当前最新区块没有Protocol Code数据,说明核心协议没有变更,就往前追溯到最近区块的Protocol Code。
其中,所述追溯的Protocol Code,是指上一个投票通过的Protocol Code,投票结果也在链上,用于保证全网在Protocol Code上的一致性。
其中,步骤A所述增加的核心协议代码Protocol Code域,包括如下子域:哈希值Hash;核心协议的字节码Code;签名Signature;标识核心协议版本号Version;标识唯一性Nonce。
步骤A所述增加的投票统计Votes域,用于核心协议是否需要升级的投票;包括如下子域:投票人From;投票区块哈希值VoteHash;核心协议代码哈希值Protocol CodeHash;投票类型VoteType;投票签名Signature。
步骤C所述将升级代码通过公开渠道进行讨论和投票,具体包括:
通过智能合约或者论坛投票的形式进行,当绝大部分社区成员同意核心协议升级。
还包括:将描述区块链核心协议的代码保存在区块链上,通过修改ProtocolCode,增加区块容量,然后将新的Protocol Code打包到区块中,提交到链上;当同意升级的赞成票票数大于2/3时,Protocol Code开始生效;通过各个节点的虚拟机加载新的Protocol Code,之后扩容后的区块将能被所有区块接受,区块链得到升级。
本发明的区块链系统中核心协议的升级方法,具有如下有益效果:
该区块链系统中核心协议的升级方法,通过将核心协议内置于区块数据结构中,利用对区块链上数据的追加机制来实现核心协议的升级,从而解决了现有区块链系统中核心协议一旦确定后不可再升级的问题(强制升级通常会造成软分叉或硬分叉),从而避免了开发者和社区的分裂或分叉的可能性。
附图说明
图1为本发明实施例区块链系统中核心协议的区块结构以及核心协议代码在区块结构的位置示意图;
图2为本发明实施例区块链系统的核心协议的升级过程示意图。
具体实施方式
下面结合附图及本发明的实施例对本发明区块链系统中核心协议的升级方法作进一步详细的说明。
图1为本发明实施例区块链系统中核心协议的区块结构以及核心协议代码在区块结构的位置示意图。
如图1所示,该区块链系统中核心协议的区块结构,主要包括如下域(或者称:字段):区块头(Header)、交易数据(Transactions)、投票统计(Votes)、核心协议代码(Protocol Code)。其中:
所述区块头(Header),进一步包括如下子域:高度(Height)、父区块哈希值(ParentHash)、时间戳(Ts)、记账人地址(Miner)、状态根哈希值(StateRoot)、交易根哈希值(TxsRoot)、交易收据根哈希值(ReceiptsRoot)。
所述交易数据(Transactions),交易数据包含多个交易。其进一步包括如下子域:
交易发起地址(From);
交易接收(To),代表(普通用户或智能合约)地址,对于创建智能合约,值为0地址;
转账金额(Value);
交易的payload(Data),如果交易为创建智能合约,则为智能合约字节码;如果交易为智能合约调用,包含调用函数名称和入参值;
交易签名(Signature),
燃料上限(Gas);
燃料单价(GasPrice);
标识交易唯性(Nonce)。
所述投票统计(Votes),用于核心协议是否需要升级的投票;其进一步包括如下子域:
投票人(From);
投票区块哈希值(VoteHash);
核心协议代码哈希值(Protocol CodeHash):即核心协议代码(Protocol Code)域中的哈希值(Hash);
投票类型(VoteType);
投票签名(Signature)。
所述的核心协议代码(Protocol Code),这里,一个区块中只能有0或1;其进一步包括如下子域:
哈希值(Hash);
核心协议的字节码(Code);
签名(Signature),用于校验是否来自开发者社区保留账号的签名;
标识核心协议版本号(Version):用于每次升级都需要递增,防止恶意记账回滚到老/旧的Protocol Code;
标识唯一性(Nonce)。
图2为本发明实施例区块链系统的核心协议的升级过程示意图。
如图2所示,该升级过程即升级方法包括如下步骤:
步骤21:在上述区块链的区块结构中,增加新的数据类型,即增加核心协议代码(Protocol Code)和投票统计Votes域。
这里,将所述的核心协议代码域作为区块链数据的一部分存储在区块链上,所述区块链基础协议的升级,是通过链上数据的追加而实现的。相应的,区块数据的定义如下:
所述的核心协议代码(Protocol Code),包括如下子域:哈希值(Hash);核心协议的字节码(Code);签名(Signature),用于校验是否来自开发者社区保留账号的签名;标识核心协议版本号(Version):用于每次升级都需要递增,防止恶意记账回滚到老/旧的Protocol Code;标识唯一性(Nonce)。
所述投票统计(Votes)域,用于核心协议是否需要升级的投票;其包括如下子域:投票人(From);投票区块哈希值(VoteHash);核心协议代码哈希值(Protocol Code Hash);投票类型(VoteType);投票签名(Signature)。
步骤22:将所述Protocol Code的发布者设置为所述区块链核心开发组保留地址,规定该地址在创世区块内部硬编码无法变更;所有记账节点均验证Protocol Code签名,签名不通过则视为非法数据。
这样,是为了保证核心协议代码均是经过授权发布的,避免了被篡改的可能性。
步骤23:通过区块链客户端节点从当前最新区块的Protocol Code存储区获取编译后的虚拟机字节码(NVM字节码),如果当前最新区块没有Protocol Code数据,说明核心协议没有变更,就往前追溯到最近区块的Protocol Code。区块链的核心协议行为均由Protocol Code确定,包括验证算法、打包规则、奖励机制等,在本发明实施例中,几乎绝大部分的区块链行为都可以由Protocol Code定义。或者,执行步骤24。
这里,所述追溯的Protocol Code,是指上一个投票通过的Protocol Code,投票结果也在链上,可以保证全网在Protocol Code上的一致性。
步骤24:通过区块链客户端节点从当前最新区块的Protocol Code存储区获取编译后的虚拟机字节码(NVM字节码),如果当前最新区块有Protocol Code数据,说明核心协议有变更,此时,如果核心协议需要升级,则将升级代码通过公开渠道(如社区)进行讨论和投票。
这里,具体的投票过程,可以通过智能合约或者论坛投票的形式进行,当投票统计(Votes)域中绝大部分社区成员同意核心协议升级,则将Protocol Code数据上链后开始投票,投票通过则生效。此时,新的Protocol Code已经上链了,上链后才能投票,投票通过则立即在下一个区块(或指定的区块)生效,不用再次打包上链。
具体实施例如下:
将描述区块链核心协议的代码保存在区块链上,比如现在的Protocol Code版本是1.0。现在我们想要扩容区块的容量,而区块容量的变化会影响多个模块的修改,而这些模块的代码都在Protocol Code中,所以我们修改Protocol Code,增加区块容量,然后将新的Protocol Code打包到区块中,提交到链上。此时,所有区块链的有效地址都可以投赞成票,当赞成票大于2/3时,Protocol Code开始生效。各个节点的虚拟机将会加载新的Protocol Code,之后扩容后的区块将能被所有区块接受,区块链得到升级。
本发明上述的这种区块链核心协议升级方式,对客户端来说,均是透明的,不会造成软分叉、硬分叉现象。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (7)

1.一种区块链系统中核心协议的升级方法,其特征在于,包括如下步骤:
A、在区块链的区块结构中,增加新的数据类型,即增加核心协议代码Protocol Code和投票统计Votes域;
B、将Protocol Code的发布者设置为所述区块链核心开发组保留地址,规定该地址在创世区块内部硬编码无法变更;所有记账节点均验证Protocol Code签名,签名不通过则视为非法数据;
C、通过区块链客户端节点从当前最新区块的Protocol Code存储区获取编译后的虚拟机字节码,如果当前最新区块有Protocol Code数据,说明核心协议需要升级,则将升级代码通过公开渠道进行讨论和投票;如果所述投票统计Votes域中投票结果显示超过一定比例的社区成员同意核心协议升级,则将Protocol Code数据上链后开始投票,投票通过则生效。
2.根据权利要求1所述区块链系统中核心协议的升级方法,其特征在于,步骤B之后还包括:
通过区块链客户端节点从当前最新区块的Protocol Code存储区获取编译后的虚拟机字节码,如果当前最新区块没有Protocol Code数据,说明核心协议没有变更,就往前追溯到最近区块的Protocol Code。
3.根据权利要求2所述区块链系统中核心协议的升级方法,其特征在于,所述追溯的Protocol Code,是指上一个投票通过的Protocol Code,投票结果也在链上,用于保证全网在Protocol Code上的一致性。
4.根据权利要求1所述区块链系统中核心协议的升级方法,其特征在于,步骤A所述增加的核心协议代码Protocol Code域,包括如下子域:哈希值Hash;核心协议的字节码Code;签名Signature;标识核心协议版本号Version;标识唯一性Nonce。
5.根据权利要求1所述区块链系统中核心协议的升级方法,其特征在于,步骤A所述增加的投票统计Votes域,用于核心协议是否需要升级的投票;其包括如下子域:投票人From;投票区块哈希值VoteHash;核心协议代码哈希值Protocol Code Hash;投票类型VoteType;投票签名Signature。
6.根据权利要求1所述区块链系统中核心协议的升级方法,其特征在于,步骤C所述将升级代码通过公开渠道进行讨论和投票,具体包括:
通过智能合约或者论坛投票的形式进行,当绝大部分社区成员同意核心协议升级。
7.根据权利要求1或6所述区块链系统中核心协议的升级方法,其特征在于,还包括:
将描述区块链核心协议的代码保存在区块链上,通过修改Protocol Code,增加区块容量,然后将新的Protocol Code打包到区块中,提交到链上;当同意升级的赞成票票数大于2/3时,Protocol Code开始生效;通过各个节点的虚拟机加载新的Protocol Code,之后扩容后的区块将能被所有区块接受,区块链得到升级。
CN201711449386.4A 2017-12-27 2017-12-27 一种区块链系统中核心协议的升级方法 Pending CN108170449A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711449386.4A CN108170449A (zh) 2017-12-27 2017-12-27 一种区块链系统中核心协议的升级方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711449386.4A CN108170449A (zh) 2017-12-27 2017-12-27 一种区块链系统中核心协议的升级方法

Publications (1)

Publication Number Publication Date
CN108170449A true CN108170449A (zh) 2018-06-15

Family

ID=62518578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711449386.4A Pending CN108170449A (zh) 2017-12-27 2017-12-27 一种区块链系统中核心协议的升级方法

Country Status (1)

Country Link
CN (1) CN108170449A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109358881A (zh) * 2018-10-24 2019-02-19 杭州趣链科技有限公司 一种基于智能合约的权限可控的智能合约升级方法
CN109491682A (zh) * 2018-10-24 2019-03-19 杭州趣链科技有限公司 一种基于智能合约的权限可控的区块链系统自动升级方法
CN109814905A (zh) * 2019-01-17 2019-05-28 上海边界智能科技有限公司 一种基于区块链的软件升级方法及装置
CN109992285A (zh) * 2019-04-02 2019-07-09 杭州秘猿科技有限公司 区块链代码块独立升级方法、装置及电子设备
CN110048846A (zh) * 2018-12-12 2019-07-23 阿里巴巴集团控股有限公司 一种基于区块链智能合约的签名验证方法及系统
CN111831301A (zh) * 2019-12-25 2020-10-27 北京熠智科技有限公司 支持无分叉升级的区块链运行时环境系统、方法
CN112085604A (zh) * 2020-09-10 2020-12-15 北京金山云网络技术有限公司 一种升级智能合约的方法及装置
CN112162768A (zh) * 2020-10-14 2021-01-01 支付宝(杭州)信息技术有限公司 一种区块链升级方法和系统
CN112187913A (zh) * 2020-09-24 2021-01-05 普华云创科技(北京)有限公司 一种基于智能合约实现共识的方法与系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105592098A (zh) * 2016-01-16 2016-05-18 杭州复杂美科技有限公司 区块链上的投票及ca证书的管理方法
CN106406896A (zh) * 2016-09-27 2017-02-15 北京天德科技有限公司 一种并行PipeLine技术的区块链建块方法
CN106709704A (zh) * 2016-11-23 2017-05-24 杭州秘猿科技有限公司 一种基于许可链的智能合约升级方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105592098A (zh) * 2016-01-16 2016-05-18 杭州复杂美科技有限公司 区块链上的投票及ca证书的管理方法
CN106406896A (zh) * 2016-09-27 2017-02-15 北京天德科技有限公司 一种并行PipeLine技术的区块链建块方法
CN106709704A (zh) * 2016-11-23 2017-05-24 杭州秘猿科技有限公司 一种基于许可链的智能合约升级方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
NEBULAS TEAM: "《Nebulas 星云链技术白皮书》", 30 September 2017 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020082897A1 (zh) * 2018-10-24 2020-04-30 杭州趣链科技有限公司 一种基于智能合约的权限可控的智能合约升级方法
CN109491682A (zh) * 2018-10-24 2019-03-19 杭州趣链科技有限公司 一种基于智能合约的权限可控的区块链系统自动升级方法
US11301233B2 (en) 2018-10-24 2022-04-12 Hangzhou Qulian Technology Co., Ltd. Permission-controlled smart contract upgrade method based on smart contract
CN109358881B (zh) * 2018-10-24 2020-06-16 杭州趣链科技有限公司 一种基于智能合约的权限可控的智能合约升级方法
CN109358881A (zh) * 2018-10-24 2019-02-19 杭州趣链科技有限公司 一种基于智能合约的权限可控的智能合约升级方法
CN110048846A (zh) * 2018-12-12 2019-07-23 阿里巴巴集团控股有限公司 一种基于区块链智能合约的签名验证方法及系统
CN110048846B (zh) * 2018-12-12 2020-04-14 阿里巴巴集团控股有限公司 一种基于区块链智能合约的签名验证方法及系统
CN109814905A (zh) * 2019-01-17 2019-05-28 上海边界智能科技有限公司 一种基于区块链的软件升级方法及装置
CN109814905B (zh) * 2019-01-17 2023-06-16 上海边界智能科技有限公司 一种基于区块链的软件升级方法及装置
CN109992285A (zh) * 2019-04-02 2019-07-09 杭州秘猿科技有限公司 区块链代码块独立升级方法、装置及电子设备
CN109992285B (zh) * 2019-04-02 2022-09-16 杭州秘猿科技有限公司 区块链代码块独立升级方法、装置及电子设备
CN111831301A (zh) * 2019-12-25 2020-10-27 北京熠智科技有限公司 支持无分叉升级的区块链运行时环境系统、方法
CN111831301B (zh) * 2019-12-25 2024-04-09 北京熠智科技有限公司 支持无分叉升级的区块链运行时环境系统、方法
CN112085604A (zh) * 2020-09-10 2020-12-15 北京金山云网络技术有限公司 一种升级智能合约的方法及装置
CN112187913A (zh) * 2020-09-24 2021-01-05 普华云创科技(北京)有限公司 一种基于智能合约实现共识的方法与系统
CN112162768A (zh) * 2020-10-14 2021-01-01 支付宝(杭州)信息技术有限公司 一种区块链升级方法和系统

Similar Documents

Publication Publication Date Title
CN108170449A (zh) 一种区块链系统中核心协议的升级方法
CN110020860B (zh) 一种跨链资产转移方法、系统及计算机可读存储介质
WO2020107919A1 (zh) 基于创新性的信誉证明共识协议的分布式网络及生态系统
EP3779760B1 (en) Blockchain-based data processing method and apparatus, and electronic device
GB2597592A (en) Computer-implemented control system and method
CN108196872A (zh) 一种区块链系统中智能合约的升级方法
CN108492108A (zh) 区块链跨链通信方法、系统和计算机可读存储介质
US20200167770A1 (en) Blockchain implementation across multiple organizations
EP4315214A2 (en) Advanced transactional protocols and ecosystem for smart contract authoring and deployment
CN108804706A (zh) 一种区块链数据处理方法、装置、设备及存储介质
CN109347651B (zh) 基于msvl的区块链系统建模和安全性验证的方法及系统
US11443307B2 (en) Cross-border resource transfer authenticity verification method, device and electronic equipment
US20090265392A1 (en) Data verifying device, data verifying method, and data verifying program
CN109493223A (zh) 一种记账方法及装置
WO2007011840A3 (en) System and method for new execution and management of financial and data transactions
CN101727712B (zh) 一种电子现金的转账方法
CN110519246A (zh) 基于信任区块链节点的信任度计算方法
CN109118230A (zh) 基于区块链的信息处理方法和装置
CN108009445A (zh) 一种半中心化的可信数据管理系统
CN110188572A (zh) 一种应用于区块链的可消耗凭证的验证方法和装置
CN108460596B (zh) 一种基于区块链的量化值分配转移方法
CN110930152A (zh) 一种基于区块链的数据处理方法及相关设备
JP2023536163A (ja) ブロックチェーントークン
KR102274654B1 (ko) 블록체인 네트워크에 기반한 게임 데이터 저장 및 활용 방법
Scharfman et al. Decentralized finance (DeFi) compliance and operations

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20180615

RJ01 Rejection of invention patent application after publication