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

以太坊生态系统中的开发工具和技术

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

如果你是以太坊区块链的新手,那么你可能会不知所措(至少我是),并试图了解以太坊生态系统中的所有工具和技术。因此,我决定在开始学习以太坊时简要描述下你经常遇到的各种组件。希望这将有助于你全面了解以太坊生态系统以及所有部分如何组合在一起。

1.以太坊

以太坊是一个智能合约区块链,你可以在其上构建去中心化的应用程序(称为智能合约)。如果你是技术专家,本白皮书值得一读:https://github.com/ethereum/wiki/wiki/White-Paper。

如果你之前已经构建了Web应用程序,我写了一篇文章,比较以太坊区块链和Web应用程序架构,这可能有助于在更高层次上理解以太坊。

2.Geth

Geth是以太坊基金会提供的官方客户端软件。它是用Go编程语言编写的。该软件包含一些值得理解的组件:

  • 客户端守护程序

当你启动此客户端守护程序时,它将连接到网络中的其他客户端(也称为节点)并下载区块链的副本。它将不断与其他节点通信,以使其区块链的副本保持最新。它还能够挖掘块并向区块链添加交易,验证块中的交易并执行交易。它还通过公开可以通过RPC与之交互的API充当服务器。

  • geth控制台

这是一个命令行工具,可让你连接到正在运行的节点,并执行各种操作,如创建和管理帐户,查询区块链,签署并向区块链提交交易等。

  • mist浏览器

这是用于与节点通信的桌面应用程序。你使用geth控制台执行的任何操作都可以通过此图形用户界面完成。

3.Parity

Parity是以太坊协议的另一个很好的实现,用Rust编程语言编写。它是一个非官方的客户端,由一家名为Parity Inc.的公司维护。任何人都可以实现客户端软件并加入以太坊网络。你可以按照本黄皮书中的规范来实施你自己的客户端!

4.Web3.js

就像你有geth,mist浏览器等与ethereum节点进行通信一样,还有一个名为Web3.js的javascript库,可以用来与节点进行交互。由于它是一个javascript库,你可以使用它来构建基于Web的dapps。

5.solidity

Solidity是用于编写智能合约以便在以太坊区块链上运行的最流行的编程语言。它是一种高级语言,在编译时会转换为EVM(以太坊虚拟机)字节代码。这与Java世界非常相似,其中有Scora,Groovy,Clojure,JRuby等JVM语言。编译时所有这些都生成在JVM(Java虚拟机)中运行的字节代码。你可以创建像Solidity这样的语言,只要你遵循规范并且你的语言编译为有效的EVM字节代码就行!

还有一个非常好的基于浏览器的IDE,你可以在这里编写合约,编译和部署到区块链:http://remix.ethereum.org/

6.Truffle/Embark

就像你有Web应用程序开发的框架,如Ruby on Rails,Python/Django等,Truffle和Embark是用于开发dapps的两个最流行的框架。它们消除了在区块链上编译和部署合同的许多复杂性。

如果你是Ethereum dapp开发的新手,我写了一系列的指导教程,可以在1,2和3开始。

7.Metamask

如果你在以太坊社区闲逛超过一周,你将不可避免地遇到Metamask。在撰写本文时,它是一个用于与以太坊节点交互的chrome插件。对于世界上每个人来说,运行节点与区块链进行交互是不现实的。因此,Metamask的人员拥有许多节点,因此你不必这样做。你所要做的就是安装Metamask,它会自动连接到他们的节点。

8.ENS

以太坊命名系统是以太坊世界的DNS。就像你将IP地址映射到人类可读的名称一样,你可以将任何以太坊合约或钱包地址映射到人类可读的名称。

例如:146.115.22.177→google.com。你可以输入解析为该IP地址的google.com,而不是在浏览器中键入IP地址。

例如:0x80C013d980aB049471c88E1603b8b4a60E03295C是我的钱包地址。如果你有心情给我发送一些以太币,你不必记住这个地址。一旦ENS启动,我可能会将它映射到mvmurthy.eth,你可以用它来轻松地给我钱:)。

9.Swarm

区块链可以存储少量数据。如果你想存储患者记录,销售合同或某些需要公开时间戳的大型文件,该怎么办?在区块链中存储blob既昂贵又无法扩展。Swarm用于解决这个问题。Swarm是一种分散的内容存储和分发服务。你可以将其视为CDN,而不是在一家公司的服务器上托管的整个CDN,它通过互联网分布在计算机上。就像运行以太坊节点一样,你运行一个swarm节点来连接到群网络。

当你将以太坊合约部署到区块链时,你将获得ABI的部署地址和JSON接口(合同接口类似于API)。当你希望某人使用你的合约时,你必须向他们提供已部署的地址和ABI。将来,ABI将存储在Swarm上,所以任何人都可以通过查看以太坊地址来查找ABI。

10.IPFS

IPFS(星际文件系统)在概念上与Swarm完全相似。它是一个分散的存储系统。它与以太坊直接无关,但可以与以太坊集成。

你可以在这里阅读Swarm和IPFS之间的区别:https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM

11.Whisper

你没有听到很多关于Whisper的信息,但在以太坊生态系统中却是一项有趣的技术。它是Dapps彼此交互的通信协议。你可以在这里相关信息:https://github.com/ethereum/wiki/wiki/Whisper

下面是尝试将所有部分组合在一起:

======================================================================

分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:

  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是原文以太坊生态系统中的工具和技术

转载于:https://my.oschina.net/u/2472105/blog/2875026

相关文章:

  • git命令——revert、reset
  • 如何高效的使用 Git
  • opencv模板匹配有趣的链接
  • 好看的字体—方正粗倩
  • PAT 1041 Be Unique[简单]
  • 创建Cloudhbase维表
  • 新项目流程--安装yii框架
  • 我写的Angular相关的文章
  • 给Python新人练手准备的两个简单案例
  • js中的 substr方法与substring方法 不同
  • 程序猿生存指南-13 再见老潘
  • 小程序获取unionId以及手机号
  • 一道小编程题(自用)
  • eclipse中类和方法添加作者日期说明
  • Mongodb网页图形化管理工具,基于Spring Boot2.0,前端采用layerUI实现
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【node学习】协程
  • Codepen 每日精选(2018-3-25)
  • If…else
  • Js基础——数据类型之Null和Undefined
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Rancher-k8s加速安装文档
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • sessionStorage和localStorage
  • vue-cli在webpack的配置文件探究
  • vue-router 实现分析
  • 代理模式
  • 第十八天-企业应用架构模式-基本模式
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 利用DataURL技术在网页上显示图片
  • 使用 @font-face
  • 学习笔记TF060:图像语音结合,看图说话
  • 正则表达式小结
  • ​​​​​​​​​​​​​​Γ函数
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #每天一道面试题# 什么是MySQL的回表查询
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (转)LINQ之路
  • (转)Sql Server 保留几位小数的两种做法
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .gitattributes 文件
  • .java 9 找不到符号_java找不到符号
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NetCore项目nginx发布