美文网首页
公链开发学习笔记(三):图灵完备和非图灵完备操作码解析

公链开发学习笔记(三):图灵完备和非图灵完备操作码解析

作者: 一个大于号 | 来源:发表于2018-10-20 11:07 被阅读140次

0 首先得有一个交易

  • 交易是状态读取和修改的基础
  • BTC的交易:bip125,可以用更多的fee代替原来的fee,使得交易优先被打包
  • ETH的交易:nonce,记录账号中的交易的序号,和比特币中bip125的功能类似,可以用nonce值更大的交易(更加新的交易)代替之前的交易
  • BTC和ETH的共同点:都有区块和交易相关的参数

1 Bitcoin非图灵完备操作码设计

  • 主要以检查状态为主
  • 没有loop:无法完成循环,比如累加计算
  • 栈式操作码,从左向右
  • bitcoin操作码实例
    • 普通的比特币地址交易:OP_DUP OP_HASH160<pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
    • 锁定:<expiry time> OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
    • bug bounty:OP_2DUP OP_EQUAL OP_NOT OP_VERIFY OP_SHA1 OP_SWAP OP_SHA1 OP_EQUAL

2 EVM图灵完备操作码的边界控制

  • EVM是一个沙盒
  • EVM中主要做计算valid state:进行状态的修改,但是仅限于和链不相关的修改
  • EVM通过很多的操作码组成
  • EVM扩展设计流程
    • EVM是一个256 bit的电脑,因为需要能适应256位的ETH hash algorithm(sha3)
    • precompile contract的工程实现,可以脱离原有的gas设计
    • 增加新操作码需要在opcode增加,需要对solidity进行更改
  • EVM操作码的边界的控制
    • 沙盒:读取状态为主,修改状态要注意
    • 兼容性:以增加操作码为主
    • 复杂度:由于相关function需要全节点执行,所以不能太高

3 图灵完备EVM设计的必要性

  • 需要了解真实的需求,是否需要全部操作
    • 如果只是需要以交易为主的公链,则不需要图灵完备
    • 如果需要在链上开发dApp,则需要图灵完备的虚拟机,添加新的opcode,改造solidity语言
  • 需要判断是否需要设计尺寸很大的交易
  • 需要评估更改EVM的难度以及实际工程师技术栈是否对应

4 工程设计的选择:wasm或EVM扩展

  • wasm
    • 可扩展性强
    • 多平台
    • 适用于CPU架构
    • 例如EOS:关注点不在虚拟机上,而是设计一套治理机制,VM只是一个实现工具,所以选择速度更快的wasm
  • EVM扩展
    • 设计更多的precompiled contract
    • dapp开发者的学习成本更低
    • 可以更好的定点支持function
    • EVM是一个沙盒,不能从外界拿取数据,否则其他节点难以对计算的结果进行验证

相关文章

  • 公链开发学习笔记(三):图灵完备和非图灵完备操作码解析

    0 首先得有一个交易 交易是状态读取和修改的基础 BTC的交易:bip125,可以用更多的fee代替原来的fee,...

  • 区块链周刊(2019-01-06)

    新闻 Stratis发布侧链和图灵完备C#智能合约 Stratis发布第一个用于在链上执行.net代码的图灵完备智...

  • 2018-08-05小白学区块链——图灵完备

    前文说了智能合约是编写在区块链上的一套图灵完备的数字合约,那么什么是图灵完备呢?今天我们就了解一下什么是图灵完备。...

  • 图灵完备

    一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的。 一个能计算出每个图灵可计算函数(Turing-...

  • 图灵完备

    https://blog.csdn.net/jnucstan/article/details/1724302 然而...

  • 图灵完备是什么?

    图灵完备(Turing Complete),图灵完备是指机器执行任何其他可编程计算机能够执行计算的能力。 图灵完备...

  • 图灵完备是什么?

    图灵完备(Turing Complete),图灵完备是指机器执行任何其他可编程计算机能够执行计算的能力。 图灵完备...

  • 区块链-图灵完备

    图灵完备意味着你的语言可以做到能够用图灵机能做到的所有事情,可以解决所有的可计算问题。图灵不完备也不是没有意义, ...

  • 图灵机谈学习编程

    一个通用编程语言要做的最基本的就是图灵完备,我们常用的语言的通用语言都是图灵完备。那么为什么图灵完备(Turing...

  • 以太坊中的图灵完备:DApp没了我是万万不行的

    在了解区块链的过程中,我们经常会听到介绍说以太坊是图灵完备的区块链平台。图灵完备一般作为一个特点用来形容一个系统或...

网友评论

      本文标题:公链开发学习笔记(三):图灵完备和非图灵完备操作码解析

      本文链接:https://www.haomeiwen.com/subject/iogpzftx.html