一种基于区块链填写文件的方法、系统、装置和存储介质
技术领域
本申请涉及电子合同
技术领域
,特别是涉及一种基于区块链填写文件的方法、系统、装置和存储介质。背景技术
传统用户在线下开具发票、签署合同时,通常会事先印制或打印好一份纸质材料,然后在这份纸质材料上填写相关信息。随着数字经济的发展以及电子化的普及,现在已普遍使用电子发票、电子合同、电子保单和电子病历等数据电文替代纸介质。其中,像电子发票通常会把描述电子发票的数据要素及可视化样式,制作成电子发票的模板文件;像电子合同会预先拟定格式条款,以达到重复使用的目的。而用户则需要根据模板文件或格式条款,提交信息给第三方中心化服务平台,而不是直接与模板文件进行组合,相关的操作不仅加重了用户的操作负担,而且存在信息被篡改、隐私被泄漏的风险。
目前针对相关技术中版式文件的填写存在数据不安全和操作繁杂的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种基于区块链填写文件的方法、系统、装置和存储介质,以至少解决相关技术中版式文件的填写存在数据不安全和操作繁杂的问题。
第一方面,本申请实施例提供了一种基于区块链填写文件的方法,所述方法包括:
根据预设数据要素和预设可视化样式,通过部署在区块链上的智能合约生成模板文件;
通过所述智能合约中的存储逻辑,将所述模板文件存储在所述区块链的节点账本中;
获取键值对数据,通过所述智能合约中的校验逻辑,对所述键值对数据与所述模板文件的预设数据要素进行校验;
根据所述模板文件的预设数据要素,通过所述智能合约将所述键值对数据写入模板文件对应的表单值中,并生成版式文件;
通过所述智能合约中的加密逻辑对所述版式文件进行加密,生成所述版式文件的版式加密文件;
通过所述智能合约中的存储逻辑,将所述版式加密文件存储在所述区块链的节点账本中。
在其中一些实施例中,获取键值对数据,通过所述智能合约中的校验逻辑,对所述键值对数据与所述模板文件的预设数据要素进行校验包括:
获取键值对数据,根据键名检索模板文件中设置的所述预设数据要素的约束条件,调用部署在所述区块链上的智能合约对所述键值对数据进行预设校验,并基于所述约束条件对所述键值对数据进行预设设置,其中,所述预设校验包括校验数据内容和校验数据长度,所述预设设置包括设置数据排列、设置数据字体和设置数据字号。
在其中一些实施例中,通过所述智能合约中的加密逻辑对所述版式文件进行加密,生成所述版式文件的版式加密文件包括:
通过所述智能合约中的加密逻辑对所述版式文件进行Base64编码,对所述Base64编码后的版式文件进行对称或非对称加密,生成版式加密文件。
在其中一些实施例中,通过所述智能合约中的存储逻辑,将所述版式加密文件存储在所述区块链的节点账本中包括:
通过所述智能合约中的存储逻辑对所述版式加密文件进行数据分割,生成对应的数据子集,将所述数据子集存储在所述区块链的节点账本中。
在其中一些实施例中,在通过所述智能合约中的加密逻辑对所述版式文件进行加密,生成所述版式文件的版式加密文件之后,所述方法还包括:
对所述版式加密文件进行hash运算生成对应的hash值,通过所述智能合约中的存储逻辑,将所述hash值存储在所述区块链的节点账本中,将所述版式加密文件存储在中心化存储系统或分布式文件存储系统中。
在其中一些实施例中,在根据预设数据要素和预设可视化样式,通过部署在区块链上的智能合约生成模板文件之后,所述方法还包括:
根据预设算法对所述模板文件进行处理,生成对应的数字摘要,通过所述智能合约中的存储逻辑,将所述数字摘要存储在所述区块链的节点账本中,将所述模板文件存储在中心化存储系统或分布式文件存储系统中。
在其中一些实施例中,在通过所述智能合约中的存储逻辑,将所述模板文件存储在所述区块链的节点账本中之前,所述方法还包括:
通过所述区块链上的智能合约对所述模板文件进行Base64编码。
第二方面,本申请实施例提供了一种基于区块链填写文件的系统,所述系统包括智能合约模块和节点账本模块;
所述智能合约模块根据预设数据要素和预设可视化样式,生成模板文件;
所述智能合约模块通过存储逻辑,将所述模板文件存储在所述节点账本模块中;
所述智能合约模块获取键值对数据,通过校验逻辑对所述键值对数据与所述模板文件的预设数据要素进行校验;
所述智能合约模块根据所述模板文件的预设数据要素,将所述键值对数据写入模板文件对应的表单值中,并生成版式文件;
所述智能合约模块通过加密逻辑对所述版式文件进行加密,生成所述版式文件的版式加密文件;
所述智能合约模块通过存储逻辑,将所述版式加密文件存储在所述节点账本模块中。
第三方面,本申请实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的的方法。
第四方面,本申请实施例提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上述第一方面所述的基于区块链填写文件的方法。
相比于相关技术,本申请实施例提供的一种基于区块链填写文件的方法、系统、装置和存储介质,根据预设数据要素和预设可视化样式,通过部署在区块链上的智能合约生成模板文件,通过智能合约中的存储逻辑,将模板文件存储在区块链的节点账本中,获取键值对数据,通过智能合约中的校验逻辑,对键值对数据与模板文件的预设数据要素进行校验,根据模板文件的预设数据要素,通过智能合约将键值对数据写入模板文件对应的表单值中,并生成版式文件,通过智能合约中的加密逻辑对版式文件进行加密,生成版式文件的版式加密文件,通过智能合约中的存储逻辑,将版式加密文件存储在区块链的节点账本中,解决了相关技术中版式文件的填写存在数据不安全和操作繁杂的问题,实现了直接通过区块链在模板文件上填写交互式表单,而不需要经过多系统进行反复操作,降低了用户的操作复杂度,减少了中间的流转环节,填写完成的版式文件直接和/或间接的通过区块链进行存储,基于区块链本身的不可篡改、可追溯机制,进一步保障信息安全和隐私。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是一种创建智能合约的方法示意图;
图2是一种调用智能合约的方法示意图;
图3是一种创建智能合约和调用智能合约的方法示意图;
图4是根据相关技术的电子发票生成和填写方法的步骤流程图;
图5是根据相关技术的电子合同生成和填写方法的步骤流程图;
图6是根据本申请实施例的基于区块链填写文件方法的简要步骤流程图;
图7是根据本申请实施例的基于区块链填写文件方法的步骤流程图;
图8是根据本申请实施例的基于区块链填写文件系统的结构框图;
图9是根据本申请实施例的电子设备的内部结构示意图。
附图说明
:81、智能合约模块;82、节点账本模块。具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还可以有上述多种类型的结合,比如私有链+联盟链、联盟链+公有链等。
其中,去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者(也可称为区块链中的节点)可以读取链上的数据记录、参与交易、以及竞争新区块的记账权等。而且,各节点可自由加入或者退出网络,并进行相关操作。
私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,其对节点具有严格限制且节点数量较少。这种类型的区块链更适合于特定机构内部使用。
联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
基于区块链的基本特性,区块链通常是由若干个区块构成。在这些区块中分别记录有与该区块的创建时刻对应的时间戳,所有的区块严格按照区块中记录的时间戳,构成一条在时间上有序的数据链条。
对于物理世界产生的真实数据,可以将其构建成区块链所支持的标准的交易(transaction)格式,然后发布至区块链,由区块链中的节点设备对收到的交易进行共识处理,并在达成共识后,由区块链中作为记账节点的节点设备,将这笔交易打包进区块,在区块链中进行持久化存证。
其中,区块链中支持的共识算法可以包括:
第一类共识算法,即节点设备需要争夺每一轮的记账周期的记账权的共识算法;例如,工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)等共识算法;
第二类共识算法,即预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法;例如,实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等共识算法。
在采用第一类共识算法的区块链网络中,争夺记账权的节点设备,都可以在接收到交易后执行该笔交易。争夺记账权的节点设备中可能有一个节点设备在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将收到的交易与其它交易一起打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
在采用第二类共识算法的区块链网络中,具有记账权的节点设备在本轮记账前已经商定好。因此,节点设备在接收到交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包以生成最新区块的过程中或者之前,可以执行该交易。记账节点在生成最新区块后,可以将该最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
如上所述,无论区块链采用以上示出的哪种共识算法,本轮的记账节点都可以将接收到的交易打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识验证。如果其它节点设备接收到最新区块或者该最新区块的区块头后,经验证没有问题,可以将该最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该区块中的包含的交易。
在区块链领域,有一个重要的概念就是账户(Account);以以太坊为例,以太坊通常将账户划分为外部账户和合约账户两类;外部账户就是由用户直接控制的账户,也称之为用户账户;而合约账户则是由用户通过外部账户创建的,包含合约代码的账户(即智能合约)。当然,对于一些基于以太坊的架构而衍生出的区块链项目(比如蚂蚁区块链),还可以对区块链支持的账户类型,进行进一步的扩展,在本说明书中不进行特别限定。
对于区块链中的账户而言,通常会通过一个结构体,来维护账户的账户状态。当区块中的交易被执行后,区块链中与该交易相关的账户的状态通常也会发生变化。
以以太坊为例,账户的结构体通常包括Balance,Nonce,Code和Storage等字段。其中:
Balance字段,用于维护账户目前的账户余额;
Nonce字段,用于维护该账户的交易次数;它是用于保障每笔交易能且只能被处理一次的计数器,有效避免重放攻击;
Code字段,用于维护该账户的合约代码;在实际应用中,Code字段中通常仅维护合约代码的hash值;因而,Code字段通常也称之为Codehash字段。
Storage字段,用于维护该账户的存储内容(默认字段值为空);对于合约账户而言,通常会分配一个独立的存储空间,用以存储该合约账户的存储内容;该独立的存储空间通常称之为该合约账户的账户存储。合约账户的存储内容通常会构建成MPT(MerklePatriciaTrie)树的数据结构存储在上述独立的存储空间之中;其中,基于合约账户的存储内容构建成的MPT树,通常也称之为Storage树。而Storage字段通常仅维护该Storage树的根节点;因此,Storage字段通常也称之为StorageRoot字段。
其中,对于外部账户而言,以上示出的Code字段和Storage字段的字段值均为空值。
此外,在实际应用中,不论是公有链、私有链还是联盟链,都可能提供智能合约(Smart contract)的功能。区块链上的智能合约是在区块链上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑。以太坊作为一个可编程区块链,其核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,通过它可以实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实际上,EVM直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”),所以部署在区块链上的智能合约可以是字节码。
图1是一种创建智能合约的方法示意图,如图1所示,Bob将一笔包含创建智能合约信息的交易(Transaction)发送到以太坊网络后,各节点均可以在EVM中执行这笔交易。其中,图中1中交易的From字段用于记录发起创建智能合约的账户的地址,交易的Data字段的字段值保存的合约代码可以是字节码,交易的To字段的字段值为一个null(空)的账户。当节点间通过共识机制达成一致后,这个智能合约成功创建,后续用户可以调用这个智能合约。
智能合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址;比如,图1中各节点中的“0x68e12cf284…”就代表了创建的这个合约账户的地址;合约代码(Code)和账户存储(Storage)将保存在该合约账户的账户存储中。智能合约的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。换句话说,智能合约使得区块链上产生包含合约代码和账户存储的虚拟账户。
前述提到,包含创建智能合约的交易的Data字段保存的可以是该智能合约的字节码。字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多方面考虑,开发者可以不直接书写字节码,而是选择一门高级语言编写智能合约代码。例如,高级语言可以采用诸如Solidity、Serpent、LLL语言等。对于采用高级语言编写的智能合约代码,可以经过编译器编译,生成可以部署到区块链上的字节码。
以Solidity语言为例,用其编写的合约代码与面向对象编程语言中的类(Class)很相似,在一个合约中可以声明多种成员,包括状态变量、函数、函数修改器、事件等。状态变量是永久存储在智能合约的账户存储(Storage)字段中的值,用于保存合约的状态。
图2是一种调用智能合约的方法示意图,如图2所示,仍以以太坊为例,Bob将一笔包含调用智能合约信息的交易发送到以太坊网络后,各节点均可以在EVM中执行这笔交易。其中,图2中交易的From字段用于记录发起调用智能合约的账户的地址,To字段用于记录被调用的智能合约的地址,交易的Data字段用于记录调用智能合约的方法和参数。调用智能合约后,合约账户的账户状态可能改变。后续,某个客户端可以通过接入的区块链节点(例如图2中的节点1)查看合约账户的账户状态。
智能合约可以以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当这样的交易执行完毕后,区块链上就保存了无法篡改、不会丢失的交易凭证。
图3是一种创建智能合约和调用智能合约的方法示意图,如图3所示。以太坊中要创建一个智能合约,需要经过编写智能合约、变成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,各个节点的EVM可以分别执行该交易,将智能合约代码分布式的运行在以太坊网络中每个节点的虚拟机中。
在相关技术中,电子发票通常会把描述电子发票的数据要素和可视化样式,制作成电子发票的模板文件;而像电子合同则会预先拟定格式条款,以达到重复使用的目的。这样的操作流程我们俗称“制样”,而后续使用过程中,我们只需要在经过“制样”提供的版式文件填入信息即可。
以电子发票为例,图4是根据相关技术的电子发票生成和填写方法的步骤流程图,如图4所示,该方法包括以下步骤:
S402,根据电子票据的数据要素及可视化样式,制作形成电子票据模板文件;
S404,开票平台根据模板文件使用HTML等技术按照模板文件的样式进行呈现,并通过表单等方式,收集需要填写的信息;
S406,将填写的信息与模板文件组合形成新的版式文件,通常是PDF格式的文件;
S408,税局、开票单位等使用数字证书进行签名,生成电子发票的新版式文件。
以电子合同为例,图5是根据相关技术的电子合同生成和填写方法的步骤流程图,如图5所示,该方法包括以下步骤:
S502、其中一方预先拟定格式条款,然后通过Microsoft Word或WPS等编辑软件进行排版,生成可重复使用的模板文件;
S504,将模板文件转换为PDF格式的版式文件,然后上传到第三方签约平台上。或者,直接上传编辑的模板文件,通过第三方签约平台进行格式转换;
S506,在第三方签约平台打开上传的文件,并在界面上拖动表单,将表单放置在待填写内容的位置,重新制作模板文件。并将对应的信息存入第三方签约平台的中心化数据库中;
S508,用户在第三方签约平台调取存放在其中心化数据库中的模板文件信息,并在对应的表单中填入相关信息后,提交给第三方签约平台;
S510,第三方签约平台根据用户提交的信息生成新的版式文件,用于后续的签约操作。
通过相关技术中步骤S402至步骤S408、以及步骤S502至步骤S510,用户根据自身业务需求制定了相关的模板文件后,在实际填写过程中,并没有直接使用自己的模板文件进行内容填写,而是经过了第三方中心化服务平台的二次操作,用户把信息录入进第三方中心化服务平台,第三方中心化服务平台再将其录入的信息与模板文件进行组合,生成用户所需的版式文件。
由此可见,使用独立的第三方软件如Microsoft Word或WPS编辑模板后,又使用其他第三方产品服务写入待填写信息,多方系统的不一致性导致过程中需要用户进行繁琐的操作,且各方信息安全及隐私保护策略均不可见。
因此,用户需要一种可以直接填写版式文件的方法,以解决中间繁琐的操作,和潜在的信息安全及隐私风险。
本申请实施例提供了一种基于区块链填写文件的方法,图6是根据本申请实施例的基于区块链填写文件方法的简要步骤流程图,如图6所示,该方法包括以下步骤:
S602,根据需求信息所描述的数据要素和可视化样式制作对应的模板文件;
S604,填写模板文件中的交互式表单域,生成版式文件;
S606,将版式文件编码后存储在区块链的节点账本中。
本申请实施例所涉及的操作流程均是通过区块链智能合约实现的,不涉及任何中心化系统,以此解决用户操作的一致性和安全性及其隐私保护。
本申请实施例提供了一种基于区块链填写文件的方法,图7是根据本申请实施例的基于区块链填写文件方法的步骤流程图,如图7所示,该方法包括以下步骤:
S702,根据预设数据要素和预设可视化样式,通过部署在区块链上的智能合约生成模板文件;
S704,通过智能合约中的存储逻辑,将模板文件存储在区块链的节点账本中;
S706,获取键值对数据,通过智能合约中的校验逻辑,对键值对数据与模板文件的预设数据要素进行校验;
S708,根据模板文件的预设数据要素,通过智能合约将键值对数据写入模板文件对应的表单值中,并生成版式文件;
S710,通过智能合约中的加密逻辑对版式文件进行加密,生成版式文件的版式加密文件;
S712,通过智能合约中的存储逻辑,将版式加密文件存储在区块链的节点账本中。
需要说明的是,预设数据要素使用交互式表单域进行描述。所谓交互式表单,也称为AcroForm,是交互地从用户收集信息的一种域集。模板文件可以包含出现在任意页面组合上的任意数量的域,所有这些域构成单一的、覆盖整个文档的整体交互式表单。任何未说明的对form的使用都被理解为是指交互式表单。
交互式表单支持下列域类型:
按钮域表示用户可以用鼠标在屏幕上操作的交互式控件,包括普通按钮、复选框和单选按钮;
文本域是用户可以用键盘输入文本的框或区域;
选项域包含几个文本项,最多可以选择其中一个作为域值。选项域包括滚动下拉列列表框和组合框;
签名域表示认证签署者姓名和文档内容的数字签名与可选数据。
预设可视化样式则包括模板文件的长宽、分辨率以及文本、图像和交互式表单等所在页面以及其在页面中所处的位置、大小,甚至边框、颜色等。
模板文件除了通过部署在区块链上的智能合约生成,还可以通过其他方式进行生成,本实施例在此不再赘述
通过本申请实施例中的步骤S702至S712,解决了版式文件的填写存在数据不安全和操作繁杂的问题,实现了直接通过区块链在模板文件上填写交互式表单,而不需要经过多系统进行反复操作,降低了用户的操作复杂度,减少了中间的流转环节,填写完成的版式文件直接和/或间接的通过区块链进行存储,基于区块链本身的不可篡改、可追溯机制,进一步保障信息安全和隐私。
在其中一些实施例中,S706,获取键值对数据,通过智能合约中的校验逻辑,对键值对数据与模板文件的预设数据要素进行校验包括:
获取键值对数据,根据键名检索模板文件中设置的预设数据要素的约束条件,调用部署在区块链上的智能合约对键值对数据进行预设校验,并基于约束条件对键值对数据进行预设设置,其中,预设校验包括校验数据内容和校验数据长度,预设设置包括设置数据排列、设置数据字体和设置数据字号。
在其中一些实施例中,步骤S710,通过智能合约中的加密逻辑对版式文件进行加密,生成版式文件的版式加密文件包括:
通过智能合约中的加密逻辑对版式文件进行Base64编码,对Base64编码后的版式文件进行对称或非对称加密,生成版式加密文件。
在其中一些实施例中,步骤S712,通过智能合约中的存储逻辑,将版式加密文件存储在区块链的节点账本中包括:
通过智能合约中的存储逻辑对版式加密文件进行数据分割,生成对应的数据子集,将数据子集存储在区块链的节点账本中。
在其中一些实施例中,在步骤S710,通过智能合约中的加密逻辑对版式文件进行加密,生成版式文件的版式加密文件之后,方法还包括:
对版式加密文件进行hash运算生成对应的hash值,通过智能合约中的存储逻辑,将hash值存储在区块链的节点账本中,将版式加密文件存储在中心化存储系统或分布式文件存储系统中。
在其中一些实施例中,在步骤S702,根据预设数据要素和预设可视化样式,通过部署在区块链上的智能合约生成模板文件之后,方法还包括:
根据预设算法对模板文件进行处理,生成对应的数字摘要,通过智能合约中的存储逻辑,将数字摘要存储在区块链的节点账本中,将模板文件存储在中心化存储系统或分布式文件存储系统中。
在其中一些实施例中,在步骤S704,通过智能合约中的存储逻辑,将模板文件存储在区块链的节点账本中之前,方法还包括:
通过区块链上的智能合约对模板文件进行Base64编码。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例提供了一种基于区块链填写文件的系统,图8是根据本申请实施例的基于区块链填写文件系统的结构框图,如图8所示,该系统包括智能合约模块81和节点账本模块82;
智能合约模块81根据预设数据要素和预设可视化样式,生成模板文件;
智能合约模块81通过存储逻辑,将模板文件存储在节点账本模块82中;
智能合约模块81获取键值对数据,通过校验逻辑对键值对数据与模板文件的预设数据要素进行校验;
智能合约模块81根据模板文件的预设数据要素,将键值对数据写入模板文件对应的表单值中,并生成版式文件;
智能合约模块81通过加密逻辑对版式文件进行加密,生成版式文件的版式加密文件;
智能合约模块81通过存储逻辑,将版式加密文件存储在节点账本模块82中。
通过本申请实施例,智能合约模块81根据预设数据要素和预设可视化样式,生成模板文件,通过存储逻辑将模板文件存储在区块链的节点账本模块82中,获取键值对数据,通过校验逻辑对键值对数据与模板文件的预设数据要素进行校验,根据模板文件的预设数据要素,将键值对数据写入模板文件对应的表单值中,并生成版式文件,通过加密逻辑对版式文件进行加密,生成版式文件的版式加密文件,通过存储逻辑将版式加密文件存储在区块链的节点账本模块82中,解决了版式文件的填写存在数据不安全和操作繁杂的问题,实现了直接通过区块链在模板文件上填写交互式表单,而不需要经过多系统进行反复操作,降低了用户的操作复杂度,减少了中间的流转环节,填写完成的版式文件直接和/或间接的通过区块链进行存储,基于区块链本身的不可篡改、可追溯机制,进一步保障信息安全和隐私。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
该电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
需要说明的是,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的基于区块链填写文件的方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种基于区块链填写文件的方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于区块链填写文件的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,图9是根据本申请实施例的电子设备的内部结构示意图,如图9所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图9所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该非易失性存储器存储有操作系统、计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作系统和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种基于区块链填写文件的方法,数据库用于存储数据。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。