比特股协议功能概述

本文简要介绍了Bitshares协议的研究结果。 同名的去中心化平台实现了加密货币,智能合约,交易平台和许多有趣的功能。 该材料可能是有用的,因为它已经熟悉了比特币协议的功能,但是还没有听说过比特股,而比特股反过来又是一个在分散和带宽之间妥协的会计系统。 此外,Bitshares协议被作为其他分散系统(Steemit,EOS)的基础。

Bitshares协议的想法是创建一个工具,使它可以在分散的环境中交易各种资产和货币,而无需将其实际存入交易大厅。 这个想法本身属于一个叫Daniel Larimer的程序员。 他在2013年提出了这个建议,并在论坛上积极讨论了五个星期。 因此,丹尼尔·拉里默(Daniel Larimer)遇到了另一位活跃的加密货币活动家查尔斯·霍斯金森(Charles Hoskinson),他帮助制定了业务计划并吸引了投资。

图片
丹尼尔·拉里默(Daniel Larimer)在学校食堂

比特股平台的目的


Daniel Larimer,也称为Bytemaster,是该协议的主要思想家和开发人员。 Bitshares平台允许任何人创建用户发行的资产(UIA)或数字令牌。 因此,平台考虑了基本货币,即具有BTS报价器和许多用户令牌的加密货币。

该协议实现了分散交易,可以在这些交易中进行数字资产交易。 在设计用于达成共识的计费系统和机制时,开发人员非常重视带宽。 结果,Bitshares将自己定位为Visa会计系统的去中心化替代方案。 Visa说它每秒可以处理几万笔交易,而Bitshares则谈到了一种分散的方式,每秒处理十万笔交易,并具有开放的数据库和审计功能。

此外,Bitshares将自己定位为智能合约平台。 诚然,此处预定义了智能合约,并且数量有限-实施了最受欢迎的合约。 但是它们更节能,因此与佣金相比更便宜。

该平台的另一个功能是支持具有高度用户隐私的支付,可以选择使用该支付。 在Bitshares,此技术称为“隐形转移”。

开发和发布历史


简要了解此分散平台的发布历史。

创建构思平台的工作量非常大。 创作者决定提前吸引人们并分发未来的加密货币代币,以了解该项目是否会引起足够的关注以及是否应该得到进一步的支持。 因此,在2013年11月,这个想法诞生了Bitshares PTS,即原始股份。 其实质是硬币的分配将基于简单的协议开始使用挖矿,此时将开发完整版的Bitshares。

为了实施Bitshares PTS,他们分叉了比特币(带有源代码的存储库的一个副本),对其进行了较小的更改并启动了一个新的网络。 对项目感兴趣的每个人都可以在计算机上安装完整的Bitshares PTS网络节点,提取硬币,进行交易和交易。 提取这些硬币的竞争日益激烈,很快参与者就不得不团结在矿池中。

后来,开发人员介绍了Bitshares协议版本1.0,并提前宣布了Bitshares PTS区块链中最后一个块的发布日期。 由于该协议的新版本几乎是从头开始编写的,并且使用全新的数据格式,因此更新具有其自身的特征。 拍摄旧区块链最后一个区块时所有未用硬币的状态快照,并将其传输到新区块链的创世纪区块。 事实证明,保留了公钥和余额之间的所有对应关系,也就是说,您可以继续使用相同的私钥使用硬币。 因此,在2014年12月14日,用户切换到该协议的新版本,该协议已根据委托的权益证明规则达成了共识,并且未提供新币的挖掘和发行。

2015年10月,Bitshares协议对版本2.0进行了另一项重大更新,其更新方式与此相同。

值得注意的是,作为一个名为Graphene的单独项目的一部分,Bitshares的开发人员创建了去中心化平台的核心。 石墨烯是下一代去中心化会计系统的基础。 除了比特股,石墨烯还构成了其他几个项目的基础。

帐户模型


现在,让我们看看如何在Bitshares 2.0协议中安排帐户。 它在椭圆曲线上使用密码学,曲线本身与比特币协议中的完全相同。 有一种地址格式使用公钥的哈希值,基数系统58,BTS前缀并且不包含校验和。 但是这种格式很少使用,因为对通用平台数据库进行了优化,使得每个对象(包括用户帐户)都有自己的唯一标识符,该标识符实际上是8字节(或64位)的整数。 在发送付款的常规操作中,指示了这种帐户标识符。 此外,该协议还支持唯一名称的注册。 类似的功能最早是在Namecoin协议中实现的。 因此,您可以在Bitshares中注册一个人类可读的字符串,该字符串在相应的区块链中将是唯一的,并绑定到您的帐户,以便使用此名称而不是帐户ID。

实现DPoS共识


如前所述,DPoS协议的规则建议所有用户都可以通过投票选择验证者来参与共识的建立。 在投票过程中,用户投票的权重由其基础货币的余额决定。 块形成是由选定验证器的子集执行的。 在Bitshares协议中,验证器称为见证人。

交易模式


让我们更详细地研究Bitshares中的交易模型。
图片
该图显示事务主体包含五个主要字段。 事务的前两个字段对于将其绑定到特定块是必需的。 这是确定可以添加此事务的块链的必要条件,因为根据协议规则,无法在未连接该事务的链中确认事务。 expiration_time字段设置可以将事务添加到块的时间。 如果在此之前未确认,则将其视为无效并且无法再包含在区块链中。

operation_vector字段是特殊的。 此功能可以在其中进行许多不同的操作。 操作是Bitshares协议中的另一个关键对象。 我们将列出一些最受欢迎的操作类型:转移(转移),account_update(帐户更新),资产发行(令牌发行)和订单(交易报价)。 每个操作都有其自己的格式和必要的参数。 例如,转帐操作需要发件人的帐户,资产类型,转帐金额和收件人的帐户。 这些操作本身是相互独立的,但只有在接受交易后才能一起执行。

需要扩展字段,以便当前软件版本可以处理新版本的事务,可以在其中添加其他字段。 当然,旧软件将不知道如何正确验证新交易的其他字段,但是至少它将能够根据旧规则正确处理交易。

这是未签名的交易格式。 为了正确签署交易,您需要分析Operations_vector字段中的所有操作,并列出必须确认交易的帐户。 然后可以清楚地知道需要哪些密钥来签署交易。 所有必要的签名都放置在单独的字段-签名中。 如果至少一个签名不足,那么整个交易将被视为不正确。

请注意,通过优化标识符的大小,包含一个操作的事务的最终大小将约为100个字节。 与其他协议中的事务相比,这确实是一个非常紧凑的事务。

至于佣金,Bitshares协议采用一种特殊的方法。 每个操作都需要一定的付款,在确认交易时将从发起人的帐户余额中扣除。 运营佣金可能是恒定的,但可能会有所不同。 粗略地比较一下,可以注意到,普通转移和交易的费用比发行新资产和注册新帐户的费用低得多。

分散资产交换


现在,让我们看看在Bitshares平台上发行和记录的资产交易如何进行。 用户可以用这样的操作进行交易,在该操作中,他宣布准备好以一定比例和一定金额将一种资产交换为另一种资产。 此交易在网络上进行分配并收到确认,此后另一个用户可以用相同的方式声明他要以相同的比率更改相同的资产。 在第二笔交易确认时,根据协议,这两个用户的余额被更新,即,在两个用户已经签署了彼此满意的交换声明的基础上,实际上进行了资产交换。

由于这种交易是基于去中心化会计系统的,因此该交易平台称为去中心化交易。

帐户管理的灵活性


Bitshares协议的另一个重要功能是可以灵活地管理帐户。 动态帐户权限系统(动态帐户权限)允许您根据多重签名原理通过几个键指定帐户管理。 这样安排,以便每个帐户都可以由其他帐户或电子签名密钥的平衡组合来控制。 这种方法允许您创建分层的管理结构,其组织结构类似于现实生活中的许可系统。 事实证明,您可以组织帐户及其余额的多用户管理,每个用户在决策时都会有一定的权重。 此外,对于不同的操作,可以设置不同的条件。 这种管理机制可以显着降低资产被盗和帐户控制丢失的风险。

图片

试想一下。 在层次结构的顶部,有一个帐户,代表该帐户无法用一个密钥来确保交易。 这只能通过确认其他几个帐户和密钥来完成。 层次结构中较低级别的成员通常称为签名者。 每个人在确认操作中都有自己的分量。 例如,在此方案中,签署者的权重为25、40、35和40个单位,用于确认某种操作类型的必要阈值可以为50、60或70个单位。 同时,对于其他类型的操作,可能会出现不同的权重分布和不同的阈值。

在交易级别如何运作? 签名人之一创建具有特定操作的交易,并代表其帐户进行认证。 事务已确认,但是输入事务不会执行,而是处于确认的待机模式。 然后其他签署者可以看到要约,并可以使用包含特殊操作的交易代表其帐户确认要约或拒绝要约。

UIA问题


让我们更详细地研究在Bitshares平台上释放用户资产的功能。 任何人都可以通过创建新资产,支付一定佣金,设置该资产的参数并开始发行相应代币的操作来进行交易。 该协议功能是作为预安装的智能合约实现的,具有某些功能。

应发行人的要求,可以使用白名单机制(允许的帐户列表)和其他发行人确认来满足KYC(了解您的客户-知道您的客户)的要求。 白名单包含资产发行人授予其接收和持有其令牌的权限的帐户。 附加确认机制使发行人可以控制每笔交易以进行代币的转让或交易(他可以拒绝或批准其资产的每笔交易)。

另外,发行者可以限制代币的交易并且仅允许存储和转移,或者限制转移,并且仅允许交易。 发行人还可以为转让和代币交易确定额外费用。

另一个功能是发行者可以激活提取和重新分配令牌的功能。 这适用于需要支持外部机制来谴责交易和回滚付款的情况。 还值得注意的是,用户资产的所有设置都是以智能合约参数的形式设置的,发行者设置了它可以更改的属性以及哪些属性将是永久的。 例如,它可能将自身限制为额外发行令牌,并可能留下任意释放的可能性。 这些合同参数对所有用户都是可见的。

在Bitshares平台上发行的代币的一个有趣特性是,当与它们进行交易时,用户可以使用基础货币或这些代币支付费用。 转换基于发行人设定的汇率。

投票机制


在研究Bitshares平台时,有必要提及在分散环境中帮助做出决策的机制-这就是投票。 委员会成员(委员会成员),验证人(见证人)和开发人员(工人)经投票选举产生。 需要委员会成员投票以更改某些协议参数,例如佣金,验证者的数量等。验证者是代表,他们需要验证交易和表单块。 开发人员可以提供软件改进。 如果他们获得足够的选票并在发展的最后期限之前完成,他们将获得奖励。

投票时,每个帐户的投票权重与其在基础货币中的余额成比例。 同时,支持代理投票选项,使您可以将投票投给其他选民。 在用户本人不知道哪个候选人最适合投票,并将此权利授予更称职的用户的情况下,这样做很方便。 通常,投票对于确保Bitshares平台的高度可靠性非常重要。

佣金机制


现在让我们看一下为活跃网络参与者的交易和奖励收取佣金的机制。 这种平衡不属于平台的任何用户,只能根据协议规则进行管理。 该余额称为储备池。 该规则假定来自所有帐户的所有交易的佣金均属于准备金池。 储备池中的费用作为余额的百分比支付给验证者和开发者的帐户。 此外,平台还支持的推荐计划规则可以叠加在佣金的收取和分配上(您可以单独阅读)。

图片

值得一提的是,基本货币中的最大硬币数量。 总共发行了36亿枚硬币,没有提供其他发行。 同时,在2018年的时间里,约有26亿枚硬币自由流通,储备池中约有10亿枚硬币。

智能币


在此之前,我们讨论了一种实现普通令牌的智能合约,现在我们将讨论另一种实现市场固定资产的智能合约,这些令牌以某种外部资产定价。 它们也称为SmartCoins。 这是根据差异合同的原则,即差异合同。 因此,任何人都可以通过简单地冻结一定的保证金,例如以基础货币的形式来发行这些代币。 抵押比率明显高于1,建议2或更大。 在这里,一切都根据保证金交易的原理进行,其中使用保证金头寸和自动追加保证金。 为了使资产的价格出现在国外市场的平台上,使用了受信方,该受托方使用一种特殊类型的交易将资产的价格放置在Bitshares区块链上。 在这种情况下,这些受信方就是验证者本身。

块头格式


与比特币中的块头相比,Bitshares中的块头具有更简单的结构和更小的尺寸。
图片
这里有这样的字段:上一个块的标识符,时间戳,创建者标识符,传入事务的哈希值和扩展字段,以保持与新版本的块头的兼容性。

完整的区块将包括区块的标题,创建此区块的验证者的签名以及此区块中包含的交易列表。

在Bitshares协议中,有4个概念在平台的操作中起着关键作用:块,事务,操作和对象。此处的对象称为帐户,资产,余额,报价等。

许多操作及其实现的功能


让我们更详细地考虑在该协议的上下文中的操作概念。截至2018年,Bitshares中大约有40种不同类型的操作,并且可以通过新协议更新添加新类型的操作。操作使您可以在会计系统中启动一些简单的更改,并可以使用更复杂的机制(例如预定义的智能合约)。上面已经说过,一个事务可以包含多个操作,如果成功,则将同时执行。

以下是最受欢迎的操作的简短列表:

  • transfer_operation将特定资产从一个帐户的余额转移到另一个帐户;
  • limit_order_create_operation创建资产交换请求对象; limit_order_cancel_operation取消此类应用程序;
  • fill_order_operation , , , ;
  • account_create_operation ;
  • blind_transfer_operation ;
  • asset_create_operation ;
  • asset_update_operation - ;
  • asset_issue_operation ;
  • witness_create_operation .

至于统计数据,我们可以说,就交易数量而言,Bitshares网络上的负载与比特币或以太坊网络上的负载相当。此外,在2018年的某些时候,Bitshares平台处理的交易数量超过比特币和以太坊的总和。负载测试的结果表明,Bitshares网络的最大带宽是比特币和以太坊网络的最大带宽的数百倍。

图片

根据分析性资源blocktivity.info的数据,截至 2018年7月,Bitshares平台处理了所有去中心化平台确认的交易总数的60%以上。

数据库组织


现在,让我们看一下Bitshares协议的一项重要架构功能,该功能有助于实现如此高的吞吐量。

图片

左图显示了一种组织称为区块链的数据库的方法,借助该数据库通常可以组织整个交易历史记录的存储。右侧是组织数据库的另一种方法-Ledger。在它的帮助下,通常可以组织标识符和状态之间的对应关系的存储(例如,帐户及其余额)。

区块链属性使您可以轻松地验证数据库的完整性及其更改的历史记录,并轻松组织同步并在分散的环境中达成共识。

Ledger的便利之处在于它紧凑地存储了数据库的最新状态,并且同时提供了快速搜索,读取和更新记录的功能。因此,它们基本上具有更高的带宽。分类帐通常在集中式会计系统中使用。

Bitshares背后的想法是利用两种方式同时组织数据库。因此,一个完整的网络节点同时使用分别根据区块链和分类帐类型组织的两个数据库进行记录。同时,节点使用块彼此同步数据并更新区块链的本地副本,它们进行交易的验证和接受,并关注Ledger存储的数据库的最新状态。而且,构成Ledger的所有数据的大小都经过优化,以使网络节点将其保存在RAM中。这使您可以大大加快验证和采用新交易的过程。

业务逻辑优化


许多会计系统使用通用脚本语言来定义所有操作。这些计费系统最终将“业务逻辑处理器”用作虚拟机,并且所有事务都定义为将由虚拟机运行的脚本。这种方法使用了真实处理器线程同步的机制,并将它们组合起来,通过虚拟处理器执行所有指令。即使使用即时编译,虚拟处理器也总是比真实处理器慢,但是当所有内容都是脚本时,最终的计算速度并不是该方法的唯一问题。

当以如此低的级别定义事务时,这意味着大多数静态检查和密码转换保留在业务逻辑处理中,并且总体吞吐量下降。为了提高会计系统的性能并快速执行业务逻辑,必须将所有静态检查(包括所有密码转换)排除在业务逻辑模块的范围之外。

另一个优化步骤是将计费系统最终状态的数据存储在RAM中。这意味着业务逻辑处理器可以快速跟踪指向内存的指针并直接接收所需的数据,而不必执行耗时的数据库查询。这也意味着无需复制即可访问数据,并且可以就地更改数据。与使用基于数据库的方法相比,此优化可提高性能。

因此,创建具有高性能的计费系统不需要复杂的技术和网络节点之间的处理分离。创建高性能验证器所需要做的就是将所有独立的计算与主要业务逻辑分开,在一个线程中执行它而不会中断,以同步所有验证依赖性并将其存储在RAM中。

用户隐私选项


上面已经指出,与比特币不同,Bitshares会计系统使用帐户和余额,而比特币基于未花费的交易输出进行会计。在Bitshares平台上提高隐私级别并非易事,因为在账户和余额方面,对用户进行匿名处理比在比特币中更容易。

但是Bitshares的开发人员以一种有趣的方式解决了这个问题。他们实现了在一次操作中指定多个输入和输出的功能。现在,您可以在一个交易中包含许多输入和输出,这使现金流量分析变得复杂,并增加了用户隐私。

此外,这些操作默认情况下使用诸如机密交易和隐身地址之类的技术。机密交易将操作的输入和输出处的金额隐藏起来,但是它使用证明输出的总和不超过输入的总和的证据。而“隐身地址”隐藏了用作接收者标识符的公钥与交易输出中实际指示的地址之间的连接。

默认情况下,Bitshares使用常规(非机密)付款,但是用户可以根据需要使用隐形转账。因此,以两种不同方式执行平台上硬币的记帐。

有这样一种事情,就是将硬币从一种会计方法转移到另一种会计方法。为此,实现了单独的操作:

  • transfer_to_blind_operation用于将硬币从打开转移到隐藏;
  • blind_transfer_operation用于以隐藏的方式转移硬币,而transfer_from_blind_operation用于将硬币从隐藏的转弯转移至开放的转弯。

显然,这些操作在数据量方面要比通常的操作大,因此需要更大的佣金。

值得注意的是,任何人都可以计算出有多少枚硬币进入了隐藏循环,因此就存在诸如隐身供应(隐藏循环中的硬币数量)之类的事情。但是目前(2018年7月),Bitshares的隐私选项存在一个实际缺陷。事实是,在高隐私模式下,仍然没有方便的图形界面来进行简单的工作。

常见问题


-Bitshares是否支持设置使用硬币的任意条件的能力,例如使用比特币脚本?

否,该协议的当前版本不支持此功能。不太可能添加它,因为在Bitshares中创建新类型的操作并将其引入协议的后续更新中将最为方便。

-是否有任何类似于Bitshares网络的SPV节点的,用于Bitshares网络的轻量级节点的实现?

目前不行。此外,从技术上讲,它们将比比特币中的SPV更复杂,因为它使用DPoS而非PoW,这非常简单。您可以使用连接到受信任站点的应用程序来代替轻量级站点。

-在Bitshares平台上区块形成的时间是什么?

在2018年,这是3秒。有趣的是,可以在不更新协议的情况下配置块形成周期。

-如果您在Bitshares平台上注册了漂亮的帐户名,是否可以将其出售给其他用户?

是的,的确有这样的选择,并且效果很好。

Source: https://habr.com/ru/post/zh-CN416939/


All Articles