区块链基础概念

定义:

区块链实际上是一个分布式的账本,一种通过密码学去中心化、去信任的方式集体维护一个公共数据库的技术方案。

数据库:

该数据库由所有的参与者来决定,具有不可篡改性。同时该数据库采用分布式存储和分布式记录。(说明:不可篡改性是指在当前的技术下和实际情况下是无法篡改的,但并不代表在未来是不可行的,如果计算机的计算能力足够强,那么,由于区块链底层是基于密码学的,难保有一天可以破解,假使到了那一天,也难保会出现新的加密解决方案,使之仍然成为不可能。而这里的分布式记录则指有所有参与成员共同记录)

区块链技术:

区块链并不是一种新的单一的技术,该技术涉及密码学,数学,计算机学,分布式存储等多种技术。

特性:

区块链具有开放、共识、去中心、去信任、交易透明、交易双方匿名、可追溯、不可篡改等特性。

开放,共识

        开放指任何人,任何机构,任何可进行类计算计算的设备均可参与,均可成为一个节点,同时可以存有整个区块链的完整数据库。

        共识指节点间基于一套共识机制,通过竞争计算共同维护整个区块链,其中任意一个节点计算错误或者出现故障,均不影响其他节点。

去中心,去信任

        区块链是一个由众多节点组成的端到端的网络,不存在中心化的设备和管理机构。节点之间数据交换通过数字签名技术进行验证,不需要相互信任,只需按照系统既定的规则进行即可,节点之间不能也无法欺骗其他节点。

交易透明,双方匿名
               交易透明是指每一笔交易的数据信息都是公开的,是可追随并可被其他节点接收和查看的。

       双方匿名是指交易双方不需要知道对方姓甚名谁,具体是谁,故节点不需要公开身份,当然这一切是基于去信任的基础上的,而去信任又是基于可靠的密码学的基础上的。

可追溯,不可篡改:

        可追溯是指每个区块都能通过密码学方法与相邻两个区块相连,构成链状结构,因而可以追溯任何一个区块的前世今生。

        不可篡改并非真的不可篡改,只是该情况几乎不可能发生,因为篡改者至少要联合或者说控制整个区块链网络中51%的节点。

分类:

目前常见的分类有公有链,私有链和联盟链。联盟链则是介于公有和私有之间。

以filcoin和btc为例,每个节点均包括以下内容:

  1. 钱包,钱包可分为热钱包和冷钱包,常用于交易,通常钱包地址是一个加密后的hash值。

  2. 完整区块链,一个完整的区块链记录了所有的交易历史,通过特殊的结构保证历史交易的安全性,并且用来验证交易的合法性。

  3. 矿工,通过记录交易及解数学难题(btc)来获得出块权,而fil则是通过选举机制选举出本轮的获胜者,实际上所谓的选举机制类似于btc的解数学难题,出块成功则可获取出块奖励。

  4. 路由功能,把其他节点传送过来的交易信息传送给更多的人。

下面简述一笔交易流程,以btc为例:

  1. 所有者A利用它的私钥对前一次交易和下一位所有者B(B以公钥作为接收方地址)签署一个数字签名,并将这个数字签名这枚货币的末尾,制作成交易单。

  2. A将交易单广播致全网,btc就发送给了B,每个节点都将交易信息纳入一个区块。(对于B而言,该枚btc会及时的显示到该钱包中,但是实际上需要至少6个节点验证通过后才能真正到账)。

  3. 每一位矿工都尝试着解出一道数学难题以获得出块权,以此获得出块奖励(节点反复尝试寻找一个数值,使得将该数值、区块链中最后一个区块的hash值以及交易单三部分传入SHA256算法后计算出一一个散列值X,若该值满足解的条件,则获得出块权,在此解不唯一)

  4. 当一个节点找到解时,他就向全网广播该区块对应时间戳的所有交易,并由全网其他节点核对。(时间戳用来证明某特定区块必然于某特定时间是存在的,btc网络采取五个节点以上的节点的时间的中间值作为时间戳)

  5. 其他节点核对该区块记账的正确性,没有错误之后他们将在该区块之后竞争下一个区块的出块权,这样就形成了一个合法记账的区块链。(在btc中,每个区块的出块时间大概10分钟,但是随着全网算力的增加,出块时间会减少,为了保持仍然是十分钟,故解题难度会有所上升)

数据结构:

区块链 以区块为单位组织数据,区块里的内容为每一笔交易的记录,每个区块包括区块头,区块主体,区块主体只记录了该段时间内所有交易的记录单,实际上区块的所有功能有区块头来定义,一个区块头包含以下内容:

  1. 版本号,标识软件和和协议的相关版本信息

  2. 父区块的hash值,通过该hash值下一个区块和上一个区块建立联系,形成链状结构,同时该hash值对区块链的安全性起到了至关重要的作用

  3. Merkle根,该值是由区块主体中所有交易的hash值再逐级两两hash计算出来的一个值,主要用于检验一笔交易是否存在这个区块中

  4. 时间戳,记录该区块产生的时间,精确到秒

  5. 难度值,该区块相关数学题的难度目标

  6. 随机数Nonce,记录解密该区块相关数学题的答案的值

区块的形成过程:

  1. 把在本地内存中的交易信息记录到区块主体
  2. 在区块主体中生成该区块所有交易信息的Merkle树,并讲Merkle树根的值保存到区块头中
  3. 把上一个刚刚生成的区块的区块头的数据通过SHA256算法生成一个hash值填入到当前区块的父hash值区域
  4. 把当前时间保存到时间戳字段
  5. 难度字段会根据之前一段时间计算的的难度情况和时间调整解题难度,以保证时间不变

核心问题:

工作量证明:区块头包含一个随机数,使得区块的散列值出现了所需的0个数。节点通过反复尝试来找到这个0随机数,这样就建立了一个工作量证明机制。

工作量证明机制的本质是一CPU一票,“大多数”的决定表达为最长的链,最长的链表达为最长的链,因为最长的链包含了最大的工作量。如果大多数的CPU由诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如果想要修改已出现的区块,区块攻击者必须完成该区块及该区块后的所有区块的工作量,并最终赶上和超越诚实节点的工作量。

分叉:同一时间不一定只有一个节点获得出块权,可能会有多个节点同时广播他们的合法临时区块,此时这些区块都是合法的,因而同一父块会产生多个子块,产生多个分支,直到下一个区块产生,且该分支被证实为当前最长的一条链,那么其它无效分支将会被裁剪并被抛弃,而其他分支则需要转换阵营为当前有效分支

双花:二重支付,攻击者尝试讲同一笔钱用作不同交易。每当节点把新的交易单加入区块之前,会顺着交易的发起方的公钥向前遍历检查,检查当前交易使用的币是否属于交易的发起方,此间查可追溯到该币的诞生点(即产生它的那个区块源)。虽然多分交易单可任意序的广播,但是他们最终加入区块时必定呈一定的顺序,区块以hash值作为时间戳,这决定了任何一笔交易的资金来源都可以被回溯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值