zoukankan      html  css  js  c++  java
  • 区块链通用架构

     

    我们将区块链底层分为 6 层,从下至上分别是存储层、数据层、网络层、共识层、激励层和应用层。

    存储层主要存储交易日志和交易相关的内容。其中,交易日志基于 LogBack 实现。交易的内容由内置的 SQLite 数据库存储,读写 SQLite 数据库可以基于 JPA 实现;交易的上链元数据信息由 RocksDB 或 LevelDB 存储。

    数据层由区块和区块“链”(区块的链式结构)组成。其中,区块中还会涉及交易列表在 Merkle 树中的存储及根节点哈希值的计算。交易的内容也需要加密处理。由于在联盟链中有多个节点,为有效管理节点数据及保障数据安全,建议为不同节点分配不同的公、私钥,以便加密使用。

    网络层主要提供共识达成及数据通信的底层支持。在区块链中,每个节点既是数据的发送方,又是数据的接收方。可以说每个节点既是客户端,又是服务端,因此需要基于长连接来实现。我们可以基于 WebSocket 用原生方式建立长连接,也可以基于长连接第三方工具包实现。

    共识层采用 PBFT(Practical Byzantine Fault Tolerance)共识算法。不同于公链的挖矿机制,联盟链中更注重各节点信息的统一,因此可以省去挖矿,直奔共识达成的目标。

    激励层主要是币(Coin)和 Token 的颁发和流通。在公链中,激励是公链的灵魂;但在联盟链中不是必需的。

    应用层主要是联盟链中各个产品的落地。一般联盟链的应用层都是面向行业的,解决行业内的问题。

  • 相关阅读:
    app启动优化
    CountDownLatch妙用
    匿名内部类为什么有可能造成内存泄漏
    单例模式为什么有可能造成内存泄漏
    左移右移记不住怎么办
    说一说ThreadLocal
    对framework层的一些看法
    双重锁单例
    JMM总结
    关于lock前缀
  • 原文地址:https://www.cnblogs.com/peteremperor/p/15557164.html
Copyright © 2011-2022 走看看