1. 引言
比特币问世11年来,从最初程序员们自娱自乐式的游戏,到如今全世界瞩目的数字资产,其间不断经历着人们的质疑。作为一种饱受争议的新型资产,比特币既受国际经济、货币政策、外汇政策等宏观条件的影响,也与交易平台监管、灰色产业刚需、区块链技术发展等因素密切相关。区块链技术作为比特币的底层技术,其发展也是一个从简单到复杂,从零星想法到成熟体系的一个过程。但不可否认的是,比特币作为一种开源的、基于网络的、点对点的匿名电子货币以其不受任何人操纵、匿名性、去中心化、不可篡改、不可追溯、跨境流动、数量既定不会超发等特点,弥补了法定货币的天然缺陷;而区块链也展示了未来货币与互联网技术高度紧密的重要发展趋势 [1],同时,比特币和区块链的加密算法、分布式记账也对当今的会计审计记账方法产生了冲击。
本文结合当前流行的Python语所提供的Numpy等方法,通过对比特币的算法、“挖矿”机制进行还原,了解其运行机制,在此基础上对比特币和区块链的起源、运作方式、价值、去中心化以及对会计审计制度的冲击进行了阐述,以期能够当今的货币发行和会计审计制度产生思考。
2. 运用Python程序还原比特币的哈希码
Python中Numpy数值计算程序拓展库中具有一系列函数的运用,其中hash函数的计算令人印象深刻。谈起hash函数,就不得不说说比特币的产生。
我们常常听到的比特币是一种特殊的数字货币,它是通过挖矿产生,因单位价值高而受到一部分人的追捧。那究竟什么是挖矿?其实,这里说的挖矿实际是通过哈希算法对一些数据进行哈希运算,生成特定的哈希值来表示一个区块,最先生成的就取得了新生成区块的记账权,并被奖励一定的比特币。这里的哈希函数即为hash函数,也叫散列函数。它是指通过哈希算法,将任意长度的输入变换成固定长度的较短输出,输出的值命名为哈希值。它具有两个非常明显的特点,一是不可逆性,即哈希函数是一种单向生成体制,也就是通过哈希算法得到的哈希值,不能逆向生成输入值;二是大输入小输出,即哈希函数是一种压缩映射,输出的哈希值的大小远小于输入值的空间,输出可以是固定长度的二进制。比特币的工作量证明是利用SHA-256,通过对输入的数据即版本号、上一个区块的哈希值、时间戳、bits数值、随机数解和默克尔根的hash值进行处理,最终输出以多个0为开头的哈希值为新生成区块的哈希值 [2]。
我们以比特币区块号125553的最小hash值的计算为例,通过对以上的六个数据进行输入处理来还原区块125553的最小hash值。我们打开blockchain.com的网站搜索区块产生125553hash值的6个输入值信息。
第一步,首先找到的版本号为0x1,我们将其命名为V0,然后通过V1 = hex(V0),将版本号表示为一个16进制数值,接着V2 = V1.ljust(9, “0”).replace(“x”,“”),将版本号V1 = 0x1补足到9位数0x1000000,然后去掉x变为01000000。然后将V2倒排为V3 = 00000010,接着通过str函数进行对V3进行表示,命名为V4,最后将V4倒排输出版本号的处理结果Ver = 01000000。
第二步,在网页上搜索前一区块的hash值,即125553的前一区块125552的hash值,通过换位排列的到的数值命名为Pre_Block。
第三步与第二步类似,找到区块125553的默克尔根的hash值,对其进行换位排列,得到的数值命名为Mer_Root。
第四步是对时间戳进行处理,先将区块125553的时间戳取整,在对其取16进制值并倒装,接着将产生的8位字符两两一组进行倒排,最后得出的数值再进行一次倒排结果命名为Ntime。
第五步是对Bits位值进行处理,也是先找到表示区块125553的位值大小的数值,将其转化位16进制的数值,再将产生的8位字符两两一组进行倒排,最后结果命名为Nbits。
第六步是对随机数进行处理,在125553区块的网页上找到随机数解,也是先将其转化为16进制的数值然后倒排,接着再进行两两一组倒排,最后再进行一次倒排将产生的数值命名为XVariable。
第七步就是将前六步所得的数据合并即header_hex = (Ver + Pre_Block + Mer_Root + Ntime + Nbits + XVariable),然后按照16进制算法对其先解码再加码,得到数值命名为header_bin。
第八步也就是最后一步,先将header_bin利用SHA-256进行2次加密,再通过hash = codecs.encode(hash[::-1], “hex_codec”)对其结果进行加码和解码处理,最终产生区块125553的最小hash值。
3. 比特币和区块链是什么——从《白皮书》的横空出世说起
3.1. 故事的起源
2008年,中本聪发布了比特币的白皮书——《一种点对点的电子现金系统》,为全球的投资者们开启了新大门。他在白皮书中提出了一种真正的点对点的电子现金支付方式,一种真正不需要通过第三方金融服务机构即能运作的系统。这个系统或机制就是区块链,而比特币正是这个系统的产物,或者说这个系统中被支付的电子货币。
比特币依赖于区块链技术生成。“挖币”的过程如同系统抛出一道复杂的数学方程式,所有人都可以去运算,谁能更快更好地完成计算,就能获得更多数量的比特币奖励。中本聪率先挖出50个比特币,之后他鼓励人们都参与到“挖币”中来。比特币的算法约定,其总发行量仅有2100万个,大约到2140年所有币将被全部挖出 [3]。
由于数量稀少,比特币价值水涨船高,从最初大约0.001美元的价格,到如今超过7000美元。比特币价格又极不稳定,时涨时跌。有人以挖矿为生,有人以炒币为生,对稀有事物的投资热情催生出一系列比特币交易平台。
3.2. 提出点对点支付的原因
那么中本聪为什么要提出这种支付方式呢?区块链能出现的意义是什么呢?其中大约有两个原因。第一是传统的第三方支付机构有较高的成本:现在的电子支付几乎都需要专门的金融机构作为双方交易的桥梁,搭建双方的信任。这个第三方结算机构越是看起来安全可信,那么它受到攻击的可能性就越大。因为如果某个第三方幸运平台的用户越多,经手交易越大,那么攻击这个第三方平台的获利越多。因此第三方平台也就不得不为了系统的安全性投入更多的成本进行系统维护,这样也就增加了每一位用户的成本。第二是因为金融机构总是不可避免地会出面协调争端,所以我们无法实现完全不可逆的交易。因为有潜在的退款的可能,就需要交易双方拥有信任。而商家也必须提防自己的客户,因此会向客户索取完全不必要的个人信息。而实际的商业行为中,一定比例的欺诈性客户也被认为是不可避免的,相关损失视作销售费用处理,这会降低双方的交易效率。于是白皮书中提出了这样一种基于密码学的不需要第三方中介参与的支付方式 [4]。
3.3. 区块链是如何实现没有中介的点对点交易的
那么这种不需要第三方中介的点对点交易是怎么实现的呢?在没有第三方的情况下,交易的一方是如何对完全陌生的另一方建立信用的呢?在这个互联网时代,大家互相看不到对方的真身,有时我们在做价值交换的时候,很难信任对方。区块链解决这个问题的逻辑就是:如果当一件事情大家都能够看得到的时候,那么它就不存在作假行为,也不存在作弊的可能性。在区块链的逻辑里,如果发生了一个交易,那么大家就都在自己的账本中记录下这笔交易。因为所有人都在记账,都有这个交易信息,所以这些交易信息就可以相互证伪。因为不是第三方中介在记账,不存在唯一的大账本,所以无法摧毁,提高的安全性。因为不是一个人在记账,而是网络上所有的人在一起记账,所以难以作弊。就这样区块链靠着这样的“分布式账本”实现了“去中心化”,实现了脱离第三方中介的点对点交易 [5]。
3.4. 运作方式
但是以上的“分布式记账”要怎么实现呢?网络上的人为什么会自发地记下这些交易来占自己的内存呢?未来实现这个问题,出现了比特币。
其实比特币可以说是一个写了许多人名字的本子,谁在这个本子上签上自己的大名,这个本子就属于谁。如果这个本子本来属于张三,后来张三用这个本子和李四交换了一袋大米,那么李四便在这个本子上写上“张三把本子给了李四”,然后再本子的最后一页写上自己的大名。也就是说比特币本身就就是账本的一部分,因为它记录着交易信息。中本聪为了鼓励大家将这些比特币上的交易信息打包成完整的账本,制定了一个激励计划。那就是第一个将那些比特币的交易信息最快最好地打包好的人,也就是记账记得最对最快的人可以获得一定数量的比特币的奖励。这个措施鼓励所有人都参与了交易信息的打包记账,也成为了比特币的唯一发行方式,让比特币能够进入流通领域。同时这种激励可以有助于鼓励参与记账的人保持诚实。如果有一个贪婪的记账者能够调集比所有诚实记账者加起来还要多的CPU计算力,那么他就面临一个选择:要么将其用于诚实工作产生新的电子货币,或者将其用于进行二次支付攻击。那么他就会发现,按照规则行事、诚实工作是更有利可图的。因为该等规则使得他能够拥有更多的电子货币,而不是破坏这个系统使得其自身财富的有效性受损 [6]。
区块链是比特币能够安全运行近十二年的底层技术,比特币也是给帮助区块链中信息完善的玩家的奖励。
4. 去中心化记账给我们的启示
4.1. 理解去中心化
比特币不仅为世界带来一种新的货币形式,也证明去中心化治理模式在制度治理的可行性。比特币的“去中心化”是把双刃剑,在不受任何政府或团体管理的同时也意味各种分叉或分叉失败等等问题。
如何才能在没有中心机构参与的情况下,完成记账的任务?解决方案便是“去中心化”。去中心化意味着人人都可以记账,每个人都可以保留完整的账本。任何人都可以下载开源程序,参与P2P网络,监听全世界发送的交易,成为记账节点,参与记账。在网络中所有人都是平等的,所有人都下载了开源的比特币程序在运行。当某一个节点接收到交易信息时,他会把信息传给相邻的节点,相邻的节点又会把信息传给再相邻的节点。通过P2P的技术,信息会迅速传遍全球,全球节点分布图如图1。
Figure 1. Geolocation of discovered nodes
图1. 全球节点分布图
去中心化记账流程:某人发起一笔交易后,向全网广播。每个记账节点持续监听并传播全网的交易。收到一笔新交易,验证准确性后,将其放入交易池中并继续向其他节点传播。每隔10分钟,从所有记账节点当中,按照某种方式抽取1名,将其交易池作为下一个区块,并向全网广播。其他节点根据最新的区块的交易,删除自己交易池中已经被记录的交易,继续记账,等待下一次被选中。每隔10分钟是一个循环,会有一个区块产生,但是不是所有在这10分钟之内的交易都能记录。获得记账权的记账节点,将得到50个比特币的奖励。每21万个区块(约4年)后,奖励减半。总量约为2100万枚,预计2040年开采完。记录一个区块的奖励,也是比特币唯一的发行方式,没有其他任何方式可以创造比特币。
比特币是区块链的第一个具体应用,使用区块链来对比特币进行数字发送,而不需要第三方中间人的干涉。但比特币并不是区块链的唯一应用。去中心化记账使创建成本效率高的业务网络变得更加容易,在这种网络中,几乎任何价值都可以被跟踪和交易,而不需要一个中心控制点。例如,区块链可以用于跟踪资产和货物沿供应链向下移动的情况,通过区块链可以降低物流成本,追溯物品的生产和运送过程,并且提高供应链管理的效率;股票交易所等其他行业也可以利用区块链机制将所有权转移到一个安全、对等的机制中。
如果区块链技术真的能应用于食品上,我们担心的食品安全问题就可以大大改善 [7]。因为一颗种子从下土到放在货架上这一过程都可被完整的记录。因为不可篡改的特点,每个人和自己的责任捆绑在一起;因为可追溯的特点,能够追溯到责任人。那么心怀恶意的公职人员或不法分子对卑劣的手段恐怕要敬而远之了。
上述应用我们一直在谈区块链的不可篡改和可追溯的特点完美的应用,却忽略了去中心化的特点。目前我们进行的转账都是要借助与第三方中心化的银行来完成。我们知道通过第三方银行转账,条件和规则约束非常多,极大的浪费人工成本和时间成本。比如说,甲公司转账给乙公司,在转账的过程中很有可能出现例如被告知自己转账的卡账户是自己而非公司账户、被告知今日是周末休息日、对方银行的开户行选择错误等原因导致转账失败。如果是跨国的业务借助第三方中心化银行来完成,我们可以想想其中更为复杂的条件和规则约束。如果区块链技术应用的诞生,我们不再需要借助第三方中心化银行,就可以进行点对点的转账,之前所描述的错误就不会产生,这将极大地节约时间成本和人工成本 [8]。
4.2. 去中心化给各领域带来的影响
区块链除此之外,还可应用于物理、公共服务、数字版权、保险、工艺等领域,实现更安全高效的安全数据管理存储。
4.2.1. 公共服务领域
区块链在公共管理、能源、交通等领域都与民众的生产生活息息相关,但是这些领域的中心化特质也带来了一些问题,可以用区块链来改造。区块链技术在公共服务这个领域中有着四大应用方向,身份验证、共享信息、透明政府以及鉴证确权。许多国家都在构想区块链的政府建设问题,在身份验证方面,如果运用区块链技术,可以将所有与个人证明相关的信息统一存储,这样可以免除许多繁琐的认证步骤以及物理签名。另外,在鉴证确权方面则可以减少欺诈事件的发生。区块链技术可以帮助政府做到管理与流程透明化,其中也包含部分信息的共享。
4.2.2. 数字版权领域
通过区块链技术,可以对作品进行鉴权,证明文字、视频、音频等作品的存在,保证权属的真实、唯一性 [9]。数字作品是数字版权保护的对象,包括传统作品的数字化和天然以数字代码存在的作品两种。数字版权面临许多难题,其中最严峻的问题如,数字版权确权难、侵权不易监控、维权难举证难、纠纷解决费时成本高。在数字版权确权时通过区块链技术,将图片、音乐、视频等数字内容作品的数字摘要、作者信息、作品创作时间等信息快速打包上链,利用分布式存储、时间戳、共识算法等技术实现上述信息数据不可篡改,达到版权归属清晰和证据固化的作用,完成原创数字作品版权登记认证过程。
4.2.3. 保险领域
在保险理赔方面,保险机构负责资金归集、投资、理赔,往往管理和运营成本较高。通过智能合约的应用,既无需投保人申请,也无需保险公司批准,只要触发理赔条件,实现保单自动理赔。
4.2.4. 公益领域
区块链上存储的数据,高可靠且不可篡改,天然适合用在社会公益场景。公益流程中的相关信息,如捐赠项目、募集明细、资金流向、受助人反馈等,均可以存放于区块链上,并且有条件地进行透明公开公示,方便社会监督。捐赠人可以通过购买区块链平台发行的加密货币,向平台上的慈善机构进行捐赠,可清除明白地查询善款的流向。另外,由于篡改交易数据的成本非常大,分布式数据存储不可篡改的特性也增强了数据可信度,从而也提高了平台的公信力。
5. 比特币等数字货币对现有会计、审计制度的冲击
当下,以比特币、libra、中国央行数字货币等数字货币的发展如火如荼。这些数字货币的核心运行机制迥异,但不可否认的是它们的兴起对于当今会计的发展会产生颠覆性的影响,可以说数字货币正在酝酿一场会计革命。在这当中,最突出的要数比特币的记账方法对现行复式记账的冲击。
5.1. 比特币记账与现行复式记账的区别
下面我们将详细探讨比特币的记账方法与当前复式记账两个系统之间的差异,比特币与会计相关的存在的含义,以及这两个系统是否代表彼此的替代或补充。比特币的记账方法与如今复式记账在账户、欺诈成本、审计质量、独立性等方面均存在巨大差异,下面一一说明。
5.1.1. 账本的差异
复式记账成本具有私人性,只有公司内部财务人员可对本公司的账本具有记账权,平时账本内容也只有公司内部的财务部门人员及管理层知晓,其他公司想要拿到其他公司的财务数据相当之困难,;而比特币记账具有公开性,任何人均可以创建条目,所有交易的内容、交易量以及时间均为公开,所有想要了解这些事项的人员上网查阅便知。这也就导致了两者账本冗余性的差异,复式记账由于其私密性导致账本只有少数几方存储,而比特币记账的公开性使得参与交易人员人手一本账。
5.1.2. 对审计的影响
如今记账方法及会计制度下,公司年底会聘请会计师事务所对公司一年内的交易情况进行审计,这就存在以下问题,首先,审计具有延迟性,是历史审计,企业财务人员可以对已记账的内容进行调整而不被审计人员发现,也就是说要想保证审计的真实性,复式记账必须为用户提供了数据的完整性和准确性,审计人员所出具的审计报告也只能提供“合理保证”,虽然合理保证确实表明审计后的高度可靠性,但它绝不是保证分类账完全准确,只有“足够”准确。以现金余额的会计/审计为例,它是审计业务中风险相对较低的(以及资产负债表上与比特币最具可比性的资产)。外部审计通过要求银行确认获得对现金余额的信心,这些纸质/数字报告需要几天到几周才能从持有客户资金的银行处获得。来自诸如此类的外部第三方的报告被认为是高度可靠的审计证据,因为可以实现伪造余额的唯一方式是合谋。合谋很难被发现,因为审计师没有理由怀疑犯规,他们无法访问银行的会计系统,并且在提供的报告中可能没有任何欺诈迹象。这个例子的目的是表明,即使在最简单的情况下,在复式记账方案里也不可能实现对会计数据完整性的充分保证。反观比特币记账,当一笔交易做完之后不可再进行更改,重写账本历史变得不可行,所以这就相当于实时进行审计,那么他所提供的保证即为绝对保证。从这个意义上来说,比特币是会计史上伟大的飞跃。其次,复式记账下审计质量还取决于审计师们的职业判断,而比特币审计是软件驱动,不具有主观性。
5.1.3. 欺诈成本的差别
在欺诈成本的计量上,二者也存在较大差别,复式记账的欺诈成本极为廉价,可操作性很强,而且一些高明的造假者可以把假账做的“滴水不漏”,对于欺诈的检测就变得很困难,而且发现造假也是事后行为,已经给造假者提供了可乘之机;而比特币记账的造假成本极为昂贵甚至可以说几乎不可能,欺诈检测实时进行。
5.1.4. 可信性的差别
复式记账审计的准确性主要取决于财务报表的质量,而比特币记账准确性取决于运行兼容客户端版本的用户,非错误代码以及大多数Hash是诚实的。
复式记账可以使用自己的本地货币进行记账,而比特币记账需要使用网络激励令牌(比特币)来获取可用的保证 [10]。
5.2. 比特币记账的难题
尽管比特币记账存在种种优势,但是比特币记账要真正为财务人员所采用仍面临不少难题。比特币等密码货币作为一种资产,需要有相应的会计计量方法,因为很多基金、矿池、交易所、项目方都有比特币。但不管是国际会计准则还是美国会计准则,都没有针对密码货币的会计准则出来。不管是美国还是香港还是国内的会计事务所,他们都不能官方地告诉你密码货币应该是以什么方式来记入帐目。针对密码货币的会计学方法还没有出现,但是实践中又有这样的业务需求,这是密码货币在会计学中的困境。
以持有为目的的比特币为例,现在在会计计量上简单来说是以无形资产计入会计。但无形资产计量又存在难点,一般来说,资产是应该带来未来的现金收益,特别是厂房、设备这类资产都可以带来未来的现金收益。但是密码货币没有这个作用,更像是价值的存储,所以它不太符合我们长期资产、无形资产这个特点。还有就是密码货币在资产列表里如何列?众所周知在资产负债表上,资产是按其流动性进行排列的。比如说机器厂房设备是短期卖不掉,所以认为是长期资产。但是密码货币实际上流动性很强,你随时可以卖掉它,相当于是现金,如果列在无形资产里面会扭曲资产负债表的呈现。无论是证券监管、税务法规、还是会计准则的制定,都需要有一个非常漫长的过程 [11]。
基金项目
本论文得到了厦门国家会计学院2019年“云顶课题:YD20190101 Python财务数据分析”项目的支持。