一种程序执行方法及装置与流程

文档序号:16974597发布日期:2019-02-26 18:51阅读:191来源:国知局
一种程序执行方法及装置与流程

本申请涉及计算机应用技术领域,尤其涉及一种程序执行方法及装置。



背景技术:

区块链技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,利用区块链技术来搭建去中心化系统,并在区块链的分布式数据库中收录各种执行程序进行自动执行,已在众多的领域中广泛的进行应用;例如,在金融科技领域,利用区块链技术搭建p2p支付平台,并在区块链上发布诸如智能合约等执行程序,可以在不经过银行等金融机构的前提下,实现不同的用户之间的点对点安全支付。



技术实现要素:

本申请提出一种程序执行方法,应用于基于区块链的去中心化系统,其中,已发布至所述区块链中的应用程序被绑定了用户标识;所述方法包括:

当接收到用户基于持有的私钥在所述区块链上向目标程序发布的目标指令时,获取所述用户的用户标识;

查询获取到的所述用户标识是否与所述目标程序绑定;

如果获取到的所述用户标识与所述目标程序绑定,则在所述目标程序中触发执行所述目标指令。

可选的,所述获取所述用户的用户标识之前,包括:

基于与用户持有的私钥对应的公钥对所述目标指令的电子签名进行验证;

如果验证通过,将所述目标指令传递至所述目标程序,由所述目标程序获取所述用户的用户标识,并查询获取到的所述用户标识是否与所述目标程序绑定;以及,在确定获取到的所述用户标识与所述目标程序绑定时,触发执行所述目标指令。

可选的,所述目标程序和所述用户标识的绑定关系记录在预设的映射表中;其中,所述预设的映射表被发布至所述区块链。

可选的,还包括:

获取与所述用户持有的私钥对应的公钥,与所述用户标识之间的绑定关系;以及,对应于所述绑定关系的电子签名;

基于所述去中心化系统存储的可信公钥针对所述电子签名进行验证;

如果验证通过,将与所述用户持有的私钥对应的公钥记录至所述映射表中,以在所述映射表中创建所述用户的用户标识,与用户持有的私钥对应的公钥之间的绑定关系。

可选的,所述用户持有的私钥对应的公钥,与所述用户标识之间的绑定关系存储在所述用户的身份证书中。

可选的,所述获取所述用户的用户标识,包括:

获取用户在基于持有的私钥在所述区块链上向目标程序发布所述目标指令时,同步发布的用户标识;或者,

基于用户持有的私钥对应的公钥,在已发布至区块链中的映射表中查询与所述公钥绑定的用户标识;其中,所述映射表记录了所述目标程序、所述用户标识,以及与用户持有的私钥对应的公钥之间的绑定关系。

可选的,其中,当所述用户持有的私钥及对应的公钥发生更新时,删除所述映射表中记录的更新前的公钥与所述用户标识的绑定关系,并在所述映射表中重新创建更新后的公钥与所述用户标识的绑定关系。

可选的,所述用户标识绑定多个公钥;其中,与所述用户标识绑定的多个公钥,分别对应不同的用户角色。

可选的,所述用户标识为基于所述用户提交的身份信息生成的用户身份编码。

可选的,已发布至所述区块链中的应用程序为智能合约程序。

本申请还提出一种程序执行装置,其特征在于,应用于基于区块链的去中心化系统中的任一节点设备,其中,已发布至所述区块链中的应用程序被绑定了用户标识;所述装置包括:

获取模块,当接收到用户基于持有的私钥在所述区块链上向目标程序发布的目标指令时,获取所述用户的用户标识;

查询模块,查询获取到的所述用户标识是否与所述目标程序绑定;

执行模块,如果获取到的所述用户标识与所述目标程序绑定,则在所述目标程序中触发执行所述目标指令。

可选的,所述装置还包括:

验证模块,获取所述用户的用户标识之前,基于与用户持有的私钥对应的公钥对所述目标指令的电子签名进行验证;如果验证通过,将所述目标指令传递至所述目标程序,由所述目标程序获取所述用户的用户标识,并查询获取到的所述用户标识是否与所述目标程序绑定;以及,在确定获取到的所述用户标识与所述目标程序绑定时,触发执行所述目标指令。

可选的,所述目标程序和所述用户标识的绑定关系记录在预设的映射表中;其中,所述预设的映射表被发布至所述区块链。

可选的,所述获取模块进一步:

获取与所述用户持有的私钥对应的公钥,与所述用户标识之间的绑定关系;以及,对应于所述绑定关系的电子签名;

基于所述去中心化系统存储的可信公钥针对所述电子签名进行验证;

如果验证通过,将与所述用户持有的私钥对应的公钥记录至所述映射表中,以在所述映射表中创建所述用户的用户标识,与用户持有的私钥对应的公钥之间的绑定关系。

可选的,所述用户持有的私钥对应的公钥,与所述用户标识之间的绑定关系存储在所述用户的身份证书中。

可选的,所述获取所述用户的用户标识,包括:

获取用户在基于持有的私钥在所述区块链上向目标程序发布所述目标指令时,同步发布的用户标识;或者,

基于用户持有的私钥对应的公钥,在已发布至区块链中的映射表中查询与所述公钥绑定的用户标识;其中,所述映射表记录了所述目标程序、所述用户标识,以及与用户持有的私钥对应的公钥之间的绑定关系。

可选的,其中,当所述用户持有的私钥及对应的公钥发生更新时,删除所述映射表中记录的更新前的公钥与所述用户标识的绑定关系,并在所述映射表中重新创建更新后的公钥与所述用户标识的绑定关系。

可选的,所述用户标识绑定多个公钥;其中,与所述用户标识绑定的多个公钥,分别对应不同的用户角色。

可选的,所述用户标识为基于所述用户提交的身份信息生成的用户身份编码。

可选的,已发布至所述区块链中的应用程序为智能合约程序。

在本申请中,提出了一种在基于区块链的去中心化系统中,通过为已发布至区块链中的应用程序绑定的用户标识,来决策执行相应用户发布的目标指令的机制。去中心化系统可以为发布至区块链中的应用程序分别绑定用户标识,当接收到用户基于持有的私钥在区块链上向目标程序发布的目标指令时,可以获取该用户的用户标识,并查询该用户标识是否与该目标程序绑定,如果该用户标识与该目标程序绑定,则可以在该目标程序中触发执行该目标指令。

一方面,由于在本申请中,用户标识可以唯一标识用户的身份,因此将已发布至区块链的应用程序与用户标识绑定,可以对发布至区块链的应用程序进行实名化;

另一方面,由于在本申请中,在决策上述目标指令是否能够在目标程序中触发执行时,不再使用与目标程序绑定的公钥信息来,而是使用与目标程序绑定的用户标识,因此在用户持有的私钥以及对应的公钥发生更新时,用户仍然可以使用更新后的私钥正常的向上述目标程序发布可以在该目标程序中触发执行的指令。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本申请一实施例示出的一种程序执行方法的流程示意图;

图2是本申请一实施例示出的一种程序执行装置的逻辑框图;

图3是本申请一实施例示出的一种承载所述程序执行装置的电子设备的硬件架构图。

具体实施方式

在实际应用中,对于发布至区块链中的应用程序,通常都会绑定若干授信的公钥,只有持有与这些绑定的公钥对应的私钥的用户,才具有在区块链中向这些应用程序发布,能够在这些应用程序中触发执行的指令的权限。即通过为已发布至区块链中的应用程序绑定公钥,相当于为各应用程序绑定了一个授信用户的名单,只有该名单中的用户向这些应用程序发布的指令,才能够在这些应用程序中触发执行。

通过这种方式,虽然在某种程度可以提升已发布至区块链的这些应用程序的安全性,然而一旦持有这些绑定的公钥以及对应的用户,发生私钥丢失、失密,导致更换了私钥以及对应的公钥时,将会造成已经发布的这些应用程序存在安全隐患,甚至彻底的不可用;

例如,以上述应用程序为发布至区块链中的智能合约程序为例,如果与该智能合约程序绑定的公钥以及对应的私钥出现丢失或者被破解,不仅会造成该智能合约程序的彻底不可用,甚至会由于该唯一私钥被冒用而对用户造成损失。

可见,现有的基于与已发布至区块链的应用程序绑定的公钥,来决策用户向区块链中的应用程序发布的指令,是否能够在该应用程序中触发执行的机制,存在着明显的技术局限,在这些应用程序绑定的公钥对应的私钥出现丢失或者被破解的特殊场景下,会影响目标程序的执行稳定性以及安全性。

有鉴于此,本申请则提出了一种在基于区块链的去中心化系统中,通过为已发布至区块链中的应用程序绑定的用户标识,来决策执行相应用户发布的目标指令的机制。

在实现时,去中心化系统可以为发布至区块链中的应用程序分别绑定用户标识,当接收到用户基于持有的私钥在区块链上向目标程序发布的目标指令时,可以获取该用户的用户标识,并查询该用户标识是否与该目标程序绑定,如果该用户标识与该目标程序绑定,则可以在该目标程序中触发执行该目标指令。

一方面,由于在本申请中,用户标识可以唯一标识用户的身份,因此将已发布至区块链的应用程序与用户标识绑定,可以对发布至区块链的应用程序进行实名化;

另一方面,由于在本申请中,在决策上述目标指令是否能够在目标程序中触发执行时,不再使用与目标程序绑定的公钥信息来,而是使用与目标程序绑定的用户标识,因此在用户持有的私钥以及对应的公钥发生更新时,用户仍然可以使用更新后的私钥正常的向上述目标程序发布可以在该目标程序中触发执行的指令。

下面通过具体实施例并结合具体的应用场景对本申请进行描述。

请参考图1,图1是本申请一实施例提供的一种程序执行方法,应用于基于区块链的去中心化系统,执行以下步骤:

步骤101,当接收到用户基于持有的私钥在所述区块链上向目标程序发布的目标指令时,获取所述用户的用户标识;

步骤102,查询获取到的所述用户标识是否与所述目标程序绑定;

步骤103,如果获取到的所述用户标识与所述目标程序绑定,则在所述目标程序中触发执行所述目标指令。

上述去中心化系统,具体可以是一个基于区块链技术搭建的,“去中心化”的分布式系统。

其中,在上述去中心化系统中,可以包括若干台节点设备,这些节点设备可以呈现一种高度自治的“去中心化”特性,并且可以通过搭载区块链的共识机制(比如特定的共识协商算法),将本地化产生的数据,或者发布的执行程序发布至该区块链上,并被最新生成的新区块的“记账人”(俗称“矿工”)收录至该新区块中,同时接入该区块链的各个节点可以将该区块内的所有内容同步至其本地,从而构成该区块链的分布式数据库。

通过这种方式,用户无需在后台部署大规模的服务器集群作为“数据中心”,而且用户一侧的任意形式的前端设备(比如移动终端、pc终端),都可以作为上述去中心化系统中的一台节点设备。

上述目标程序,是指被收录至区块链的分布式数据库,并同步至区块链中各台计算设备的程序代码。上述目标程序的具体形态,在本申请中不进行特别限定,可以是已经收录至区块链的分布式数据库中的,对应任意功能的执行程序;

在示出的一种实施方式中,上述目标程序具体可以是收录至至区块链中的智能合约程序。其中,所谓智能合约程序,通常是指以数字形式约定了参与者的权利和义务的执行程序。

例如,在实际应用中,上述智能合约程序具体可以是已经发布至区块链中的智能合约程序,也可以是指用于在线协商智能合约程序的在线协商程序。在初始状态下,成功注册上述去中心化系统的多方用户之间,可以依托于已收录至上述区块链的分布式数据库中的在线协商程序,共同参与协商出一段智能合约程序。

其中,在本申请中,对于已经发布并收录至区块链的分布式数据库中的应用程序,可以预先绑定用户标识(绑定的用户标识可以为一个,也可以为多个)。

在示出的一种实施方式中,上述去中心化系统在将开发完成的应用程序发布至区块链之前,可以为各应用程序绑定用户标识,并创建用于记录各应用程序和已绑定的用户标识之间的绑定关系的映射表,然后将该映射表发布至区块链,在区块链的分布式数据库中进行收录。

例如,在一种实现方式中,可以将上述映射表与上述应用程序一起发布至区块链。当然,在实际应用中,上述映射表也可以在上述应用程序被发布至区块链之前,或者之后单独发布,在本申请中不进行特别限定。

通过这种方式,使得应用程序的开发者,在为各应用程序绑定用户标识时,可以不再需要将绑定的用户标识,写入应用程序的代码中,而是通过映射表的形式,来维护各个应用程序和绑定的用户标识之间的绑定关系,从而可以灵活的对与各应用程序绑定的用户标识进行修改更新,而不需要修改应用程序的底层代码。

当然,在实际应用中,与各应用程序绑定的用户标识,也可以提前写入各应用程序的代码中;

例如,在一种场景中,假设一个已发布的应用程序绑定了多个用户标识,并且每一个用户标识可以向该应用程序发布的指令类型,以及触发的执行动作均不尽相同,在这种情况下,为了使应用程序能够正确区分出不同的用户标识,仍然可以采用将用户标识写入应用程序的代码中的方式。

上述用户标识,具体可以是被上述去中心化系统存储的可信公钥授权的身份标识;该“授权”可理解为上述用户标识具体可以由上述可信公钥对应的私钥的持有者来配置,当上述可信公钥对应的私钥的持有者为用户配置了用户标识后,可以基于持有的私钥对该用户标识和该用户的公钥的绑定关系进行电子签名。

而上述去中心化系统可以预先存储一个或者多个公开的可信公钥(比如可以在区块链的程序代码中添加可信公钥列表),当接收到携带了电子签名的用户标识和公钥的绑定关系后,可以基于存储的可信公钥对该用户标识和公钥的绑定关系的电子签名进行验证;当验证通过后,即可确认该用户标识为经过上述可信公钥授权的身份标识。

其中,与上述可信公钥对应的私钥的持有方,在本申请中不进行特别限定,可以是上述去中心化系统的运营方(比如去中心化系统的运营方具有ca资质),也可以是第三方的ca机构。即在本申请中,上述用户标识,可以是由上述去中心化系统配置,也可以由第三方ca机构来配置。

类似的,与上述用户持有的私钥对应的公钥,和上述用户的用户标识之间的绑定关系,具体也可以是由上述去中心化系统建立完成,也可以是由第三方的ca机构建立完成。

例如,在一种实现方式中,第三方ca机构可以基于用户提交的个人身份信息(比如用户的身份证号或者企业法人的纳税人识别号、组织机构代码或统一社会信用代码等能够唯一标识用户身份的信息),为用户生成唯一对应的用户标识),并建立该用户与该用户持有的私钥对应的公钥的绑定关系,然后将该绑定关系存储在该用户的用户身份证书中,由用户持有。

其中,上述用户标识,具体可以是通过诸如哈希算法等摘要算法对用户提交的信息进行计算,得到一串可以唯一标识用户身份的字符串;当然,在实际应用中,上述用户标识具体也可以是用户提交的用户身份信息的明文数据。

以下将以第三方ca机构为用户生成用户标识,并由第三方ca机构以用户身份证书的形式向用户下发上述绑定关系为例进行说明。

其中,需要说明的是,以第三方ca机构为用户生成用户标识仅为示例性的;在实际应用中,当上述去中心化系统的运营方具有ca资质,上述用户标识以及上述用户身份证书,也可以由上述去中心化系统进行生成和下发,在本申请中不进行特别限定。

在本例中,在初始状态下,用户可以向上述去中心化系统提交个人身份信息(比如用户的身份证号或者企业法人的统一社会信用代码等能够唯一标识用户身份的信息),向上述去中心化系统发起注册,当注册完成后可以基于注册完成的用户账号以及相关的输入口令登录上述去中心化系统,并将注册完成的用户账号与用户持有的便携式智能硬件进行绑定。

上述便携式智能硬件,具体可以是一个用于进行非对称加密通信、电子签名和对用户身份进行数字认证的便携式智能硬件;比如,该便携式智能硬件具体可以是usbkey硬件。

其中,在该便携式智能硬件中可以内置为用户生成私钥公钥对的安全算法。

在示出的一种实施方式中,当用户首次使用该便携式智能硬件,将该便携式智能硬件通信连接到该去中心化系统维护的授信公钥所代表的授权系统(如ca认证中心),该便携式智能硬件可以调用内置的安全算法,为该用户生成一个私钥以及对应于该私钥的公钥。

其中,私钥将作为保密数据保存在硬件内由用户个人持有,公钥将上传至该区块链存储的可信公钥所代表的授权系统(如ca认证中心),以由该授权系统来建立用户公钥与用户标识之间的的绑定关系;比如,该绑定关系具体可以以用户身份证书的形式存储。用户标识可用代表用户身份的唯一性信息,比如用户的身份证号或者企业法人的纳税人识别号、组织机构代码或统一社会信用代码等信息生成。

其中,在本例中,上述用户身份标识具体可以是上述ca机构基于哈希算法对上述个人身份信息进行计算生成的一个唯一的用户身份编码。

当为该用户生成了用户身份编码后,可以将该用户身份编码与该用户的公钥进行绑定,然后将该绑定关系存储在为用户生成的用户身份证书中;用户持有的私钥作为保密数据将不包含在用户身份证书中。除此之外,在建立上述绑定关系时,用户还可提供用户的名称、地址等其他信息至上述授权机构,以在建立的绑定关系中加入更多的用户身份信息。

当然,在实际应用中,同一个用户可能会同时承担多个用户角色,并基于持有的多个私钥,在不同的用户角色下来完成相应的操作;在这种情况下,该用户的用户身份编码可与多个公钥绑定,每一个公钥可以分别对应不同的用户角色。

例如,以企业的法人为例,作为企业的法人可能会在签署某一份电子文书的流程中,涉及到多个签字角色,如经办人、复核人、审批人等。在这种情况下,区块链数据库存储的可信公钥所代表的授权机构可以为该多个角色分别绑定一个对应的公钥,以便于该企业的法人可以在不同的用户角色下,使用不同的公钥以及对应的私钥,完成相应的签约确认行为。

在本例中,当ca机构为用户生成了用户身份证书后,可以使用代表ca机构的可信公钥对应的私钥,对该用户身份证书进行电子签名,然后将电子签名后的用户身份证书下发至上述智能硬件,在上述智能硬件的安全存储环境中进行存储。

在上述区块链去中心化系统中,可以预先配置一个可信公钥列表,在该可信公钥列表中可以包含若干个可信的第三方ca机构的公钥,以及与各公钥对应的电子签名算法。当用户首次使用上述智能硬件时,上述去中心化系统中与该智能硬件对接的节点设备,可以基于上述可信公钥列表中的公钥,以及对应的电子签名算法,对上述用户身份证书中的电子签名进行验证,如果验证通过则可以从该用户身份证书中读取与该用户持有的私钥对应的公钥,然后记录至上述映射表中,以在上述映射表中创建该用户的用户标识,和与该用户持有的私钥对应的公钥之间的绑定关系。

即在本申请中,在向区块链发布应用程序的阶段,上述映射表中默认可以仅记录用户标识和应用程序之间的绑定关系,当用户持有含ca机构认证的证书的usbkey登陆到该去中心化的区块链系统,经区块链上的可信任公钥验签证书通过,区块链可以从该用户的证书中读取其用户标识和公钥,再将用户的用户标识写入上述映射表,与用户持有的私钥对应的公钥进行绑定,此时可以认为用户已经完成注册。上述映射表中最终将记录了已发布的应用程序、用户标识、以及用户持有的私钥对应的公钥等三者的绑定关系。

当然,在实际应用中,如果用户持有的私钥发生失密或者丢失;比如,用户持有的便携式智能硬件被破解或者丢失,造成用户更换了持有的私钥,此时用户的公钥通常也会同步的进行更新;在这种情况下,用户可以使用更换后的便携式智能硬件重新接入上述节点设备,与用户注册完成的用户账户重新进行绑定,并重复以上过程,触发ca机构重新为该用户生成并下发用户身份证书,并基于重新下发的用户身份证书中的信息,删除上述映射表中记录的更新前的公钥与上述用户标识的绑定关系,并在上述映射表中重新创建更新后的公钥与上述用户标识之间的绑定关系。

通过这种方式,使得用户持有的私钥失密或者丢失,造成用户持有的私钥以及对应的公钥发生更新时,该用户标识仍然可以保持唯一不变,从而可以保证在区块链数据库进行电子存证和溯源时身份的唯一性。

在本申请中,当将用户的用户标识,与用户持有的私钥对应的公钥成功绑定后,后续该用户可以基于与该公钥对应的私钥,在区块链上向与该用户标识具有绑定关系的目标程序发布执行指令,来触发该目标程序进行执行。

其中,用户通过持有的私钥向上述目标程序发布执行指令的具体方式,在本申请中不进行限定;

例如,以上述目标程序为发布在区块链上用于进行在线签约的智能合约程序为例,当在该去中心化系统中任一节点设备上,访问与上述目标程序对应的业务页面,并在该业务页面上发起了一次签约确认时,可以进一步在该节点设备上通过上述智能硬件执行了一次签约确认操作;比如,可以是点击该智能硬件上的确认按钮的操作;然后,触发上述智能硬件基于用户持有的私钥提交一个用于进行签约确认的执行指令,并将该执行指令在区块链上发布至上述目标程序。

其中,用户向上述目标程序发布的执行指令中,通常包括指令代码、基于私钥提交的电子签名、以及与用户持有的私钥对应的公钥。

另外,上述执行指令的具体类型,在本申请也不进行特别限定;例如,上述执行指令可以是触发上述目标程序启动的启动指令,也可以是用于触发上述目标程序执行任意类型的业务流程的业务指令。

当上述执行指令被发布至区块链后,首先可以基于与用户持有的私钥对应的公钥,对该执行指令的电子签名进行验证,当验证通过后,可以进一步执行如图1中步骤101-103示出的,基于用户标识来确定发布至目标程序的执行指令,是否能够在上述目标程序中执行的决策流程。

其中,需要说明的是,上述步骤101-103示出的决策流程,具体可以由上述区块链的底层代码来执行,也可以由上述目标程序作为执行主体来执行。

即在实际应用中,上述步骤101-103示出的决策流程对应的执行逻辑,可以以代码的形式写入区块链的底层代码,也可以写入发布至区块链的上述目标程序。

在示出的一种实施方式中,当区块链对上述执行指令的电子签名验证通过后,首先可以判断发布的该执行指令,是否为需要基于用户标识来进行决策的指令;比如,可以直接根据指令类型来判断;

一方面,如果经过判断,该执行指令为不需要基于用户标识来进行决策的普通指令时,则可以直接将该执行指令传递至上述目标程序进行执行即可。

另一方面,如果经过判断,该执行指令为需要基于用户标识来进行决策的指令,那么可以进一步获取发布该执行指令的用户的用户标识,并基于获取到的用户标识来决策该执行指令是否为能够在上述目标程序中触发执行的指令;

即在本申请中,并不是用户基于持有的私钥提交的所有执行指令,均需要基于用户标识进行决策,在实际应用中,本领域技术人员可以基于实际的业务需求,仅将部分类型的执行指令定义为需要基于用户标识进行决策的指令,从而可以提升业务的灵活性。

比如,在不同的业务场景中,对指令进行触发执行的安全等级可能并不相同,对于安全等级较高的业务场景,可以基于用户标识对该执行指令进行进一步的决策;而对于安全等级较低的业务场景,可以将所有执行指令均作为普通指令进行执行即可。

其中,在获取用户标识时的具体实现方式,在本申请中不进行特别限定;

例如,在一种实现方式中,用户在向上述目标程序发布执行指令时,可以将自身的用户标识一并发布至区块链,在这种情况下,区块链可以通过获取用户在发布上述执行指令时,同步发布的用户标识,来取得该用户的用户标识。在另一种实现方式中,区块链在接收到用户向上述目标程序发布的执行指令后,也可以从该执行指令中读取公钥信息,然后将该公钥信息作为查询索引,在上述映射表执行一次查询,来查询该用户的用户标识。

当获取到的该用户的用户标识后,区块链可以进一步查询获取到的该用户标识,是否与上述目标程序绑定;例如,可以将该用户标识作为查询索引,在上述映射表中执行一次查询,来查询与该用户标识绑定的应用程序,并基于结果来确定该用户标识是否已与上述目标程序绑定。

如果该用户标识已经与上述目标程序绑定,此时表明与该用户标识绑对应的用户,基于当前持有的私钥向上述目标程序发布的执行指令,可以在该目标程序中触发执行,因此区块链可以进一步将该执行指令传递至上述目标程序(比如,基于上述执行指令中携带的上述目标程序的调用接口信息,将上述执行指令传递至上述目标程序),在该目标程序中进行触发执行。

通过这种方式,区块链可以在执行完毕如上述步骤101-103示出的决策流程,确定出发布上述执行指令的用户的用户标识,已与该目标程序绑定,该执行指令可以在该目标程序中触发执行时,再将该执行指令传递至上述目标程序,因而对于上述目标程序而言,将仅能够收到那些可以在该目标程序中触发执行的执行指令,可以显著的提升该目标程序的执行效率(即目标程序接收到的每一个指令都是可以触发执行的指令)以及程序的安全性(即只有少部分可以执行的指令能够最终传递至该智能合约)。

在示出的另一种实施方式中,当区块链对上述执行指令的电子签名验证通过后,也可以进一步将该执行指令传递至上述目标程序,由上述目标程序来继续执行如上述步骤101-103示出的决策流程。

例如,在一种方式中,区块链可以将用户在发布上述执行指令时,同步发布的用户标识,一并传递给上述目标程序,由上述目标程序进一步查询与该用户标识绑定的应用程序,进而确定该用户标识是否已与自身绑定,并在确定该用户标识已与自身绑定时,触发执行该执行指令。

在另一种实现方式中,上述目标程序也可以将该执行指令中携带的公钥作为查询索引,在上述映射表中查询绑定的用户标识,然后进一步确定该用户标识是否已与自身绑定,并在确定该用户标识已与自身绑定时,触发执行该执行指令。

通过这种方式,区块链可以在对接收到发布至上述目标程序的执行指令的电子签名验证通过后,就可以立即将该执行指令传递至上述目标程序,由上述目标程序执行如上述步骤101-103示出的决策流程,来确定发布上述执行指令是否可以在该目标程序中触发执行,因此对于上述目标程序而言,将能够接收到所有发布至该目标程序的执行指令。

其中,需要补充说明的是,对于发布在区块链上的应用程序(比如智能合约程序)而言,其底层的运行环境,通常可以是在区块链的软件环境中搭建的虚拟机。

即在实际应用中,对于区块链中的任一节点设备而言,可以将发往目标程序的执行指令,传递给与该目标程序对应的虚拟机;而该虚拟机可以在自身的软件执行环境中,加载该目标程序的执行代码,并基于加载的这些执行代码来响应和执行上述节点设备传递的执行指令,然后将执行结果发布至区块链。在本申请中,如果用户持有的私钥发生失密或者丢失;比如,用户持有的便携式智能硬件被破解或者丢失,造成用户更换了持有的私钥,此时用户的公钥通常也会同步的进行更新;在这种情况下,由于用户可以使用更换后的便携式智能硬件重新接入上述区块链,与用户注册完成的用户账户重新进行绑定,并通过重复以上过程,触发ca机构重新为该用户生成并下发用户身份证书,并基于重新下发的用户身份证书中的信息,删除上述映射表中记录的更新前的公钥与上述用户标识的绑定关系,以及在上述映射表中重新创建更新后的公钥与上述用户标识之间的绑定关系,因此对于上述用户而言,用户标识并没有发生变化,进而该用户仍然可以使用更新后的私钥,基于同一个用户身份向上述目标程序发布能够在上述目标程序中触发执行的执行指令。

在整个过程中,由于与上述目标程序绑定的用户标识始终未发生变化,因此用户持有的私钥以及对应的公钥的变化,并不会对上述目标程序造成任何影响。

例如,虽然用户持有的私钥以及对应的公钥发生了变化,但与上述目标程序建立绑定关系的为用户标识,并不是用户的公钥,因此并不会导致该目标程序彻底不可用;

又如,由于用户持有的私钥和对应的公钥发生变化后,会及时的更新上述映射表,解除更新前的公钥与上述目标程序的绑定关系,并重新建立更新后的公钥与上述目标程序的绑定关系,因此对于非法用户而言,使用更换前的私钥并不能向该目标程序发布可以执行的执行指令。

可见,通过以上实施例可知,本申请提出的在基于区块链的去中心化系统中,通过为已发布至区块链中的应用程序绑定的用户标识,来决策执行相应用户发布的目标指令的机制,可以有效避免由于用户持有的私钥以及对应的公钥发生更新,而造成的发布至区块链中的应用程序不可用或者存在安全隐患的问题,有助于保证上述目标程序的稳定性以及安全性,

与上述方法实施例相对应,本申请还提供了装置的实施例。

请参见图2,本申请提出一种程序执行装置20,应用于基于区块链的去中心化系统中;

其中,请参见图3,作为承载所述程序执行装置20的电子设备所涉及的硬件架构中,通常包括处理器、内存、非易失性存储器、网络接口以及内部总线等;以软件实现为例,所述程序执行装置20通常可以理解为加载在内存中的计算机程序,通过处理器运行之后形成的软硬件相结合的逻辑装置,所述程序执行装置20包括:

获取模块201,当接收到用户基于持有的私钥在所述区块链上向目标程序发布的目标指令时,获取所述用户的用户标识;

查询模块202,查询获取到的所述用户标识是否与所述目标程序绑定;

执行模块203,如果获取到的所述用户标识与所述目标程序绑定,则在所述目标程序中触发执行所述目标指令。

在本实施例中,所述装置20还包括:

验证模块204(图2中未示出),获取所述用户的用户标识之前,基于与用户持有的私钥对应的公钥对所述目标指令的电子签名进行验证;如果验证通过,将所述目标指令传递至所述目标程序,由所述目标程序获取所述用户的用户标识,并查询获取到的所述用户标识是否与所述目标程序绑定;以及,在确定获取到的所述用户标识与所述目标程序绑定时,触发执行所述目标指令。

在本实施例中,所述目标程序和所述用户标识的绑定关系记录在预设的映射表中;其中,所述预设的映射表被发布至所述区块链。

在本实施例中,所述获取模块201进一步:

获取与所述用户持有的私钥对应的公钥,与所述用户标识之间的绑定关系;以及,对应于所述绑定关系的电子签名;

基于所述去中心化系统存储的可信公钥针对所述电子签名进行验证;

如果验证通过,将与所述用户持有的私钥对应的公钥记录至所述映射表中,以在所述映射表中创建所述用户的用户标识,与用户持有的私钥对应的公钥之间的绑定关系。

在本实施例中,所述用户持有的私钥对应的公钥,与所述用户标识之间的绑定关系存储在所述用户的身份证书中。

在本实施例中,所述获取所述用户的用户标识,包括:

获取用户在基于持有的私钥在所述区块链上向目标程序发布所述目标指令时,同步发布的用户标识;或者,

基于用户持有的私钥对应的公钥,在已发布至区块链中的映射表中查询与所述公钥绑定的用户标识;其中,所述映射表记录了所述目标程序、所述用户标识,以及与用户持有的私钥对应的公钥之间的绑定关系。

在本实施例中,其中,当所述用户持有的私钥及对应的公钥发生更新时,删除所述映射表中记录的更新前的公钥与所述用户标识的绑定关系,并在所述映射表中重新创建更新后的公钥与所述用户标识的绑定关系。

在本实施例中,所述用户标识绑定多个公钥;其中,与所述用户标识绑定的多个公钥,分别对应不同的用户角色。

在本实施例中,所述用户标识为基于所述用户提交的身份信息生成的用户身份编码。

在本实施例中,已发布至所述区块链中的应用程序为智能合约程序。

以上各实施例阐明的系统、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机或者服务器。其中,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本申请方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1