精通以太坊-10~14章-思维导图

区块链、以太坊专题链接直达

区块链入门
精通以太坊-1~3章-思维导图
精通以太坊-4~6章-思维导图
精通以太坊-7~9章-思维导图
精通以太坊-10~14章-思维导图

《精通以太坊》

第十章~第十四章

代币 预言机 DApp EVM 共识

学习笔记 思维导图

精通以太坊-10~14章-思维导图_第1张图片

附:文本结构

精通以太坊-10~14章
	代币
		使用方式
			数字货币
				通过私下交易的方式确定它的价值
			资源
				来自一个共享经济体或资源分享环境所产出或获取的资源
			资产
				链上或链下,有形或无形的资产
			访问权限
				针对物理资产或数字资产的访问权限
			权益
				数字化组织的股东权益(例如DAO去中心化自治组织)
			投票权
				数字系统或传统组织中的投票权
			收藏品
				数字化收藏品(如CryptoPunks)或真实收藏品(如油画、邮票)
			身份
				数字化身份,或者法律意义上的身份
			证言
				针对某个事实的认证或证言
			Utility
				用于使用或支付某种服务的代币
		可替代性
			可直接兑换货币
		对手方风险
			资产的保有方就是这个额外的对手方风险
				他们是否真正持有这些资产
				他们是否认可这次基于代币形式的交易
		代币和内在性
			区块链内的资产替代区块链外的资产,可以消除对手方风险
		工具还是权益
			工具型代币
				用于支付
			权益型代币
				初创公司股权的代币
		以太坊的代币
			以太币
			自定义新代币
				基于智能合约实现
		代币标准
			ERC20代币标准
				必须函数和事件
					totalSupply
						总发行量
					balanceOf
						余额
					transfer
						转账
					transferFrom
						从其他账户转账,通常与approve一并使用
					approve
						审批
							给一个接收地址授权一次或分次转账不超过对应数量的代币
								类比企业老板授权给采购员
					allowance
						配额
							给定一个持有方和发送方地址,返回发送方还可以从持有方转走的经过审批的代币的余额
					Transfer
						转账事件
							即使转账金额为0也会触发这个事件
					Approval
						审批事件
							成功执行审批后触发的事件
				可选函数
					name
					symbol
					decimals
						位数
							返回代币可以细分的颗粒度
							如:decimals为2,那么可以在用户端显示为100的份数
							同理decimals为-2,就是0.01的份数
							为10的decimals次方
			ERC233
			ERC777
			ERC721
			可使用Truffle框架创建和发行一个属于自己的代币
			自定义代币的转账时通过代币合约内相关的状态转换进行的,使用合约作为地址,而不是接收方的地址
			自定义代币合约应该拒绝接收以太币,防止以太币被“销毁”
		代币接口标准的扩展
			持有人控制
			销毁
			铸币
			众筹
			硬顶
			可恢复性后门
			白名单
			黑名单
		代币和ICO
			今天在以太坊上提供的许多代币几乎是骗局、传销和割韭菜行为
			短期ICO泡沫
	预言机
		是什么
			在区块链的上下文中,预言机是一个可以回答以太坊外部问题的系统
			无信任的系统
			将外部事实带入合约执行
		EVM执行过程必须完全确定,后果
			EVM和智能合约没有内在的随机性来源
			外部数据只能作为交易数据载荷引入
		应用场景
			弥合链外世界与智能合约之间差距的机制
			允许智能合约基于真实世界的事件和数据来强制执行合约关系
		应用示例
			物理随机数源或熵源
				量子现象或热现象
			汇率数据
				让加密货币与法定货币精准挂钩
			与自然灾害相关的参数触发器
				地震里氏震级测量债券
			统计与准统计数据
				安全标识、国家代号、货币代号等
			时间和间隔数据
				基于精准的SI时间度量的事件触发器
			天气数据
				基于天气预报的保险费计算器
			政治事件
				预测市场的走势
			运动事件
				预测市场走势以及体育博彩相关的合约
			以太币市场价格
				gas价格预言机
		设计模式
			关键能力
				从链外的数据源收集数据
				使用签名消息在链上传输数据
				将数据放入智能合约的存储空间,使数据可用
					其他合约可以调用预言机智能合约的“检索”功能访问
					也可以直接查看预言机的存储
			设置预言机的三种主要方式
				请求与响应
					数据空间大的情况下使用
					步骤
						1、接收来自DApp的查询
						2、解析查询
						3、检查是否提供了付款和数据访问权限
						4、从链外数据源检索相关数据
						5、使用包含的数据对事务进行签名
						6、将事务广播到网络
						7、安排任何进一步必要的交易,例如通知等
				发布和订阅
					轮询,推送
						不直接向接收者发送消息
						而是将发布的消息分类到不同的类中
						订阅者能够表达对一个或多个类的兴趣并检索那些感兴趣的消息
					效率低下
						只适合低频改变
				立即读取
					存储在合约存储中
		数据认证
			真实性证明
				TLS传输层安全协议
				TLS可以掌握密钥获取数据后给数据签名,并将数据分配给三方
					服务器(预言机)
					受审单位(Oraclize)
					审计方
				依然要假设亚马逊自己不会篡改虚拟机实例
			可信执行环境
				Town Crier
					使用英特尔的SGX
					保证应用程序在安全区运行时,其状态对其他进程来说,是不可知的
					SGX通过生成应用程序确定在安全区中运行的数字签名,DApp通过验证此数字签名就可以证明
		计算性的预言机
			TrueBit
				可扩展和可验证的链外计算解决方案
			大量计算的任务不可能在区块链上执行,那将花费巨额gas
		去中心化预言机
			以上都是中心化的预言机系统,都需要以来可信的权威,如亚马逊、英特尔
			ChainLink
	去中心化应用
		英文
			Decentralized Application
			简称
				DApp
		构成
			后端软件(应用逻辑)
				智能合约
					被用来存储应用的业务逻辑(程序代码)和相关的状态信息
				主要考虑因素
					合约代码一旦部署,不可修改,只可能被彻底删除
					体量大的合约意味着花费更多的gas,因此一些应用程序会选择链外计算和外部数据源
						依赖外部意味着你的用户必须引入这些外部资源
			前端软件
				客户端界面
					通常是Web前端
						通过web3.js JavaScript库连接到以太坊,该库与前端资源捆绑在一起,并由Web服务的提供给浏览器
					目前没有创建移动端DApp的最佳实践,主要原因是缺少具有密钥管理功能的移动客户端来承担轻客户端的角色
			数据存储
				智能合约不太适合存储和处理大量数据,因此大多数DApp利用链下数据存储服务
				中心化的
					如传统的云端数据库
				去中心化的
					IPFS
						星际文件系统
						特点
							去中心化的
							内容可寻址的存储系统
								意味着内容(文件)的每一个块都被哈希处理,并且这个哈希值可以标识文件
								可以通过这个哈希值在IPFS的任何节点上将文件取回
						目标
							在Web应用程序的分发上取代HTTP协议
								文件可直接在任何IPFS节点被获取
					以太坊自由平台Swarm等
						点对点形式的
						特点
							内容可寻址
							P2P存储系统
						以太坊基金会创建的
						作为Go-Ethereum工具链的一部分
						可以运行前端程序
			消息通信
				去中心化消息通信协议
					Whisper
						以太坊基金会Go-Ethereum工具链的一部分
						可用于创建聊天室
			名词解析
				以太坊名称服务(ENS)
					一种去中心化的方式
					是一个智能合约
					也是一个基础的DApp
				例如,以太坊基金会的捐赠地址是:0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359
					在支持ENS的钱包中,它被简单地表示为:ethreum.eth
				ENS标准
					EIP-137
						规定了ENS的基本功能
					EIP-162
						描述了根.eth的拍卖系统
					EIP-181
						规定了地址的反向注册规则
		优点
			弹性
				只要区块链平台仍在运行,DApp就不会停机
			透明
				任何人都可以对代码进行检查,并审核它的功能
				任何与DApp的交互都会永久地存储在区块链上
			审查阻力
				一旦部署到区块链就不能被任何人修改
				不会受到集中式控制力量的干扰
		DApp的治理
			双刃剑
				特权账户被破坏,DApp的安全性就随之被破坏
				如果没有特权账户,一旦合约出现问题,就没有恢复的余地
			真正的DApp不应该存在能进行特权访问的特权账户
	以太坊虚拟机
		主要任务
			基于以太坊协议、根据智能合约代码的执行来计算合法的状态转换,用以更新以太坊的状态
		用来处理智能合约的部署和执行
		可以被想象成一个全球化的去中心化计算机
		“准”图灵完备的状态机
		基于栈的架构,在一个栈中保存了所有内存数值
		数据处理单位被定义为256位的“字”
		包含以下数据组件
			一个不可变的程序代码存储区ROM,加载了要执行的智能合约字节码
			一个内容可变的内存,它被严格地初始化为全0数值
			一个永久的存储,它是作为以太坊状态的一部分存在的,也会被初始化为全0
		是一个计算引擎,是“单线程”的,没有“系统接口”,没有“硬件支持”
		EVM指令集(字节码)
			算数和位运算逻辑操作
				ADD
				MUL
				MOD
				SHA3
				...
				LT
				GT
				EQ
				AND
				OR
				NOT
				...
			执行上下文查询
			栈、内存和存储访问
				POP
				MLOAD
				MSTORE
				SLOAD
				...
			处理流程操作
				STOP
					停止执行
				JUMP
					将程序计数器设置为任意数值
				JUMPI
					基于条件修改程序计数器的值
				PC
					取得程序计数器的数值
				JUMPDEST
					标记一个有效的跳转地址
			日志、跳转
				LOGx
				CREATE
					用关联代码创建一个新账户
				CALL
					向另一个账户发起消息调用,也就是运行另一个账户的代码
				RETURN
					停止执行并返回输出数据
				...
			环境操作
				处理执行环境信息的操作码
				GAS
					取得可用gas的数量
				ADDRESS
					取得当前账户的地址
				CALLER
					取得当前执行的调用者地址
				...
			区块操作
				BLOCKHASH
					取得最新的256个完整区块中某个区块的哈希
				COINBASE
					取得当前区块的区块奖励受益人地址
				TIMESTAMP
					取得当前区块的时间戳
				NUMBER
				DIFFICULTY
				GASLIMIT
		以太坊状态
			以太坊世界状态
				一个以太坊地址到账户数据的映射
				组成
					一个以太币的余额
						这个账户所持有的以wei为单位的以太币数量
					一个nonce
						EOA
							从这个账户所发出的交易的数量
							一个EOA永远不会有代码,且只有全空的存储
						合约账户
							由它所创建的合约的数量
					账户的存储
						仅供智能合约使用的永久数据存储
					账户的程序代码
						智能合约账户
			gas
				负的gas消耗
					删除一个合约会返还24000gas
					将一个非零值的存储地址设置为0,会返还15000gas
					最大gas返还数量为交易中总共消耗的gas数量的一半(向下舍入)
						避免通过返还机制牟利
				作用
					解决了停机问题
					保护以太坊免受拒绝服务攻击
	共识
		共识算法
			工作量证明PoW
				惩罚是基于外生的电力
			权益证明PoS
				以太坊计划使用的PoS算法叫Casper
				惩罚基于质押的以太币,是内生于区块链的
		工作量证明的通俗表述就是“挖矿”
		目的
			“挖坑”的真实目的是保护区块链的安全,同时保证对系统的控制权是去中心化的
		手段
			把新铸造的货币作为奖励是激励人们为系统安全做贡献的措施
			如果不遵循共识规则来得到区块奖励,那么他们已经在挖矿上花费的电力就有可能血本无归
		原理和假设
			谁能更改历史数据,如何更改呢?
				不可更改性
			谁能确定未来的上链数据,又如何确认呢?
				确定性
			确认数据的时候,要耗费些什么呢?
			确认数据的权力有多去中心化?
			如果某些数据发生了变化,谁会察觉?它们用什么方式察觉?
		争议
			没有完美的共识算法

你可能感兴趣的:(区块链)