主页 > 如何从imtoken转出以太坊 > 以太坊学习-Day1

以太坊学习-Day1

如何从imtoken转出以太坊 2023-03-18 07:32:13

首先,以太坊在百度百科中是这样定义的:以太坊(英文Ethereum)是一个开源的具有智能合约功能的公有区块链平台,由其专用的加密货币以太币(简称“ETH”)提供。 去中心化的以太坊虚拟机(Ethereum Virtual Machine)来处理点对点合约。

以太坊使用的一种语言——Solidity,风格类似于JavaScript,是一种面向对象的高级编程语言。

P1

一、学习以太坊的原因

(1) 庞大的开发者社区,目前最大的区块链开发平台

(2)相对成熟、有代表性、数据丰富

(3) 从应用开始,与比特币相比,学习曲线相对平缓

(4) 与JavaScript紧密结合,方便开发者上手

二、课程介绍

整个课程包括6个部分:

(1) 以太坊基金会

① 以太坊概况;

②初识以太坊:钱包、测试网、简单交易;

③以太坊客户端:客户端Geth的安装使用,搭建私链。

(二)深入了解以太坊

①以太坊账户和合约:账户详情、合约特征;

②以太坊交易、gas和EVM:交易详解、EVM介绍。

(3) 以太坊编程与应用

①Solidity基础:Solidity语法,合约简单;

② 简单投票DApp:ganache,简单投票DApp;

③web3.js及简单应用:web3.js API、转币脚本、监控脚本。

(4) 深入理解合约工作流程

① 合同工作流程;

②自动编译部署:编写编译脚本和部署脚本;

③自动化测试:ganache。

(5) 深入理解以太坊原理

① 概念与实现:白皮书、黄皮书;

②源码结构及分析:代码结构、MPT、GHOST。

(六)DApp项目实战

① 基于代币的投票:Truffle,加入代币的合约;

②基于ipfs的去中心化eBay:IPFS,多合约交互;

③ICO DApp:next.js、react、material-UI、mocha。

三、学习目标

(1) 深入理解以太坊的基本概念和工作原理;

(2) 阐明以太坊与比特币的联系与区别;

(3)掌握以太坊客户端的使用;

(4) 对智能合约的深入理解;

(5) 掌握Solidity的基本语法;

(6) 熟练调用web3.js;

(七)综合运用各种工具。

四、主要参考资料

《精通以太坊》、《以太坊白皮书》、《以太坊黄皮书》(硬)、以太坊官方文档、Solidity官方文档。

5.涉及的工具

(1) MetaMask:浏览器插件钱包;

(2) Remix:基于浏览器的Solidity在线编辑器

(3)Geth:以太坊客户端(Go语言)

(4) web3.js:以太坊JavaScript API库

(5)Ganache:以太坊客户端(测试环境私链)

(6) Truffle:以太坊开发框架

6.环境准备

(1) 铬 (70.0.3538.67)

(2)Linux系统或虚拟机(Ubuntu 16.04.3)

需要配备go(1.9)、git(2.7.4)、node(9.0.0)、npm(5.7.1)

(3) 文本编辑器(VisualCode)

(4) 科学互联网工具

P2

一、区块链(公链)发展简史

2008年区块链1.0还只是简单的记账,代表:比特币;

2014年,区块链2.0,智能合约,代表:以太坊;

2017年,区块链3.0以太坊价格曲线,高性能,高吞吐,开发者友好,用户友好,代表:EOS,AreBlock,IOTA。

2014年以太坊价格曲线,以太坊概念由Vitalik Buterin提出,2015年7月30日,以太坊主网启动。

2、发展阶段

(1) “Frontier” Block #0 2015 年 7 月 30 日 - 2016 年 3 月

(2) 自 2016 年 3 月起,“宅基地”#1150000 区块

(3) “大都会”街区 #4370000

两个硬分叉:

①《拜占庭》(Byzantium)2017年10月

②《君士坦丁堡》视频称预计2018年上线,将采用混合POW/POS共识算法

(4) 宁静

3. 主要分叉

(1) 区块#200000“冰河时代”

(2) 区块 #1192000 “The DAO”

(3) 第 2463000 号区块“橘子哨子”

(4) 区块 #2675000 “伪龙”

四、发展现状

录制视频时,合约数量为47228个,地址数量达到4000万个。

P3

一、以太坊的特点

被誉为“世界计算机”,是一个开源的、全球分布的计算基础设施。 执行称为智能合约的程序。 使用区块链来同步和存储系统状态,并使用称为以太币的加密货币来计量和限制执行资源成本。 本质是一个基于事务的状态机。 构建具有内置经济性的强大去中心化应用程序 (DApps); 在继续独立运行的同时,它还减少或消除了审查制度、第三方接口和交易对手风险。

2. 组件

(1) P2P网络;

(2) 交易

以太坊交易是网络消息,包括发送者(sender)、接收者(receiver)、价值(vaue)和数据有效载荷(payload);

(3) 以太坊虚拟机(EVM);

(4)数据库(Blockchain)一般指Google Level DB;

(5)客户端(Geth):奇偶校验。

三、重要概念

(一)账户

包含地址、余额和随机数的对象,以及可选的存储和代码,分为普通账户和合约账户:

① 普通账户(EOA):存储和代码都为空;

②合约账户(Contract):包含存储和代码。

(2) 地址

一般代表一个EOA或合约,可以在区块链上接收或发送交易,它是ECDSA公钥的keccak hash最右边的160位。

(3) 交易

可以发送以太币和信息,发送给合约的交易可以调用合约代码,信息数据作为函数参数; 向空用户发送信息可以自动生成以该信息为代码块的合约账户。

(4) 气体

以太坊用于执行智能合约的虚拟气体。 以太坊虚拟机使用一种记账机制来衡量 gas 消耗并限制计算资源的消耗。

P4

1、货币:以太币(ether),简称“ETH”。

(一)发行规则:

①预挖(Pre-Mine):创世,直接发行一些货币,通过众筹的方式募集资金;

②挖矿产出(Mining):分为区块奖励、叔叔奖励和叔叔引用奖励。

(2) 未来产量变化:

工作量证明POW改为权益证明POS,协议由GHOST改为Casper。

2. ETH供应

18年达到1亿多,市值209亿美元。

3.以太坊区块收益

(1) 普通区块收益:固定奖励,区块内所有程序gas支出的总和,叔块参考奖励

(2) 叔块收益:叔块奖励

叔块奖励=(叔块高度+8-引用叔块的块高)*普通块奖励/8

p5

介绍网站:etherscan.io

P6

介绍 GHOST 协议:Greedy Heavist Observed Subtree

以太坊出块时间:设计时间为12s,实际时间约为14~15s。

快速确认会导致区块的无效率很高,链的安全性也会相应降低。

P7

以太坊和图灵完备性

1.图灵完备:用于定义一个可以模拟任何图灵机的系统。 该系统称为通用图灵机 (UTM)。 简单来说,以太坊支持循环语句,理论上可以运行“死循环”程序。

2.去中心化应用

基于以太坊,可以创建智能合约来构建去中心化应用程序(Decentralized Application,DApp)。 以太坊的理念是成为DApps编程和开发的平台。

DApp 至少由区块链上的智能合约和 Web 前端用户界面组成。

3. 以太坊应用

(1) 基于以太坊创建新的加密货币(Crypto Currency)

(2) 基于以太坊创建域名注册系统和游戏系统

(3)基于以太坊开发去中心化游戏,如2017年底红极一时的Cryptokitties,单只猫最高价高达80万美元。

4.代币

代币也称为代币,原意为“代币”,代表了区块链上所有权资产、货币、权限等的抽象。 有两种类型:

(1) Fungible token:基于区块链技术发行,可互换,几乎可以无限拆分;

(2) Non-fungible token:基于区块链技术发行,在大多数情况下是唯一的、不可替代的、可拆分的token,比如加密猫。

五、术语解释

(1) EIP:以太坊改进提案;

(2) ERC:以太坊征求意见;

(3) EOA:外部自有账户;

(4) Ethash:以太坊1.0的工作量证明算法;

(5) HD钱包:使用分层确定性(HD协议)密钥创建和传输协议(BIP32)的钱包;

(6) keccak256:以太坊使用的加密哈希函数,标准化为SHA-3;

(7)Nonce:在密码学中,用来指代一个只能使用一次的值。 以太坊使用两种随机数,账户随机数和POW随机数。