以太坊基础
简介
- 区块链是一种分布式流水账数据库;
- 以太坊=区块链+以太坊虚拟机(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
- 《区块链项目开发指南》
- 《以太坊技术详解与实战》
来源:CSDN
作者:游骑小兵
链接:https://blog.csdn.net/ARPOSPF/article/details/103714460