以太坊基础
简介
区块链是一种分布式流水账数据库;
以太坊=区块链+以太坊虚拟机(EVM),其本质是一个状态机;
以太坊的所有活动(状态变动)都是通过账户间发送交易来完成的;
以太坊上的所有操作都是要消耗gas的,gas是要用以太币(Ether)买的;
以太坊的生态系统出现端倪,DApp的雏形已经有了;
阅读以太坊黄皮书是最佳的学习方法
以太坊入门学习指南
以太坊DApp编程全流程
基本测试环境
Truffle编程框架
Solidity智能合约编程语言
Web3js合约调用
js/node.js基础
以太坊学习主要内容
以太坊简介
以太坊编程环境构建
js/nodejs简介:语言与服务设计基础
solidity编程:智能合约实现
web3.js编程:智能合约调用
案例一:数字通证系统设计
案例二:投票系统
区块链典型系统结构
应用层
合约层
激励层
共识层
网路层
数据层
以太坊技术框架
以太坊核心概念
点对点网络:所有节点都地位平等,没有中心服务器
区块链:去中心化存储数据库
EVM:虚拟机,运行程序
DApp:智能合约的应用
以太币(Ether):以太坊世界中使用的数字货币
Gas:以太坊里对所有活动进行消耗资源计量的单位。读取免费,写入收费。
矿工(Miner):挖矿,构建基础设施
什么是区块链?
共识算法有哪些?
POW:Proof of Work,工作证明
POS:Proof of Stake,股权证明
DPOS:Delegated Proof of Stake,委任权益证明
PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法
POW简介
获得多少货币,取决于挖矿贡献的有效“工作”
“工作”为Block Hash计算,计算时间取决于机器的哈希运算速度
当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Black Hash
POS简介
根据持有货币的量和时间,给你发利息的一种制度;
发现了一个POS区块,币龄就会被清空为0,同时发放“利息”;
一个账户的余额越多,在同等算力下,就越容易发现下一个区块;
DPOS简介
在常规POW和POS中,主要影响效率之处在于任何一个新加入的Block,都需要被整个网络所有节点做确认
DPOS则通过不同的策略,不定时的选中一小群节点,这一小群节点做新区块的创建,验证,签名和相互监督,这样就大幅度的减少了区块创建和确认的时间和算力成本
去中心化面临的挑战
如何保证所有节点状态都同步?
如何保证所有交易都广播到所有节点?
如何防止恶意篡改?
DApp及以太坊虚拟机(EVM)
CS应用与DApp的区别
去中心应用的优点
容错性好
防止单一机构的干扰
用于更容易相信该应用
去中心应用的缺点
更新困难
用户身份认证较为困难
程序扩充困难
DApp之间协作仍然比较困难
智能合约
智能合约:一段写在区块链上的代码
构建:区块链内的多个用户共同参与制定
存储:通过P2P网络扩散到每个节点,并存入区块链
执行:将满足条件的事务进行验证,达成共识后自动执行并通知用户
智能合约部署步骤
以太坊合约部署
DApp开发框架
Truffle:代码->编译->部署->测试->打包
Solidity:智能合约编程语言
Web3.js:智能合约调用
以太坊虚拟机(EVM)
以太坊是一套可以实现分布式应用的平台协议。它的核心是可以执行任意复杂算法的以太坊虚拟机(EVM)
网络上的每一个节点都运行着EVM并执行相同的指令。因这个原因,以太坊经常被描述为“世界电脑”。
EVM设计目标
简单性(Simplicity)
确定性(Determinism)
节省空间的bytecode
专为区块链设计
更加简单的安全性保证
容易优化
EVM的一些特点
EVM是一个256位的机器
持久存储是相当昂贵的
Solidity编译器会为了减少gas的使用而做出相应的优化选择
EVM的不足
标准库较少
调试和测试相对困难
暂时不支持浮点数
代码无法升级
以太坊的问题
性能较差,公链TPS<20
区块链难以存储“大数据”
"智能合约"难以实现复杂的算法
一些可能的解决方案
闪电网络,状态通道,不改变共识算法,这是一种小改进
Coco Blockchain Framework等,改变共识算法,基本达到商用水平,作为私链、联盟链是可以的
多种区块链混合。典型如Akasha等区块链媒体,IPES存储文章数据+区块链存储关键属性、执行合约
相关网络资料
Solidity:https://solidity-cn.readthedocs.io/zh/develop/
Truffle:https://truffle.tryblockchain.org/
Web3.js:https://web3js.readthedocs.io/en/v1.2.4/
Remix:https://remix-ide.readthedocs.io/en/latest/
智能合约典型代码
Trufflex Box:http://truffleframework.com/boxes/
openzeppelin库:https://openzeppelin.org/
迷恋猫合约:https://github.com/axiomzen/crytokitties-bounty
相关书籍
Mastering Ethereum: https://github/com/ethereumbook/ethereumbook
《区块链项目开发指南》
《以太坊技术详解与实战》
作者:游骑小兵
学习
以太坊
区块链