☞ ░ 前往老猿Python博文目录

一、智能合约的定义

通俗来说,智能合约就是一种在计算机系统上,当一定条件满足的情况下可被自动执行的合约,智能合约体现为一段代码及其运行环境。例如银行信用卡的自动还款就是一种典型的智能合约。

我们来看看智能合约概念的演进历史:

  • 智能合约概念于1994年由Nick Szabo首次提出,百度上关于智能合约的定义:智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合约的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
  • 1997年,Nick Szabo对智能合约的定义进行了完善:智能合约是一套以数字形式指定的承诺,包括合约参与方可以在上面执行这些承诺的协议。
  • 2016年,工信部在《中国区块链技术和应用发展白皮书》上是这样定义智能合约的:智能合约是一段部署在区块链上可自动运行的程序,涵盖范围包括编程语言、编译器、虚拟机、时间、状态机、容错机制等。

智能合约有狭义的智能合约和广义的智能合约两种定义:

  • 狭义的智能合约是涉及相关商业逻辑和算法的程序代码,把人、法律协议和网络之间的复杂关系程序化
  • 广义的智能合约是一种计算机协议,一旦部署就能实现自我执行和自我验证。

二、区块链+智能合约的融合发展

从上面智能合约的定义和发展历史来看,智能合约是先于区块链出现的,在区块链发展初期如比特币并没有引入智能合约的技术,同样在区块链之前,智能合约也并没有广为使用。智能合约是在区块链2.0阶段才引入的,或者应该反过来说,引入智能合约后的区块链标志着区块链2.0时代的开启。不少人认为,智能合约在区块链中的实现,是区块链能够被称为颠覆性技术的主要原因之一。区块链智能合约的主要特点可以简单地概括为:去中心化、智能高效(自动执行、无人为干预)、准确、低成本。

老猿认为区块链技术和智能合约融合发展的大致历程是这样的:

  1. 区块链1.0以比特币为代表,解决了货币和支付手段的去中心化问题。去中心化的区块链技术核心在于沿时间轴记录数据及合约,具有安全、透明、不可篡改等特点;

  2. 随着区块链技术的发展,利用区块链技术带动金融市场去中心化成为区块链2.0的内在驱动力;

  3. 解决了信任问题的区块链技术为智能合约提供了可信的的自动化执行环境:

    ※ 将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可攥改。智能合约的编程语言就是规束合约的法律条文,交易双方可完全放心的进行交易

    ※ 区块链共识算法构建的一套状态机系统,使得智能合约能够高效地运行。智能合约一旦触发就会立即执行,自动按照合约规范进行操作。整个过程智能高效,短时间快速完成更是体现了它的准确和经济。

    ※ 智能合约在去信任化环境下,按顺序触发设定的合约内容并完成系列安全的自动化操作,为智能合约的实践提供了技术保障

    ※ 区块链数据完备可追溯的属性,可支持事后审计以追踪合约动态

区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰,为智能合约提供了可信的自动化执行环境。

三、区块链中智能合约的创建和执行

智能合约需要经过合约起草和合约提交后,才能在区块链环境中进行合约执行。

四、智能合约的不足

如前所述,基于区块链的智能合约提供了一个可信的智能合约执行环境,保障了合约的高效、安全地执行,但智能合约并非完美,它也存在安全性等问题。具体问题如下:



智能合约的以上不足,老猿认为是由于智能合约是运行在特定环境的程序代码,我们知道BUG几乎是无法完全避开所有软件天生带来的,作为智能合约的运行环境和智能合约本身的编程语言以及实现代码都可能存在漏洞,再加上区块链金融本身所表征的财富带来的吸引力,可能遭遇攻击者大量攻击导致安全性风险、隐私泄露风险以及性能问题。

更多关于区块链的内容请见老猿专栏《零基础学区块链》或《零基础学区块链专栏文章目录》。

本文参考资料:

1、《区块链科普:为什么要用区块链技术实现智能合约?

2、《百度百科:智能合约

关于收费专栏

老猿的付费专栏《使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏加起来只需要19.9元,都适合有一定Python基础但无相关专利知识的小白读者学习。这2个收费专栏都有对应免费专栏,只是收费专栏的文章介绍更具体、内容更深入、案例更多。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

跟老猿学Python、学5G!

☞ ░ 前往老猿Python博文目录

区块链学习5:智能合约Smart contract原理及发展历程科普知识的更多相关文章

  1. Truffle 4.0、Geth 1.7.2、TestRPC在私有链上搭建智能合约

    目录 目录 1.什么是 Truffle? 2.适合 Truffle 开发的客户端 3.Truffle的源代码地址 4.如何安装? 4.1.安装 Go-Ethereum 1.7.2 4.2.安装 Tru ...

  2. 以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约

    以太坊开发(二)使用Ganache CLI在私有链上搭建智能合约 在上一篇文章中,我们使用Truffle自带的客户端Truffle Develop,在私有链上搭建并运行了官方提供的WebPack智能合 ...

  3. 区块链学习笔记:DAY01 区块链的技术原理

    其实很早之前就听过区块链,也看过有关区块链的介绍,那个时候的理解主要还是一句话:分布式记账 然后开始关注比特币,听了有几年了,对于其来历.用途其实一直都是一知半解. 这次的课算是第一次以一个学员的身份 ...

  4. 区块链学习(四)truffle部署编译智能合约以太坊私有链

    前面我们介绍了以太坊私有链的搭建以及多节点私有链网络,这次我们介绍如何使用truffle框架来部署编译智能合约到我们之前搭建的私有链网络中. 搭建环境及需使用的工具:ubuntu18.04  Truf ...

  5. Hyperledger Fabric【区块链学习一】

    Hyperledger Fabric 学习 什么是区块链 什么是区块链在我们没有接触的时候,只知道它是一个去中心化的存储方式.当我们发生交易,或者动作的时候我们会将记录通知给所有参与者共同维护,达到去 ...

  6. 区块链学习7:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名

    ☞ ░ 前往老猿Python博文目录 ░ 在Hyperledger Fabric区块链中,有背书节点进行背书,Hyperledger Fabric 使用背书策略来定义哪些节点需要执行交易. Hyper ...

  7. 区块链学习7:超级账本项目Hyperledger与Fabric以及二者的关系

    ☞ ░ 前往老猿Python博文目录 ░ 一.超级账本(hyperledger) 超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,成员包括 ...

  8. 区块链学习笔记:DAY05 如何使用公有云区块链服务

    这是最后一节课了,主要讲华为云在云区块链提供的服务,如何基于华为云BCS来构建应用 先来个简单的比喻: 1.有关BaaS的范围定义 包含物理主机.虚拟主机.容器服务.区块链.智能合约和服务 2.华为云 ...

  9. 区块链学习笔记:D02 区块链的技术发展历史和趋势

    对于区块链的技术发展历史,其实在我的印象中也就对比特币有所了解,也听过什么火币之类的玩意,但是具体是什么.怎么运作的就不清楚了... 这次的内容首先是讲解了区块链的技术演进,一张图一目了然,虽然里面涉 ...

随机推荐

  1. C# 集合类(四)

    C# 集合类自己经常用到: 数组(Array).动态数组(ArrayList).列表(List).哈希表(Hashtable).字典(Dictionary),对于经常使用的这些数据结构,做一个总结,便 ...

  2. 自定义MFC对话窗口的类名

    默认情况下,MFC对话框的窗口类名为"#32770",如果想自定义窗口类名呢,需要两步: 1.修改rc文件 这一步需要直接编辑rc文件,使用任意记事本工具即可,找到窗口的相关定义, ...

  3. tcpack--4延时ack

    TCP在收到数据后必须发送ACK给对端,但如果每收到一个包就给一个ACK的话会使得网络中被注入过多报文.TCP的做法是在收到数据时不立即发送ACK,而是设置一个定时器,如果在定时器超时之前有数据发送给 ...

  4. binary hacks读数笔记(od命令)

    Linux od命令用于输出文件内容. od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来 -t<输出格式>或--format=<输出格式> 设置输出格式. 实例 ...

  5. spring中的事务有两种方式

    1种是我们常用的声明式事务,如注解,或者配置文件配置的. 2种是编程式事务,如 TransactionTemplate 类的使用.

  6. 掉电后osdmap丢失无法启动osd的解决方案

    前言 本篇讲述的是一个比较极端的故障的恢复场景,在整个集群全部服务器突然掉电的时候,osd里面的osdmap可能会出现没刷到磁盘上的情况,这个时候osdmap的最新版本为空或者为没有这个文件 还有一种 ...

  7. ceph的rbd备份软件ceph-backup

    teralytics是一家国外的大数据公司,这个是他们开源的ceph的备份的工具,在twitter上搜索相关信息的时候看到,觉得不错就拿来试用一番 这是个什么软件 一个用来备份 ceph 的 rbd ...

  8. Notepad++安装教程

        1.官网下载 官方网站:https://notepad-plus-plus.org/downloads/ 上面有历史版本,一般就选择最新版下载 2.安装 [3]打开记事本进行设置: 设置--& ...

  9. JXLS2.4导出Excel

    1.添加依赖:http://mvnrepository.com/artifact/org.jxls <dependency>     <groupId>org.jxls< ...

  10. 15 张图, 把TCP/IP 讲得一清二楚!

      一.TCP/IP模型 TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Interne ...