第二代区块链公链(Ethereum)

版权声明:凡原创系列文章,均笔者的辛勤于中,如转载,请文章顶部注明来源。谢谢配合 https://blog.csdn.net/smilejiasmile/article/details/87633039

以太坊

  • Ethereum 的设计理念
  • Erhereum 概览
  • 基于 Ethereum 的应用
  • 智能合约编程初步
  • 资料

Ethereum 的设计理念

  • Eos 采用 Dpos,以太坊采用 sharding 分片,bitcoin 采用POW , 最后会形成中性化的挖矿的矿池。
  • 以太坊还是继承于 bitcoin, 坚持每一个人都可以参加挖矿,故以太坊采用分片的技术,其中,每个节点都可以加入利益分配的环境中,不必选出代理节点,但是每个节点不是全节点,因为对节点要求太高,这就是分片的一个思想。
  • Vitalik 认为 bitcoin 中交易就是一个状态转化的过程, APPLY(S,TX) —> S’ or ERROR

以太坊产生的原因

  • 区块链的其他应用

    • 域名币(namecoin)
    • 彩色币(Colored coins)
    • 元币 (Metacoins)
    • 问题: 是建立独立的网络 还是(vs) 在比特币网络上建立协议
  • Bitcoin 脚本语言的局限

    • 缺少图灵完备性 (简单理解,是否有跳转指令,循环)
    • 价值盲 (Value-blindness) UTXO 的准确切分
    • 缺少状态 (UTXO 就是有消费和非消费)
    • 区块链盲 (Blockchain-blindness) 脚本语言,看不见区块链上的一些数据的。

以太坊简介

  • 以太坊引入的概念

    • 智能合约
    • 账户
    • 状态与状态转换
    • 图灵完备的脚本语言(可以用脚本一样来编写智能合约)与 EVM
  • 以太坊里面的账户

    • 外部账户(有私钥)发起交易,可以调用合约账户的接口,由合约账户触发一个内部交易,这个内部交易在转给一个合约账户。或者外部账户转账给外部账户。
    • 合约账户

在这里插入图片描述

  • 脚本语言与 EVM

    • EVM 不是基于寄存器,而是基于栈的虚拟机,不像 JVM 是基于寄存器的。
    • 栈最大有 1024 个元素,每个元素 256 比特(32字节)
    • 具备常用的算术,位,逻辑和比较操作,也可以条件和无条件跳转
    • 任何计算、存储都需要消耗 Gas
  • EVM 执行时的消费

    • Total cost = gasUsed * gasPrice
    • gasUsed : 估计消耗的 gas 量
    • gasPrice : gas 的价格,由发起交易的用户决定,
    • gasLimit : 一次交易中最多可以消耗的 gas 上限
  • 以太坊中的价格单位

在这里插入图片描述
Gas 是 根据 opCode 运行时长来计算的。

  • 状态转换
    • 以太坊中 状态转换也跟比特币中有一些不一样。

在这里插入图片描述

  • 状态转换函数

在这里插入图片描述

扫描二维码关注公众号,回复: 5265638 查看本文章
  • 以太坊的区块结构

在这里插入图片描述

  • 交易的构成

    • nonce 发出交易的编号,从 0 开始
    • gasPrice : gas 价格
    • gasLimit : 处理该交易允许最大 gas 消耗值
    • to : 交易的目的地,如果为空,则创建智能合约
    • value : 要发送的 Ether 数量
    • data : 智能合约代码或者调用智能合约函数
    • 没有 from : 包含在签名中
  • 帕特丽夏树 (通过序列化,形成字符流,进行 key - value 存储)

  • 以太坊中的区块确认流程

在这里插入图片描述

应用简介

  • ERC20 Tokens (规定了 6 个接口,比如某些项目,一般会公开募集,btc 或者 eth 币,相当于集资过程,这就相当于符合 ERC 20 的标准)
  • CryptoKitties (ERC721) 在这个协议中,每个Token 都不一样,在加密猫里面,它实现了一个拍卖的过程,整合了 网页钱包。每个 Token 独特的部分都记录在 matadata 里面。https://www.cryptokitties.co/

搭建开发环境

猜你喜欢

转载自blog.csdn.net/smilejiasmile/article/details/87633039