zoukankan      html  css  js  c++  java
  • 智能合约

    智能合约

    什么是智能合约

    • 所谓智能合约是自动化的程序合同,也就是自带程序,符合设置的程序条件后触发自动执行,智能合约的世界,代码即法律,一旦生效即可自动执行约定的任务。
    • 优点:确定性、一致性、可终止性、可观察性和可验证性、去中心化、高效率性和实时性、低成本。
    • 分类
      • 链上代码
      • 智能法律合约
      • 智能应用合约
    • 智能合约贴切的形象类比,是我们在说起计算机术语“有限状态机”或“状态机”时常用的自动可乐售卖机: 我们向可乐售卖机投入硬币,按一下出可乐的按钮。售卖机将一听可乐从出货口放出来。售货机恢复到最初的状态。

    通过这样的协议,智能合约允许各种资产交易,每个合约被复制和存储在分布式账本中。这样,所有信息都不能被篡改或破坏,数据加密确保参与者之间的完全匿名。虽然智能合约只能与数字生态系统的资产一起使用,不过,很多应用程序正在积极探索数字货币之外的世界,试图连接“真实”世界和“数字”世界。

    • 以太坊是世界上首个内置了图灵完备编程语言并正式引入智能合约概念的共有区块链,是目前最流行的智能合约开发平台。

    智能合约的运行机制

    • 预言机就是一种单向的数字代理,可以查找和验证真实世界的数据,并以加密的方式将信息提交给智能合约。预言机就好比区块链世界中的一个第三方数据代理商。当区块链上的某个智能合约有数据交互需求时,预言机在接收到需求后,帮助智能合约在链外收集外界数据,验证后再将获取的数据反馈回链上的智能合约。

    • 智能合约的运行机制如图所示。智能合约般具有状态两个属性,代码中用If-Then和What-If语句预置了合约条款的相应触发场景和响应规则,智能合约经多方共同协定、各自签署后随用户发起的交易提交,经P2P网络传播、矿工验证后.存储在区块链特定区块中,用户得到返回的合约地址及合约接口等信息后即可通过发起交易来调用合约,矿工受系统预设的激励机制激励,将贡献自身算力来验证交易,矿工收到合约创建或调用交易后在本地沙箱执行环境(如以太坊虚拟机)中创建合约或执行合约代码,合约代码根据可信外部数据源(预言机)和世界状态的检查信息自动判断当前所处场景是否满足合约触发条件以严格执行响应规则并更新世界状态.交易验证有效后被打包进新的数据区块,新区块经共识算法认证后链接到区块链主链,所有更新生效.

    • 广泛使用的智能合约开发平台

      • 以太坊的运行机制在上篇博客中已经讲到,不再赘述。
      • 超级账本中的智能合约是链码,Peer节点是链码及分布式账本的宿主,可在Docker容器中运行链码,实现对分布式账本上键-值或其他状态数据库的读/写操作,从而更新和维护账本。运行过程:提议(签名背书)-打包-验证。

    智能合约的生命周期

    智能合约区块链

    智能合约基础架构模型

    • 合约层可以看作智能合约的静态数据库,封装了所有智能合约调用、执行、通信规则。
    • 运维层封装了一系列对合约层中静态合约数据的动态操作。(合约的更新与自毁仅体现在新区块数据中,历史区块数据始终不可篡改)

    参考资料

    区块链落地的必需工具——预言机(Oracle)
    形式化验证:让智能合约更安全
    拜占庭将军问题

  • 相关阅读:
    MDX示例:求解中位数、四分位数(median、quartile)
    外部网关调用不到server端
    postgreSQL alter column data type to timestamp without time zone
    pgsql数据库创建序列
    Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.1.7.RELEASE:repackage failed: Unable to find main class -> [Help 1]
    微服务理论一
    使用svn提交本地任何位置的一个文件
    You have not concluded your merge. (MERGE_HEAD exists)
    org.springframework.web.bind.MissingPathVariableException: Missing URI template variable 'productCode' for method parameter of type String
    栏位索引超过许可范围:1,栏位数:0。; nested exception is org.postgresql.util.PSQLException: 栏位索引超过许可范围:1,栏位数:0。
  • 原文地址:https://www.cnblogs.com/20199321zjy/p/12509355.html
Copyright © 2011-2022 走看看