当前位置: 首页 > news >正文

深入了解以太坊

1. 以太坊编程语言和操作码

        以太坊中智能合约的代码以高级语言编写,如 Serpent、LLL、Solidity 或 Viper,并可转换为 EVM 可以理解的字节码,以便执行。

        Solidity 是为以太坊开发的高级语言之一,它具有类似 JavaScript 的语法,可以为智能合约编写代码。在代码编写完成之后,可使用称为 solc 的 Solidity 编译器将其编译为 EVM 可以理解的字符码。

注意:

Solidity 官方说明文档可以从以下网址获得:

http://solidity.readthedocs.io/en/latest/

        类似 Lisp 的低级语言(Low-level Lisp-like Language,LLL) 是一种用于编写智能合约代码的语言。

        Serpent 是一种类似于 Python 的高级语言,也可以用于为以太坊编写智能合约。

        Vyper 是一种较新的语言,它是从零开始开发的,旨在实现开发一种安全、简单且审核的语言。

注意:

有关 Vyper 的更多信息,可以从以下网址获得:

https://github.com/ethereum/vyper

2. 区块和区块链

区块是区块链的主要组成部分。以太坊区块由各种元素组成,具体如下:

  • 区块标头
  • 交易列表
  • 叔区块标头列表

        交易列表是该区块中包含的所有交易的列表。此外,该区块中还包含叔(Ommers 或 Uncles) 区块的标头列表。

        以太坊区块的生产时间(大概 15 秒) 和 比特币 (大概 10 分钟) 相比要快很多,因此,会有更多的竞争区块被矿工发现,这些竞争区块也被称为孤立区块(Orphan Block) 或 陈旧区块

2.1 区块标头

        以太坊中区块最重要、最复杂的部分是区块标头,它包含一些有价值的信息。

下图显示了区块和区块标头的详细结构

3. 节点和矿工

        以太坊网络包含不同的节点。一些节点仅充当钱包,另一些节点是轻客户端,很少有节点是运行完整区块链的全客户端。节点的最重要类型之一是挖矿节点。 

 3.1 共识机制

        以太坊的共识机制是基于贪婪最重可观测子数(Greedy Heaviest Observed SubTree, GHOST) 协议,它最初是由 Zohar 和 Sompolinsky 在 2013 年 12 月提出的。

下图显示了最长链和最重链之间的简单比较

3.6 挖矿设备

        由于以太币的挖矿难度随着时间的增加而增加,因此矿工开始组装具有多个 GPU 的挖矿设备(Mining Rigs)。挖矿设备通常包含大约 5 张显卡,它们全部并行工作以进行挖矿,从而提高找到有效的随机数进行挖矿的机会。

下图显示了在市场上可以购买到的挖矿设备

3.7 矿池

        许多在线矿池都提供以太坊挖矿,可以使用以下命令将 Ethminer 连接到矿池:

每个矿池都会发布其操作指导。一般来说,连接到矿池的过程都是相似的。 

4. 钱包和客户端软件

        由于以太坊正处于加紧开发和演变过程中,因此过去几年已经开发并推出了许多组件、客户端和工具。

4.1 Geth 

        这是以太坊客户端的 Go 语言实现。

4.2 Eth

        这是以太坊客户端的 C++ 语言实现。

4.3 Pyethapp

        这是以太坊客户端的 Python 语言实现。

4.4 Parity

        此实现使用 Rust 语言构建,由 EthCore 开发。EthCore 是一家致力于 Parity 客户端开发的公司。

4.8 Mist 浏览器

4.10 Geth 控制台

4.11 用比特币为帐户注资

4.12 Parity 安装

6. 支持协议

6.2 Swarm

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • COD论文笔记 Adaptive Guidance Learning for Camouflaged Object Detection
  • EmguCV学习笔记 VB.Net 11.2 DNN推理流程
  • iPhone的安全模式如何操作
  • 嵌入式OpenHarmony源码基本原理详解
  • 内网安全-横向移动【3】
  • 检查Index对象是否单调递减pandas.Index.is_monotonic_decreasing
  • 【学习笔记】3GPP WG SA5 Rel-19标准化工作管理和编排
  • 衡石分析平台使用手册-单机安装及启动
  • vue3实现打飞机(雷电)
  • HTML 超链接
  • 常见的正则化方法以及L1,L2正则化的简单描述
  • ELK学习笔记(三)——使用Filebeat8.15.0收集日志
  • 【大模型理论篇】大模型周边自然语言处理技术(NLP)原理分析及数学推导(Word2Vec、TextCNN、FastText)
  • 常见的pytest二次开发功能
  • 垃圾回收概述及算法
  • [ JavaScript ] 数据结构与算法 —— 链表
  • happypack两次报错的问题
  • javascript面向对象之创建对象
  • MySQL-事务管理(基础)
  • SegmentFault 2015 Top Rank
  • Solarized Scheme
  • Webpack 4 学习01(基础配置)
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 排序算法学习笔记
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 中文输入法与React文本输入框的问题与解决方案
  • 2017年360最后一道编程题
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • # windows 安装 mysql 显示 no packages found 解决方法
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • $(selector).each()和$.each()的区别
  • (30)数组元素和与数字和的绝对差
  • (arch)linux 转换文件编码格式
  • (Java入门)抽象类,接口,内部类
  • (Note)C++中的继承方式
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (独孤九剑)--文件系统
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (四)js前端开发中设计模式之工厂方法模式
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (转)关于pipe()的详细解析
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • *2 echo、printf、mkdir命令的应用
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .net core 控制台应用程序读取配置文件app.config
  • .Net Core与存储过程(一)
  • .Net Core中Quartz的使用方法
  • .net 后台导出excel ,word
  • .net 流——流的类型体系简单介绍
  • .NET 通过系统影子账户实现权限维持
  • .NET企业级应用架构设计系列之应用服务器
  • .NET应用架构设计:原则、模式与实践 目录预览