美文网首页
智能合约

智能合约

作者: e98d76af67a1 | 来源:发表于2018-07-23 13:41 被阅读0次

    智能合约定义

    • 一段可执行代码,由交易触发执行;
    • 输入数据来源于交易提供的参数、已入链数据,或来自于其他智能合约;
    • 考虑安全因素,一般在隔离沙箱内执行。

    调研区块链智能合约架构关心的问题

    1. 区块链节点分为哪几类?在哪种节点上运行智能合约?
    2. 智能合约的隔离方式是什么?VM、Docker或其他?
    3. 智能合约支持的语言是什么?
    4. 智能合约的安装方式是什么?可执行文件还是源代码?是否入链?
    5. 智能合约何时执行?是否在交易入链前(验证)和入链后(执行)都需要执行?
    6. 智能合约如何与区块链节点交互获取数据、写入数据?

    Fabric v1.0

    1. 区块链节点分为以下几类:
    • Endorser. 运行智能合约为交易提供背书,并生成 read/write set。
    • Orderer. 将交易打包为区块,不运行智能合约。
    • Committer. 执行交易 read/write set,不运行智能合约。
    1. 隔离方式:docker
    2. 支持语言:go, nodejs, java...
    3. 安装:各个组织管理员预先安装合约源代码至本组织的 endorser,合约内容不入链,交易使用合约的 hash 保证各 endorser 处合约内容的一致性。
    4. 执行时间:交易验证/背书时执行,入链后直接执行 read/write set,无需再次执行智能合约。
    5. 交互方式:
    • 定义一系列接口例如 put_state(), get_state() 供智能合约使用入链数据;
    • 智能合约与节点之间通过 gRPC 通讯,例如 get_state() 背后对应向节点发送 get_state 消息,节点查询数据库后返回消息至智能合约。

    Fabric v0.6

    1. 节点分类:
    • VP. 执行智能合约,将交易打包为区块;
    • NVP. 转发交易,接受打包后的区块和 delta (类似 read/write set,但是无版本概念) 并执行。
    1. 隔离方式: docker
    2. 支持语言: go
    3. 安装:code package 以交易形式入链,所有 VP 节点在交易共识后安装智能合约。
    4. 执行时间:
    • VP 打包前简单校验;
    • VP 运行共识算法打包后运行智能合约逐一执行交易 execute,将成功的交易写入区块,失败的交易写入 nonHashData;
    • VP 将 world state 更新提交至数据库,将新区块提交至数据库 commit;
    • NVP直接将区块写入数据库,并使用 delta 更新 world state。
    1. 交互方式:与 v1.0 一致。

    Ethereum

    1. 节点分类:矿工节点、验证节点...矿工节点运行PoW共识并运行所有智能合约。
    2. 隔离方式:EVM,基于堆栈的虚拟机
    3. 支持语言:Solidity...
    4. 安装:编译后的智能合约(字节码)以交易形式入链,to address = null
    5. 执行时间:运行共识算法打包后运行智能合约逐一执行交易
    6. 交互方式:写入 cache -> 写入数据库
    7. 参考

    Burrow

    “You don’t need money to play, when you have permission to play”

    相关文章

      网友评论

          本文标题:智能合约

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