超越区块链1的核心体系

bbc1的Python项目详细描述


BBC-1核心系统(超越区块链1)

许可证/a>构建状态

该项目是基于python的bbc-1参考实现,bbc-1是一个可信赖的区块链以外的记录保存系统。

设计文件(白皮书)和分析文件可在此处此处.bbc-1的灵感来自比特币、以太坊、超账本项目等区块链技术。 bbc-1是一个简单但可靠的分布式账本系统,与庞大而复杂的现有区块链平台形成鲜明对比。 bbc-1的核心是事务数据结构和事务之间的关系,它形成了一个图形拓扑。 交易应该由交易的股东签署。bbc-1通过事务关系的拓扑结构和事务上的签名来实现数据的完整性和透明性。简单地说,bbc-1没有块,因此既不需要挖掘也不需要本机加密货币。 bbc-1既可用于私人/企业用途,也可用于公共用途。bbc-1有一个的概念,用于确定数据管理的区域。任何网络实现(如用于p2p拓扑管理的kademlia)都可以应用于每个域。 尽管bbc-1中有许多todo,但是这个参考实现包含了bbc-1的大部分概念,并且可以在私有/企业系统中工作。当复杂的p2p算法准备就绪时,bbc-1将能够支持公共用例。

这个库中的源代码是bbc-1的一个平台,bbc_core.py是核心节点的主要进程。 bbc-1的api在bbc_app.py和bbclib.py中定义。所以应用程序开发人员应该将它们导入到你的应用程序中。 要构建bbc-1系统,需要在主机中安装bbc1包,并且需要在上运行bbc_core.py 每个主机。为了配置bbc-1网络,可以使用utils/目录中的实用程序。它们是一种 为您开发自己的管理工具。

有关详细信息,请阅读docs/目录中的文档。不仅有文档,还有幻灯片(pdf)解释了bbc-1的设计及其实现。

故障排除

通过pip安装bbc1有时会因为pip缓存问题而失败。在libbbcsig构建过程中终止安装过程时,可能会发生这种情况。 这会导致libbbcsig模块的pip缓存出现缺陷,并导致永远无法安装。

要解决此问题,需要在不使用缓存的情况下删除pip缓存或pip安装。下面将解释如何解决此问题。

解决方案1

删除pip缓存目录是解决此问题的基本方法。各种操作系统平台的缓存目录如下:

删除缓存目录后,再次安装py bbclib module。

python3 -mvenv venv
. venv/bin/activate
pip install py-bbclib

解决方案2

禁用缓存并重新安装模块是另一种解决方案,这是一种更简单的方法。

python3 -mvenv venv
. venv/bin/activate
pip --no-cache-dir install -I py-bbclib 

数据库元数据的最新变化BLE

在v1.3的更新中,db的元表被更新以支持基于时间戳的搜索。事务数据本身的主表保持不变,因此只需更新元表就可以进行迁移。 迁移工具由utils/db_migration_tool.py提供。下面介绍如何迁移。

迁移步骤1

如果使用pip bbc1模块,请通过pip命令安装新模块。然后,停止旧的bbc_core.py进程,开始新的进程。 当新的bbc_core.py启动时,dbs的元表会自动升级。

迁移步骤2

通过指定目标工作目录运行db_migration_tool.py。如果使用PIP模块,可以按如下方式直接调用该工具:

db_migration_tool.py -w 'working_dir' 

您将看到该工具正在升级记录。 在高事务率的情况下,某些记录可能保持不变。在这种情况下,请重新运行该工具。

注意,您必须对每个工作目录执行步骤1和2,因为进程读取工作目录中的配置文件并升级配置中指定的数据库。

文档

有些文档在docs/中提供

环境

  • 巨蟒

    • python 3.5.0或更高版本
    • 建议使用Virtualenv
      • python-mvenv
    • 在某些环境中,pipenv不起作用。
      • 安装脚本中似乎存在一些错误。所以,现在请不要使用pipenv。
  • 自制MacOS工具

    brew install libtool automake python3
    pip3 install virtualenv
    
  • Linux工具(Ubuntu16.04 LTS,18.04 LTS)

    sudo apt-get update
    sudo apt-get install -y git tzdata openssh-server python3 python3-dev python3-pip python3-venv libffi-dev net-tools autoconf automake libtool libssl-dev make
    

快速启动

来自github中的源代码

  1. 安装开发工具(libtool、automake)

  2. 安装python和pip

  3. 克隆此项目

  4. 在根目录中准备基于openssl的库

    sh prepare.sh
    
  5. 按以下方式安装依赖项ing命令(对于python 3.6)

    python -mvenv venv
    source venv/bin/activate
    pip install -r requirements.txt
    
  6. 在终端上启动bbc_core.py

    cd core
    python bbc_core.py
    
  7. 在另一个终端上启动一个示例应用程序(最初应该在bbc1/top目录下)

    python3 -mvenv venv
    . venv/bin/activate
    pip install py-bbclib
    
    0
  8. < > >

    使用pip

    1. 安装开发工具(libtool、automake)
    2. 安装python和pip
    3. 通过PIP安装BBC1
      python3 -mvenv venv
      . venv/bin/activate
      pip install py-bbclib
      
      1
    4. < > >

      使用docker(参见docker/中的readme.md)

      1. 在主机上安装Docker
      2. 克隆此项目
      3. 建立Docker镜像 如果你想把源代码放在你的容器里,
        python3 -mvenv venv
        . venv/bin/activate
        pip install py-bbclib
        
        2 或者,如果你只是想用bbc-1,
        python3 -mvenv venv
        . venv/bin/activate
        pip install py-bbclib
        
        3
      4. 运行Docker容器
        python3 -mvenv venv
        . venv/bin/activate
        pip install py-bbclib
        
        4
      5. 登录到容器
        python3 -mvenv venv
        . venv/bin/activate
        pip install py-bbclib
        
        5 或
        python3 -mvenv venv
        . venv/bin/activate
        pip install py-bbclib
        
        6 初始密码为"bbc1"。
      6. < > >

        工作目录

        docker容器上bbc-1的工作目录挂载在docker/data/.bbc1/上。您将在工作目录中找到配置文件、分类数据库和文件存储目录。

        文件/目录

        • BBC1/核心/
          • BBC-1的核心功能
        • UL> UTILS/
          • BBC-1系统配置实用程序
        • 实例/
          • bbc-1上的示例应用程序
        • 码头工人/
          • Docker环境
          检验
          • pytest的测试代码
        • DOCS/
          • 关于bbc-1及其参考实现的文档
        • 某处/.bbc1/
          • bbc_core.py的默认工作目录名
        • 需求.txt
          • 需要python模块
        • setup.py
        • 清单.in
        • 准备.py
          • 用于创建python模块
        • 准备.sh
          • 设置脚本

        欢迎加入QQ群-->: 979659372 Python中文网_新手群

        推荐PyPI第三方库


热门话题
java从JSP或HTML向servlet发送多个参数   java方法来查看字符是否在字符数组中   使用带有java的MAC地址连接到设备   java如何将csv文件中的数据打印到secondactivity?   java如何从netbean 7.0.1连接到数据库   java考虑所有可能的类值,用于输出测试分割的预测值。   java我的actionListener调用有什么问题   swing在Java中实现粒子过滤器最有效的方法是什么?   java运行。getFontFamily()为返回null。使用apachepoi的docx文件   一个事务中的java领域循环与每个步骤循环中的一个事务   java日期格式与Spring Boot不兼容   java类冲突。处理   java GridBagLayout不工作   java将图像发送到另一个应用程序