网站首页 > 币百科 >

以太坊开发入门指南(以太坊开发者社区)

2023-07-10 17:14:13 币百科 阅读 0

Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册

最近有很多朋友问关于以太坊发展指南的问题。边肖结合多年经验整理了一些以太坊开发者社区对应的资料,分享给大家。

以太坊规定了每个节点需要实现的JSONRPCAPI应用开发接口。该接口与传输无关,应用程序可以使用该接口协议通过各种通信机制(如HTTP、websocket或IPC)来操作以太坊节点:

目录

术语"以太网节点"指以某种方式与以太网交互的程序。从简单的移动钱包应用程序到存储整个区块链副本的计算机,任何设备都可以充当以太坊节点。

所有节点都以某种方式充当通信点,但以太网中有许多类型的节点。

与比特币不同,以太坊找不到任何程序作为参考实现。在比特币生态系统中,比特币的核心是主节点软件,而以太坊黄皮书提出了一系列独立(但兼容)的程序。目前最流行的是Geth和奇偶校验。

以允许独立验证区块链数据的方式连接以太网,您应该使用之前提到的软件来运行整个节点。

软件将从其他节点下载块,并验证其中包含的事务的正确性。该软件还将运行所有调用的智能合约,以确保接收到的信息与其他节点的信息相同。如果一切按计划进行我们可以认为所有节点设备都存储了区块链的相同副本。

所有的节点对于以太坊的运营都是非常重要的。如果没有遍布全球的众多节点,网络将失去反审查和去中心化的特性。

通过运行所有节点,您可以直接为网络的健康和安全发展做出贡献。但是整个节点通常需要使用独立的机器来完成运维。对于无法(或者只是不愿意)运行整个节点的用户来说,轻节点是更好的选择。

顾名思义。光节点都是轻量级设备,可以显著降低资源和空间的占用率。手机或笔记本电脑等便携设备可以作为光节点。但是,降低开销是要付出代价的:光节点无法完全实现自给自足。它们不能与整个区块链同步,所有节点都需要提供相关信息。。

光节点受到商家、服务商、用户的青睐。在不需要使用所有节点、运行成本过高的情况下,广泛应用于代收代付。

挖掘节点可以是完整节点客户端,也可以是轻型节点客户端。。术语"挖掘节点"与比特币生态系统的使用方式不同,但仍用于识别参与者。

如果要在以太坊参与挖矿,必须使用一些额外的硬件。最常见的做法是制造矿机。。用户通过矿机连接多个GPU(图形处理器)高速计算哈希数据。

矿工可以选择两种开采方案:单独开采或加入矿池。单独采矿是指矿工自己造块。如果成功,你将独自享受采矿奖励。。如果加入矿池,那么很多矿工的哈希力就合在一起了。清块速度提高,但是采矿奖励会被很多矿工分享。区块链最重要的特色之一是"开放存取"。这说明任何人都可以运行以太坊节点。并通过验证交易和阻止来加强网络。

和比特币类似,很多企业都提供即插即用的以太网节点。如果你只想启动和运行单个节点,这个设备无疑是最好的选择,但缺点是为了方便要额外付费。

如上所述,以太坊中有许多不同类型的节点软件实现,如Geth和奇偶校验。要运行个人节点,您必须掌握所选实现的安装过程。

除非运行一个名为archivenode的特殊节点,否则消费级笔记本电脑足以支持以太坊所有节点的正常运行。但最好不要使用日常工作设备,因为节点会严重拖慢运行速度。

运行个人节点时,建议设备始终在线。如果节点脱机,当它再次联网时,可能需要很长时间才能同步。所以最好选择成本低,维护方便的设备。你甚至可以通过RaspberryPi运行光节点。

随着网络即将过渡到股权证明机制,以太坊挖矿不再是最安全的长期投资方式。过渡成功后,亿泰坊的矿工只能将采矿设备转移到其他网络或者直接出售。

由于转换尚未完成,以太坊中参与挖矿仍然需要特殊的硬件(比如GPU或者ASIC)。要想获得可观的利润,就要定制矿机,找电价低的矿。此外,还需要创建一个以太坊钱包,配置相应的挖矿软件。所有这些都需要花费大量的时间和金钱。。在参加挖矿之前,请认真考虑自己是否能应对各种挑战。(中国严禁采矿,所以不要';不要自己试)

Progpow代表程序化工作量证书。这是以太坊挖掘算法Ethash的扩展方案。,旨在提高GPU的竞争力,使其超越ASIC。

在比特币和以太坊社区,反ASIC多年来一直是一个有争议的话题。在比特币网络中,ASIC成为挖矿主力。

ASIC在以太坊不是主流,相当一部分矿工还在用GPU。然而,随着越来越多的公司将邰方ASIC矿机引入市场,这种情况将很快改变。但是,ASIC的问题在哪里?

一方面,ASIC明显削弱了网络的去中心化。如果GPU矿工可以';如果不能盈利,不得不停止开采,那么杂碎率最终将集中在少数矿工手中。另外,ASIC芯片的开发成本相当昂贵,有开发能力和资源的公司屈指可数。。这种情况可能导致伊泰坊的矿业集中在少数公司手中,形成一定程度的行业垄断。

2018年以来,ProgPow的整合争议不断。有人认为有利于以太坊生态系统的健康发展。。也有人反对,认为可能会导致硬分叉。随着权利证明机制的到来,ProgPoW能否应用于网络还有待观察。

以太坊和比特币一样,都是开源平台。每个人都可以参与协议开发。,或者基于协议构建应用程序。事实上,以太坊也是区块链领域最大的开发者社区。

MasterEthereumproducedbyAndreasAntonopoulosandGavinWoods.,以及Ethereum.org推出的开发者资源,是新手开发者理想的入门选择。

智能合同的概念最早是在20世纪90年代提出的。它在区块链的应用带来了一系列新的挑战。。Solidity由GavinWood于2014年提出,目前已经成为以太坊开发智能合约的主要编程语言,其语法与Java、JavaScript和c类似

本质上,使用Solidity语言,开发者可以编写分解后能被以太坊虚拟机(EVM)解析的指令。你可以通过SolidityGitHub了解更多关于它的工作原理。

实际上,Solidity语言并不是以太坊开发者的唯一选择。Vyper也是一种流行的开发语言,它的语法更接近Python。

本文仅介绍以太坊系列的DApp开发其他链条的原理没有太大区别。

MetaMask安装运行后,可以在Chrome控制台上打印metamask注入的window.ethereum对象

关于ethereum对象。,我们只需要关心ethereum.request.MetaMask使用ethereum.request(args)方法来包装RPCAPI。。这些API基于所有以太坊客户端公开的接口。简单来说,钱包交互的大部分操作都是通过request()方法实现的,通过传入不同的方法名来区分。

?即使以太坊对象中提供了chainId、isMetaMask和selectAddress属性,我们也可以';不要完全信任这些属性,它们不稳定或不标准,不推荐使用。。我们可以通过上面提到的请求方法获得可靠的数据。

钱包由方法名实现,以获取钱包地址为例

调用以太坊.request({method:";eth_requestaccounts"}),而钱包实现了这个方法,所以可以得到钱包的地址。

metamask注入的window.ethereum是提供者,一个RPC节点也是提供者。通过提供商,我们能够访问区块链。在连接到钱包的情况下,通常使用wallet的提供者ethers.providers.web3provider(以太坊)

如果只需要查询一些区块链数据,可以使用EtherscanProvider和InfuraProvider连接公共的第三方节点服务提供商。。JsonRpcProvider和IpcProvider允许连接到我们控制或有权访问的以太网节点。

获取当前帐户余额

获取最新的块号

其他RPC操作可以通过JSON-RPC查看。

ERC20的合约可以通过ethers.js连接,合约编译后会生成ABI,合约部署后会生成合约地址。开发者通过ABI和合同地址向合同发送消息。

合同中有两种方式:查看方式(免费)和非查看方式(耗气)。您可以通过ABI检查方法类型。

?ERC20更需要注意的是Approve()方法以及transfer()和transferFrom()的区别,授权令牌和授权方。您可以通过调用transferFrom()方法来转移您授权数量内的令牌,因此授权是一个非常危险的操作。假设你授权了一个坏合同,你将面临转移授权令牌的风险,即使你没有';不要泄露私钥助记符。

便捷三方库:web3-react-wallet

文档:doc.metamask.ioethers

以太坊是区块链的一个实现。。在以太网中,许多节点相互连接,构成了以太网。以太网节点软件提供两个核心功能:数据存储和契约代码执行。在每个以太坊节点中,存储了完整的区块链数据。以太坊不仅在链上存储交易数据。编译后的合同代码也保存在链上。在以太坊的整个节点中,还提供了一个虚拟机来执行契约代码。以太坊虚拟机以太坊区块链不仅存储数据和代码每个节点还包含一个虚拟机(EVM)来执行契约代码——,这听起来像一个计算机操作系统。实际上这是以太坊区别于比特币的核心点:虚拟机的存在让区块链进入2.0时代,也让区块链第一次成为应用开发者的友好平台。以上内容来自:以太坊DApp发展入门教程

以太坊应用开发可用工具、组件、模式和平台指南。

该列表的创建是由ConsenSys的产品经理推动的。他们认为工具、开发模型和组件需要在新的和有经验的区块链开发者之间更好地共享。

开发智能合同

智能合同语言

体系结构

IDE

其他工具

测试区块链网络

测试以太网龙头

前端以太坊API

后端以太坊API

引导加载程序/开箱即用工具

以太坊ABI(应用程序二进制接口)工具

以太坊客户端

存储

mahuta-IPFS存储服务,具有附加搜索功能,以前称为IPFS商店

OrbitDB-IPFS上的分散式数据库

JSIPFSAPIIPFSHTTPAPI的客户端库,用Java脚本语言实现

面向IPFS和其他分布式/分散式存储协议的临时易用API

pinata—使用IPFS的最简单方法

消息传递

测试工具

安全工具

监控

其他杂项工具

CheshireCryptoKitiesAPI和smartcontract的本地沙盒实现可用作TruffleBox

ERCs-ethereum注释请求存储库

ERC-20-可替代资产的原始代币合同

ERC-721-不可替代资产的代币标准

ERC-777-可替代资产的改进代币标准

[

ERC-918-MineableToken标准

流行智能合约库

扩展性

支付/状态通道

等离子

[

poabridge

poabridgeuserinterface

poabridgecontractZK-SnakZK-Stark

Pre-builtuserinterfacemodule

Theabovecontentcomesfromgithub.com/consensys/ethereum-developer-tools-list

.

我是宇哥,全栈程序员,在深圳创业,专注于区块链、元宇宙和智能合约、附加小程序和app开发。

[祈祷]

以太坊是什么?以太坊开发指南

许多学生一直渴望加入区块链开发团队,但他们觉得自己不能';不要开始。本文将以以太坊为平台,通俗地介绍以太坊发展中涉及的晦涩概念,轻松带你入门。

什么是以太坊

以太坊是一个基于区块链技术的去中心化应用平台。它允许任何人在平台上通过区块链技术构建和使用分散的应用程序。

没有';Idon’我不懂这个句子让';姑且说以太坊是区块链的Android,它是一个开发平台,这样我们就可以像Android框架一样编写基于区块链技术的应用程序。

在有以太坊之前,写一个区块链应用是这样的:复制一个比特币代码,然后修改加密算法、共识机制、网络协议等底层代码。(很多山寨币都是这样的,改完就出来一个新币)。

以太坊平台封装了底层区块链技术。,让区块链应用开发者可以直接基于以太坊平台进行开发,开发者只需要专注于应用本身的开发,大大降低了难度。

目前围绕以太坊已经形成了一个比较完善的开发生态系统:以社区为支撑。有许多开发框架和工具可供选择。

智能合约

什么是智能合约

以太网上的程序称为智能合约,它是代码和数据(状态)的集合。

智能合约可以理解为以代码形式编写的合约(特殊交易),可以在区块链上自动执行(事件驱动)。

在比特币脚本中,我们提到了比特币的交易是可以编程的,但是比特币脚本有很多限制。,我们能写的程序是有限的,以太坊更完整(在计算机科学术语中,叫做"图灵完成"),它允许我们编写几乎可以做任何事情(智能合约)的程序,就像使用任何高级语言一样。

智能合约非常适合对信任度、安全性和持久性要求较高的应用场景,如数字货币、数字资产、投票、保险、金融应用、市场预测、财产所有权管理、物联网、点对点交易等。

目前除了数字货币,真正落地的应用并不多(就像移动平台刚开始出来一样)。相信一到三年内,各种杀手级别会逐渐出现。

编程语言:Solidity

智能合约的默认编程语言是Solidity。,文件扩展名以。索尔。

Solidity是一种类似JavaScript的语言,用来开发契约,编译成以太坊虚拟机的字节码。

还有一种看起来像Python的智能合约开发语言:Serpent,但我建议你还是用Solidity。

Browser-Solidity是浏览器的一个SolidityIDE。可以点一下看看。我们将在以后的更多文章中介绍语言的可靠性。运行环境:EVM

EVM(以太坊虚拟机)以太坊虚拟机是以太坊中智能合约的运行环境。

Solidity对于EVM就像对于JVM一样,所以大家都很容易理解。

以太坊虚拟机是一个隔离的环境,在EVM内部运行的代码可以';不要与外界联系。

EVM在以太网节点上运行。当我们将契约部署到以太网时,契约可以在以太网中运行。

契约的编译

以太坊虚拟机是以契约的字节码形式运行的,所以我们需要在部署之前编译契约。可以选择Browser-SolidityWebIDE或者solc编译器。

契约部署

在以太坊上开发应用时,经常会用到以太坊客户端(钱包)。通常我们不会';不要在开发中触及客户或钱包的概念。这是什么?

以太坊客户端(钱包)

以太坊客户端,其实我们可以把它理解为一个开发者工具,它提供了账户管理、挖掘、转账、智能合约部署和执行等功能。

EVM由以太坊客户端提供。

Geth是一个典型的用于开发以太坊的客户端,是基于Go语言开发的。Geth提供了一个交互式命令控制台,其中包含以太坊的各种功能(API)。Geth的用法将在后面的文章中介绍。这里我们先有个想法。

geth控制台类似于Chrome浏览器开发者中的控制台';的工具,但它运行在终端中。

与Geth相比,Mist是一个以太坊客户端,具有图形化的操作界面。

如何部署

智能合约的部署是指将合约字节码发布到区块链,使用特定的地址来标记合约,这个地址称为合约账户。

以太坊有两类账户:

外部账户

这种账户是由私钥控制的(由人控制),没有上面的文章,是与任何代码挂钩的。

合同帐户

这些帐户由它们的合同代码控制,并且具有与之相关联的代码。

使用UTXO的设计与比特币不同。,以太坊使用了更简单的账户概念。

EVM有两种相同的帐户。

外部账户与合约账户的区别和联系如下:外部账户可以通过创建和使用自己的私钥来签署交易。向另一个外部帐户或合同帐户发送消息。

在两个外部账户之间发送消息是一个价值转移的过程。但是,从外部帐户到合约帐户的消息将激活合约帐户的代码,允许它执行各种操作(例如传输令牌并将它们写入内部存储)挖出一个新令牌,执行一些操作,创建一个新契约等。

只有当外部账户发出指令时,合约账户才会执行相应的操作。

合约部署是将编译好的合约字节码以通过外部账户发送交易的形式部署到以太坊区块链上(实际部署只有在实际矿工阻止后才算成功)。

运行

合同部署后,当调用这个智能合约的方法时,你只需要向这个合约账户发送一个消息(transaction),智能合约的代码就会在消息触发后在EVM执行。

类似云计算。,占用区块链的资源(无论是简单的转让交易还是合同的部署和执行)也需要支付相应的费用(天下没有免费的午餐,对吧!)。

在以太网车间,Gas机制是用来充电的,Gas也可以认为是一个工作量单位。智能合同越复杂(计算步骤的数量和类型、占用的内存等。),完成操作需要的气体就越多。

运行任何一个具体合约所需的气数是固定的,这是由合约的复杂程度决定的。

气价是运行合同的人在提交运行合同的请求时规定的,以此来确定他愿意为此交易支付的费用:气价(以泰国货币计价)*气量。

Gas的目的是限制执行事务所需的工作量。,并支付实现费用。当EVM执行一笔交易时,汽油会按照一定的规则逐渐消耗掉。无论在哪里执行,一旦气体耗尽,就会触发异常。当前调用框架所做的所有状态修改都将被回滚,如果执行结束,还有Gas剩余。,这些气体将返回到发送帐户。

没有这个限制,就会有人写一个不可阻挡的契约来封锁网络。

所以事实上,我们需要一个以太平衡的外部账户。,发起一个事务(普通事务或者一个契约的部署和操作),在操作的时候,矿工收取相应的工作量费用。

以太坊网

有些焦虑的同学想问,没有以太坊怎么开发智能合约?您可以选择以下方法:

选择以太坊官网测试网Testnet

在测试网中,我们可以很容易的得到免费的以太坊,但是缺点是初始化节点的时间比较长。

使用私有链

创建我们自己的以太网私有测试网络,也称为私有链,可以用作开发、调试和测试智能合约的测试环境。

通过上面提到的Geth,你可以很容易地创建自己的测试网络。想挖多少就挖多少,而且还消除了同步正式网络的整个区块链数据的需要。

使用开发者网(模式)

与私链相比,在开发者网(模式)下,会自动分配一个余额较大的开发者账户给我们使用。

使用仿真环境

另一种创建测试网络的方法是使用testrpc,这是一种在本地使用内存仿真的以太网环境,开发和调试更加方便快捷。。而testrpc可以帮助我们在启动时创建10个有资金的测试账户。

在契约开发期间,通过testrpc中的测试后,可以部署到Geth节点。

更新:testrpc现在已经合并到Truffle开发框架中,它的名字现在是GanacheCLI。Dapp:分散应用

以太坊社区将基于智能合约的应用称为去中心化应用。如果我们把区块链理解为一个牢不可破的数据库,把智能合约理解为一个处理数据库的程序,就很容易理解Dapp了。一个Dapp不仅有智能合约,还需要一个友好的用户界面和其他东西。

Truffle

Truffle是一个Dapp开发框架,可以帮助我们处理很多琐碎的事情。,这样我们就可以快速开始编写代码-编译-部署-测试-打包DApp的过程。

摘要

Let';现在让我们总结一下。以太坊是一个平台,它允许我们方便地使用区块链技术来开发去中心化的应用程序。在这种应用中,,使用Solidity编写一个与区块链交互的智能契约。合同写好后,我们需要在邰方客户端用一个余额账户来部署和运行合同(Truffleframework可以帮助我们更好地做这些事情)。为了开发的方便我们可以使用Geth或testrpc来构建一个测试网络。

注:本文为方便大家';s的理解,有些概念是比较的,有些严格来说并不准确,但我也认为对于初学者来说,没有必要细致准确地掌握每一个概念。学习是一个循序渐进的过程。很多时候,我们会发现,过了一段时间,我们会对同一件事有不同的理解。

感谢您阅读这篇以太坊开发指南的详细介绍。如果你不';t对以太坊开发者社区了解不够,想了解更多关于以太坊的开发指南,可以在本站首页搜索你想知道的!

相关内容

以太坊开发入门指南(以太坊开发者社区)文档下载.: PDF DOC TXT

猜你喜欢