学习笔记

背景

  • 庞大的开源社区,目前最大的区块链开发平台
  • 相对较成熟,有代表性,资料众多
  • 以应用入手,学习曲线相对于比特币不那么陡峭
    • 装一个插件去安装自己的钱包,在测试网络上去转账
    • 用Ethereum的内置编程语言Solidity编写合约
  • 与JavaScript紧密结合,方便开发人员上手
    • Solidity的语言风格和JavaScript很接近
    • Ethereum官方也开放了JavaScript的接口web3js

评价

  • 以太坊是”世界计算机”,它是一个开源的、全球分布的计算基础设施
  • 执行称为智能合约(Smart Contract)的程序
  • 使用区块链来同步和存储系统状态以及名为以太币的加密货币,以计量和约束执行资源成本。(比特币是主要用来做货币的,以太币本身不是主要用来做货币的)
  • 本质是一个基于交易的状态机(transaction-based state machine)
    • 每一次矿工挖矿时把所有的交易打包在一起出一个区块广播出去让其他人一起确认
    • 大家都认同的话,则总的账本就增长了,在区块链后面加一个区块
    • 一个区块就是一个状态,区块链中发生了这些交易,所以大家的状态发生了变化
    • 比特币跟踪的状态是货币的所有权,以太坊跟踪包括以太币在内的所有区块链上的数据(系统状态)
  • 以太坊平台使开发人员能够构建具有内置经济功能的强大去中心化应用程序DApp

学习步骤

  • 合约工作流
    • 合约工作流
    • 自动化编译和部署
    • 自动化测试
  • 以太坊原理
    • 以太坊概念与实现 白皮书 黄皮书
    • 源码结构 MPT GHOST
  • 应用
    • Truffle 加入token的合约
    • IPFS 多合约交互
    • ICO next.js react material-UI mocha

学习目标

  • 掌握以太坊的基本概念和工作原理
  • 理解以太坊与比特币的联系和区别
  • 掌握以太坊客户端的应用
  • 深入理解智能合约
  • 掌握Solidity语法,并能够写出复杂的合约
  • 掌握Web3.js的调用,并能够实现具体的DApp
  • 综合运用各种工具,完成较复杂的项目

学习软件

  • MetaMask 浏览器插件钱包
  • Remix 基于浏览器的Solidity在线编辑器
  • Geth 以太坊客户端(go)
  • web3.js 以太坊JavaScript API库
  • Ganache 以太坊客户端(测试环境 私链)
  • Truffle 以太网开发框架

相关工具

  • Chrome
  • Linux with go、git、node、npm
  • VisualCode