Velas是会自主优化的区块链平台 使用DPoS共识确保区块链的交易安全

2019-10-12 13:00:00
来源: 新浪

  【摘要】 Velas 是一个会自主学习和优化的区块链平台,用于安全、可交互操作、可扩展性极好的交易和智能合约。Velas使用基于 AI 的 DPoS(AIDPoS)共识来确保区块链

Velas 是一个会自主学习和优化的区块链平台,用于安全、可交互操作、可扩展性极好的交易和智能合约。Velas使用基于 AI 的 DPoS(AIDPoS)共识来确保区块链的高容量交易处理安全,同时不减弱去中心化特性、稳定性和安全性。通过使用基于 AI 的 DPoS 共识算法,消除了人性腐败问题,从而形成了一个容错系统,防止了现有大多数公链项目的主要问题,如 51% 的攻击和无抵押问题。

介绍

Velas 区块链平台采用 AI 优化的神经网络来增强其共识算法。Velas 的目的是解决和修正大多数现有区块链所面临的问题和挑战。

神经网络用于作为计算节点运行和区块形成时间的奖励。矩阵计算服务器(神经网络权重)位于网络成员的节点上,用于接收奖励。与比特币矿工类似,节点需要有大量的算力来计算矩阵。例如,安装功能强大的专用显卡(GPU)。

为了训练神经网络,在训练前采用遗传算法,利用误差反向传播的方法,求出目标函数的最小值。

网络训练算法

遗传算法:

1. 创建一个样本:一个权重随机(基因)的矩阵

2. 竞争:获得目标函数的最小值

3. 选择:按误差排列样本,误差最小的获得胜利。

4. 复制:矩阵元素或基因的交换,从前两个最成功的以 50/50交换。

5. 重复该循环,直到达到 70% 的概率。

选择最好的网络。

·在形成新的区块循环之前,节点形成一个测试数据集。

·在形成测试样例后,检查矩阵。

·误差最小的矩阵获胜,进入下一个周期。

·获胜矩阵的节点从网络接收 Velas(VLX)

销售和购买最有效样本的市场将不断进化,这将打开区块链网络维护算法的发展,并奖励基于 Velas 的其他系统。

在基于量子技术的超高速计算系统时代,在短时间内可以实现接近理想状态的神经网络,在商用量子计算机中对其进行训练,而随着时间的推移只需增加一些新功能。

通过解决区块链网络维护任务,各 AIDPoS 节点实际上为后续开发神经网络贡献了智能计算。这一切都是在不需要所选节点的运行者理解任何编程语言的情况下,就可以发生的。

网络版本推出计划

阶段 1(预 Alpha ):

创建区块链系统结构、代币、4 个节点上的交易。节点将由网络组织者在Pre-Alpha 阶段运行。钱包中的智能合约将允许所有 CPS 币(CoinPaymentsCoin)用户被 1:1 转换为 VLX(Velas)。创建代币或自定义数字资产。

阶段 2(Alpha):

创建一个稳定的系统,在 10 个节点上部署 Velas,从网络组织者 4 个服务器测试 AI 。引入支持多币种的钱包容器,支持公共和私有发送功能。

阶段 3(Beta):

添加 AI 填充测试节点,与服务器端 AI 竞争。进一步扩展支持多币种的钱包容器系统,支持所有主流加密数字货币,支持发送、接收和智能合约等功能。

阶段 4(候选发布):

将 AI 集成到现有 advisor 节点中,其数量由 AI 逻辑设置。

第 5 阶段(发布):

启动系统的全部功能。用户可以下载神经网络工具包,并使用可视化工具为他们的项目进行优化,并根据贡献获得奖励。代币节点将使用经过训练的神经元网络在大多数环境下进行预备训练,并允许轻松设置和维护代币节点。

Velas 平台概述

术语和定义

·VelasCycle——有限时间段和区块数。每个 VelasCycle 由 一个 SimpleBlock+ 一个 CycleBlock 组成;

·CycleBlock– 一个区块,其包含允许在当前 VelasCycle 中出块节点列表;

·SimpleBlock– 包括交易列表 – 不与 CycleBlock 混淆;

·NodeID– 每个节点都包含一个密钥和公钥。公钥是节点标识符,密钥用于生成 BlockSign;

·BlockSign– 区块创建者标识区块编号的签名;

·TxQuery– 查询或“特殊交易”。它必须广播到网络,以显示其在下一个 VelasCycle 内生产区块的意图。此交易将包括NodeID。生成 TxQuery 需要 100,000 个 Velas 代币。

在 VelasCycle 结束时,每个节点必须通过以下方式定义下一个算法:

1. 从上一个 VelasCycle 收集所有 TxQueries;

2. 按 NodeIDs 对 TxQueries 列表按词典顺序排序;

3. 为下一个 VelasCycle 生成一个潜在节点列表;

4. 收集上一个 VelasCycle 的所有 BlockSign;

5. 用 BlockSign 做一棵默克尔树,这将产生一个 VelasSeed。VelasSeeds 用于同步 Velas 网络中所有节点之间的随机函数。算法具有确定性;

6. 利 用 一 个 VelasCycle 的 时 间 周 期 和 区 块 时 间, 计 算 下 一个 VelasCycle 的 区 块 数。 例 如,VelasCycle–20 小 时,区块时间 –1 秒;20 小时 *60 分钟 /1 秒 =72000 个区块每VelasCycle;

7. VelasSeed 用于随机化函数;

8. 最后一步包括在下一个 VelasCycle 中调用随机函数,调用次数和下一 VelasCycle 中的区块一样,以此来同步所有节点;

出块节点的选择标准最初将完全基于抵押的 Vela 数量。因此,一个节点抵押越多代币,它越有可能被选为出块节点,并收到 Velas(VLX)回报。

例如,一个拥有 2,000,000 VLX 的节点被选中的概率是拥有 1,000,000 VLX的节点的 2 倍。

请注意,大多数抵押 Velas 的节点需要抵押累积 51% 的代币。这是在 Velas区块链上达成共识所需的最低限度。

VelasCycle 被 允 许 跳 过 SimpleBlocks。 至 少 51% 的 区 块 需 要 在VelasCycle 中进行验证。

达成共识的方法

AIDPoS 能够成功地解决现有备选方案的许多缺点和局限性。当网络开始 1:1 转换 CoinPayments Coin(CPS)到 Velas(VLX)时,2,000,000,000 枚代币被预挖。

1. 形成区块链时,所有代币在服务组织者之间共享。

2. 当形成新区块并结束循环区块时,将释放代币。

3. 发行的代币被奖励给出块者。

交易验证是通过在附属网络上“抵押”(持有)代币来执行的。Velas(VLX)的抵押建立了一个可信的验证人网络,该网络将处理和形成一个到链的交易区块。从本质上讲,正是所抵押的 Velas(VLX)数量使人们对区块链的当前状态达成共识。

参加者将获得易于使用的钱包软件来抵押代币。通过收取一段时间的网络费用来补偿验证人的抵押。抵押的越多,分配到的 Velas(VLX)越多。对于那些拥有专用 GPU 的参与者,将提供额外的软件供选择,以提升神经网络,并因其对 AI的贡献和训练而获得奖励。因此,PoS 方法可以激励大量的长期投资,并结合正确的验证行为和回报,提供可靠的、规模可观的代币流,同时尽可能减少开销或对高级编程语言知识的要求。

Velas 人工直觉 DPoS 算法

人工直觉 DPoS(AIDPoS)用于确保 Velas 区块链安全。AIDPoS 试图提供一种可以替代常用的共识机制,比如比特币传统的 PoW,Peercoin 和 NXT 的PoS 系统。

Velas AI

人工直觉是一系列用于识别一组数据中关系和模式的算法。网络可以调整输入,从而在不必重新设计输出标准的情况下产生最佳的可能结果。

Velas 系统的选定技术参数包括:

·每秒交易数:>30,000;

·每秒区块数:1 秒 -2 分钟,取决于 AI 算法的计算结果;

区块时间取决于网络负载(TPS)。如果网络每秒有许多交易,则区块时间将很短。如果网络没有交易,则区块时间将很长。在生成空块的情况下,它只包含没有主体的区块头。

AI 算法将从以下历史数据中得出:

·VelasNodes 数量

·每个 VelasCycle 的交易数

VelasCycle 的特殊交易

神经算法将优化以下参数:

·Velas 节点网络

·区块大小

·区块时间

·增加 TPS

优化后的参数将是抵押者的交易佣金总额。

Velas 奖励

奖励将提供给节点 / 区块生成者,用于主动正确地参与系统,并取决于获得的分数。算法更改是动态进行的,考虑到以下参数:

·每 VelasCycle 时间

·每区块时间

·每区块包含的交易

节点分级评分算法

使用重要性证明算法。之后用于优化的关键参数包括:

·一个节点的交易数,并考虑其质量。假的交易会导致减分,而真实交易会得到加分奖励。

· 账户余额。额外的分数根据抵押的代币分配。Advisor 节点(区块生产商)在早期阶段预估至少需要 1,000,000 个 VLX。

·在线时间。根据区块生成节点的总正常运行持续时间分配额外的分数。

·区块生成事件。每个区块生成节点接收每个生成的区块分数。

如果某个节点由于任何原因(例如,由于网络问题,处理能力不足或运行时间不足)未生成区块,则会扣除该节点上一点分数。当形成一个区块时,也会生成验证人列表。根据收到的分数,验证人被添加到列表中。

上面指定的数据通过神经网络,然后我们接收 y' =f(x)目标函数的数据。每一个 y' 都会经过 softmax 层。在此之后,我们得到最大质量偏差的百分比。区块生成的奖励取决于在神经网络中收到的贡献的百分比。

奖励代币

假设区块的总奖励为 100%,参与者将按照他们在神经网络中收到的分数所占百分比对总奖励进行分配。

人工直觉(AI)将基于线性回归模型。该模型采用随机方法训练。AI 基于两个模型。利用多维线性回归模型计算类的概率分布密度,贝叶斯分类器利用后验最大概率估计确定正确的决策。

由于在超复杂的环境中应用了大量的输入数据流,因此采用了基于遗传算法的AI ,因为它能够比采用误差反向传播方法的标准神经网络更有效地进行多次处理。

遗传算法用于使用进化方法解决优化问题,即从各种最合适的解决方案中进行选择。它们不同于传统的优化方法,具有以下特性:

1. 他们处理问题参数的编码形式,而不是它们的值。

2. 基于一定的人数寻找解决方案。

3. 使用的是目标函数,而不是其导数。

4. 算法是随机的。

将遗传算法用于神经网络训练,作为反向传播误差法的替代方法。训练的目的是使成本函数最小化。此外,使用遗传算法可以避免局部极小值中的代价函数。

需要强调的是,误差的反向传播算法通常比遗传算法执行得更快,因为后者要扫描所有可能的结果。然而,梯度法并不总能得到预期的结果,这取决于起始点的选择。此外,误差反向传播方法的一个基本缺陷是局部最优中的“干扰”。这就是为什么遗传 AI 是一种更具创新性和前景的神经网络学习方法。

算法实现细节

确定节点等级的人工直觉算法和确定一个阶段中区块数的算法。

确定区块数量的 AI 算法:每个区块由既定的交易数组成。这个数字取决于区块链的使用强度。如果在区块形成期间,未确认的交易仍然存在,那么有必要通过减少区块之间的时间来增加这个阶段中的区块数量。

当形成一个新的区块周期时,有必要通过使用增长函数的行列式确定每个时期的标准差,来检查前面阶段中未确认的交易数量。接下来,我们通过计算偏差来计算块中应该有多少个交易。然后,我们计算出所需的区块数和出块时间。

确定节点等级的 AI 算法:节点区块生成者在确认出块时得到分数。如果一个节点由于各种原因(缺乏计算能力或网络问题)未形成区块,则从该节点中减去分数。当形成一个区块周期时,也会形成一个 advisor 列表。Advisor 将收到的分数添加到列表中。

人工直觉决定了投票名单中的评分。输入参数为:

a)节点交易数

b)帐户余额

c)网络时间

d)形成区块的分数

训练示例包括在前一个周期中出块时的错误、延迟和未确认交易。

AI 的结果应该是候选节点列表中的一个等级。这四个参数是输入数据,我们将根据输入数据对流量进行分类。

DNA 是神经网络(矩阵)的层,将在分离的节点上计算。可以添加更多的输入参数:

1. 在形成区块之后剩余的未确认交易数。

2. 一个参与交易检查的节点(针对 51% 的攻击和双倍消耗的攻击的保护)

3. 当一个节点在一个 cycle-block 内时,真实的投票和交易检查速度。

AI 在 Velas 上的应用

在 Velas 平台上使用 AI 的目的是降低共识的成本。

Velas 平台顶部的 AI 框架:

1. 激励网络(节点)参与者在网络中的可靠性、活跃性,最大化相关分数 / 奖励。

2. 阻止关于错误交易的虚假消息,从而提高消息的质量和网络对攻击的抵抗力。

3. 形成每个阶段的计时,从而加速 TPS,减少一般的计算网络工作量。换言之,它是关于在高工作负载期间出块的动态时间,同时将出块任务分配给具有较高计算能力的节点。

4. 正确、最优地分配奖励。

防 51% 攻击:

我们使用 DPoS 算法。这个阶段持续 24 小时。

创建一个阶段时,将创建一个循环块,其中选择具有更多权重的节点。选择到循环块的节点将离开其桩号。

新块必须由 80% 的循环区块节点签名。因此,为了侵入系统,入侵者需要进入一个 80% 以上参与率的循环区块,并创建占整个系统 80% 以上的假节点。在这种情况下,入侵者会拥有整个系统,他们抢劫自己是没有意义的。

Velas 节点选择

Velas 节点选择的目的是计算神经网络的矩阵。GPU“机载”是必要条件。网络管理器设置多个节点。矩阵计算的输入从区块链接收。

该算法是公共的,因此每个网络成员都可以:

1. 获取输入;

2. 完成矩阵;

3. 进行控制计算。

根据神经网络的计算结果,一个节点形成一个具有时序的循环区块,并将其发送给所有网络参与者。

一个节点存储一个循环块的节点参与者的抵押代币。通过计算神经网络,一个节点在一个阶段结束后分配奖励。

如果检测到攻击,节点将分解一个循环区块并出新块。

循环区块结构

循环时间 = 72001 区块(72000 SimpleBlocks 每循环 +Cycle-block)

进入网络的节点

所有试图抵押的节点必须向网络发送一个特殊交易,以便在下面的区块周期中将自己记录为出块者。

区块循环结束

选择节点以出块

Velas 平台上的交易

交易模型的描述

Velas 平台上的 Velas 代币的转让是通过将新代币的公钥重新发布给后续所有者来执行的,同时保留上一笔交易的哈希值。交易的验证是通过链的验证来完成的。

为了防止诸如“双花”这样的难题,可以通过网络验证链的真实性来解决。这是通过引入“Epoch”协议实现的,其提供了更高的安全级别,允许在特定的时间内将区块添加到区块链。这些区块是公开的,可以在区块浏览器上查看和检查到。每个区块包含前一个区块的哈希和一个时间戳。每个包含的时间戳增强了整个链的有效性。

每秒交易数

举例:

·区块时间 -2 秒 (1 秒 -2 分钟 );

·每个区块的交易量 - 60,000 笔 ;

·每秒交易数 - 60,000 / 2 = 30,000 TPS;

交易过程

在这个部分中,我们将总结创建和处理 Velas 交易的关键细节

1) 每个交易都有以下参数 :

·交易哈希

·区块链交易类型

·交易被区块确认时的区块数或时间戳

·使用的交易输入数量

·使用的交易输入列表

·创建的交易输出数量

·创建的交易输出列表

2) 所有交易输入的值在处理之前都要经过验证。必须审查所需参数的规格。例如,佣金不能小于或等于零。如果有问题的交易没有得到确认,则该交易将不被处理。

3) 必须启动和处理交易验证程序。这项核查应确保下列事件按计划进行:

·新交易创建完成

·生成新代币新交易标识符

·获得新代币所有者签名

·执行信息中指示网络节点处理交易的数据的加密

·成功生成并记录传输到网络所有节点的数据

交易结构

交易确认

所有的 Velas 交易均被视为是未经确认的,直到它们包含在一个有效的区块中。近创建的区块由出块节点分发到网络。由于新的区块被添加到现有的块链中,所以每个额外的区块都会增加一个交易确认验证。已发送至网络中但未包含在区块中的交易将无法得到确认。交易的优先级基于其相关费用的多少。

交易成本

当代币的组合、分割或重新发行添加到区块中时,与区块相关的所有交易费用都将分布在网络中的节点中。委员会成员从各区块内的所有交易中按其由网络选出的次序获得 Velas 代币的奖励。

如果区块中所有交易的大小不超过 1 MB,那么最小的 Velas (VLX) 将足以支付与处理相关的所有费用。当未确认交易的数量超过可置于区块中的数量时,节点将选择佣金最高的交易。

交易哈希的生成

交易和区块哈希值是使用 Schnorr 签名算法生成的。之后我们将讨论更多关于这种算法的逻辑、优点和工作原理。Velas 将始终支持安全的多重签名交易。

·版本

·锁定时间 - 0

·交易输入

·哈希 - 交易哈希

·指数(代币形成时的输出数量)

价值(代币在 CCN 的数量)

·签名脚本

·签名

·交易输出

代币结构

代币是在交易过程中形成的,其结构如下 :

·密钥(交易中产生)

·交易哈希(从创建时就存在)

·指数(交易指数)

·单位(代币数量)

每个区块在加入区块链之前必须得到委员会成员的确认。每个成员验证区块中的所有交易,确认以下数据:交易数量、输入、数字签名和输出。如果验证成功,在将交易合并到区块链之前,将签名发布到网络的其他部分进行最终验证。为了参与其中,节点必须将其目的通知网络,从而获得一枚独特的代币,用于存储在其整个过程中所完成工作的报酬数据。委员会新成员的选拔标准如下:网络节点的活动时间、钱包的大小、参加委员会的频率。

区块头包括以下参数:

·高度(区块的高度)

·尺寸(区块大小)

·版本(区块链版本)

·之前的区块哈希

·时间戳(当前时间以秒为单位)

·Bits(命令窗口)

·nonce,一次性随机数 ( 命令窗口 )

·每个区块中的交易数

Velas 区块生成节点(BGN)的详细信息

当前网络节点分为两种类型 :

·区块生成节点(BGN);

·所有剩余节点。

连接时,节点向 DNSSeeds 发出请求并接收一个列表 (slice)。BGN 向任何地址发出请求,并接收 BGN 分支的列表 (node_slice)。

节点向列表中的任意节点发出请求,并尝试连接。如果连接成功,则注册节点。如果节点没有空闲插槽,它将给出一个可以向其发出连接请求的从节点列表,否则,它将通过连接到任何可能的从节点来自行注册。

此外,在整个“树”中搜索,这个循环将继续,直到新节点找到一个空闲的连接插槽。

节点同步并发出请求 :sync()

此外,如果节点不在 NAT 后面,它将启动一个服务器来连接剩余的 7 个节点。节点发送一个 ping 码来确定路径长度。节点总是连接到 TCP 服务器。如果节点在没有通知的情况下失去连接,它也会失去这些分数。

网络中有两种类型的消息:

· 节点和主节点间的消息;

·不通过从节点的消息。

每个附加节点都对前面结构的哈希值进行签名,并将其发送出去,直到 ping码到达 BGN

这些记录的结构如下:

{

address_node,

hash,

sign

}

BGN 对哈希进行签名并将其发送回去。此时,节点记录跳转到 BGN。当投票发生时,节点根据跳数和前面讨论的其他参数给 master 打分。如果需要连接一个新节点,该节点将用一个空闲插槽和跃点数 BGN。如果没有空闲插槽,节点只响应“无法连接”,并给出从节点列表。

哈希算法

我们使用 Schnorr 签名而不是 ECDSA。Velas 实现将使用 Secp256k1 曲线,因为它是可预测的,因此性能更好。对 Velas 区块使用 Schnorr 签名的最大好处是可以获得可观的性能提升。

由于 Schnorr 签名的线性特性(签名的“总和”等价于“总和”的签名),我们可以对区块中所有交易 / 输入的验证签名进行批处理。

并且,我们只需要存储一个单独的签名,通过简单的计算就可以聚合该区块的所有签名。而这只需要更少的存储成本就可以达到更快的验证。毕竟,节点现在只需要两个相对简单的计算就可以根据区块签名验证所有交易的签名,区别于以往成千上万次计算。

使用 Schnorr 算法而不是 ECDSA 还允许密钥聚合和改进隐私性,这样就再也无法将多重签名交易与常规交易区分开来。

中间人保护

该系统通过以下方式防止 MITM 攻击:

·每个节点的公钥存储在区块链中。

·此外,在区块链中还有一个别名—公钥串。

·当容器从 subscriber A 向 subscriber B 发送时,subscriberA 在区块链中接收 subscriber B 的公钥,并对其容器加密。它以加密的形式发送到 subscriber B 的的支持多币种的钱包。

Subscriber B 的使用私钥解密容器。

支持多币种的钱包技术

Velas 区块链可以为所有支持的代币创建公共和私有容器。Velas 将为所支持的各种加密货币,如比特币、以太坊和代币、 柚子币、瑞波币、门罗币等生成私钥。密钥通过用户的私钥种子创建。所有容器都可以通过创建 Velas 钱包时的原始种子或私钥中恢复。这些容器允许创建所有其他代币的链上链下可扩展性方案,并作为Velas 中所有的智能合约的一个生态系统钱包。用户还可以受益于将当前安全保存在 Velas 钱包中的所有代币存储起来,并为非原生代币创建多签备份。

传输存储私钥的容器

1. 从节点列表中选择可以作为代理的节点。例如 : 设置了一个标志,并且节点有一个公共地址。

2. 然后,subscriber A 将节点地址发送给 subscriber B。

3. 两个 subscriber 都通过指定的通道连接到代理服务器。在代理服务器上创建映射(Map),图中的代理服务器,Key 是通道名称,Value 是两个连接的结构。

4. 连接完成后,subscriber A 将其公钥发送给 subscriber B。

5. subscriber B 验 证 subscriber A 的 地 址 并 发 送 公 钥。 如果 它 们 一 致, 拥 有 包 含 私 钥 容 器 的 subscriber B 将 使 用subscriberA 的公钥加密容器并将传输给他 / 她。

6. 接收容器后,subscriber A 使用他 / 她的私钥解密。

7. 关闭连接。(考拉)