我们今天在哪里,明天我们要去哪里
今天,我们很高兴为Linux,Windows和Mac发布MultiChain 1.0的第二个beta版本(目前Mac版本需要编译)。 到此结束了MultiChain 1.0的计划开发–除任何错误修复外,整个夏天MultiChain 1.0的最终版本将保持不变。
自2015年XNUMX月MultiChain的首个alpha版本发布以来,本月也已经过去了两年。与任何新产品一样,我们不确定市场会如何反应,并且知道只有一种方法可以找到–发布一个 最小可行产品,意为具有重要价值但经过设计初步确定的初始版本。 幸运的是,与我们的第一个产品不同 硬币火花,MultiChain收到了立即的强烈回应。 随之而来的是海量的明智功能请求,我们现在已经实现了其中许多请求。 在产品开发的同时,各种方法的使用也显着增加。 例如,MultiChain网站在3,000年2015月接待了不到XNUMX名访问者,现在每月的访问量是该数字的十倍。
多链性能
在过去的两年中,我们投入了很多精力来优化MultiChain,这是由 比特币核心,是公共比特币网络的参考实现。 以下是使用该产品的五个版本的单节点设置的事务吞吐量的比较:
.throughput td,.throughput th {text-align:right;}
总交易 | 1.0 阿尔法 3 | 1.0 阿尔法 21 | 1.0 阿尔法 22 | 1.0 1公测 | 1.0 2公测 |
---|---|---|---|---|---|
100 | 6.5吨 | 7.8 | 541.7 | 830.6 | 1465.7 |
1,000 | 7.0 | 7.6 | 583.9 | 889.4 | 1199.6 |
10,000 | 4.1 | 6.4 | 566.9 | 746.6 | 1071.2 |
100,000 | - | 6.6 | 558.0 | 771.9 | 1034.2 |
1,000,000 | - | - | 548.6 | 773.6 | 1055.4 |
每秒平均事务,包括API开销以及构建,签名,挖掘和验证事务和块。
使用 ab
HTTP服务器基准测试工具将两个并发请求发送到 sendtoaddress
API。
服务器规格:英特尔酷睿i7-4770、4核@ 3.4 MHz,32 GB RAM,希捷2 TB 7200 RPM SATA,CentOS 6.4。
当然,当我们 过渡的 到数据库驱动的钱包。 但是自该版本发布以来,我们再次将MultiChain的速度提高了一倍。 我们希望我们已经证明比特币每秒4笔交易的限制是由于其特定的网络参数,与总体上与区块链无关。
当然,性能优化是一项永无止境的任务,并且没有理由使MultiChain不能达到10,000 tx / sec。 16核处理器 进行适当的架构更改。 但是,根据与我们的用户和合作伙伴的对话,似乎很少有人期望在未来几年中需要超过1,000 tx / sec。 因此,我们将开发工作重新集中在新功能上,这使我们很好地进入了MultiChain 2.0的主题。
MultiChain 2.0概述
MultiChain的2.0版将是两个版本中的第一个版本-社区(开源)和企业(商业)。 我将在这里重点介绍免费的社区版,因为我们仅讨论带有以下内容的MultiChain Enterprise的详细信息: 我们的合作伙伴。 无论如何,社区版本和企业版本将高度兼容,因为:(a)在社区版本上构建的应用程序可以在MultiChain Enterprise上运行而无需修改,并且(b)两个版本都可以相互连接和交易在同一条链上。
两个版本的MultiChain 2.0中增强功能的三个关键领域将是:
- 流的更丰富的数据模型,包括JSON文档。
- 自定义可编程交易过滤器,用于链上验证。
- 无缝更新区块链的协议和参数。
现在让我们详细讨论每个。
流的更丰富的数据模型
MultiChain流于2016年XNUMX月引入,并已证明非常受欢迎。 如中所述 这篇文章数据流为区块链上的通用数据存储,索引和检索提供了简单自然的抽象。 MultiChain区块链可以包含任意数量的命名流,每个命名流可以对所有人开放以进行写入,也可以仅从某些地址写入。
在MultiChain 1.0中,每个流项目都有一个或多个发布者(对其进行签名),一个可选密钥,一个最大为64 MB的二进制数据有效载荷以及一个时间戳(来自于其嵌入的块)。 每个节点可以自由决定要订阅哪些流,或者可以自动订阅所有流。 如果节点订阅了流,则它会实时索引该流的内容,从而可以按发布者,键,块,时间戳或位置进行有效检索。
MultiChain 2.0将通过多种方式丰富此流功能:
- JSON项目。 除了二进制数据,流项目还将支持结构化的JSON对象,该对象以有效的序列化格式存储在区块链中,例如 JSON格式。 由于MultiChain API已经在整个过程中使用JSON,因此这些JSON对象将以自然和明显的方式可写和可读。
- 多个按键。 流项目将支持多个键,从而可以以多种方式对单个数据进行索引,以使用
liststreamkeyitems
。 我们一直在评估MultiChain中要包含多少数据库功能,并且不希望在2.0版中支持JSON流项目中的子元素索引。 每个流项目允许多个键提供了一种合理的解决方法。 - 多个项目的原子写入。 MultiChain 1.0允许单个事务写入多个流,但不允许将多个项目写入同一流。 MultiChain 2.0将消除此限制。
- JSON合并。 JSON对象的任何有序列表都可以自然地展平或汇总以创建“合并”对象。 合并的对象包含出现在各个对象中的所有键,其中与每个键对应的值取自该键出现的最后一个对象。 如果愿意,合并的对象是数据库行的最终状态,该行的列由第一个对象定义,并由后来的对象扩展或更新。 MultiChain 2.0将添加API,以轻松快速地检索具有特定键或发布者的流中JSON项的合并对象。
这些功能源自开发人员当前使用流的常见方式。 换句话说,我们正在观察许多人在应用程序级别基于MultiChain构建的功能,并将该功能引入MultiChain本身-我们打算继续应用这种模式。 现在,流项目将包含类型信息,以后可以轻松对其进行扩展以支持其他数据格式,例如XML, 高密度纤维板5 和 MIME标识的内容。 更不用说透明链上压缩和加密的可能性了。
MultiChain 2.0还支持原始交易元数据(即非流项目)以及资产发行和流创建事件的元数据的JSON对象,而不是MultiChain 1.0中实现的纯文本键/值对。 的 listassets
API将提供跨资产所有发行事件的JSON合并,以便每个发行的元数据可以有效地更新资产的最终描述。
自定义交易过滤器
我们已经对如何向MultiChain中添加自定义可编程规则进行了很多思考。 尽管以太坊的“智能合约”范式很受欢迎,但它对于高通量许可的区块链存在许多关键缺陷。 首先,智能合约在区块链的整个状态中引入了全球依赖性,这极大地削弱了并发性和性能。 其次,智能合约不能阻止不正确的交易被嵌入到区块链中,而只能阻止那些交易更新区块链数据库的状态。 从长远来看,我们希望以太坊兼容的虚拟机将作为MultiChain中的高级抽象提供,但我们认为这不是用于低级验证的正确解决方案。
MultiChain 2.0将引入一个称为事务过滤器的不同范例,该模型可在不参考任何全局状态的情况下验证单个事务。 我们期望过滤器使用Javascript编写,并在嵌入式运行时引擎(例如, v8,用于Google的 铬系列 浏览器和 Node.js的 平台。 当然,我们需要确保过滤器代码在区块链中的每个节点上均能相同地运行,从而阻止任何 非确定性的根源 例如读取时间,使用随机数,访问网络或磁盘或执行取决于主机服务器体系结构的数学运算。 创建确定性的Javascript运行时环境是一个挑战,但是(在不付出太多努力的情况下)我们相信,它将对将来的其他多个MultiChain功能有用。
过滤器将传递一个描述单个交易的JSON对象,其结构类似于 decoderawtransaction
但有额外的字段。 例如,JSON中的每个事务输入都将包含一个描述其花费的先前事务输出的结构,并且每个地址都将附带该地址当前持有的权限列表。 过滤器的工作是返回一个布尔值,该布尔值指示该事务是否可接受,如果不可接受,则提供一个文本错误来说明原因。 MultiChain的API将包括用于创建过滤器,在先前或新的交易上对其进行测试并根据管理员的同意激活它们的命令。
与智能合约不同,如果在过滤器代码中发现错误,则可以轻松地用新版本替换它。 但是,像所有图灵完整的代码一样,过滤器仍然存在进入无限循环的风险。 此问题将通过两种方式缓解:
- 过滤器只能由连锁店的管理员安装和激活,但要达成共识。 这使每个管理员都有机会在投票表决激活过滤器之前深入检查过滤器的代码。
- 所有行为良好的节点将使用活动过滤器验证新事务,然后再将其转发到其对等节点。 结果,如果事务将过滤器发送到无限循环中,则该事务不应传播到创建它的节点之外。
我们希望过滤器的一种流行应用是验证流项目。 例如,过滤器可以确保流的JSON项中的某些字段包含特定范围内的数字。 在MultiChain 1.0中,必须在应用程序级别进行这种类型的验证,无论是在编写流项目(如果源是受信任的)还是在读取流项目时。 相比之下,MultiChain 2.0将使这些规则能够嵌入到区块链本身中,就像 检查约束 在关系数据库中。
MultiChain 2.0将包括两个附加功能,以使过滤器更加强大。 首先,它将引入用户定义的权限,该权限与MultiChain定义的八个权限并存。 与常规权限一样,这些权限将由管理员(在某些情况下,由具有 activate
权限),并在传递给过滤器的JSON对象中与地址一同包含。 例如,过滤器可以确保只有具有特定用户定义权限的地址才能将某些类型的数据写入流,或在高于特定阈值的特定资产中进行交易。
其次,MultiChain 2.0将在常规交易输出中支持自定义(二进制或JSON)元数据。 这将使任何输出都可以充当通用数据库行,并由其中的地址“拥有”。 过滤器将在交易的花费和创建的输出中看到任何元数据,作为其JSON描述的一部分。 结果,MultiChain将成为通用的共享数据库引擎,其中事务的有效性由其创建和删除的行的可自定义功能确定。 (如果听起来有点抽象,我们将确保提供一些具体示例。)
区块链更新
由于区块链被设计为可以运行多年,因此其特征可能需要随时间而改变。 当前版本的MultiChain已经提供了相当程度的灵活性,允许更改权限(以协商一致的方式包括管理员和矿工的权限),创建新资产和流以及从网络中无缝添加或删除节点。 尽管如此,在MultiChain 1.0中,区块链的基本 参数,例如最大块大小和目标确认时间,在创建链时是固定的,以后无法更改。
MultiChain 2.0将增加更新区块链的功能,允许在链继续运行的同时修改其许多(但不是全部)参数。 像其他重要操作一样,更新区块链将需要可定制级别的管理员共识,而该级别本身是可以更改的参数。 更新将从某个特定的块开始生效,然后将其应用于每个后续块,直到下一次更新。
可以更新的区块链参数包括:
- 协议版本。 这将使使用MultiChain的一个版本创建的区块链得以升级,以支持新版本中的功能,例如JSON流项目或事务过滤器。 确实,协议版本
10008
MultiChain 1.0 alpha 29中引入的功能(并在Beta中使用)已经过时,且未记录此类扩展支持。 一旦将MultiChain 1.0区块链升级到2.0协议,它还将获得对此处描述的其他参数更改的访问权限。 - 区块链扩展。 流行的区块链可能会超出为其目标确认时间或最大交易量和区块大小设置的初始值。 MultiChain 2.0将允许根据需要增加或减少这些值。
- 许可模式。 MultiChain 2.0将允许更新与许可和治理有关的许多参数,包括:(a)
anyone-can-*
控制区块链打开或关闭方式的参数,(b)admin-consensus-*
确定某些操作所需的管理员共识级别的参数,以及(c)mining-diversity
控制循环共识算法严格性的参数。
一旦实现了此更新功能,就没有理由在MultiChain中创建的区块链无法运行数十年或更长时间。
展望未来
我们已经开始从事MultiChain 2.0的工作,并期待在此路线图上交付。 毫无疑问,还将包括其他增强功能。 与MultiChain 1.0一样,我们还将发布Alpha版本,以便开发人员在实施新功能时可以使用和学习新功能(当然,还可以报告任何问题或缺点)。 当然,在此期间,我们将继续维护1.0版,修复出现的所有错误。
最后,我要感谢由Michael Rozantsev博士领导的我们的开发团队的出色表现和辛勤工作。 我们将MultiChain视为一个简单易懂的软件工程项目,其中代码质量和测试至关重要。 与我一起工作是我的荣幸,他们可以将如此复杂的产品愿景变成如此稳定,高效的工作软件。
请发表任何评论 在LinkedIn.
- :具有
- :是
- :不是
- :在哪里
- $UP
- 000
- 1
- 10
- 2015
- 2016
- 22
- 29
- 32
- a
- 对,能力--
- Able
- 关于
- 以上
- 摘要
- 抽象化
- 可接受
- ACCESS
- 访问
- 伴随着
- 横过
- 法案
- 激活
- 要积极。
- 加
- 添加
- 额外
- 地址
- 地址
- 管理员
- 再次
- 算法
- 所有类型
- 让
- 允许
- 允许
- 几乎
- 沿
- 靠
- 阿尔法
- alpha 版本
- 已经
- 还
- an
- 和
- 任何
- API
- APIs
- 出现
- 出现
- 应用领域
- 应用领域
- 使用
- 应用
- 适当
- 建筑的
- 架构
- 保健
- 地区
- AS
- 财富
- 办公室文员:
- At
- 自动
- 远离
- 基于
- 基本包
- BE
- 成为
- 很
- before
- 开始
- 作为
- 相信
- 如下。
- 标杆
- 测试
- 超越
- 最大
- 比特币
- 比特币网络
- 阻止
- 块大小
- blockchain
- 块链
- 闭塞
- 吹氣梢
- 都
- 瞻
- 带来
- 浏览器
- 问题
- 虫子
- 建筑物
- 建
- 但是
- by
- 被称为
- 来了
- CAN
- 不能
- 例
- 一定
- 链
- 挑战
- 变
- 更改
- 特点
- 关闭
- 码
- 列
- 如何
- 注释
- 商业的
- 相当常见
- 社体的一部分
- 对照
- 兼容
- 复杂
- 总结
- 具体
- 并发
- 确认
- 分享链接
- 共识
- 共识算法
- 经常
- 包含
- 包含
- 内容
- 继续
- 持续
- 继续
- 合同的
- 对比
- 控制
- 控制
- 对话
- 核心
- 相应
- 可以
- 套餐
- 创建信息图
- 创建
- 创建
- 创造
- 创建
- 电流
- 目前
- 习俗
- 定制
- data
- 数据存储
- 数据库
- 几十年
- 决定
- 下降
- 定义
- 学位
- 欣喜的
- 交付
- 证明
- 依赖
- 依赖
- 深度
- 派生
- 描述
- 描述
- 描述
- 设计
- 设计
- 细节
- 详情
- 确定
- 决心
- 开发
- 研发支持
- 开发团队
- 不同
- 发现
- 讨论
- 讨论
- 文件
- 完成
- 别
- 翻倍
- 怀疑
- dr
- 大幅
- 两
- e
- 每
- 容易
- 版
- 版本
- 效果
- 只
- 效率
- 高效
- 努力
- 工作的影响。
- 八
- 或
- 嵌入式
- enable
- 使
- 加密
- 发动机
- 工程师
- 增强
- 增强
- 丰富
- 确保
- 进入
- 企业
- 整个
- 环境
- 错误
- 以太坊的
- 评估
- 甚至
- 活动
- 事件
- 所有的
- 检查
- 例子
- 例子
- 追求卓越
- 例外
- 执行
- 存在
- 期望
- 说明
- 扩展
- 额外
- 非常
- 公平
- 专栏
- 特征
- 少数
- 字段
- 过滤
- 过滤器
- 最后
- 找到最适合您的地方
- 完
- (名字)
- 五
- 固定
- 固定
- 高度灵活
- 专注焦点
- 针对
- 格式
- 自由的
- 自如
- 止
- 功能
- 功能
- 未来
- Gain增益
- 其他咨询
- 给
- 给予
- 全球
- 去
- 谷歌
- 谷歌的
- 治理
- 授予
- 长大的
- 硬
- 辛勤工作
- 有
- 保持
- 相关信息
- 高水平
- 高度
- 抱有希望
- 主持人
- 创新中心
- How To
- 但是
- HTML
- HTTP
- HTTPS
- i
- if
- 即时
- 履行
- 实施
- 重要
- in
- 其他
- 包括
- 包括
- 包含
- 不正确
- 增加
- 的确
- 索引
- 指标
- 说明
- 个人
- 无限
- 信息
- 初始
- 输入
- 安装
- 代替
- 英特尔
- 英特尔酷睿
- 打算
- 成
- 介绍
- 介绍
- 投资
- 发行
- IT
- 项目
- 它的
- 本身
- JavaScript的
- 工作
- JSON
- 七月
- 跳
- 六月
- 键
- 重点领域
- 键
- (姓氏)
- 后来
- 铅
- 学习用品
- 导致
- Level
- 各级
- 喜欢
- 极限
- Linux的
- 清单
- 小
- 长
- 看
- 占地
- MAC
- 机
- 保持
- 使
- 许多
- 很多人
- 市场
- 数学
- 最多
- 可能..
- 意
- 衡量
- 提到
- 合并
- 元数据
- Michael (中国)
- 可能
- 矿工
- 采矿
- 模型
- 改性
- 月
- 每月一次
- 更多
- 许多
- 多链
- 多
- my
- 命名
- 自然
- 必要
- 需求
- 网络
- 全新
- 新功能
- 新产品
- 下页
- 没有
- 节点
- 节点
- 现在
- 数
- 数字
- 对象
- 对象
- 明显
- of
- 提供
- 最多线路
- on
- 链上
- 一旦
- 一
- 仅由
- 到
- 打开
- 开放源码
- 运营
- ZAP优势
- 优化
- 追求项目的积极优化
- or
- 其他名称
- 我们的
- 输出
- 产量
- 输出
- 超过
- 开销
- 对
- 范例
- 并行
- 参数
- 参数
- 部分
- 特别
- 伙伴
- 通过
- 过去
- 模式
- 窥视
- 员工
- 为
- 性能
- 执行
- 执行
- 期间
- 允许
- 拥有权限
- 权限
- 片
- 计划
- 平台
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 热门
- 位置
- 积极
- 可能性
- 帖子
- 强大
- 初步
- 防止
- 以前
- 特权
- 权限
- 市场问题
- 问题
- 产品
- 可编程
- 项目
- 协议
- 成熟
- 提供
- 提供
- 国家
- 发行人
- 出版商
- 目的
- 质量
- 内存
- 随机
- 范围
- 急速
- 宁
- 原
- 达到
- 应对
- 阅读
- 真实
- 实时的
- 原因
- 合理
- 收到
- 参考
- 定期
- 关系
- 释放
- 发布
- 卓越
- 去掉
- 去除
- 更换
- 报告
- 要求
- 要求
- 必须
- 需要
- 响应
- 限制
- 导致
- 恢复
- 回报
- 右
- 风险
- 路线图
- 行
- 定位、竞价/采购和分析/优化数字媒体采购,但算法只不过是解决问题的操作和规则。
- 运行
- 运行
- 运行
- 同
- 无缝
- 其次
- 看到
- 似乎
- 发送
- 发送
- 九月
- 服务器
- 集
- 设置
- 格局
- 几个
- 共用的,
- 缺点
- 应该
- 签署
- 显著
- 签约
- 简易
- 自
- 单
- 尺寸
- 尺寸
- 智能
- 智能合同
- So
- 软件
- 软件工程
- 方案,
- 一些
- 声音
- 来源
- 具体的
- 规格
- 速度
- 花
- 花费
- 稳定
- 开始
- 州/领地
- 仍
- Stop 停止
- 存储
- 存储
- 流
- 流
- 强烈
- 结构体
- 结构化
- 主题
- 订阅
- 随后
- 后来
- 这样
- 夏季
- SUPPORT
- 肯定
- 拍摄
- 目标
- 任务
- TD
- 团队
- 十
- 术语
- 测试
- 文字的
- 比
- 感激地
- 这
- 该座
- 其
- 他们
- 那里。
- 博曼
- 他们
- 认为
- Free Introduction
- 那些
- 思想
- 三
- 门槛
- 始终
- 吞吐量
- 次
- 时
- 时间戳
- 至
- 今晚
- 也有
- 工具
- 最佳
- 办理
- 交易
- 交易
- 透明
- 信任
- 海啸
- 转
- 二
- 类型
- 类型
- 下
- 普遍
- 不像
- 直到
- 更新
- 更新
- 最新动态
- 更新
- 升级
- 升级
- us
- 用法
- 使用
- 用过的
- 有用
- 用户
- 使用
- 运用
- 验证
- 证实
- 验证
- 合法性
- 折扣值
- 价值观
- 验证
- 版本
- 版本
- 可行
- 在线会议
- 虚拟机
- 愿景
- 访客
- 表决
- 钱包
- 是
- 方法..
- 方法
- we
- 您的网站
- 井
- 为
- 什么是
- ,尤其是
- 是否
- 这
- 而
- WHO
- 谁的
- 为什么
- 维基百科上的数据
- 将
- 窗户
- 中
- 也完全不需要
- 话
- 工作
- 加工
- 将
- 写
- 写作
- 书面
- XML
- 年
- 完全
- 和风网