Ethereum架构的分析

2023-11-18


架构


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页面~


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ethereum架构的分析 的相关文章

  • unplugin-vue-components 源码原理分析

    unplugin vue components 是一款按需自动导入Vue组件的库 支持 Vue2 和 Vue3 同时支持组件和指令 使用此插件库后 不再需要手动导入组件 插件会自动识别按需导入组件以及对应样式 我们只需要像全局组件那样使用即
  • 【笔记】SemGCN

    一 论文总结 1 1 核心贡献 提出了一种改进的图卷积操作 称为语义图卷积 SemGConv 它源自cnn 其关键思想是学习图中暗示的边的信道权值 然后将它们与核矩阵结合起来 这大大提高了图卷积的能力 其次 我们引入了SemGCN 其中Se

随机推荐

  • Unity PlayerPrefs(数据持久化)

    PlayerPrefs Unity3D中的数据持久化是以键值的形式存储的 可以看作是一个字典 Unity3D中值是通过键名来读取的 当值不存在时 返回默认值 目前Unity3D中只支持int string float三种数据类型的读取 参考
  • android开发工具!Android性能优化常见问题,灵魂拷问

    前言 今年上半年其实就已经有了换工作的想法 奈何疫情原因和岗位缩减 加之信心不足 到六月底投递了百度的Android岗位 本以为像我这种非211 985没工作经验的渣渣只能被直接pass 结果却意外的收到了电话 真是受宠若惊 经过电面 技术
  • 51单片机入学第八课——8*8点阵屏

    文章目录 LED点阵屏 点阵屏电路图 74HC595芯片 串入并出 使用方法 编程 点亮一个点 显示汉字 PCtoLCD 2002 编写代码 总结 LED点阵屏 LED点阵屏和数码管工作都是是靠二极管发光 但工作原理与矩阵键盘有些类似 在后
  • springboot2.0整合logback日志(详细)

    一 近期自己的项目想要一个记录日志的功能 而springboot本身就内置了日志功能 然而想要输入想要的日志 并且输出到磁盘 然后按天归档 或者日志的切分什么的 自带的日志仅仅具有简单的功能 百度了一番 总结如下 适合大多数的应用场景 二
  • python线程池ThreadPoolExecutor使用

    假设我们必须多线程任务创建大量线程 由于线程太多 因此可能会有很多性能问题 这在计算上会是最昂贵的 一个主要问题可能是吞吐量受限 我们可以通过创建一个线程池来解决这个问题 一个线程池可以被定义为一组预先实例化和空闲的线程 它们随时可以开始工
  • 微信小程序请求库的封装方法

    1 文档地址 微信官方文档 wx request网络请求 2 项目使用 根目录下新建utils gt request js 作为请求通用库 接口地址 const DEV URL http localhost 22667 const PROD
  • 常用python程序

    压缩文件 import zipfile import os def zipDir dirpath outFullName 压缩指定文件夹 param dirpath 目标文件夹路径 param outFullName 压缩文件保存路径 xx
  • linux环境用opencv读取图片,基于Linux下OpenCV的人脸识别模块设计

    金笑雪 张琳琳 高丹 张黎 摘 要 近年来 图像识别技术正在向更加直观 可靠的方向发展 其中人脸识别技术具有极高的研究价值 应用得也最为广泛 通过对Linux系统下OpenCV的研究 利用OpenCv Python3 4设计出一个图像识别系
  • OpenWRT添加模块(一)Makefile和Config.in

    第一次接触到openwrt 真是被毁三观啊 不要说makefile 连源代码在哪里都找不到 知道嵌入式系统水深 没想到迈出第一步就没过了脖子 好在旁边有人指点 直接在芯片厂商提供的既有代码上做二次开发 项目进展倒也完全满足了前期计划的目标
  • Linux基础笔记

    第一章 一 网络配置 网络三要素 ip地址 子网掩码 255 255 255 0 网关 ifconfig 查看网络 hostname 查看本机名称 hostname 更改主机名 etc hosts 网络映射配置文件 etc sysconfi
  • 【使用TensorRT自带的plugin】

    0 背景 在之前的文章TensorRT的plugin实现中介绍了 如何从零实现一个TensorRT的plugin 这篇文章来介绍如何使用TensorRT自带的plugin 将其添加到Network Definition中加速我们的模型 自T
  • js延时案例

    例子 setTimeout function gift css display block 3000 js延迟函数delay的使用 const delay ms gt new Promise resolve reject gt setTim
  • Unity 场景烘焙原理

    一 基础四种烘焙方式 1 静态灯光下静态物体烘焙 2 静态灯光下动态物体烘焙 3 动态灯光下静态物体烘焙 4 动态灯光下动态物体烘焙 二 实现方法 1 静态灯光下静态物体烘焙设置如下 灯光类型设置为Baked模式 模型预设右上角设置为Sta
  • 用Python实现链表

    摘要 在C C 语言中 常用结构体 指针来实现链表 而在Python语言中 使用类 class 来实现链表 一 创建节点 Node 链表由多个节点 Node 组成 而每个节点都有两要素组成 1 value 该节点的值 2 next 指向下一
  • 3-1.vue的组件component:组件的基本使用

    3 1 vue的组件component 组件的基本使用标题 vue组件的作用 组件的含义其实就是对一些功能进行封装 vue的项目开发都是以组件化的形式去开发的 一个项目一般都是划分成多个组件 然后拼接而成的 1 代码展示 最原始的实现方式
  • 蛇形方阵

    题目描述 给出一个不大于 9 的正整数 n 输出 n n 的蛇形方阵 从左上角填上 1 开始 顺时针方向依次填入数字 如同样例所示 注意每个数字有都会占用 3 个字符 前面使用空格补齐 输入 4 输出 1 2 3 4 12 13 14 5
  • DPDK — 安装部署

    1 基础环境 1 1 硬件配置 1 2 操作系统要求 2 测试环境编译测试过程 2 1 升级GCC版本至GCC 7 3 0 步骤1 升级GCC依赖包设置 编译安装gmp cd home tar xvf home gmp 6 1 2 tar
  • python常用编译器和解释器_详解python编译器和解释器的区别

    高级语言不能直接被机器所理解执行 所以都需要一个翻译的阶段 解释型语言用到的是解释器 编译型语言用到的是编译器 编译型语言通常的执行过程是 源代码 预处理器 编译器 目标代码 链接器 可执行程序 某种意义上来说预处理事实上是一个附加的功能
  • m3u8是什么?

    引入 最近在视频网站中下载视频发现下载下来不是传统的mp4格式 而是m3u8格式 而且这个格式在播放器中还识别不了 我还以为是什么最新的加密格式 查阅资料才找到它是最近流行的流媒体传输格式 m3u8文件是用来干啥的 现在的视频网站采用的是流
  • Ethereum架构的分析

    架构 1 顶层架构设计上 区块链可以简单的分为三个层次 协议层 扩展层和应用层 其中 协议层又可以分为存储层和网络层 它们相互独立但又不可分割 以太坊最上层的是DApp 它是整个区块链的展示层 通过Web3 js和智能合约层进行交换 如以太