超越比特币以太坊的区块链技术:石墨烯项目简介

导读:Graphene (石墨烯)是区块链工具组,由比特股团队cryptonomex开发,将一种新的共识机制DPOS投入了实际应用,其并发能力很强,基于石墨烯底层的BTS和STEEM可以达到1.5S的平均确认速度和有限条件下实测3300TPS的数据吞吐量。本文作者简单介绍了区块链以及石墨烯,并对如何使用石墨烯API构建简单APP,做了简单说明。

简介

您可能已经听到过像“比特币”和“区块链”这样的词,也可能听说过“以太坊”,而且迫切的想知道这都是什么玩意。

这都是有用的技术吗?如果是的话,应该如何使用?

本文旨在通过强调概念背后的技术实例,来阐明区块链的含义。

像OCI和许多其他技术一样,区块链是中间件。它本身并不是目的;而是达到目的的手段。

区块链在很大程度上跟数据库差不多,可以存储并操作数据。然而也有不同的地方,数据作为交易的不可变记录存储在区块链中。链条的完整性通过使用算法来保持,该算法可将每个新区块与其之前的区块历史连接起来,形成区块链。

石墨烯是开源的,主要是用C++开发,区块链实现的最初目的是作为加密货币交易市场Bitshares的基础。

石墨烯已被分叉和调整多次。原始版本由Cryptonomex管理。

石墨烯是开源的,它是以模块化的方式开发,因此它适用于许多不同的用途。

除了Bitshares之外,它支撑了steem.io基金会,同时基于它的Steem区块链孕育了steemit.com,这是一个类似于reddit.com和PeerPlays.com(一家博彩网站)的新闻汇总网站。

FollowMyVote.com是构建在Graphene区块链上的另一个服务。 FollowMyVote使用石墨烯来促进安全的市政投票。

除此之外,石墨烯还有许多其他用户。

什么是区块链

对于那些还没有听说过区块链的人来说,网上有很多资料。 我建议你在油管上搜索“什么是区块链”,会有很多不错的视频

我在这里会简单讲下区块链是什么和一些基本术语。

区块链是数据状态随时间变化的交易记录的链表。 这些记录块的链接是使用加密算法完成的,算法将当前块中记录的事务的信息以及该块之前的区块的信息合并在一起。

这是一个说明这个概念的图表。

一些术语定义

区块

与区块链相关的数据的容器。数据通常是一组描述数据变化的交易集合。可能是资产从一个所有者转移到另一个所有者的记录,或者可能是正在更新的一些个人信息的记录。根据所需的特征,区块可能包含或多或少的事务数据。区块还包含头部,该头部包含有关该区块的某些元数据,还包括对前一个区块的引用。

哈希

通过某种算法计算得出的值,该算法可唯一标识输入数据而不会泄露该数据的内容。哈希值用于确保区块链上数据的准确性。区块头部包含前一个区块的哈希,可以快速验证整个链的完整性。

创世块

这是整个链的第一个区块。它是在区块链首次部署时创建的,用作所有其他区块的锚点。

交易

对数据集进行更改的记录。交易通常基于区块链定义的规则。这些规则包括各方之间的合同。

智能合约

合约,可能包含自己行为的触发事件。

节点

能够在网络中增加区块的网络中的主机。节点如何做到这一点则根据链的需要而变化。

分布式帐本

记录跨节点共享的事务记录。组成区块链的很多节点构成分布式账本。

共识算法

在分布式账本中的节点中使用,并由区块链定义以确定区块链正确性的方法。最普遍的共识算法是“Pow(工作证明)”,“(Pos)股权证明”和“(DPoS)委托股权证明”。石墨烯采用委托股权证明。

工作证明(PoW)

一种共识算法,依靠计算难度的挑战来解决问题,以便找到新块的哈希。虽然计算得到新区块的难度很大,但其他节点验证新区块的难度很小,从而允许其他参与节点快速认同新区块的正确性。

股权证明(PoS)

一种基于节点的共识算法,节点持有可以参与区块链的股权。通过证明股权,区块可以更快地被添加到链中。

委托股权证明(DPoS)

这是一种变化的股权证明算法,将创建块的责任委托给称为“证人”的第三方节点。

见证者节点

DPoS区块链中的一个节点,负责执行创建新区块的任务。

使用区块链

随着越来越多的人了解区块链,用例示例池也在不断增加。

区块链最早的用途集中在虚拟货币的转移。其资产转移能力可以扩展到供应链管理,证据保管或任何其他需要无可辩驳的所有权证明的情况。

另外一类用例着重于强制执行交易的规则管理。这些规则可以定义合约,这些合约可能包括使合约本身成为参与者的行为编码。这些通常被称为智能合约。

我们将在随后的SETT文章中仔细研究石墨烯上的智能合约

共识是区块链力量的主要贡献者,特别是在参与者相互不知道对方并缺乏信任的情况下。通过定义由节点生成区块并由其他节点验证区块的算法解决信任问题。

但是将专有数据或其他敏感数据放在可公开访问的区块链上可能并不理想。在这些情况下,区块链可能会变得私密。私有区块链可以使用更简单的共识机制,这反过来又使其更容易部署在少数节点上,甚至可能只有一个节点。

石墨烯简介

石墨烯区块链不是单个应用程序。 它由许多库和可执行文件组成,以提供可部署的节点。

图2提供了石墨烯源代码包的图解。

除了下面显示的软件包之外,Graphene还依赖于标准的C ++ 11和Boost软件包,同时还提供了大量的测试套件。

获取石墨烯

石墨烯是GitHub上的开源软件。 代码仓库可以在Cryptonomex站点找到。

有三个项目需要克隆:graphene,graphene-ui和fc。

OCI的GitHub页面包括石墨烯和graphene-ui,它们是我们的研究基础。 您可以通过访问https://github.com/objectcomputing/graphene和https://github.com/objectcomputing/graphene-ui 来克隆OCI的石墨烯副本。

这两个工具包的构建和部署说明包含在它们各自的Readme.md文件中。

石墨烯有三个可执行文件:witness_node,cli_wallet和genesis_util。 一旦编译完成,你可以尝试运行一个见证节点。

请注意,此示例显示如何使用命令行选项运行见证节点。

在运行节点后,可以使用cli_wallet连接到节点。 在第二个终端窗口中,运行命令行钱包应用程序。 此时,您可以使用help命令来了解如何使用钱包。

使用石墨烯API编程

石墨烯的基本API基于远程过程调用(RPC)。 可用的具体功能取决于由特定区块链实例定义的合同条款。

首先通过登录API访问公共认证模块。 通过身份验证后,客户端应用程序能够收集其他远程对象引用并调用它们。

FC库用于管理传输细节,允许节点接受各种传输协议。

到目前为止,witness_node应用程序仅接受HTTP格式的请求。 在C++应用程序中,Graphene应用程序和FC库一起工作,从而提供了一个简单的编程模型。

下面是一个来自cli_wallet应用程序的示例,展示了如何连接到节点服务器,登录并进行其他调用。 这里显示的是 wdata 是从命令行、配置文件等收集初始化信息。然后创建客户端连接,登录(表明已登录成功),创建一个钱包实例,以进行进一步调用。

寻找未来的SETT文章,以更深入地探索石墨烯API。

下一步

区块链拥有许多应用,从金融服务到身份安全,再到供应链管理等等。 为了支持这些众多的应用,区块链有许多不同的实现。

我相信石墨烯是一个特别重要的区块链框架,因为它的模块化特性。 通过从逻辑中分离节点间通信支持,可以在另一种传输机制(例如OCI的OpenDDS)上替换石墨烯的逻辑组件。 该开源产品使基于OpenDDS的低功耗应用(如IIoT设备),以尽可能少的开销来增加区块链相关功能。

我预计在其他领域,例如Grails,我们也会看到更多的区块链技术应用。 随着时间的推移,我希望看到OCI成为裁剪区块链解决方案的领导者,无论是基于Graphene还是其他区块链实现。

参考文献

比特币白皮书,开始它的所有文件:https://bitcoin.org/bitcoin.pdf 以太坊白皮书,关于智能合约的讨论:http://www.the-blockchain.com/docs/Ethereum_white_paper-a_next_generation_smart_contract_and_decentralized_application_platform-vitalik-buterin.pdf Bitshares白皮书集合涵盖了石墨烯背后的理论:https://bitshares.org/technology

本文作者 Coral Health,由魏佳翻译。转载译文请注明出处,技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。

高可用架构

改变互联网的构建方式