区块链

在此文中

区块链是一个安全和认证系统,可确保数据收集的完整性。该技术使您可以检查数据是否具有追溯性,并且无论其位于何处都可以依赖数字内容,从而减少了数据量的传输。区块链源于确保电子形式以及纸上数据有效性的需求。因此,数据集合可以可靠的方式同时在多台电脑上传输和存储,并确定数据不会被修改。

区块链的定义

Banana.ch 的创始人Domenico Zucchetti 先生将区块链定义如下:

“区块链是一个可以增长的数据集合,由依次组成的区块组成,其中每个区块都有自己的加密散列函数与上一个区块相连,因此散列函数的区块证明了区块内容的完整性,还包括从开始到区块本身的整个系列”。

从这个定义可以看出,区块链数据结构允许添加新元素,而不会损害现有散列函数的完整性。在会计中,这是至关重要的,因为您需要能够验证和验证输入到特定点的会计交易的完整性,而且还需要添加新交易。

这个功能也是管理分布式会计日记账的根本,比如比特币。事实上,系统的不同节点只有通过交换有限的信息,才能确保拥有数据的精确副本。实际上,区块链允许:

  • 要确保日志的内容是一样的,只需交换最后一个区块的散列函数值即可。
  • 要知道集合在什么程度上是相同的,只交换前面区块的散列函数值。
  • 要对齐内容,仅需传输丢失的区块。

对于传统的数据库,有必要交换所有日记账的数据,以核实数据的完整性。数据验证可以用有限的对应物来完成。而使用区块链,只需交换散列函数值就可以验证数据。然后可以查询大量的对应物,使得任何人都不太可能建立一个伪造的系统。

对于传统的数据库,有必要交换所有日记账的数据,以核实数据的完整性。数据验证可以用有限的对应物来完成。而使用区块链,只需交换散列函数值就可以验证数据。然后可以查询大量的对应物,使得任何人都不太可能建立一个伪造的系统。

历史

区块链是近几十年来发展起来的一项新技术,它在几个领域都在不断发展,以确保电子形式数据的真实性和完整性。导致区块链诞生的路径可以分为三个主要阶段。

第一阶段可追溯到1979年,当时Ralph C. Merkle申请了散列函数和后来称为Merkle Tree数据结构的加密功能专利。哈希树 (Merkle Tree) 是一种数据树结构,该结构使用密码散列的连接来确保数据块的完整性和对其的快速访问。

在2000年,Stefan Konst发表了他的毕业论文,Sichere Log-Dateien auf Grundlage kryptographisch verketteter Einträge (基于加密连接条目的安全日志文件)。

在2002年,Banana.ch 的创始人 Domenico Zucchetti 先生为一个由一系列元素形成的数据集合的认证系统申请了专利,例如会计日记账的变动 (美国专利号:7,020,640)。

在2008年,中本聪 (Satoshi Nakamoto) 发明了比特币的加密货币,基于分布式日记账,每一个发生业务的区块都与前一个业务区块有密码学上的联系。从这一刻起,按顺序排列的元素加密链系统将被称为区块链。

区块链数据结构的示例

以下是Banana财务会计软件的会计日记账示例。每个发生业务都由日记账的行来表示,该行具有根据上一行的加密散列函数值计算的加密散列函数值。该行的加密散列函数是前几行的所有加密散列函数串联在一起的结果,并且它还是从日记账开头保证日记账数据完整性的证书。添加其它行,每个行都有自己的加密散列函数,不会使之前的加密散列函数值失效。 

blockchain

历史数据的收集

区块链是一种数据集合,旨在通过加密散列函数来保持数据的完整性。因此,它用于历史数据,这些数据一旦被创建和验证就不再需要修改,比如会计日记账或访问登记簿。区块链不适合用于需要持续更新的数据,比如会计中的账目行,每次增加新的发生业务都要重新计算余额。

按顺序排列的区块数据

"区块链 "是一个英文单词,表示 "由链组成的区块"。该集合由数据块组成,这些数据块具有一定的序列。在会计日记的情况下,每个区块都是一个单一的业务。但在比特币系统中,每个区块包含一系列的会计运动,组织成哈希树 (Merkle Tree) (见上图)。在区块链的数据结构中,区块之间相互跟随的顺序与区块中包含的信息同样重要。事实上,区块链保证了内容和数据序列的不可更改性。

每个区块以及发生业务都可以查询,但不能被更改。也可以增加新的区块,但不能改变以前的区块。

区块与区块之间是相互串联的,所以一个区块的散列函数值取决于前一个区块的内容,而前一个区块又取决于其前一个区块的内容,以此类推。因此,一个区块的散列函数值也是整个数据集合的散列函数值,并证明了整个集合的完整性。如果一个区块的任何内容发生变化,其散列函数值也会发生变化。如果链是正确的,说明内容是完整的。

加密散列函数值

散列函数总和或散列函数是在一定数据集的基础上,通过散列函数计算出的文本。散列函数是一种算法,它将一行文字转换成一系列的字母和数字。"hash "一词也有 "砍 "或 "乱 "的意思。事实上,该函数将一行文本(输入)进行 "切碎",将其转化为 "杂乱 "的字符(散列函数的和)。

 

 

(来源: Wikipedia) 

加密散列函数是一种满足若干特征的散列,这些特征使其能够作为用于计算的数据集的标识符和完整性证书。要被认为是加密散列,它必须具有以下特征:

  • 其是确定性的,这意味着相同的信息总是被翻译成相同的散列函数值。

  • 它能快速计算出任何信息的散列函数值。

  • 不可能生成一个产生给定散列值的信息,即反向生成给定散列值的过程 (单向性)。这意味着,散列函数值可以很容易地与第三方共享,而不暴露原始内容。

  • 不可能找到两个具有相同散列函数值的不同消息 (概念称为抗碰撞性)。

  • 小小的改动就会彻底改变散列值,以至于新的散列值与旧的散列值毫无关联 (称为雪崩效应)。

资料来源

最后,加密散列函数如果能满足三大特征,就会被合法地接受:

  1. 它们保证了唯一性的标准 (没有碰撞性)。

  1. 它们保证了数据的单向性。

  1. 它们很难被攻击。

加密散列函数的连接

在区块链中,每个数据块都有一个加密的散列函数值,这个散列函数值是根据区块数据的内容和前一个区块的散列函数值计算出来的。这样就形成了一个加密链。区块散列函数也成为从开始到最后一个区块的整个数据集合的证书。

在Banana财务会计软件中,每一次业务的输入都相当于一个区块,而这个区块是由一个加密散列值来表示的。从第二次登记开始,该区块的数据被添加到前一个区块的数据中,从而产生一个新的散列函数值,该值考虑到了以前所有的散列函数值。

下图显示了Banana财务会计软件日记账中各区块的连贯情况。每个区块都有一个序列号,以保证数据的递进性。

giornale in Banana Contabilità

修改内容

散列函数连接意味着,如果内容相同,散列函数值将保持不变。如果内容或序列发生变化,则散列函数值将不同。

以下两张图片显示了在Banana会计中修改单笔金额会发生什么。修改后的账本显示的金额是40瑞士法郎,而不是原始账本第二行中的30瑞士法郎。当数据被修改时,加密散列函数值也会从被修改的行号 (在这种情况下是第二行) 开始改变。因此,散列函数值将完全不同,因为它的功能已经发生了重大变化。

cryptographic hash

blockchain

经认证的日记账

对于会计核算来说,法律要求数据要逐步记录。在会计中,日记账是所有业务的集合。每项业务都包含了保持会计所需的所有要素:日期、参考文件、摘要、借方账户、贷方账户、金额等。

然后对每笔业务计算出一个加密散列函数值,以保证每笔业务和截至该点的整个日记账的完整性。如此会计日记账便得到了认证。

区块链的创建步骤 

创建区块链所涉及的阶段可以总结如下:

  1. 收集和创建数据块。

  1. 核查数据。

  1. 固定数据序列。
  1. 计算加密散列函数值。

根据不同的应用,您创建区块链数据结构的方式可能有所不同。

在Banana财务会计软件中,其顺序如下:

  1. 会计师输入或导入记录表中的数据,并输入每笔业务的所有必要信息。  
  2. 数据管理员从物质角度 (数据与实际交易相符) 和形式角度 (给付账目和取用账目正确) 检查数据是否正确。
  3. 数据的核查可在若干时刻进行。例如,在期末时,将银行的变动和余额与银行对账单上的数据进行对比。如果有差异,只要会计数值与现实不符,就必须完成。用户给命令区块注册行指定直到哪一天必须封锁移动 (一般包括受控数据)。当该命令下达后,程序将执行以下操作:
  • 检查要被阻止的动向是否包含错误;

  • 验证了之前的加密散列函数序列是否正确;

  • 为每笔业务分配一个递进的序列号,从上一个序列号开始;  

  • 通过将每个业务的加密散列函数值与前一行的散列函数值相连接来计算;

  • 提供了阻止操作的摘要。

展示数据完整性 

为了能够验证Banana财务会计软件内日记账的完整性,您应该:

  1. 发出验证命令以便重新计算所有动向的散列函数密码。
  2. 验证最后一行的加密散列函数是否与所存储的相同。

必须保存在锁定时产生的加密散列函数,以便能够验证数据的完整性。加密散列函数的存储和保护方式取决于您所做的组织工作。如果不保留散列函数,将无法验证数据的完整性。

区块链的用途

区块链有多种使用方式。首先,它用于保存不断增长的历史数据,其内容不得更改。典型的例子是会计日记账。

其次,区块链数据收集特别适合共享所发行的报刊 (例如比特币),因为它们最大程度地减少了数据传输的需求。您可以通过简单地共享散列函数来验证数据是否相同。

这样您就可以知道两个集合最多有多少个区块是相同的。

此外,要匹配内容,只需传输缺失区块的数据即可。

区块链在会计领域的应用

Banana财务会计软件是区块链技术在财务领域的先驱。事实上,在区块链获得该名称之前,Banana财务会计软件就已经在2002年获得了一项会计软件中的安全系统专利。得益于加密的散列函数,这种方法可以证明数据的有效性,以符合法律税收法规。

事实上,随着数字化的进展,有必要将所有的纸质文件转化为电子形式。通过区块链对数据进行认证,我们就可以像依赖签署的纸质文件一样,依赖电子文件。通过这种方式,我们可以证明信息,在这种情况下,所有的会计业务,没有被追溯性地改变,并且可以传送给当局,而无需打印任何东西。

区块链数据采集的特点

  • 数据集合的结构是区块状的,是不可改变的。
  • 不同的内容会产生不同的散列函数值。对集合内容的任何改变都会导致不同的散列函数值。
  • 相同的内容产生相同的散列函数值。通过比较两个数据集合的最后一个区块的散列函数值,您可以知道内容和它们的序列是否相同。
  • 完整性检查。通过回溯区块的序列,您可以重新计算所有区块的散列函数值,然后验证集合的内容没有改变。
  • 区块的序列。区块必须包含一个可以定义其序列的元素。通常它是一个递进的数字或对前一个区块的标识符的引用。
  • 添加区块。当您添加一个区块时,区块的散列函数值会根据其内容和前一个区块的散列函数值进行计算。然后,新区块的散列函数值会成为整个数据集的散列函数值。之前区块的散列函数值将保持有效。
  • 分布式数据库。通过简单的散列函数值交换,您可以验证不同地方的数据集合是否具有相同的内容。

Share this article: Twitter | Facebook | LinkedIn | Email