区块链之智能合约详解
链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
什么是智能合约?
智能合约又称智能合同,是由事件驱动的、具有状态的、获得多方承认的、运行在区块链之上的、且能够根据预设条件自动处理资产的程序,智能合约最大的优势是利用程序算法替代人仲裁和执行合同。
简单说,智能合约是一种用计算机语言取代法律语言去记录条款的合约。智能合约可以由一个计算系统自动执行。简单地说,智能合约就是传统合约的数字化版本。
如果区块链是一个数据库,智能合约就是能够使区块链技术应用到现实当中的应用层。智能合约是在区块链数据库上运行的计算机程序,可以在满足其源代码中写入的条件时自行执行。智能合约一旦编写好就可以被用户信赖,合约条款不能被改变,因此合约是不可更改的。
…
区块链智能合约有三个技术特性:
- 数据透明
区块链上所有的数据都是公开透明的,因此智能合约的数据处理也是公开透明的,运行时任何一方都可以查看其代码和数据。
- 不可篡改
区块链本身的所有数据不可篡改,因此部署在区块链上的智能合约代码以及运行产生的数据输出也是不可篡改的,运行智能合约的节点不必担心其他节点恶意修改代码与数据。
- 永久运行
支撑区块链网络的节点往往达到数百甚至上千,部分节点的失效并不会导致智能合约的停止,其可靠性理论上接近于永久运行,这样就保证了智能合约能像纸质合同一样每时每刻都有效。
智能合约的应用
如果能够通过区块链来发行法币,那么也可以通过智能合约技术,将代码嵌入到法币发行的行为中,则这部分法币可以被称为“可编程货币”。
比如,如果央行指定某一部分资金是发放到农业相关的账户,那么则可以对这部分资金写入相应程序,指定该部分资金只能进入到农业相关的账户中,那么这部分资金在任何情况下也不可能会被挪用到其他的账户中。
再比如,与房屋租金协议相关的智能合约只有当业主收到租金才会触发自动执行,并将公寓的安全密钥发送给租户。这个合约可以确保租金的定期支付,并且每个月重启。
智能合约在其他领域都可以广泛的应用,这里只略举两例。
智能合约的工作原理
开发人员会为智能合约撰写代码。智能合约可用于交易和(或)两方/多方之间的任何交换行为。该代码包含一些会触发合约自动执行的条件。
一旦编码完成,智能合约就会被上传到区块链网络上,即它们被发送到所有连接到网络的设备上。从另一种区块链应用——比特币——的情况来说,这就好像把关于比特币交易的网络更新上传到区块链上。
一旦将数据上传到所有设备上,用户就可以与执行程序代码的结果达成协议。然后更新数据库以记录合约的执行情况,并监督合约的条款以检查合规性。
这样一来,单独一方就无法操纵合约,因为对智能合约执行的控制权不在任何单独一方的手中。
与传统合约相比,智能合约有很多优势:
一、智能合约与传统合约相比,最大的特点和优势就是其解决了“信用”的问题。传统合约达成前,参与者先要了解各方的信用背景以选择合适的对象,合约达成后的阶段,也要依赖于各方的诚实信用,或者引入第三方(如支付宝)来担保合约履行。
二、智能合约因为链上的资源是真实透明的,合约的内容确定后就无法更改,执行更是不用依赖任何额外操作。最终,“匿名信用”成为现实,合约缔结前无需进行信用调查,缔结后也不用第三方进行担保履行,从而实现交易成本大大降低,交易效率则大幅提高。
三、智能合约的数据无法删除、修改,只能新增,而智能合约的历史可追溯,同时篡改合约或违约的成本将很高,因为其作恶行为将被永远记录并广为人知。
四、去中心化的智能合约,不依赖第三方执行合约。因此,智能合约的潜在好处包括降低签订合约、执行和监管方面的成本;因此,对很多低价值交易相关的合约来说,这是极大降低人力成本。合约验证和执行的整个过程随着用户间的直接交易而变得快速。
五、智能合约不容易出现断电、节点故障、水灾火灾等问题。智能合约保存在区块链分布式账本上时,不存在放错或丢失的风险。这意味着连接到网络的每个设备都有一份合约副本,并且数据会永远保存在网络上
相关文章:

子类化内置类型
Python 2.2之后内置类型开始可以子类化了 但是,CPython中的内置类型不会调用用户重写的类的特殊方法。 PyPy的文档中描述了这个问题。subclasses-of-built-in-types 正式情况下,CPython 并没有官方规定内置类型的子类中重写的方法是否会被隐式调用。基本…

网上商城系统源代码_多用户系统商城授权有几种方式?
网上商城系统一般都需要获取正规授权才可以投入商业使用范围,许多系统开发商为了适应不同企业的需求提供了几种不同的授权方式,企业可以选择合适的方式获得系统的使用权。下面HiShop小编就来为大家介绍一下多用户商城系统的授权方式。一、多用户系统商城…

java学习:对synchronized的测试
平时对synchronized这个关键字没有太在意,对它的认识停留在粗略翻了一下百度百科的状态,百度百科对它的解释是: “Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候ÿ…

Selenium(3)
练习1:Ecshop 录制登录后退出业务 打开系统 存储页面的标题 a.点击"登录"按钮 b.输入用户名:testing 存储输入的用户名 c.输入密码:123456 d.点击"立即登录"按钮 …

php 爬虫_Rad爬虫结合W13Scan扫描器挖掘漏洞
一、背景这几天一直在研究W13Scan漏洞扫描器,因为对Python不是太熟悉,所以进度有点慢,一直没看懂怎么将代理请求的数据转发到扫描队列中去,决定先熟悉熟悉这个功能再说;Rad爬虫最近比较火,于是就是就选择它…

Python 爬取网页HTML代码
#/usr/bin/env python #-*- coding:utf-8 -*-import urllib2 import sys import chardetreq urllib2.Request("http://tycool.top/") content urllib2.urlopen(req).read() typeEncode sys.getfilesystemencoding()##系统默认编码 infoencode chardet.detect(con…

区块链兼容以太坊智能合约
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 引言 随着区块链技术以及应用的普及,越来越多的区块链出现在大众视野中。由于区块链技术的开源特性,任何公司和个人都可以…

Linux常用命令--网终设置
1、把自己(sa)添加到sudoers配置文件中,以便于获取权限 vim /etc/sudoers 编辑文件(部分centOS版本没有vim命令,则用vi即可) 找到【root ALL(ALL) ALL】语句,在下面添加: sa ALL…

python示例异常处理与程序调试_笔记:Python异常处理与程序调试
Python异常处理与程序调试Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性。异常处理还具有释放对象,中止循环的运行等作用。在程序运行的过程中,如果发生了错误,可以返回事先约定的一个错误代码。"try...…

js传入参数为字符串问题
示例: var device_mac"11qweq234ert";//第一种方式会报错:Onclick SyntaxError: identifier starts immediately after numeric literal,数字后面紧跟着字符这种写法只有device_mac是数字的时候是正确的。传入的为字符串则应该使用…

区块链热度背后的资本市场
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 进入2018年之后大家对于加密数字货币以及区块链等话题都各自有各自的意见和想法,很多人觉得区块链技术和加密数字货币是泡沫ÿ…

袋鼠过河(动态规划)
题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远。每个弹簧力量不同,用一个数字代表它的力量,如…

jenkins-svn配置
转载于:https://www.cnblogs.com/caer/p/5924337.html

python查看所有异常_如何获取python异常发生的实际行号?
如果你想按你描述的那样做from functools import wrapsimport sys, os, tracebackdef catch_exceptions(function):wraps(function)def decorator(*args, **kwargs):try:return function(*args, **kwargs)except Exception as e:exc_type, exc_obj, exc_tb sys.exc_info()prin…

区块链从一夜暴富到一夜暴“负”的辛酸史
3.15打假日,打假虽然年年有,但与往年有别的是,今年区块连技术得到了诸多重视以及初步发展,一些带有诈骗性质的数字资产交易所在用血腥的方式不断收割着更低层级的用户,而这些平台的受害者,却往往得不到任何…

iOS消息转发
消息转发是一种功能强大的技术,可以大大增加Objective-C的表现力。什么是消息转发?简而言之,它允许未知的消息被困住并作出反应。换句话说,无论何时发送未知消息,它都会以一个很好的包发送到您的代码中,…

python参数类型限定_python限定方法参数类型、返回值类型、变量类型等|python3教程|python入门|python教程...
https://www.xin3721.com/eschool/python.htmltyping模块的作用自python3.5开始,PEP484为python引入了类型注解(type hints)类型检查,防止运行时出现参数和返回值类型、变量类型不符合。作为开发文档附加说明,方便使用者调用时传入和返回参数…

CentOS VMware 配置IP小结 静态 配置 桥接 NAT
系统启动后可先ping下外网或局域网内其它机器。如果配置虚拟机时选择的NAT上网方式,后面需要配置固定IP,请先参见VMware NAT方式下设置静态IP获得可用的IP范围和网关等信息。先将ifcfg-eth0备份到home目录下,不要放在与它同一目录下ÿ…

区块链简史:解读这场技术革命的前世今生
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 真格基金徐小平的一个“内部讲话”被泄露,揭开了创投圈对区块链的新一轮热衷。 在这份微信群的“内部讲话”中,徐小平把区块…

IncDec Sequence(codevs 2098)
题目描述 Description 给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一。 问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。 输入描述 Input…

C++ 中set
set特点: 所有元素不会重复,重复插入已经有的新值无效;所有元素按顺序排列;unordered_set除外键和值相同,所以set中的值是不可更改的set的各成员函数列表如下: 1.begin()--返回指向第一个元素的迭代器 // 如果当前容器…

python自动排课表_【python-leetcode210-拓扑排序】课程表Ⅱ
现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课…

简单粗暴告诉你什么是区块链
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链是什么?它是如何工作的? 比特币已经成为现代互联网的潮流 - 随之而来的是区块链。人们说区块链技术将导致互联网运作…

【Codeforces】Round #375 (Div. 2)
Position:http://codeforces.com/contest/723 我的情况 啊哈哈,这次raiting肯定要涨,接受过上次的教训,先用小号送肉,大号都是一发切,重回蓝咯 结果。。。 FST!! 不,这次是skip&…

python的matplotlib背景线_python中matplotlib的颜色及线条 控制
https://www.cnblogs.com/darkknightzh/p/6117528.htmlhttps://blog.csdn.net/qq_34337272/article/details/795555441.设置栅格(1)使用pyplot api命令打开栅格:plt.grid(true)设置栅格格式:plt.grid(colorr, linestyle--, linewidth1,alpha0.3)(2)使用axes类面向对…

系统权限设计思路
权限系统通常包括如下基本元素:用户、角色、权限、资源、操作。 角色分类:总经理、部长、员工。(在实际中一个用户可能存在多个角色,这就要考虑到权限累加处理) 权限分类:如”员工考勤权限”、”审核权限”…

“区块链”究竟是什么
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 什么是区块链? 说到区块链,就不得不说比特币。 2008年底,比特币之父中本聪发表了一个关于他研究的电子现金…

leetcode 179. 最大数
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。 自己写了很久的比较函数,时钟有…

cf-Sasha and Array
题目链接 http://codeforces.com/problemset/problem/719/E 解题思路 矩阵上的线段树。 因为矩阵有分配律(AB)C AC BC,所以计算总和时直接把增量矩阵乘上去就行了。用矩阵快速幂。 fib的计算尽量拉到主函数计算。 代码 #include<stdio.h…

实对称矩阵的性质_浅谈矩阵的相似对角化(一)
森屿瑾年:浅谈线性变换和矩阵之间的关系zhuanlan.zhihu.com通过前面的讨论,我们引出了线性变换在不同基下的矩阵之间的关系,知道了线性变换在不同基下的矩阵是相似的,进而我们可以通过选取不同的基,使得线性变换在这…