共识算法说起

区块链系统首先是分布式系统,而一致性是分布式系统的基础问题,要保证系统满足不同程度的一致性,则就要用到共识算法。

现在主流的算法有POW、POS、DPOS等等,比特币采用的POW共识算法运行9年之久,已被证明稳定可靠,然而因为巨大的硬件和能源消耗而饱受诟病,特别是专用矿机,在被淘汰之后就变成了废铁。

POS和DPOS为了避免资源的浪费,直接采取抛弃计算的方式,通过持有证明和选举来进行共识,牺牲了一定准入性和去中心化。而比原链从另一个角度来切入和解决POW资源浪费的问题。

比原链共识算法Tensority设计思路

首先我们基于以下思路来设计共识算法:

  • 计算是一种权力,不能因为能源消耗而抛弃计算的方式,为了维持系统的稳定能源消耗是必要的,而且POW已经被证明稳定可靠,同时准入门槛低。(CPU、GPU、ASIC矿机皆可进入,同时也不需要持币或者选举)
  • 矿机功能单一是原罪,只能进行哈希运算造成矿机的极大浪费,如果能够将矿机功能多样化将更有利于发展。
  • 人工智能技术的迅猛发展,AI智能加速市场需求量增大。

为此我们设计了AI友好型的共识算法Tensority。矩阵乘运算与卷积运算是人工智能常用的两种算法,相比后者,前者的应用范围更广。

为了使得比原链共识算法对人工智能友好,同时兼容所有主流的AI加速设备,比原链在算法选型上采用了矩阵乘运算。算法确定之后需要选取参与运算的数据类型,选取的标准有二:

第一,选取的数据类型需目前所有主流AI加速设备都能支持。

第二,神经网络推理的主力数据类型均要支持。

综合来看,int8数据类型满足条件。

比特币POW共识算法回顾

在说到比原链的POW共识算法Tensority之前,我们回顾一下比特币的POW共识算法:

我们知道比特币的POW共识算法是通过不停的迭代计算区块头的哈希值,不断修改参数,直到哈希值匹配的过程。

比原链POW共识算法总览

那么让我们看一下比原链的共识算法总体过程:

整个Tensority算法过程中,区块头的哈希的选取和难度值的比较仍然作为头尾衔接的步骤,但是中间穿插了很多涉及到矩阵的运算过程,而这些运算在AI计算中比较常见,所以支持比原挖矿的矿机就有能力提高AI加速服务。

下面我们来进一步细化每个过程:

种子生成

我们在总览图中可以看到Tensority有两个输入,一个是和比特币相同的哈希头,另外一个就是种子seed,那么种子是怎么来的? 我们可以看到论文中对于种子的描述:种子是一个由一段时间内的区块历史决定的32位的字节数组。种子来自于每256块的第一个块的区块头,一般来说每256个块会更换一次seed,在256块以内都会使用相同的seed。

Cache Calculation

这个步骤主要使用种子通过一定的变换获得一个矩阵。我们首先通过一定次数的哈希将种子进行扩展,以满足Scrypt的输入要求,然后使用Scrypt函数生成一个32x1024x128的矩阵。值得注意的是,我们使用的Scrypt算法就是使用在莱特币中的算法。

Matrix Construction

该步骤会将上一步产生的矩阵变成一个更为规整的矩阵从而适合后续的处理,具体过程将会比较复杂,请参考论文。

Martix Operation

该步骤比较复杂,也是最有意思的步骤。采集的区块头哈希分割为四份,每份做一次哈希生成一个新的哈希值,新的哈希值的每一个比特作为Matrix Construction生成矩阵切片的索引值,从而切片获得一个矩形。经过上述步骤后将获得128个矩形,对这些矩形进行矩阵相乘最后得到一个矩阵。

Work Generation

这个步骤是输入上一步生成的矩形变成一个32位的哈希值,从而进行最后的难度比较。首先将256x256的矩形变形位256x64的矩形,然后通过FNV函数转换为一个32位哈希值。

我们将得到的哈希值和难度值做比较,看是否满足条件,这一轮的共识算法就结束了。

图解比原链Tensority算法:如何让POW做到人工智能友好的更多相关文章

  1. 比原链CTO James | Go语言成为区块链主流开发语言的四点理由

    11月24日,比原链CTO James参加了Go中国举办的Gopher Meetup杭州站活动,与来自阿里.网易的技术专家带来Kubernetes.区块链.日志采集.云原生等话题的分享.James向大 ...

  2. [区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)

    近几天对区块链中几种常见的共识机制(PBFT,Raft,PoW,PoS,DPoS,Ripple)进行了总结.尽量使用简单易懂语言,篇幅较大,想了解的可以只读每个算法介绍中前边的原理.本篇文章主要参考& ...

  3. 图解JVM垃圾内存回收算法

    图解JVM垃圾内存回收算法 这篇文章主要介绍了图解JVM垃圾内存回收算法,由于年轻代堆空间的垃圾回收会很频繁,因此其垃圾回收算法会更加重视回收效率,下面博主和大家来一起学习一下吧 前言 首先,我们要讲 ...

  4. 浅析Facebook LibraBFT与比原链Bystack BBFT共识

    如果说什么是区块链的灵魂,那一定是共识机制. 它是区块链的根基.无论公链或是联盟链,共识机制都从基础上限制了区块链的交易处理能力和扩展性. 2019年6月18日,Facebook 发布了自己 Libr ...

  5. 比原链设计思考: 扩展性UTXO模型

    用户模型是比原链在最初就需要确定的重要数据结构, 团队的选择还是聚焦在两种典型的模型系统中,Account模型和UTXO模型,和其他大多数区块链设计一样, 选择了模型就决定了协议层的重要实现,两种模型 ...

  6. [转帖][区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得

    [区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得 置顶 2017-03-12 18:31:19 乐扣老师lekkoliu 阅读数 127953  收藏 更多 分类专栏: 技术管理 区 ...

  7. 社区观点 | 理解比原链MOV链上交换协议

    去中心化交换协议的发展 从Bitshare,Stellar到以太坊上的Etherdelta,Bancor,0x协议,去中心化交换协议也经过了好几代发展和很多模式的探索,每一代都通过前面的协议的痛点来进 ...

  8. 比原链(Bytom)正式开源Bytom-JavaScript库

    12月13日,比原链(Bytom)正式开源Bytom-JavaScript库,这个库是官方原生支持的新一代JavaScript SDK接口.JavaScript是世界上最多人使用的解释性脚本语言,JS ...

  9. 社区观点 | 关于比原链MOV巡查官制度的几点思考

    在ChainNode白皮书解密读书会01期活动中,比原链高级研究员刘秋杉带领大家领读「MOV:下一代去中心跨链 Layer 2 价值交换协议」白皮书,得到了很多粉丝的关注,其中gentledog的读书 ...

随机推荐

  1. 前端05 /js基础

    前端05 /js基础 昨日内容回顾 css选择器的优先级 行内(1000) > id(100) > 类(10) > 标签(1) > 继承(0) 颜色 rgb(255,255,2 ...

  2. css 实现动态二级菜单

    动态实现简单的二级菜单 当鼠标放到一级标签上时,鼠标会变成小手的形状 展示二级菜单,源码如下,复制即可直接使用 <!DOCTYPE html> <html lang="en ...

  3. JavaWeb项目的目录结构解释(上):

    当我们在IDEA创建JavaWeb项目时,默认的一般会有下图的目录结构,你的开发就是按照下列结构进行开发的,那么我就逐一解释他们的意思: 首先是demo:这个是项目的名字,一般你是自己创建一个与自己项 ...

  4. 二、Python系列——time时间格式的转换及计算

    # -*- coding:utf-8 -*- import pandas as pd import time import datetime start_date = '2020-06-08' # 一 ...

  5. 拦截器(Interceptor)中的invocation.invoke()是什么意思?

    拦截器(Interceptor)中的invocation.invoke()是什么意思? 最佳答案: invocation.invoke() 就是通知struts2接着干下面的事情 比如 调用下一个拦截 ...

  6. Postman接口测试实战分享,这5个问题你必须得知道!【软件测试工程师经验分享】

    在我们日常的测试工作中,接口测试其实很普遍,无论你是做什么测试,功能.自动化亦或是性能测试,都会或多或少接触到接口. 最近也有许多人来询问我:接口测试怎么测?接口测试工具有哪些? 下面我来帮你一一剖析 ...

  7. ES6语法——Promise对象

    一.概念 Promise是异步编程的一种解决方案(解决回调地狱的问题),是一个能够获取异步操作信息的对象.Promise的内部保存着某个未来才会结束的事件(通常是一个异步操作) 二.特点 1.Prom ...

  8. vue :没有全局变量的计数器

    created: created () { let num = null this.mFun(num) }, methods: methods:{ mFun(m){ if (m === null) { ...

  9. Android Studio(Kotlin)之RecyclerView

    RecyclerView应该是ListView的增强版. RecyclerView与ListView的区别(我认为的): RecyclerView的性能比ListView高 RecyclerView支 ...

  10. java环境搭建--Windows 10下java环境搭建

    1.下载jdk:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html(注意需要注册登录Oracle账号) 2.安装此处 ...