Post

W1-1 区块链及智能合约平台介绍

W1-1 区块链及智能合约平台介绍

什么是以太坊

  • 一台世界计算机(去中心化,任何人都可以使用)
  • 一个状态机(由交易触发的状态转换系统)
  • 一个智能合约平台(计算平台)

智能合约

  • 智能:可执行
  • 合约:协议、规则
    • 链上执行的程序,是代码和数据(状态)的集合

合约的组成

image1

EVM

  • 类似Java至于JVM
  • EVM是一个封闭的环境(不可访问外部系统)
    • 只能直接写入数据到链上

以太坊客户端

  • 以太坊客户端:EVM载体、网络中的节点程序
  • 只要符合网络规范,(几乎)任何语言都可以实现客户端
  • 常见客户端:Geth(Go实现)、OpenEthereum(Rust)实现
  • 通过RPC提供服务

账户

  • 相同点:
    • 都用20个字节表示
    • 外部账户(EOA)与合约账户在EVM层面是等效的
  • 差异点
    • 交易只能从外部账户发出,合约只能被动执行
    • 合约之间的交互通常称为消息,所有的gas由外部账户支付

      外部账户(EOA)

  • 由私钥控制,妥善保管、不可恢复

    合约账户

  • 代码控制

钱包

  • Metamask
  • ImToken
  • TrustWallet

GAS

  • EVM的计价单位,也防止图灵死机的问题
  • GAS是一个工作量单位,复杂度越大,所需gas越多
  • 费用 = gas数量 * gas单价(以太币计价gwei)

以太币单位

  • 最小单位:Wei(伟)
  • 10^9 Wei = 1 Gwei
  • 10^12 Wei = 1 szabo(萨博)
  • 10^15 Wei = 1 finey(芬尼)
  • 10^18 Wei = 1 Ether

不同的网络

  • 主网(价值网络)
  • 测试网
  • 开发模拟环境(本地环境)

合约开发工具

  • Remix:适用于小合约开发
  • VSCode + solidity扩展
  • Truffle + Ganache
  • Hardhat

Remix

  • 编译
  • 部署
  • 执行
    • 橙⾊:触发交易
    • 蓝⾊:仅读取

remixd

在remix中访问本地⽂件

  • 安装remixd:npm install -g @remix-project/remixd
  • 共享⽂件:remixd -s <path-to-the-shared-folder> -remix-ide <remix-ide-instance-URL>

Truffle

编译、部署、测试合约的⼀整套开发⼯具

  • ⽂档:https://trufflesuite.com/docs/truffle/
  • 中⽂⽂档:https://learnblockchain.cn/docs/truffle/

Truffle 工程包括

  • contracts:智能合约目录
  • migrations:迁移文件、用来指示如何部署智能合约
  • test:智能合约测试用例文件
  • turffle-config:配置文件呢,配置truffle连接的网络以及编译选项

部署

  • 配置网路
  • 便携部署脚本
  • 启动网络(本地)
  • 执行部署
    • 指定部署某个(顺序第2个)合约truffle migrate -f 2

Truffle工具

  • truffle console
    • 直接在控制台调⽤合约
  • truffle-min.sh
    • 压缩 artifacts ⽂件

Ganache

开发区块链,提供本地模拟的链上环境

This post is licensed under CC BY 4.0 by the author.