一种基于区块链技术的财务记账方法与流程

文档序号:18453559发布日期:2019-08-17 01:25阅读:1229来源:国知局
一种基于区块链技术的财务记账方法与流程

本发明涉及区块链在财务系统架构的应用的技术领域,具体提供一种基于区块链技术的财务记账方法。



背景技术:

在财务记账领域,传统的记账系统都要基于一个集中的中心库,所有发生业务的组织都要将数据集中记录在同一个库中,对于大型集团来说,则需要投入较高的成本建设信息中心,且数据集中在一个中心容易被篡改。事实上每笔业务的发生都是在一个具体的组织,对于一个组织而言仅需要了解与业务相关的信息,而不需要知道整个中心库的信息,分布式记账是一个更合理的选择。

区块链技术是比特币背后的技术,其最大的特点是能够去中心化,比如对比特币来说并没有一个信息中心来维护比特币的交易信息,且交易记录很难被篡改具有极高的安全性。



技术实现要素:

本发明的技术任务是针对上述存在的问题,提供一种能够实现财务记账的去中心化,节约信息建设成本,提高财务数据安全性的基于区块链技术的财务记账方法。

为实现上述目的,本发明提供了如下技术方案:

一种基于区块链技术的财务记账方法,通过非对称加密体系将会计科目地址化,使utxo应用到借贷记账中,结合区块链技术,将财务系统去中心化。

所述utxo即unspenttransactionoutput,为未消费的交易输出。

该基于区块链技术的财务记账方法采用去中心化设计,采用未消费的交易输出(unspenttransactionoutput下简称utxo)的记账思想设计实现了基于utxo的借贷记账法,并结合区块链加密技术,使得每个接入该网络的核算单位既有自己账户的全部控制权,又能够访问全集团的账簿,使每笔记账都安全,可追溯。该设计可以将财务系统去中心化,任何核算主体都可以自由接入,同时能够保证财务系统更加可靠安全,更加易于扩展。

作为优选,该方法具体包括以下步骤:

s1、核算单位秘钥分配:每个接入网络的核算单位调用封装好的secp256k1和ecdsa算法产生一对私钥和公钥。

s2、会计科目地址化:核算单位获取到秘钥后,对会记科目体系进行地址化。

s3、utxo记账。

采用uxto方案记账的数据库,记录的不是会计科目余额的变动,而是借贷本身。按照财务会计的借贷记账法,每一笔账都是有借必有贷借贷必相等。在uxto最原始的概念中,交易必有资金来源被称为交易输入,也必有资金的去向称为交易输出,每笔业务都要花费输入产生输出,一条这样的记录被称为“未花费的交易输出”即utxo,在原始的utxo概念中交易输入必等于交易输出。基于utxo的借贷记账法用借贷代替交易输出输入的概念,“未花费的交易输出”演变为“未借出的金额”,借方科目相当于交易输入,贷方科目相当于交易输出,主要特征如下:

1)、除了系统上线后相关会计科目的第一笔记账,所有借方的来源都是前面的一个或几个utxo中的科目地址;

2)、会计科目的地址必须由发起记账的核算单位的公钥生成;

3)、借贷双方的科目必须是若干会计科目地址;

4)、任何一笔记账的未借金额等于贷方科目发生额加上借方科目余额;

5)、每条记账完成后用私钥对记账信息的摘要进行签名,并将公钥放在头部,在网络中进行广播等待审核。一段时间内的记账申请组成一个区块,区块填满由网络中的节点通过每笔交易的公钥对签名的摘要进行解密,验证摘要是否与当前交易记录的摘要一致,验证公钥与科目地址是否匹配,确保记账没有被篡改。

s4、区块审核:每个核算单位进行区块的独立审核,验证一个区块中的记账记录是否合法。

每一个区块都有一个区块头部信息,头部中包含生成时间,前一个区块的哈希值,区块中实际数据的哈希值,区块的深度。

审核完成的节点广播区块信息,被网络其它节点接收后进行验证并承认有效性,若节点分叉则继续计算,最先到达六个深度的区块链被承认。

s5、区块链报表:查询账簿,统计每个会计科目的未借金额,算出会计科目余额,形成报表。

作为优选,步骤s1中,每个核算单位都有一对由椭圆曲线算法生成的公钥与私钥,核算单位记账时把公钥附在记账记录中,并对记账信息进行摘要,用私钥对摘要结果进行签名。

椭圆曲线加密算法是一种非对称加密算法,非对称加密算法特点是用私钥加密的信息可以用公钥解密,但是不能从公钥推测出私钥。

作为优选,使用私钥对摘要结果进行签名后,验证时用公钥对签名进行解密,若解密后的摘要与记账信息的摘要相同,则记账信息没有被篡改。

作为优选,对记账信息采用sha256算法进行摘要。

sha256算法是主流的签名算法,具有极高的安全性,很难进行破解。

作为优选,步骤s2中,核算单位获取到密钥后,遍历每个会计科目,将科目唯一标识提取出来作为科目编号,核算单位的公钥先用sha256进行摘要,再使用ripemd160哈希算法形成160位比特数字,最后通过base58check编码转为固定长度的ascii,最后与科目编号组成科目地址。

作为优选,步骤s4区块审核时,校验会计科目地址,校验记账权限,确认的记账被添加入核算单位记录的区块中,最先被广播的区块被其他核算单位承认,当区块链增长的长度达到六个记账最终确认不可修改。

作为优选,确认的记账被添加入核算单位记录的区块中,对区块和上一个区块头部的哈希值进行sha256摘要运算,将摘要运算作为本次记账的哈希值放入头部,上一个区块的地址也放入头部,形成区块链。

作为优选,最先被广播的区块被其他核算单位承认,其他节点收到区块信息后更新账簿信息,若正在校验的记账在区块中已存在,则不再校验。

与现有技术相比,本发明的基于区块链技术的财务记账方法具有以下突出的有益效果:所述基于区块链技术的财务记账方法采用未消费的交易输出的记账思想设计实现了基于utxo的借贷记账法,并结合区块链加密技术,使得每个接入该网络的核算单位既有自己账户的全部控制权,又能够访问全集团的账簿,使每笔记账都安全,可追溯。该设计可以将财务系统去中心化,任何核算主体都可以自由接入,同时能够保证财务系统更加可靠安全,更加易于扩展。能够实现财务记账的去中心化,节约信息建设成本,提高财务数据安全性,具有良好的推广应用价值。

附图说明

图1是本发明所述基于区块链技术的财务记账方法的流程图;

图2是本发明所述基于区块链技术的财务记账方法的具体实施例的示意图。

具体实施方式

下面将结合附图和实施例,对本发明的基于区块链技术的财务记账方法作进一步详细说明。

实施例

如图1所示,本发明的基于区块链技术的财务记账方法,通过非对称加密体系将会计科目地址化,使utxo应用到借贷记账中,结合区块链技术,将财务系统去中心化。

该方法具体包括以下步骤:

s1、核算单位秘钥分配:每个接入网络的核算单位调用封装好的secp256k1和ecdsa算法产生一对私钥和公钥。

每个核算单位都有一对由椭圆曲线算法生成的公钥与私钥,核算单位记账时把公钥附在记账记录中,并对记账信息采用sha256算法进行摘要,用私钥对摘要结果进行签名。使用私钥对摘要结果进行签名后,验证时用公钥对签名进行解密,若解密后的摘要与记账信息的摘要相同,则记账信息没有被篡改,否则说明记账信息被篡改,该次记账无效。

s2、会计科目地址化:核算单位获取到秘钥后,对会记科目体系进行地址化。

核算单位获取到秘钥后,程序会对一套会计科目体系进行地址化,具体的过程是遍历会计体系中每个科目,将科目唯一标识提取出来作为科目编号,核算单位的公钥先用sha256进行摘要,再使用ripemd160哈希算法形成160位比特数字,最后通过base58check编码转为固定长度的ascii,最后与科目编号组成科目地址。

s3、utxo记账。

本发明将utxo的记账思路从单纯的账户之间的未花费的资金记账法,推广为会计科目之间的借贷关系,简单来说就是将会计科目视为比特币中的账户。

utxo记账实现:

1)utxo记账表的存储结构如下表所示:

2)记账实现流程:

a、传入私钥公钥作为参数,构造核算单位的记账对象。

b、当一笔业务发生,财务人员填写记账凭证,程序从记账凭证中提取借贷科目和发生额作为记账类中utxo记账函数的参数。

c、根据步骤s2形成借、贷方科目的科目地址。

d、记账函数查询所有借方科目未借出的utxo记录,这些记录中的金额表示的是未借金额(不是科目余额),作为借方来源。

e、根据b、c、d得到的信息生成一条未借出utxo记账。utxo记账表将会产生若干条记账编号相同的记录,这些记录就是一个新的utxo,它包括:一条地址为贷方科目地址的记录,金额为贷方发生额(也就是未借金额)。一条地址为借方科目地址的记录,金额为借方余额来源减去贷方发生额后的值。此时由于d中的utxo已经借出,将不能再借出了。新产生的这个utxo可以后续借出,具体举例见图2。

向供货商购入50000原料,货款暂欠。又领取10000原材料用于生产,最后通过银行存款先支付了供应商40000元。

按照借贷记账应该先记:

借:原材料——50000。

贷:应付账款——50000。

再记:

借:生产成本——10000。

贷:原材料——10000。

假设会计期间初始时原材料科目值为0,生产成本科目有5000,utxo记账过程如下图所示:

最后记:

借:应付账款——40000。

贷:银行存款——40000。

该图中,因为生产成本属于资产,借方发生时科目值增加,所以生产成本科目为正时初始的未借记负数。

第一笔业务发生时,借原材料,贷应付账款,所以应付账款未借金额增加50000,原材料借方发生后剩余的要再次转入未借,由0变为50000,utxo0001中的原材料地址已经全部借出过了,下次如果原材料再借方发生时,科目来源就只能从utxo0002中和utxo0003中取了,然后utxo0002和utxo0003也全部借出再形成一条新的utxo。

当这个流程走完,需要计算各科目余额时,需要统计所有未借出金额。

如统计原材料,未借金额有0002中的-50000和0003中的10000,两者相加得-40000,因为原材料属于资产,借方发生时增加,所以原材料的余额为40000;统计应付账款,未借只有0004为10000,因为属于负债,借方发生时科目余额减少,所以最终应付账款的余额是10000。

f、根据财务规则验证记账是否合法。

g、步骤f通过后,将utxo中的信息拼接成字符串,使用sha256摘要算法对其摘要形成一条摘要并用私钥进行加密签名,将签名信息与公钥组成头部。

h、将头部与utxo记账信息组合成完整记账记录,广播到网络等待记账确认。

s4、区块审核:每个核算单位进行区块的独立审核,验证一个区块中的记账记录是否合法。

网络中的每个核算单位都可以进行区块的独立审核,验证一个区块中的记账记录是否合法,具体过程如下:

1)校验科目地址:临近节点接收到一条完整记账记录的广播,根据3中g步的头部信息,读取公钥,采用2的算法计算出公钥地址,审核这个地址与记录中去掉科目编号的科目地址是否匹配,若匹配说明科目地址合法。

2)校验记账权限:若(1)通过,根据3中g步的头部信息获取私钥签名,用公钥签名解密,对utxo记账信息使用sha256摘要算法获得摘要,对比解密结果与摘要是否一致,若一致说明记账信息合法。若校验合法,说明是一个有效的记账,继续在网络传播,若不合法不再广播。

3)确认的记账将会被添加入本节点记录的区块中,对区块和上一个区块头部的哈希值进行sha256摘要运算,将摘要运算作为本次记账的哈希值放入头部,上一个区块的地址也放入头部,形成区块链。

4)最先被广播的区块被其它节点承认,其它节点收到区块信息后更新账簿信息,如果正在校验的记账在区块中已经存在,则不再校验。

5)当区块链增长的长度达到六个记账最终确认不可修改。

s5、区块链报表:查询账簿,统计每个会计科目的未借金额,算出会计科目余额,形成报表。

以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

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