区块链、以太坊专题链接直达
区块链入门
精通以太坊-1~3章-思维导图
精通以太坊-4~6章-思维导图
精通以太坊-7~9章-思维导图
精通以太坊-10~14章-思维导图
《精通以太坊》
第一章~第三章
学习笔记 思维导图
附:文本结构
精通以太坊-基础1~3章
概念
基于区块链技术打造的平台
智能合约
以太坊计算基础框架上执行的程序
DApp
狭义
基于智能合约开发的用户界面
至少包含一个智能合约
广义
开放的去中心化的网络应用
以太币
以太坊官方货币
由挖矿成功得以产生
成功打包区块的奖励
可购买gas
运行智能合约需消耗gas
特点
任何人都可以在平台上发布dapp,区块链应用
开放的
去中心化
无政府状态
gas
可看作是支持智能合约运行的能量
可通过以太币购买
gasPrice
愿意为运行智能合约支付的gas数
gasLimit
为智能合约运行消耗配置上限
理论上可以配置为无穷大,以支持智能合约的永久运行
用于支付交易手续费,交易失败不退还
钱包
钱包软件的选择
可通过发起交易转移到别的钱包软件
也可通过私钥迁移
不同种类的钱包
移动钱包
Jaxx
桌面钱包
Jaxx
Emerald Wallet
基于浏览器的钱包
MetaMask
MyEtherWallet(MEW)
以太坊客户端
本质
一种软件应用程序,实现了以太坊协议规范,并通过点对点网络与其他以太坊客户端通信
作用
同步
JSON-RPC接口
远程调用以太坊客户端
分类
移动钱包
只提供最基本的钱包功能
其他
功能完备的DApp浏览器
共同点
这些客户端提供的功能都是全功能客户端的子集
而且不会在本地同步以太坊区块链数据,只会连接到别的地方运行的全功能节点,例如你自己不熟的本地设备或者Web服务器上的全功能节点,或者第三方部署在服务器上的全功能节点
功能
管理钱包中的私钥和以太坊地址
创建、签名并广播交易
通过交易内数据载荷的方式与智能合约交互
浏览并使用DApp
提供外部服务的链接,例如区块浏览器
转换以太币的单位,从外部获取兑换的汇率
向浏览器注入一个web3实例(供页面上的JavaScript与客户端交互)
使用其他客户端提供或注入浏览器的web3实例
访问本地或远程以太坊节点的RPC服务
全功能节点
好处
为以太坊的可扩展性和防审查机制提供更强的支持
可信地验证所有交易
可以跟主网上所有的合约进行交互,不需要任何中间角色
可以在需要时,离线查询(只读形式)区块链的状态,如账户、合约等
弊端
需要显著并且不断增长的硬件资源和带宽资源
需要数小时甚至数天才能完成区块链数据的同步
逐一从创世区块开始下载并验证每一个区块和其中的每一笔交易
有一部分被Dos攻击期间的区块验证极其缓慢,因此可跳过这些问题区块的完整验证操作,直到同步到区块链最新区块,才恢复完整验证
Geth启用参数是--fast
Parity默认开启
必须持续的维护、升级、保持节点在线才能保证区块链数据的同步
公共测试网络
好处
测试网络节点只需要同步和保存更少的区块链数据
测试网络节点的区块数据同步只需要数小时就能完成
测试网络上不需要真实以太币和gas,可通过多个渠道免费获得测试以太币
测试网络是一个包含众多其他用户和合约的正在实际运行的公共区块链
弊端
测试网络上没有真实以太币,黑客对没有价值的环境不感兴趣,也就无法在测试网络上检测安全性
交易手续费等在测试网络上往往会被忽略,毕竟gas免费
测试完不会出现主网上有时会纵欲的拥堵情形
本地区块链模拟器
好处
不需要同步区块链数据,几乎不占用硬盘空间
开发者自己完成第一个区块的挖矿
不需要设法获取测试以太币,开发者在挖矿时可以给自己奖励以太币并用于测试
没有其他用户
没有其他合约
弊端
没有交易打包空间和顺序的竞争
只有你一个人挖矿,没法测试在公链上与挖矿有关的一些场景
没有其他合约,意味着你必须部署测试所需要的所有依赖合约和各种合约库
无法重建一些公链上的合约并使用它们在公链上的地址进行特殊的测试,例如DAO合约
2020-06-16
总市值
比特币是以太币7倍
单币价
比特币是以太币41倍
区块链数据库总大小
同样都约为330GB
生态
节点客户端模式
测试网
用途
用于开发测试
虽然和主网分离,但建议使用另外的账户
避免误操作导致主网财产损失
分类
公共测试网
在“水龙头”提供的无价值的以太币上运行
尽可能的模拟了主网环境
本地测试网
本机或小型私有集群环境
主网
真实网络
可参与挖矿
使用真实以太币
消耗真实gas
各语言版本的客户端
Go
go-ethereum
geth
Rust
openethereum
parity
以太坊客户端软件中最著名的可互操作实现之一
Java
pegasys
Harmony
C#
Nethermind
Scala
Mantis
Python
pyethereum
C++
cpp-ethereum
ethnode
本地节点的零配置运行工具
支持Parity(openethereum) 和 Geth
前后端API
都是以太坊平台接口?
DApp经典架构
编写智能合约,发布到主网
Import对应的前后端API包,编写程序,与以太坊用户或智能合约进行交互、交易等
其他组成
智能合约编程语言
Solidity
开发智能合约通常使用的语言
Vyper
基于python语言
致力于提高安全性
API库
前端JS API
Web3.js
以太坊 JavaScript API
Ethers.js
JavaScript 和 TypeScript 中完整的以太坊钱包实现和实用工具
light.js
针对轻客户端优化的高级响应式 JS 库
后端API
Infura
以太坊 API 即服务
Cloudflare
以太坊网关
Nodesmith
JSON-RPC API 访问以太坊主网和测试网
Chainstack
共享及专用的以太坊节点即服务
开发者工具、框架
web3.j
以太坊的 Java/Android/Kotlin/Scala 集成库
Truffle
开发环境、测试框架、部署通道及其他工具
Waffle
高级智能合约开发和测试的框架 (基于 ethers.js)
One Click Dapp
直接从 ABI 生成一个前端进行快速开发和测试
Ethereum Grid
用于下载、配置和运行以太坊客户端及以太坊工具的桌面应用程序
IDE
Client IDE
官方支持的VSCode
WEB IDE
Ethereum Studio
Remix
EthFiddle
经典DApp架构
智能合约
框架+API
最佳实践
智能合约
自动执行的程序
可以做什么?
比如绝对中立的专家
比如版权认证
比如游戏
土地购买游戏
土地拥有者可盈利或亏损
开发者收取交易金额的比例佣金
养猫游戏