以太坊是什么 – 以太坊开发入门指南

以太坊是什么 – 以太坊开发入门指南

电报联系方式

以太坊是什么

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

在没有以太坊之前,开发区块链应用需要从头开始构建整个区块链系统,包括加密算法、共识机制、网络协议等等,这需要极大的技术复杂性和资源投入。很多山寨币采用了这种方式,即在比特币的基础上进行修改,以创建一个新的区块链。

以太坊是什么 - 以太坊开发入门指南

以太坊对底层区块链技术进行了高度封装,为区块链应用开发者提供了一个开发环境,使他们可以专注于开发应用程序的核心逻辑,而无需关心底层技术细节。这个开发环境的核心是智能合约,它们是在以太坊区块链上运行的自动化代码,可以实现各种功能,如数字资产发行、去中心化应用程序(DApps)的构建等等。

智能合约

以太坊网络上运行程序就称之为智能合约, 它和其他的程序一样,也是代码和数据(状态)的集合。智能合约是非常适合应对对信任、安全和数据持久性要求较高的应用场景的工具,这些场景包括数字货币、数字资产、选举投票、保险、金融服务、市场预测、产权管理、物联网、点对点交易等等。

编程语言:Solidity

智能合约现在的主要编程语言是 Solidity 和 Vyper ,Solidity 更为成熟一些,Solidity 合约文件扩展名是 .sol ,虽然是一门新语言,但是但是他和大家常用的现代语言很相似,学期来 以下就是一个简单的计数器智能合约:

pragma solidity >=0.4.22 <0.6.0;
// 用contract 关键字定义一个合约
contract Counter {
uint counter;

function count() public {
counter = counter + 1;
}
}

当你将智能合约中的 “contract” 替换为 “class”,它就变得像其他编程语言中的类一样了。Solidity是一种编译型语言,你需要将其代码编译成以太坊虚拟机字节码,然后才能在以太坊网络上部署。为了帮助你完成这些任务,以太坊提供了一些工具,其中 Remix 就是一个很好的例子。Remix是一个网络集成开发环境,它让你能够编写、编译和部署智能合约,而无需额外安装软件。以下是 Remix IDE 的截图,它显示了工具的用户界面和功能:

以太坊是什么 - 以太坊开发入门指南

Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。

运行环境:EVM

EVM(Ethereum Virtual Machine)以太坊虚拟机 用来执行以太坊上的交易,提供智能合约的运行环境。而EVM运行在以太坊节点上,当我们把合约部署到以太坊网络上之后,合约就可以在以太坊网络中运行了。

合约的编译

以太坊虚拟机(EVM)上运行的是智能合约的字节码形式,这意味着在将合约部署到以太坊网络之前,我们需要将合约源代码编译成可被EVM执行的字节码。为了完成这个编译过程,开发者可以选择使用工具如Remix或solc编译器。

合约的部署

以太坊客户端(钱包)

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

Geth是一种常用于以太坊开发的客户端,它是用Go语言编写的。Geth提供了一个交互式命令控制台,其中包含了各种以太坊功能的命令和API。

如何部署

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

以太坊中有两类账户:

  • 外部账户
    该类账户被私钥控制(由人控制),没有关联任何代码。
  • 合约账户
    该类账户被它们的合约代码控制且有代码与之关联。

和比特币使用UTXO的设计不一样,以太坊使用更为简单的账户概念。
两类账户对于EVM来说是一样的。

外部账户和合约账户在以太坊中有明显的区别和密切的关系。外部账户是由私钥控制的账户,可以用来签署交易并向其他外部账户或合约账户发送消息。这些消息的传递通常伴随着价值的转移。

当外部账户向合约账户发送消息时,这个消息会触发合约账户内部的智能合约代码执行。合约账户不是简单的存储价值的地方,它包含了自定义的智能合约代码,可以根据接收到的消息执行各种操作,例如转移代币、更新内部状态、创建新代币、执行数学运算、创建新的智能合约等等。

重要的是,合约账户的代码只有在外部账户发送消息给它时才会执行。这意味着合约账户不会主动执行任何操作,它们只会响应外部账户的指令。因此,外部账户是与合约账户互动的主体,通过发送消息来请求合约账户执行特定的操作。这种互动和消息传递机制是以太坊智能合约的核心。

合约部署就是将编译好的合约字节码通过外部账号发送交易的形式部署到以太坊区块链上(由实际矿工出块之后,才真正部署成功)。

运行

合约部署之后,当需要调用这个智能合约的方法时只需要向这个合约账户发送消息(交易)即可,通过消息触发后智能合约的代码就会在EVM中执行了。

Gas

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

在以太坊中,每个特定合约执行所需的Gas数量是由合约的复杂性决定的,复杂的合约需要更多的Gas来运行。与此不同,Gas价格是由执行合约的人在发起交易时设定的,用来表示他们愿意为该交易支付的费用,计算方式是Gas价格(以以太币计价)乘以所需的Gas数量。

Gas的主要目的是两方面:一是限制了执行交易所需的工作量,以防止滥用网络资源,保持网络稳定;二是为执行合约提供了一种支付机制,以奖励矿工和保障交易的优先性。

以太坊网络

选择以太坊官网测试网络Testnet

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

使用私有链

要创建自己的以太币私有测试网络,通常被称为私有链,可以使用Geth非常轻松地搭建。这个私有测试网络可以作为一个安全的、独立的测试环境,用于开发、调试和测试智能合约。

使用开发者网络(模式)

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

使用模拟环境

另一种创建测试网络的方式是使用Ganache,它是一个普通的应用程序,可以在本地模拟一个以太坊区块链环境,这对于开发和调试来说非常方便和快捷。Ganache在启动时会自动为你创建10个带有资金的测试账户。

DApp:去中心化的应用程序

以太坊社区将基于智能合约的应用程序称为去中心化应用程序,简称DApp。这种称谓可以更容易理解,如果我们把区块链看作是一个无法篡改的数据库,而把智能合约看作是与这个数据库交互的程序,那么DApp就相当于一个完整的应用程序。DApp不仅包含智能合约,相当于应用的后端逻辑,还需要提供用户友好的前端界面,以便用户与智能合约进行交互。

Truffle

Truffle是一个非常流行 DApp 开发框架,他可以帮我们处理很多小事情,让我们可以迅速开始写代码-编译-部署-测试-打包DApp这个流程。

总结

以太坊是一个平台,让我们可以方便地创建去中心化应用。我们使用一种编程语言叫Solidity来写智能合约,这些合约就像应用程序的规则。当合约写好后,我们需要用以太坊客户端来部署和运行它。Truffle是一个帮助开发的工具。

为了更方便地测试应用,我们可以创建一个专用的测试网络,而不必使用真正的以太坊网络。使用工具像Geth或Ganache,我们可以在本地测试应用,提高开发效率并确保应用质量。

开发联系:DEXDAO

 

 

 

 

© 版权声明

相关文章

暂无评论

暂无评论...