• 什么是智能合约,区块链和智能合约的关系及原理


    智能合约(smart contract)这个术语至少可以追溯到 1995 年,是由多产的跨领域法 律学者尼克·萨博(Nick Szabo)提出来的。他的定义是“一个智能合约是一套以数字形式 定义的承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。”

    承诺

    一套承诺指的是合约参与方同意的(经常是相互的)权利和义务。这些承诺定义了合约 的本质和目的。以一个销售合约为典型例子。卖家承诺发送货物,买家承诺支付合理的货款。

    数字形式

    数字形式意味着合约不得不写入计算机可读的代码中。这是必须的,因为只要参与方达 成协定,智能合约建立的权利和义务,是由一台计算机或者计算机网络执行的。

    更进一步地说明:

    达成协定 智能合约的参与方什么时候达成协定呢?答案取决于特定的智能合约实施。一般而言,当参与方通过在合约宿主平台上安装合约,致力于合约的执行时,合约就被发现了。

    合约执行 “执行”的真正意思也依赖于实施。一般而言,执行意味着通过技术手段积极实施。

    计算机可读的代码 另外,合约需要的特定“数字形式”非常依赖于参与方同意使用的协议。

    协议

    协议是技术实现(technical implementation),在这个基础上,合约承诺被实现, 或者合约承诺实现被记录下来。选择哪个协议取决于许多因素,最重要的因素是在合约履行期间,被交易资产的本质。

    再次以销售合约为例。假设,参与方同意货款以比特币支付。选择的协议很明显将会是 比特币协议,在此协议上,智能合约被实施。因此,合约必须要用到的“数字形式”就是比 特币脚本语言。比特币脚本语言是一种非图灵完备的、命令式的、基于栈的编程语言,类似 于 Forth。

    2、智能合约与区块链的关系

    尼克萨博关于智能合约的工作理论迟迟没有实现,一个重要原因是因为缺乏能够支持 可编程合约的数字系统和技术。区块链技术的出现解决了该问题,不仅可以支持可编程合约, 而且具有去中心化、不可篡改、过程透明可追踪等优点,天然适合于智能合约。因此,也可 以说,智能合约是区块链技术的特性之一。

    如果说区块链 1.0 是以比特币为代表,解决了货币和支付手段的去中心化问题,那么区块链 2.0 就是更宏观的对整个市场去中心化(最典型的就是ETH 以太坊以及即将上线的EOS),利用区块链技术来转换许多不同的数字资产而 不仅仅是比特币,通过转让来创建不同资产的价值。区块链技术的去中心化账本功能可以被 用来创建、确认、转移各种不同类型的资产及合约。几乎所有类型的金融交易都可以被改造 成在区块链上使用,包括股票、私募股权、众筹、债券和其他类型的金融衍生品如期货、期 权等。

    智能合约看上去就是一段计算机执行程序,满足可准确自动执行即可,那么为什么用传 统的技术为何很难实现,而需要区块链技术等新技术呢?传统技术即使通过软件限制、性能 优化等方法,也无法同时实现区块链的特性:1 是数据无法删除、修改,只能新增,保证了 历史的可追溯,同时作恶的成本将很高,因为其作恶行为将被永远记录;2 是去中心化,避 免了中心化因素的影响。

    基于区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避 免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技 术的特性保障存储、读取、执行整个过程透明可跟踪、不可攥改。同时,由区块链自带的共 识算法构建出一套状态机系统,使得智能合约能够高效地运行。

    3、智能合约工作原理

    基于区块链的智能合约包括事务处理和保存的机制,以及一个完备的状态机,用于接受 和处理各种智能合约;并且事务的保存和状态处理都在区块链上完成。事务主要包含需要发 送的数据;而事件则是对这些数据的描述信息。事务及事件信息传入智能合约后,合约资源 集合中的资源状态会被更新,进而触发智能合约进行状态机判断。如果自动状态机中某个或 某几个动作的触发条件满足,则由状态机根据预设信息选择合约动作自动执行。

    智能合约系统根据事件描述信息中包含的触发条件,当触发条件满足时,从智能合约自 动发出预设的数据资源,以及包括触发条件的事件;整个智能合约系统的核心就在于智能合 约以事务和事件的方式经过智能合约模块的处理,出去还是一组事务和事件;智能合约只是 一个事务处理模块和状态机构成的系统,它不产生智能合约,也不会修改智能合约;它的存 在只是为了让一组复杂的、带有触发条件的数字化承诺能够按照参与者的意志,正确执行。

    https://baijiahao.baidu.com/s?id=1602311106138641488&wfr=spider&for=pc

  • 相关阅读:
    OpenResty
    Jmeter
    kubernetes 中部署 metrics-server
    Jenkins 灰度
    socat管理haproxy以及haproxy调优
    代码质量测试工具SonarQube安装配置
    Jenkins+主从+Pipeline+Webhook
    xtrabackup 实现MySQL数据库备份
    idea Error:java: Compilation failed: internal java compiler error
    使用TableSnapshotInputFormat读取Hbase快照数据
  • 原文地址:https://www.cnblogs.com/feng9exe/p/9895275.html
Copyright © 2020-2023  润新知