Py学习  »  区块链

干货 | 区块链记账原理

Unitimes • 5 年前 • 239 次点击  

unitimes.media

全球视角,独到见解


“区块链1.0是一个基于密码学安全的分布式账本,是一个方便验证,不可篡改的账本。本文将详细阐述区块链1.0的记账原理。”



通常认为与智能合约相结合的区块链为区块链2.0,比如以太坊就是典型的区块链2.0。本文主要阐述区块链1.0的记账原理。在讲区块链记账之前,先说明一下哈希函数。


哈希函数


哈希函数:Hash(原始信息) = 摘要信息


原始信息可以是任意的信息, hash之后会得到一个简短的摘要信息


哈希函数有几个特点:


· 同样的原始信息用同一个哈希函数总能得到相同的摘要信息


· 原始信息任何微小的变化都会哈希出面目全非的摘要信息


· 从摘要信息无法逆向推算出原始信息


举例说明:


Hash(张三借给李四100万,利息1%,1年后还本息 …..) = AC4635D34DEF


账本上记录了AC4635D34DEF这样一条记录。


可以看出哈希函数有4个作用:


· 简化信息
很好理解,哈希后的信息变短了。


· 标识信息
可以使用AC4635D34DEF来标识原始信息,摘要信息也称为原始信息的id。


· 隐匿信息
账本是AC4635D34DEF这样一条记录,原始信息被隐匿。


· 验证信息
假如李四在还款时欺骗说,张三只借给李四10万,双方可以用AC4635D34DEF来验证原始信息


哈希函数的这4个作用在区块链技术里有广泛的运用。


区块链记账方法


假设有一个账页序号为0的账页交易记录如下:


记账时间为:2017-10-22 10:22:02


区块链在记账是会把账页信息(包含序号、记账时间、交易记录)作为原始信息进行Hash, 得到一个Hash值,如:787635ACD, 用函数表示为:



账页信息和Hash值组合在一起就构成了第一个区块。


比特币系统里约10分钟记一次账,即每个区块生成时间大概间隔10分钟


在记第2个账页的时候,会把上一个块的Hash值和当前的账页信息一起作为原始信息进行Hash,即:



这样第2个区块不仅包含了本账页信息,还间接的包含了第一个区块的信息。依次按照此方法继续记账,则最新的区块总是间接包含了所有之前的账页信息。


所有这些区块组合起来就形成了区块链,这样的区块链就构成了一个便于验证(只要验证最后一个区块的Hash值就相当于验证了整个账本),不可更改(任何一个交易信息的更改,会让所有之后的区块的Hash值发生变化,这样在验证时就无法通过)的总账本。


本文作者: Tiny熊


文章来源:深入浅出区块链


本文链接:

 https://learnblockchain.cn/2017/10/25/whatbc/


著权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

国际金融科技新媒体和社区平台

UNITIMES

网址 : unitimes.media

新浪微博:@Unitimes



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/c1ixcBMnet
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/11860
 
239 次点击