zoukankan      html  css  js  c++  java
  • 区块链中的基本概念整理

      区块链本身是由多种技术集合而成,涉及了多方面的内容,而在其组合应用的过程中,同时也产生了很多新的概念。对于这些概念的整理和理解,有助于更加深刻的理解区块链的本质,也可以指导我们如何去伪存真,更好的发挥区块链的价值。

      ***这份材料需要并且会一直更新,将自己所了解的问题以及已有的解决方案进行整理。***

     底层技术

      根据所承担功能的不同,区块链可以划分为数据层、网络层、安全层、共识层、应用层,有时还会加上激励层。每一层都会对应不同的技术,包括分布式存储、网络通信、密码学、网络安全、共识机制、智能合约、经济模型等。

        分布式存储

      分布式存储指的是区块链底层存储数据的工作,包括区块的存储、k-v数据库等。区块一般会以文件的形式存在文件系统上,数据通过k-v数据库来进行管理,比特币、以太坊等使用leveldb,fabric可选leveldb以及couchdb,相对而言,couchdb能够支持更为复杂的富查询,使用更加方便。

        网络通信

      网络通信用来完成网络中交易转发、区块确认以及各节点之间的数据同步,通常采用p2p的方式,各个节点是对等的。fabric中使用Gossip。

        密码学

      密码学是区块链用到的重要技术之一。最开始,比特币更多是对椭圆曲线公钥密码算法、Ripemd和SHA2数据摘要算法的应用。生成用户公私钥、地址用来标示用户在链上的唯一性,保证用户资产只能有用户使用;计算交易hash、区块hash,保证每笔交易、每个区块的唯一性...随着区块链的发展,链上隐私保护成为关注的热点,对称加密、密钥协商、新型密码学技术如环签名、同态加密、零知识证明等开始被广泛应用在隐私保护方案中,保护用户隐私数据。

    底层平台 非对称算法 哈希算法
    比特币 secp256k1 Ripemd、SHA2-256
    以太坊 secp256k1 Keccak256、SHA3
    Fabric ECDSAP256 SHA256、SHA384
    CITA secp256k1 Keccak256、SHA3

        网络安全

      网络安全是一个更大层面的内容。包括隐私保护、智能合约安全、甚至协议安全、系统安全等。现阶段,区块链网络安全方面存在诸多问题,隐私保护方案需要进一步完善,能够支持在被节点验证的情况下保护使用者隐私,如引入零知识证明、同态加密、私有账本等各种新兴密码学技术或者解决方案;智能合约的安全性也存在诸多问题,包括基本的代码漏洞等,现在已有诸多创业公司(PeckSheild、链安等)致力于提高智能合约安全性,推出智能合约安全监测工具;协议安全是指区块链协议本身是否安全,有无理论上的漏洞或者安全性问题;系统安全指的是一个区块链系统在建设过程中可能存在的问题,如代码实现、系统运行过程中的问题。

        共识机制

      共识机制是区块链中最核心的内容,是保证区块链去中心、去信任特性的关键。常见的共识机制有工作量证明(POW)、权益证明(POS)、拜占庭容错(PBFT)、简化版拜占庭容错(RAFT)等,容错能力依次降低。

      POW可以容纳一半以下算力时任何错误的发生,但是对资源消耗高,共识时间慢,常用于比特币、以太坊等初期公链项目中;

      POS可以容纳一半以下权益时任何错误的发生,减少资源消耗,效率提高,但是权益越高权力越大,最终会向集中式发展,EOS项目使用,以太坊也正在逐渐转向POS;

      PBFT是联盟链普遍使用的共识算法,可以容纳约三分之一的错误(3f+1个节点时,容纳f个节点出错),效率相对更高,但是节点数量受限,规模不能过大;

      RAFT不能容纳拜占庭错误,基于联盟链参与方之间已有一定的信任基础,常用于联盟链中。

        智能合约

      本质上看,智能合约就是在链上执行的业务逻辑。智能合约的概念在95时就已经由尼克萨博(Nick Szabo)提出,但是一直没有合适的执行环境。直到区块链出现,为智能合约提供了一个理想的运行环境。

      由于不同平台实现的语言不一样,支持的虚拟机不同,因此智能合约的实现语言也不一致。

      以太坊使用solidity,fabric可以使用go、java等。

        经济模型

      经济模块是区块链中的重要部分,是保证整个系统成功、稳定、安全运行的重要基础,尤其是公链以及分布式应用。良好的经济模块可以促使各方都按照系统所设定的正常规则执行,提高作恶的难度,降低作恶的发生,同时奖励诚实的工作者,让系统朝着好的一方面发展。

      分类方式

      通常来说,区块链有两种主要分类方式。一是根据发展阶段分为区块链1.0、区块链2.0、区块链3.0;二是根据对参与方访问权限和范围的不同分为公有链、联盟链和私有链。

      发展阶段

      区块链1.0

      区块链2.0

      区块链3.0

      主要形态

      公有链

      联盟链

      私有链

  • 相关阅读:
    文件权限
    函数指针
    位操作
    宏定义
    GNU gcc常用编译选项
    SHELL编程(六)---------数组和函数
    26.使用中间件的方式包装日志输出
    25.最基本的日志输出方式,内置日志包使用
    24.把熔断器整合到我们的客户端代码中(初步)
    23.熔断器学习,熔断器的三种状态,状态获取
  • 原文地址:https://www.cnblogs.com/Faquir/p/10296554.html
Copyright © 2011-2022 走看看