主页 > 如何从imtoken转出以太坊 > 以太坊学习-Day1
以太坊学习-Day1
首先,以太坊在百度百科中是这样定义的:以太坊(英文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随机数。