主页 > imtoken钱包地址 > 干货| 以太坊全景介绍及入门学习路径(分享记录)

干货| 以太坊全景介绍及入门学习路径(分享记录)

imtoken钱包地址 2023-09-23 05:08:37

以上是杨震老师分享的视频,时长1h27m21s,建议在wifi环境下观看。

本次分享主要针对以太坊的基本概念介绍,属于入门级,主要目的是帮助大家快速了解和理解以太坊。

自我介绍

以太坊发币全流程_以太坊合约发币_以太坊免费一键发币

大纲

以太坊发币全流程_以太坊免费一键发币_以太坊合约发币

1个

交换东西

以太坊免费一键发币_以太坊合约发币_以太坊发币全流程

谈到加密货币,就无法避免交换。 在我看来,交易所其实是加密货币市场最大的毒瘤。 举两个例子。 3月加密货币市场有两大新闻:3月7日,某交易所声称被黑,多个账户资金损失; 3月底,另一家大型交易所称,部分账户恶意交易了46万比特币,导致市值大幅波动。

对于这两件事的具体情况,我们不做过多的考证和推断,只看他们的公开信息。 两个交易所的公示处理事件的方式相同,都是使用回滚。 了解数据库或计算机技术的人都知道,我们现在的中心化数据库在企业应用中通常都有备份机制。 所谓回滚,其实就是将数据库的数据恢复到之前的某个时间点。 数据备份机制的频率可能是数小时或数天。 交易所等应用的备份频率大多是分钟级的,也就是说每分钟都会有一次备份,就是为了防止这种异常情况的发生。

如果交易所要将交易回滚到3月30日14:59,数据库有14:59的数据快照,可以根据这个快照将数据恢复到14:59(相当于增量变更)。 状态,所有后续交易都将无效。

了解区块链技术的人应该都知道,区块链世界是没有回滚的,技术上是不允许这样做的,而这两个交易所既然可以做回滚,就证明它们不是去中心化的交易所,其存储技术使用的仍然是传统的集中式数据库。

交易所的毒瘤在哪里? 我们可以简单回顾一下交易所的交易流程。 首先,虚拟货币要到交易所充值。 比如我想把比特币兑换成以太币,我需要通过充值的方式把比特币转到交易所,然后在交易所把比特币兑换成以太币,然后提现,把交易所里的以太币转到自己的钱包里。

整个过程需要三个操作:充值、兑换交易、提现。 充值发生在比特币网络上,提款发生在以太坊网络上。 这两笔交易在比特币和以太坊网络上都可以查到,但是在交易所里,不管你有多少笔交易,在公链上是查不到的,也就是说交易所里的交易都存储在它的中心化数据库里。 在这种情况下,交易所作弊就太容易了。 后台调整一个参数就可以做到,没有监督。

即使不考虑交易所欺诈,假设正常操作,一个有经验的交易者可以轻松地用 10 万美元在 24 小时内创造 500 万美元的市值波动。 所以我们在交易所看到的所谓价值,包括虚拟货币的波动,都是和这些金融因素有关的。

2个

以太坊发币全流程_以太坊免费一键发币_以太坊合约发币

剥离区块链

让我们来看看什么是区块链。 区块链作为比特币和以太坊的底层技术,值得我们深入了解和学习。

简单来说,区块链就是一个数据库。 如果你懂技术或者会编程,你应该知道什么是数据库,它是一种存储数据的软件。 当然,区块链和传统数据库肯定是有区别的。

从最简单的概念来看,区块链就是一个分布式的日志数据库。 分布式和日志,这两个修饰符概括了区块链本身最关键的特性。

分布式,简单的说就是数据库分散在各个地方。 我们都知道,每个企业,包括BAT、京东等,都有自己的数据中心,在其他地方也有备份或冗余的数据库,但这些数据库都是由公司控制的,节点不多. 区块链的分布是节点分散在世界各地。 它是一个完全去中心化的存储结构。 如果一个地方的数据库出现问题,不会影响整个数据库的使用,因为其他地方有成千上万的存储。 节点。

流水账,比如我们都去银行取过钱,银行的取款单上有一个编号,也就是说这笔交易会在银行的系统里记录一个编号,相当于每一个账户每个帐户。 每笔资金交易在银行都有相应的唯一编号和标识。 流水是指这个数字是随着时间的推移不断累积的,不会重复,也不会退回。 区块链本身的数据就是这样一个流水线的数据,它也是有编号的,但是在区块链中,若干笔交易被打包成一个区块,并由一个区块编号来标识,这是日志的一个关键特性,它既不是可重复的,也不是不可逆的。

那么区块链流水账和银行流水号有什么区别呢? 这种差异主要体现在技术上。

银行的序列号由程序生成,存储数据的数据库是集中的,允许修改数据。 因此,可以理解为银行通过人为控制保持流水号不变,但技术上是可以改变的。

在区块链中,技术上不允许修改序列号,交易数据只能添加,不能修改和删除。

以太坊合约发币_以太坊发币全流程_以太坊免费一键发币

了解了区块链的本质之后,我们再来看上面两张图。 图中的外设都是终端用户。 这两个数字包含了三层含义:

3个

以太坊

了解区块链之后再看以太坊就很容易了。 我可以很简单的告诉你,以太坊就是区块链加上以太坊虚拟机。 以太坊虚拟机相当于一个虚拟计算机,一个虚拟代码执行机制,或者一个虚拟环境,有自己定制的机器代码,可以在基于区块链的存储上运行一些可编程的业务逻辑。 以太坊通常也被称为智能合约平台或世界计算机。

以太坊免费一键发币_以太坊发币全流程_以太坊合约发币

上图中的人就是以太坊的创始人V神,被认为是继扎克伯格之后的又一位天才。 V神1994年出生于俄罗斯,6岁随父母移民加拿大,拥有双重国籍。 他的父亲是一名计算机工程师。 V神8岁开始学习编程,10岁写出第一款单机版游戏,类似红白机上看到的小蜜蜂射击游戏,10岁就迷上了魔兽世界of 13. 在他 16 岁(2010 年)时,暴雪发布了一个补丁,移除了术士的标志性技能——生命虹吸。 在社区多次投诉无果后,他极力反对并愤怒地删除游戏,转而学习其他东西。 从这个角度来说,我们应该感谢暴雪。 这次补丁事件间接造就了今天的V神。 通过这件事,他也意识到像暴雪这样的一些大公司的中心化特点带来的弊端。 这个决定不是通过球员投票做出的。

之后的第二年,V神从父亲那里认识并爱上了比特币,然后开始了自己的比特币写作,并在大约三年的时间里成为了非常有名的比特币作家。 后来,V神进入了滑铁卢大学学习。 2013年,他参加了比特币会议。 他发现现在是比特币发展的绝佳机会,于是毅然从滑铁卢大学退学,用半年的时间在欧洲游历,结下了很多共同的兴趣。 2013年底完成以太坊愿景并撰写以太坊白皮书的人。一开始这份白皮书只是在一小群朋友中流传,大家一起做后续研究。 直到2014年1月,Vitalik在北美比特币会议上正式公布了以太坊白皮书,奠定了以太坊的正式成立。 .

以太坊合约发币_以太坊免费一键发币_以太坊发币全流程

这是本次分享的第一个彩蛋。 这个彩蛋是关于V神和他早期合作者Gavin Wood的。 Gavin Wood是以太坊黄皮书的作者,这是一本技术手册,对以太坊虚拟机进行了详细的技术描述,包括具体的算法、实现方法、数据结构等。据说以太坊黄皮书刚出来的时候出来,全世界不到100人能看懂。 如果你想学习以太坊技术,可以看看这篇文档。

Gavin Wood 在以太坊早期做出了所有关键的技术决策,所以以太坊的 Vitalik 和 Gavin Wood 相当于苹果早期的 Jobs 和 Wozniak,一个专注于产品规划,一个专注于技术研究,产品实现。 加文伍德本人非常低调。 当然,他的知名度无法与V神相提并论,但在以太坊早期,他是不可或缺的人物。

2016 年,Gavin Wood 离开了以太坊社区。 Gavin 走后,做了一个知名的以太坊客户端:Parity。 Parity 是用 Rust 语言编写的,是目前最稳定、最强大的客户端。 该客户端是目前唯一支持企业级应用和功能的以太坊客户端。

2017年年中,他创立了一个被认为是区块链未来的新项目Polkadot。 我认为这样的项目可以称为区块链3.0。 这个项目本身的推动也是web3。 他要解决的是跨链的问题。 他提供底层集成服务。 它具有多链和链间通信的两个关键特征。 它还提供所谓的桥接功能来连接现有块。 连锁网络。 现在以太坊和比特币网络是独立的,中间没有办法沟通。 只能通过其他第三方协议进行通信。 Polkadot 的目标是使用新的底层架构从软件协议层面重塑互联网。

4个

以太坊的基本概念

以太坊合约发币_以太坊发币全流程_以太坊免费一键发币

帐户

首先是账户,这是以太坊和比特币的区别。 比特币不存在账户的概念。 它只有一个地址。 余额是通过扫描历史区块中与该地址相关的所有交易的价值转移来确定的。 而以太坊使用账户来保存这些数据。

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

事务和消息(Transaction and Message)

以太坊中账户之间的所有交互都是通过交易或消息实现的。 事务和消息在技术上是相同的。 唯一不同的是,消息是由合约账户生成的,而交易一般是由外部账户生成的。

气体

以太坊中另一个非常重要的概念是气体。 英语中的gas指的是汽油。 从这个翻译来看,就是说汽车要想开走,就需要动力——汽油,也就是能量。 对于虚拟计算机来说,gas就相当于我执行某些操作需要消耗的电,而电需要用钱买,而以太坊消耗的电需要用以太坊购买。 电也是有价格的,以太坊对应的gas价格就是gasprice。 每笔交易(消息)消耗多少gas,可以根据其具体的数据或代码进行计算,并根据当时的gas价格换算成以太币,作为执行交易的费用。

理解这些基本概念对于我们理解其他高级内容非常重要。 与比特币这样的价值网络相比,以太坊网络的设计初衷还是有区别的。 以太坊除了价值等价物的属性外,还有一个属性为在以太坊虚拟机上运行智能合约提供成本。 机制。

从网络的设计或合作方式的角度来看,设计以太坊有三个目的:一是以此来提供成本消耗; 另一种是替换一些等价物; 三是作为激励矿工的激励机制。

说到矿机,很多人都听说过挖矿,以太坊也不例外。 在以太坊中获得以太币的唯一方法是通过所谓的“挖矿”。 我的人是矿工。 许多矿工聚集在一起挖矿以太坊发币全流程,形成一个矿池。 矿工用来挖矿的机器称为矿机。 这些是一些最基本的概念,就不展开了。

以太坊免费一键发币_以太坊发币全流程_以太坊合约发币

5个

从用例看智能合约

在说具体例子之前,我们先送出第二个彩蛋。 第二个彩蛋是关于智能合约的,什么是智能合约,智能合约对我们这些做技术或者写代码的人有什么潜在价值。

我们先来看看什么是合约。 比如我要租房子,就需要和房东签租房合同。 这个协议一般包括:预留一年或者多长时间,租金是按月还是按季交,押金是多少等等。符号。 那么这就是合约的第一个属性:唯一性,它是为特定的人,也就是合约的当事人定制的。 合同还有一个特点:它有时间限制。 比如我跟房东签的合同是一年,一年后自动失效。

智能合约与现实中的合约非常相似,也具有这些特点。 首先,智能合约是为特定的参与者定制的,一般来说是两方以上; 其次,智能合约通常应该具有时间属性。 智能合约相当于一个自动合约执行机制。

那么智能合约对程序员的价值是什么? 了解了智能合约的独特性和时效性后,相信大家可以想象,如果要与一家公司或客户签订一份协议,不可能用同一份协议来服务一千个客户。 所以如果掌握了智能合约开发能力,就相当于掌握了未来智能合约时代或者区块链3.0时代的律师资格。

因为每一份合同都要有人起草和审查,这是律师的工作。 作为程序员,你可以编写智能合约,相当于拥有了智能合约平台的律师资格证,可以在智能合约平台帮助用户或商家起草合同。 这不会像现在这样。 服务或系统交付后,程序员可能就没用了。 这种情况在智能合约领域是不存在的,因为合约是一次性的,执行完毕后需要起草重新签署。

从用例看智能合约

以太坊发币全流程_以太坊免费一键发币_以太坊合约发币

上述四种合同,从适用的角度来看,有明显的区别。

第一类是博彩合同和农作物保险。 这是双方之间的合同。 投注是什么意思? 就是两个人来赌一件事,比如赌明天的气温高多少或低多少,或者直接赌两个骰子的结果是大于7还是小于7。这种合约在以太坊上非常容易实现,只有20多行代码; 需要用到一些数据服务,比如生成随机数,查询天气等链下数据等等,农作物保险其实也是一样的。 农作物保险相当于农民与保险公司签订的智能合约。 例如,农民支付 10 美元给保险公司投保。 保险的内容是,如果今年下冰雹,庄稼受损,需要保险公司赔付。 给农民 100 美元。 至于今年有没有冰雹,其实可以通过第三方气象站的链外数据服务获取,自动理赔。

第二类是投票(Voting)合约和拍卖(Auction)合约。 这是涉及多人的公共行为。 投票和选举类似,可以在智能合约中规定。 现在有几个提案或候选人,每个人都可以通过合约进行投票或选举。 因为以太坊中的每个人都是通过一个地址来标识的,所以可以判断这个人是否已经投票了。 拍卖的话,在创建合约的时候先把要拍卖的物品传给合约,大家可以看到要拍卖的是什么,然后再出价。 竞价可以通过两种方式进行:一种是明确表示我支付多少,金额直接写到交易中,因为区块链上的所有交易都是透明的,所有人都可以看到。 另一种是秘密拍卖法。 比如我把拍卖金额通过算法(比如哈希)转化后传给合约,这样就不能直接从交易数据中看到每个人的出价。 当达到拍卖时限时,拍卖自动完成。

第三类是支付(Purchase)合约和微支付通道(Micro Payment Channel)。 简单点说就是支付金融,比如转账和一些金融支付合同,跟淘宝里面的发货确认流程很像。 买卖双方建立合约,买方先将钱存入合约,卖方通过第三方在线发起资产转移,或线下发起邮寄动作将货物发出。 买家收到货后,调用合约上的函数更改状态,相当于确认收到货。 卖方的钱可以从合同中拿走。 这个过程其实和淘宝没什么区别。

小额支付渠道在技术上是多重签名合约。 比如我经常去同一个煎饼摊的老板那里买煎饼,我们两个达成协议:我每天从他那里拿一个煎饼,并定期(限时)退房,就是签一个小额支付渠道。 这解决了交易费用的问题。 众所周知,比特币或以太坊中的每一笔交易都会产生交易费。 如果交易金额小,交易成本会变得相对非常高,而如果像这样定期结算,你只需要支付一笔交易费用。

ERC20 和 ERC721

最后再看看两个非常知名的代币ERC20和ERC721的标准。 ERC,简单来说就是以太坊社区的参与者可以对以太坊提出改进意见,以太坊核心开发团队会对这个意见进行一些评论,最终在协议上或者在客户端(进入EIP)中实现。

ERC20是一种代币标准,其意义在于它是一个通用接口,定义了一组函数和事件。 只要这个接口的实现可以作为标准代币使用,就可以被交易所或第三方服务处理。

以太坊发币全流程_以太坊免费一键发币_以太坊合约发币

ERC721 是 ERC20 的修改版。 ERC721指的是non-fungible token,是一种可追溯、不可分割的代币。 ERC721代币的特性就像现实生活中的收藏品、汽车或房子。 它们是不可替代的资产,此类资产的转让具有价值变化。

6个

以太坊生态系统和 DApp

下面介绍以太坊的一些具体技术和工具。 学习一项新技术最困难的事情是你不知道该看什么,也不知道从哪里开始。

以太坊发币全流程_以太坊合约发币_以太坊免费一键发币

上图左侧是以太坊的生态系统。 中间一个是以太坊网络,包括客户端协议和区块本身。 最近的是左边的 Geth 和 web3。 Geth是以太坊的客户端,而web3是学习以太坊必须掌握的东西,因为它是与以太坊客户端节点交互的技术接口(JSON-RPC)。

上面的truffle和embark是以太坊的开发框架,是目前社区最流行、最活跃的。 它们都提供了一些有利于合约测试的机制,比如本地测试环境、测试网络、测试代码模板等。

下面的swarm和IPFS都是去中心化存储方案。 如果我们要开发应用,只有数据库和虚拟机是不够的。 也需要前端处理,自然会有前端代码,可以存放在swarm或者IPFS上。 IPFS是一个独立的区块链项目,也是一条有自己生态的公链。

右上角的oraclize就是预言机,作用是提供链下数据服务。 例如,如前所述,要生成随机数或获取天气信息,就需要使用该服务。 ENS可以理解为互联网上的DNS域名服务。 您可以在ENS上注册一个域名,在做去中心化应用时使用ENS域名访问相应的资源或程序。

Mist 是以太坊的钱包客户端。 Metamask 是一个基于浏览器的插件,可帮助您管理私钥。

右图是DAPP的基本组成部分。 一般来说,一个DAPP由三部分组成:

第一部分是链上服务,包括智能合约、耳语和轨道。 Whisper 是一种点对点的消息服务,也就是说,可以通过 whisper 协议在以太坊中的两个地址之间直接发送消息。 Orbit 是一种类似于消息订阅的链上服务。

第二部分是链外服务,包括oraclize、ENS、swarm、IPFS。 链下是指智能合约所在链的链下。 预言机用于获取第三方服务或其他链上的数据。 ENS提供域名,swarm和IPFS是存储。

第三部分是前端,比如chrome+metamask,mist浏览器。 它们都可以作为前端程序的运行环境,执行DApp的前端程序。

7

以太坊入门学习指南

学习一项新技术,首先要到官网阅读它的官方文档。 如上图,建议从左到右,从下到上学习。

以太坊免费一键发币_以太坊合约发币_以太坊发币全流程

以太坊发币全流程_以太坊合约发币_以太坊免费一键发币

首先是以太坊官网。 以太坊宅基地文档也是我学习的入口。 该文档讨论了一些非常重要的概念。 除了上面提到的,还介绍了客户端的使用,比如geth的安装,web3的使用。 在学习以太坊开发之前,你必须了解这些基本概念,否则你会遇到很多麻烦。

接下来是以太坊的高级开发语言Solidity,它有一个单独的编译器,可以将源代码编译成EVM机器码。 该机器代码可以发布到实际链上以执行特定功能。 Solidity 语法很可能是一种结合了 C++、JavaScript 和 Python 语法的语言。 与语言关系最密切的是开发环境,如truffle、embark,其次是其他相关工具。 学习这些东西结合solidity的使用还是不错的。

如果这些都满足了,就可以更进一步,比如EVM、ABI。 ABI是应用二进制接口,是智能合约的调用接口。 对于每个用 solidity 编写的智能合约,编译结果都会包含 EVM 机器码、ABI 代码和 web3 部署代码。 ABI 编码之所以重要,是因为它不仅在合约之间调用时使用,而且任何外部服务都使用它与合约进行交互; 它不仅与编译有关,还与执行效率有关。

Openzeppelin是一个非常棒的开源项目,它提供了一些合约安全的编码模板和标准且相对安全的代码编写方法。 这个项目的意义在于它提供了一个可重用的库(代码),这对于技术生态系统来说非常重要。

合同审计是合同审计。 在智能合约之间的相互调用和返回机制、操作细节等方面存在很多可利用的漏洞,合约审计是Solidity高级开发的重要组成部分。

接下来是一些具体的协议主题(protocol-level topics),这里不做赘述,只是给大家提供一个参考。

8个

总结

以太坊合约发币_以太坊发币全流程_以太坊免费一键发币

最后一个彩蛋:“Hyperbook”和 DLT。

以太坊免费一键发币_以太坊发币全流程_以太坊合约发币

社区的胡华杰老师之前也分享过。 现在fabric比较火,因为它是企业级区块链应用的标志性项目,是可定制的区块链。 这对企业来说非常重要,因为每个企业都有自己的业务,即使是电商或物流,每个企业的具体业务细节都会有所不同,所以他们迫切需要区块链的可定制性。 提供了这样的解决方案。

Hyperledger项目下有五个顶级项目,其中一个是fabric; 还有正在孵化的Burrow,通过以太坊等底层协议支持智能合约; 三是Sawtooth,针对供应链、溯源等场景; 第四个是Iroha,是三菱、NTTData和日立共同开发的区块链项目,提供了很多开发框架和开发工具; 最后一个是Indy,它使用定制的区块链进行识别和垂直业务领域。

Hyperledger其实是DLT的一种,即分布式账本技术,而区块链就是其中一种分布式账本。 目前新兴的分布式账本技术主要在存储结构上存在差异。 例如,出现了一种新的DLT存储结构DAG(Directed Acyclic Graph),它采用图数据结构来存储交易数据,每笔交易都有唯一的标识。 此外,还有一种针对 DAG 的改进算法 HashGraph,它也使用图数据结构来优化存储级别,以提高网络吞吐量和整体性能。

值得注意的是以太坊发币全流程,DLT 中没有代币的概念。 比特币等网络中的代币被用作价值载体和激励机制。 DLT和Hyperledger作为企业级应用,不需要代币等载体。 ,只需使用区块链(或去中心化账本技术)的特性进行存储和数据共享(透明)。

以太坊合约发币_以太坊发币全流程_以太坊免费一键发币