架构
1
顶层架构设计上
区块链可以简单的分为三个层次,协议层、扩展层和应用层。其中,协议层又可以分为存储层和网络层,它们相互独立但又不可分割。
以太坊最上层的是DApp,它是整个区块链的展示层,通过Web3.js和智能合约层进行交换,如以太坊使用的是truffle和web3-js,区块链的应用层可以是移动端,web端,或是融合进现有的服务器,把当前的业务服务器当成应用层。
所有的智能合约都运行在EVM(以太坊虚拟机)上,并会用到RPC(Remote Procedure Call Protocol,远程过程调用直观说法就是A通过网络调用B的过程方法)。
在EVM和RPC下面是以太坊的四大核心内容,包括:blockChain, 共识算法,挖矿以及网络层。除了DApp外,其他的所有部分都在以太坊的客户端里,目前最流行的以太坊客户端就是Geth(Go-Ethereum)。
blockchain
2
从数据结构来看
协议层,是最底层的技术。这个层次通常是一个完整的区块链产品,类似于我们电脑的操作系统,它维护着网络节点,仅提供Api供调用。网络编程、分布式算法、加密签名、数据存储技术等4个方面,分布式算法基本上属于业务逻辑上的实现,什么语言都可以做到,加密签名技术是直接简单的使用,数据库技术也主要在使用层面。
存储层:一个区块(Block) + 链表及区块链数据结构。以太坊中使用的数据库是levelDB。
网络层:p2p网络,P2P网络的实现和并发处理才是开发的难点,所以对于那些网络编程能力强,对并发处理简单的语言,Nodejs开发区块链应用,逐渐变得更加流行,Go语言就开始很火了。
共识层:也就是激励层,通过挖矿机制,制定区块链的获取货币的方式。比如比特币用的是POW(Proof of Work工作量证明机制):电脑的性能越好,越容易获取到货币奖励。还有POS(Proof of Stake权益证明机制):类似于众筹分红的概念,会根据你持有的货币数量和时间,给持有者发放利息。
扩展层:类似于电脑的驱动程序,以太坊中这部分包括了EVM(以太坊虚拟机)和智能合约两部分。是为了让区块链产品更加实用,比如以太坊的“智能合约”的概念,这是典型的扩展层面的应用开发。
合约层:以往的区块链是没有这一层的。所以最初的区块链只能进行交易,而无法用于其他的领域或是进行其他的逻辑处理。但是合约层的出现,及智能合约”就是“可编程合约”,或者叫做“合约智能化”,其中的“智能”是执行上的智能,也就是说达到某个条件,合约自动执行使得在其他领域使用区块链成为了现实。
应用层:类似于电脑中的各种软件程序,区块链的展示层。DAPP产品其实也是这个层面的应用,将智能合约发布到区块链上,人们通过地址对这个区块进行访问继而和智能合约交互,以太坊使用的是truffle和web3-js.区块链的应用层可以是移动端,web端,或是融合进现有的服务器,把当前的业务服务器当成应用层。基于此开发的DAPP其实就是在智能合约基础上封装了一层Web应用,发行代币等都是在这个层面,通过DAPP提供的Web应用和智能合约交互。
(本文内容来源于HiBlock区块链社区“一起搞事情”的小伙伴 作者:rectinajh)
以下是我们的社区介绍,欢迎各种合作、交流、学习:)
点击“阅读原文”进入HiBlock“搞事情”的GitHub页面~