主页 > 苹果下载imtoken教程 > 以太坊主题(一):以太坊开发入门指南

以太坊主题(一):以太坊开发入门指南

苹果下载imtoken教程 2023-01-18 15:04:16

以太坊专题(一):以太坊开发入门指南

很多同学一直渴望加入区块链开发团队,但又觉得无从下手。本文将基于以太坊平台,以通俗的方式介绍以太坊开发中涉及的晦涩概念,轻松引导您入门。

什么是以太坊

以太坊(Ethereum)是一个建立在区块链技术之上的去中心化应用平台。它允许任何人在平台上构建和使用在区块链技术上运行的去中心化应用程序。

对于不明白这句话的同学,可以理解为以太坊是区块链中的安卓。它是一个开发平台,允许我们编写基于区块链技术的应用程序,就像 Android 框架一样。

在没有以太坊之前,写一个区块链应用程序是这样的:复制一份比特币代码,然后将加密算法、共识机制、网络协议等底层代码改成新币)。

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

目前围绕以太坊已经形成了较为完善的开发生态:在社区的支持下,有很多开发框架和工具可供选择。智能合约 什么是智能合约

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

智能合约可以理解为用代码编写的可以在区块链上自动执行(消息驱动)的合约(特殊交易)。

智能合约英文为Smart Contract,与人工智能(AI:Artificial Intelligence)的智能无关。Nick Szabo 于 1995 年首次提出智能合约的概念,其概念很简单,就是将法律规定写入可执行代码。当时没有区块链,但智能合约是区块链的最佳搭档。我们知道,合约要求一式两份,三四份,不能被一方控制,这就是去中心化。

在Bitcoin Script中,我们提到比特币交易是可以编程的,但是Bitcoin Script有很多限制,可以编写的程序也有限。

以太坊怎么玩_以太坊杠杆怎么玩_以太坊新手怎么玩

另一方面,以太坊更完整(在计算机科学术语中,它被称为“图灵完备”),允许我们编写几乎可以像任何高级语言一样做任何事情的程序(智能合约)。

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

目前,除了数字货币之外,真正落地的应用并不多(就像移动平台刚刚起步一样)。相信在1到3年内,各种杀手将逐渐出现。

编程语言:Solidity

官方推荐的智能合约编程语言是 Solidity,文件扩展名以 .sol 结尾。

Solidity 语言与 JavaScript 非常相似,用于开发合约并将其编译为以太坊虚拟机字节码。

还有毒蛇、蛇、LLL 和竹子。建议您使用 Solidity。更新:不再正式推荐 Serpent。建议 Serpent 用户切换到 Viper,它们都是类似 Python 的语言。

Browser-Solidity是一款浏览器的Solidity IDE,可以点进去查看以太坊怎么玩

运行环境:EVM

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

Solidity 之于 EVM 就像它之于 JVM 一样,所以每个人都很容易理解。以太坊虚拟机是一个隔离环境,无法从外部访问 EVM 内运行的代码。

以太坊新手怎么玩_以太坊怎么玩_以太坊杠杆怎么玩

EVM 在以太坊节点上运行。我们在以太坊网络上部署合约后,合约就可以在以太坊网络上运行。

合同汇编

合约的字节码形式在以太坊虚拟机上运行。我们需要在部署之前编译合约。您可以选择 Browser-Solidity Web IDE 或 solc 编译器。

合约的部署

在以太坊上开发应用程序时,经常使用以太坊客户端(钱包)。通常我们在开发中,一般不会接触到客户端或者钱包的概念,它是什么?

以太坊客户端(钱包)

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

EVM 由以太坊客户端提供

Geth 是以太坊开发中使用的典型客户端,基于 Go 语言开发。Geth 提供了一个交互式命令控制台,通过该控制台可以包含以太坊的各种功能(API)。我们稍后会在一篇文章中介绍Geth的使用,这里我们先有个概念。

Geth 控制台类似于 Chrome 浏览器开发者工具中的控制台以太坊怎么玩,但 Geth 控制台运行在终端中。与 Geth 相比,Mist 是一个带有图形界面的以太坊客户端。如何部署

以太坊有两种类型的账户:

以太坊杠杆怎么玩_以太坊怎么玩_以太坊新手怎么玩

外部账户 此类账户由私钥控制(由人控制),不与任何代码关联。合约账户 这些类型的账户由它们的合约代码控制,并有与之关联的代码。与比特币的 UTXO 设计不同,以太坊使用更简单的账户概念。这两种类型的账户对于 EVM 是相同的。

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

在两个外部账户之间发送消息是价值转移的过程。但是从外部账户到合约账户的消息会激活合约账户的代码,允许其执行各种操作(例如转移代币、写入内部存储、挖掘新代币、执行某些操作、创建新合约、等等等等)。

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

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

合约部署完成后,当需要调用智能合约的方法时,只需向合约账户发送消息(交易)即可。消息触发后,智能合约的代码将在 EVM 中执行。

气体

与云计算类似,占用区块链的资源(无论是简单的转账交易,还是合约的部署和执行)也需要相应的费用(世界上没有免费的午餐,对吧!)。

Gas 机制用于在以太坊上进行计费。气体也可以被认为是一个工作单位。智能合约越复杂(计算步骤的数量和类型、占用的内存等),完成操作所需的 Gas 就越多。

运行任何特定合约的合约所需的 Gas 数量是固定的,并由合约的复杂性决定。

以太坊新手怎么玩_以太坊怎么玩_以太坊杠杆怎么玩

Gas 价格由运行合约的人在提交运行合约的请求时指定,以确定他愿意为此交易支付的费用:Gas 价格(以 Ether 为单位)* Gas​​ 数量。

Gas 的目的是限制执行交易所需的工作量,同时为执行付费。当 EVM 执行交易时,gas 会按照特定的规则逐渐消耗,无论在哪里执行,一旦 gas 用完,就会触发异常。在当前调用帧中所做的所有状态修改都将被回滚,如果执行结束时仍有gas剩余,则将gas返回到发送账户。

如果没有这个限制,有人会编写一个无法停止的合约(例如:无限循环)来阻塞网络。

所以其实(把前面的内容串起来),我们需要一个有以太币余额的外部账户来发起交易(普通交易或者部署,运行合约),运行时矿工收取相应的工作量费用。

以太坊网络

有心急的同学想问,没有以太如何开发智能合约?您可以从以下方法中进行选择:

选择以太坊官网测试网Testnet

在测试网络中,我们可以很容易地获得免费的以太币,缺点是初始化节点需要很长时间。

使用私有链

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

通过上面提到的Geth,很容易创建自己的测试网络,想挖多少以太币就挖多少,不需要同步官网的整个区块链数据。

以太坊杠杆怎么玩_以太坊新手怎么玩_以太坊怎么玩

使用开发者网络(模式)

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

使用模拟环境

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

开发合约时,在testrpc中测试通过后即可部署到Geth节点。

更新:testrpc 现在已被合并到 Truffle 开发框架中,现在称为 Ganache CLI。

Dapp:去中心化应用

以太坊社区将基于智能合约的应用称为去中心化应用。如果我们将区块链理解为不可变的数据库,将智能合约理解为处理数据库的程序,那么就很容易理解 Dapps。一个 Dapp 不仅要有智能合约,比如它还需要有一个友好的用户界面等等。

松露

Truffle 是一个 Dapp 开发框架。它可以帮助我们处理很多无关紧要的小事,让我们可以快速开始编写代码-编译-部署-测试-打包DApp的过程。

总结

现在让我们总结一下,以太坊是一个可以让我们轻松使用区块链技术开发去中心化应用程序的平台。在这个应用程序中,Solidity 用于编写与区块链交互的智能合约。在合约写好之后,我们需要使用以太坊客户端来部署和运行合约,并使用一个有余额的账户(使用 Truffle 框架可以帮助我们更好地完成这些事情)。为了开发方便,我们可以使用 Geth 或者 testrpc 搭建测试网络。