首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >以太坊智能合约开发第二篇:理解以太坊相关概念

以太坊智能合约开发第二篇:理解以太坊相关概念

作者头像
Marser
发布于 2018-06-25 09:32:52
发布于 2018-06-25 09:32:52
1.3K00
代码可运行
举报
文章被收录于专栏:智能合约智能合约
运行总次数:0
代码可运行

很多人都说比特币是区块链1.0,以太坊是区块链2.0。在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太坊的整个生态。目前,以太坊是区块链世界里生态建设最好的底层公链。本篇将以通俗易懂的方式介绍以太坊开发中涉及到的相关概念,带领大家轻松入门。

以太坊

以太坊(Ethereum)是一个建立在区块链技术之上的、图灵完备的去中心化应用平台。它允许任何人在平台中通过智能合约技术开发、部署和使用去中心化应用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>  有没有感到和ios、Android平台有点类似?

在以太坊未问世之前,写区块链的应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法、共识机制、网络协议等等。2013、2014年那时候的很多山寨币就是这样,改改比特币代码就造出来一个新币。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>  目前围绕以太坊已经形成了一个较为完善的开发生态圈:社区支持、开发框架、开发工具等等。

智能合约

网络上关于智能合约的解释都很晦涩。我们可以简单的理解为在区块链上,由事件驱动、以代码形式存在、可执行的特殊交易合同。它是代码、数据的集合。

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

目前除数字货币之外,真正落地的应用还不多。和移动互联网刚兴起之时各种各样、各行各业的APP推陈出新一样,去中心化应用的市场在初期肯定有一个红利期。对此有兴趣的开发者,可抓住机会。

Solidity

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

EVM

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> EVM是由以太坊节点提供。每个以太坊节点中都包含EVM
> Solidity之于EVM,就像Java跟JVM的关系一样
> 以太坊虚拟机是一个隔离的环境,在EVM内部运行的代码不能跟外部有联系

EVM运行在以太坊节点上,当我们把合约部署到以太坊区块链网络上之后,合约就可以在以太坊网络中运行了。

合约编译

以太坊虚拟机上运行的是合约的字节码。这就需要我们在部署之前先对合约进行编译。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> 推荐使用solc编译器。

以太坊客户端(节点)

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

Geth是典型的以太坊客户端。Geth这个名字是Go Ethereum开源项目的简称。它是基于Go语言开发且实现了Ethereum协议的客户端软件。 Geth提供了一个交互式命令控制台,通过命令来操作以太坊的各种功能(API)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> Geth是全节点客户端,会一直同步以太坊区块链上的所有数据。目前数据量已经几十G,不久就会上百G> 在开发过程中,我们推荐使用以太坊区块链的私有链Ganache,免去同步以太坊全部区块数据的麻烦。在后续的文章中会介绍Ganache。

账户

以太坊中账户分为两类:

  • 外部账户(EOA) 该类账户被公钥-私钥对控制(用户),没有关联任何代码 外部账户的地址由公钥衍生而来
  • 合约账户(CA) 该类账户为智能合约分配的账户,被合约代码控制且有代码与之关联 智能合约的部署会把合约字节码发布到区块链上,并使用一个特定的地址来标示这个合约,这个地址就是为合约账户

合约账户存储了代码,外部账户则没有。除了这点之外,这两类账户对于EVM来说都是一样的。

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

外部账户与外部账户之间交易仅仅是转账。但是外部账户到合约账户,是可以激活各种操作的。

运行

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

Gas

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

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

gas可以认为是一个工作量单位,智能合约越复杂(计算步骤的数量、类型、占用的内存等等),所需的gas就越多。gas的最小单位是wei,1eth=10^18wei=10^9gwei

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

gas = GasLimit * GasPrice

去中心化应用(Dapp)

Dapp全称是Decentralized App。以太坊社区把基于智能合约的应用称为去中心化的应用。如果我们把区块链理解为一个不可篡改的分布式账本数据库,智能合约理解为和数据库打交道的程序,那就很容易理解Dapp了。一个Dapp不单单有智能合约,还需要有一个友好的用户界面和其他的业务程序。

Truffle

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

总结

我们现在来总结一下。以太坊是平台,它让我们方便的使用区块链技术开发去中心化的应用。应用中,我们可以使用Solidity来编写和区块链交互的智能合约,合约编写好后之后,我们通过一个有余额的账户将合约部署到以太坊节点上,并运行合约(使用Truffle框架可以更好的帮助我们做这些事情)。为了开发方便,我们可以用以太坊私有链Ganache来搭建一个测试网络。

注:本文中为了方便大家理解,对一些概念做了类比,有些严格来说不是准确。不过我认为对于初学者,也没有必要把每一个概念掌握的很细致和准确。学习是一个逐步深入的过程,很多时候我们会发现,过一段后,我们会对同一个东西有不一样的理解。

智能合约开发QQ群:753778670


目前有几套区块链实践的视频课程(视频+源码),需要的可加我微信(kuangwenjie)私信我(付费):

  • 『区块链』从零构建以太坊(Ethereum)智能合约到项目实战
  • 基于Ethereum & IPFS的去中心化Ebay区块链项目开发实战
  • HyperLedger(超级账本)Fabric

「真诚赞赏,手留余香」

代码语言:txt
AI代码解释
复制
                                          标签:                                                                                      [                                         智能合约                                    ](https://www.marser.cn/tag/119.html)                                                                                                                  , [                                         以太坊                                    ](https://www.marser.cn/tag/120.html)                                                                                                                  , [                                         以太坊智能合约                                    ](https://www.marser.cn/tag/121.html)                                                                                                                  , [                                         区块链                                    ](https://www.marser.cn/tag/124.html)   
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:201804-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
是时候系统学习一下Vue3在Web前端中的用法了!
大家都知道互联网的技术框架更新迭代得非常快,自己如果不及时跟上就容易落伍,尤其是当一门技术或者一个框架在行业内火起来之后,这时候如果还不去学习它就容易让自己被时代所淘汰。Vue3发布都一年多了,最近接手公司项目的前端工程里就开始全面使用Vue3了。笔者也了解到,自从vue3在2020年发布之后,由于Vue3相比Vue2具有很多优势,因此国内很多互联网公司在构建前端项目时都已经开始转向使用Vue3。因为项目需要而去学总显得有些被动,毕竟现学现用多少会在一定程度上耽误自己的工作进展。而平时利用周末时间主动学习掌握的东西等到工作中需要时,直接上手即可,省去了从零开始学习的成本,当然在工作项目中用起来也是对自己学习成果的检验和强化!
用户3587585
2022/03/11
2.2K0
是时候系统学习一下Vue3在Web前端中的用法了!
Vue3 学习笔记 —— (一)深入理解组合式 API
Vue3 是向下兼容 Vue2 API 的,但是 Vue3 中提供了一种全新的 Composition API
Gorit
2021/12/08
7960
Vue3 学习笔记 —— (一)深入理解组合式 API
VUE3.0和VUE2.0语法上的不同
前言:本篇文章只做VUE3.0和VUE2.0语法上的不同分析,不做性能和源码架构等的分析。
javascript艺术
2022/06/08
1.6K0
VUE3.0和VUE2.0语法上的不同
Vue3.0 不畏惧祖传代码的 Composition API
昨晚写这篇文章的时候,隔壁在聚餐,几位女生欢聚一堂,整个楼层充满了欢声笑语的味道,就好像早上刷牙刷一半就跑去吃了个鸡蛋。
用户1890129
2020/12/16
5820
Vue3 初探
3.更友好 提出 composition Api,无论代码的编写还是查看都更加清晰方便
epoos
2022/06/06
8390
vue3-Composition-API实操
我们都知道composition api是可以和options api一起使用、友好相处的,比如下面的示例:
刘嘿哈
2022/10/25
4890
Vue3 Composition API 之 setup 函数
在说 Vue3 之前,我们先看看 Vue2 项目中是如何编写逻辑代码的, 新建一个组件
青年码农
2022/12/13
4950
Vue3 Composition API 之 setup 函数
Vue3.0 新特性全面探索 - 基于 Composition Api 快速构建实战项目
建议配合 Visual Studio Code 和 Vue 3 Snippets 代码插件食用Ψ( ̄∀ ̄)Ψ。
wscats
2020/06/06
1.5K0
vue3.0新特性
在 vue3 的 script 中不再使用 data 和 methods ,而是使用 setup() 方法
青梅煮码
2023/02/18
3950
Vue3.0 新特性以及使用变更总结(实际工作用到的)
Vue3.0 在去年9月正式发布了,也有许多小伙伴都热情的拥抱Vue3.0。去年年底我们新项目使用Vue3.0来开发,这篇文章就是在使用后的一个总结, 包含Vue3新特性的使用以及一些用法上的变更。
@超人
2021/03/23
2.7K0
Vue3.0 新特性以及使用变更总结(实际工作用到的)
@vue/composition-api速成课(通俗易懂版)
Composition API 将是 Vue 3 的核心功能,它具有许多更改和性能改进。我们也可以在 Vue 2 中通过 npm 插件@vue/composition-api 使用它。本人重点将带你了解:
前端迷
2020/09/30
2.9K0
Vue 3.x全面升级指南:Composition API深度探索
Vue 3.x 的全面升级引入了 Composition API,这是对 Vue 2.x 传统 Options API 的一个重大改进,它提供了更加灵活和模块化的代码组织方式.
天涯学馆
2024/05/16
3130
10 个超强 Vue3 实战指南,由此突破新特性!
本篇介绍 10 点如何从实战中学习突破 Vue JS 3 的新特性,细细看完,一定会有收获~
掘金安东尼
2022/09/22
1.2K0
10 个超强 Vue3 实战指南,由此突破新特性!
vue3之Composition API详解
没有Composition API之前vue相关业务的代码需要配置到option的特定的区域,中小型项目是没有问题的,但是在大型项目中会导致后期的维护性比较复杂,同时代码可复用性不高。Vue3.x中的composition-api就是为了解决这个问题而生的
前端进阶之旅
2021/10/16
2.2K0
vue3之Composition API详解
5 种在 Vue 3 中定义组件的方法
英文 | https://fadamakis.com/the-5-ways-to-define-a-component-in-vue-3-aeb01ac6f39f
winty
2023/08/23
7140
5 种在 Vue 3 中定义组件的方法
Taro 支持使用 Vue3 开发小程序
9 月 19 日凌晨,Vue3 在经过多个开发版本的迭代后,终于迎来了它的正式版本,"One Piece" 的代号也昭示了其开拓伟大航路的野心。
一只图雀
2020/11/03
2.7K0
Taro 支持使用 Vue3 开发小程序
vue3简易入门剖析
,发音同 “veet”)是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成:
张哥编程
2024/12/13
5690
Vue 3.0 有哪些新特性值得我们提前了解
Vue.js 作者兼核心开发者尤雨溪宣布 Vue 3.0 进入 Beta 阶段。
Vam的金豆之路
2021/11/30
7210
Vue 3.0 有哪些新特性值得我们提前了解
一文让你30分钟快速掌握Vue3
https://juejin.im/post/6887359442354962445
ConardLi
2020/11/03
1.5K0
一文让你30分钟快速掌握Vue3
让你30分钟快速掌握vue 3
经过了漫长的迭代,Vue 3.0终于在上2020-09-18发布了,带了翻天覆地的变化,使用了Typescript 进行了大规模的重构,带来了Composition API RFC版本,类似React Hook 一样的写Vue,可以自定义自己的hook ,让使用者更加的灵活,接下来总结一下vue 3.0 带来的部分新特性。
前端开发博客
2020/11/04
2.5K0
相关推荐
是时候系统学习一下Vue3在Web前端中的用法了!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档