主页 > imtoken钱包地址 > 一起学习:以太坊智能合约开发

一起学习:以太坊智能合约开发

imtoken钱包地址 2023-07-24 05:11:46

2009年,比特币开创了去中心化加密货币的先河,同时诞生了划时代的区块链技术。 分布式数据存储、点对点传输、共识机制、加密算法等计算机技术形成了一种新的应用模式。 然而,比特币并不完美。 它只能作为一种支付手段,不可能围绕它构建应用生态。 因此,业界称比特币为区块链1.0。

2013年,俄罗斯90后Vitalik Buterin提出基于比特币区块链技术的以太坊平台。 一个开源、图灵完备、支持智能合约的下一代加密货币和去中心化应用程序平台。 经过近五年的发展,以太坊已经成为业界公认的最好的公链之一,围绕它的生态建设初具规模。 我们称之为区块链 2.0。

本课程基于以太坊平台,快速带领大家学习以太坊智能合约的开发,掌握去中心化应用开发、编译、部署的完整流程。 在开始之前,本文将通俗易懂地介绍以太坊开发中涉及的相关概念,引导您轻松上手。

以太坊

以太坊是一个基于区块链技术的图灵完备的去中心化应用平台。 它允许任何人通过平台中的智能合约技术开发、部署和使用去中心化应用程序。

是不是感觉有点类似于iOS和Android平台?

在区块链1.0时代,如果我们需要编写区块链应用,需要从Github上下载一份比特币源代码,然后修改网络协议、共识机制、加密算法等底层代码,然后发布到网络。 2013年和2014年的很多山寨币就是这样产生的。 改变比特币的代码,甚至调整它的一些参数,创造了一个新的应用程序和一种新的货币。

以太坊平台封装了区块链底层技术,允许区块链应用开发者直接基于以太坊平台进行开发。 开发者只需要关注应用本身而不是底层技术的具体实现。 从而大大降低了难度。 我们可以简单的理解为以太坊平台提供了很多模块供用户构建应用。 如果把构建应用程序比作盖房子,那么以太坊提供地基、墙壁、屋顶和地板等模块。 用户只需像搭积木一样搭建房子,房子的布局、装修等都可以随意拼装。 因此,可以在以太坊平台上以较低的成本快速构建去中心化应用程序。

目前围绕以太坊已经形成了一个比较完整的开发生态系统:社区支持、开发框架、开发工具等。

运行以太坊节点有收益吗_以太坊收益暴跌_以太坊矿机收益计算器

以太坊客户端(节点)

以太坊客户端是一个以太坊节点。 提供账户管理、数字资产管理、挖矿、转账、智能合约部署和执行等功能。 对于我们开发者来说,它就是一个开发者工具。

需要注意的是,区块链网络中没有中央服务器。 所有的以太坊节点组成了以太坊整个区块链网络,每个节点时刻同步区块数据。

enter image description here

如上图(图片来自网络),左边是去中心化网络,右边是中心化网络。 举个不恰当的例子来加深理解。 在浏览器-服务器架构中,服务器是中心化的,所有的动态数据都存储在服务器端。 如果服务器出现故障,所有浏览器都无法正常访问应用程序。 在区块链的去中心化网络中,所有节点都会保存相同的数据,任何一个节点故障都不会影响整个区块链数据的写入和读取。

Geth 是一个典型的以太坊客户端。 Geth 这个名字是 Go Ethereum Open Source Project 的缩写。 是一款基于Go语言开发,实现以太坊协议的客户端软件。

Geth 提供了一个交互式命令控制台,通过命令操作以太坊的各种功能(API)。

Geth 将始终同步以太坊区块链上的所有数据。 目前在快同步模式下,数据量已经达到近70G; 在全同步模式下,达到了数百个G。

在开发过程中,我们推荐使用以太坊区块链的私有链Ganache(只有几百M),避免同步以太坊所有区块数据的麻烦。 Ganache将在后续文章中介绍。

以太坊矿机收益计算器_以太坊收益暴跌_运行以太坊节点有收益吗

帐户

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

合约账户存储代码,外部账户不存储代码。 除此之外,两种类型的账户对于以太坊虚拟机 (EVM) 都是相同的。

账户

如上图所示,外部账户与外部账户之间的交易只是转账。 但是,可以从外部账户到合约账户激活各种操作。

智能合约

网上对智能合约的解释很晦涩。 我们可以简单地将其理解为一种特殊的交易合约,它是事件驱动的,以代码的形式存在,可以在区块链上执行。 它是代码和数据的集合,是以太坊的核心。

智能合约非常适用于对信任、安全、持久性要求高的应用场景,例如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权管理、物联网、点对点交易等场景。 同时,智能合约在其他行业的应用场景也值得期待。

目前,除了数字货币,真正的应用并不多,业界各方都在积极探索可以落地的使用场景和应用。 就像移动互联网刚刚兴起的时候,各行各业的应用如雨后春笋般涌现,去中心化的应用市场在前期肯定有红利期。 每个人都可以抓住这一波机会。

以太坊矿机收益计算器_运行以太坊节点有收益吗_以太坊收益暴跌

坚固性

Solidity 是一种类似于 JavaScript 的编程语言,其文件扩展名以 .sol 结尾。 用于智能合约的开发,可以编译成以太坊虚拟机(EVM)字节码部署在以太坊底层区块链网络上。

以太坊虚拟机 (EVM)

EVM全称Ethereum Virtual Machine,全称Ethereum Virtual Machine。 它是以太坊智能合约的运行环境。

EVM 在以太坊节点上运行。 当我们将合约部署到以太坊区块链网络时,合约就可以在以太坊网络上运行。

合同编制

以太坊虚拟机上运行的是合约的字节码,类似于汇编语言。 这就需要我们在部署前编译合约并转换成字节码。

推荐使用 solc 编译器。

合同部署

以太坊收益暴跌_运行以太坊节点有收益吗_以太坊矿机收益计算器

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

承包经营

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

气体

Gas 是矿工的费用。 在以太坊上执行每笔交易(由矿工打包)都会收取一定数量的 Gas。 Gas 的目的是在支付执行费用的同时限制执行交易所需的工作量。 当 EVM 执行交易时,Gas 会按照一定的规则逐渐消耗。 无论在哪里执行,一旦Gas耗尽运行以太坊节点有收益吗,都会触发out of gas异常。 当前调用框架所做的所有状态修改都将回滚。 如果执行结束还有gas剩余,gas会返还给发送账户。 因此,我们需要一个带有以太币余额的外部账户来为发起的交易支付gas。

如果没有这个限制,将会有无法停止的合约(例如:无限循环)阻塞以太坊区块链网络。

气体可以被视为一个工作单元。 智能合约越复杂(计算步数、类型、占用内存等)运行以太坊节点有收益吗,所需的 Gas 就越多。 Gas的最小单位是wei:

1eth=$10^{18}$wei=$10^{9}$gwei

GasLimit:愿意支付矿工费的上限。 GasPrice:矿工费单价。

运行以太坊节点有收益吗_以太坊矿机收益计算器_以太坊收益暴跌

gas = GasLimit * Gas​​Price

gas

去中心化应用(DApp)

DApp的全称是Decentralized App。 以太坊社区将基于智能合约的应用称为去中心化应用。 如果我们将区块链理解为一个不可变的分布式账本数据库,将智能合约理解为一个与数据库打交道的程序,那么理解DApp就很容易了。 一个DApp不仅要有智能合约,还需要有友好的用户界面和其他业务程序。 在接下来的课程中,我们将实际开发一个简单的DApp。

松露

Truffle 是目前最流行的 DApp 开发框架。 它可以帮助我们处理很多繁琐的事情,让我们更加专注于智能合约的开发,快速开始编码->编译->部署->测试->打包DApp的过程。

总结

最后简单总结一下。 以太坊是一个让我们可以轻松使用区块链技术开发去中心化应用程序的平台。 在应用中,我们可以使用Solidity编写一个与区块链交互的智能合约。 合约写好后,我们通过一个有余额的外部账户将合约部署到以太坊节点,并运行合约(使用Truffle框架可以更好的帮我们做这些事情)。

对于本文中以太坊的概念,初学者只需对其有一个基本的了解即可,无需对每个概念都进行详细准确的掌握。 学习是一个循序渐进的过程。 很多时候,我们会发现,经过一段时间后,我们对同一个概念会有不同的理解和认知。