区块链中的智能合约是什么?
链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
“智能合约是一套以数字形式定义的承诺,承诺控制着数字资产并包含了合约参与者约定的权利和义务,由计算机系统自动执行。”
“智能合约程序不只是一个可以自动执行的计算机程序,它本身就是一个系统参与者,对接收到的信息进行回应,可以接收和储存价值,也可以向外发送信息和价值。这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。”
好了,反正我们光看定义是怎么也不能理解透彻的,九少爷继续以例子的形式来讲讲。
传统合约和智能合约
在我们的现实社会中,我们会遇到很多场景去签一些合同,以约束双方的经济行为,但是即使我们签了合同,也无法保证在合同期内双方就一定能完整履行合同内的承诺。
举个例子:
你和你的一个朋友打赌,说明天的天气预报到底准不准,赌注20块钱,你赌准,他赌不准。然后到了第二天,天气果然和天气预报说的一样,那么他应该支付你20块钱,但是你的朋友耍赖,就是不支付这20块,结果就是你也没什么办法。
那么一般是怎么处理呢?你们为了保证你们的对赌能正常,你们找了一个可信任中介人,你们把各自的20块钱放到了中介那里,这样总可以了吧。
但是第二天,中介又为难了,因为天气预报预报的是多云,而实际天上的云不多也不少,这时你认为这样的天气就是多云,而你的朋友认为这样的天气不是多云,中介也是人啊,于是在判断天气到底是不是符合昨天天气预报的条件上,又出了问题。
最后一番争吵过后,中介决定一半云也算多云天气,你赢了这个对赌,正准备给你40块钱的时候,发现钱没带,于是只好等第二天才能把钱给你。
所以你看,传统的合约会受到各种维度的影响,自动化维度,主客观维度,成本维度,执行时间维度,违约惩罚维度,适用范围维度等。
而智能合约则在很大程度上解决了这些问题。
你只需要提前规定好合约内容,程序就会在触发合约条件的时候自动执行合约内容。
譬如,你规定合约内容是,明天中午12点判断天气是否和天气预报一样,如果是多云天气的话,超过一半云就算多云,否则不算。当第二天中午12点合约执行,如果你赢了,钱会自动打到你账上。一切解决。
例子举得比较简单,但你可以领会到智能合约能解决的一些问题。
智能合约和区块链
“智能合约的工作理论迟迟没有实现,一个重要原因是因为缺乏能够支持可编程合约的数字系统和技术。区块链技术的出现解决了该问题,不仅可以支持可编程合约,而且具有去中心化、不可篡改、过程透明可追踪等优点,天然适合于智能合约。因此,也可以说,智能合约是区块链技术的特性之一”
摘录来自: “区块链:从数字货币到信用社会”。
有一些朋友可能会问,九少爷,你上面说的智能合约,不就是一段条件判断的代码嘛,现在很多担保网站或系统不是也一样嘛,像淘宝的交易流程,不也是买家付款到系统里,然后卖家发货,买家收到货,系统再把钱打给卖家。这不早就实现了嘛?
区块链的特性是:
数据无法删除、修改,只能新增,保证了历史的可追溯,同时作恶的成本将很高,因为其作恶行为将被永远记录
去中心化,避免了中心化因素的影响
而像上面说的淘宝那套支付担保系统,依然是中心化的,合约是否公正或正常执行,也全靠中心来决定。如果中心要作恶,我们依然没有办法。
而基于区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使智能合约能够高效地运行。
智能合约的应用场景
智能合约能应用的场景将非常广泛,譬如房租租赁、差价合约、代币系统、储蓄钱包、作物保险、金融借贷、设立遗嘱、证劵登记清算、博彩发行等。
我们以房租租赁场景举个例子:
大家知道老九村是一个基于区块链交易系统的村子,村里阿花向阿明租了一套房子,租金500,月付,租一年。房子的锁是密码锁,需要阿花生成的开锁秘钥打开。
智能合约执行步骤:
1.阿花和阿明的合约提交给村里的智能合约服务器,服务器发布到区块链上生效。
2.阿花将开锁秘钥和账户地址提供给智能合约服务器。
3.阿明向服务器支付500 * 12 = 6000老九币作为抵押。
4.合约开始执行,服务器从阿明的抵押资金中扣除500,发给阿花的账户,并把房子的开锁秘钥发给阿明,记录记到区块链。
5.每个月1号智能合约都会检查租约时间,没到期,就会自动扣除租金,然后把新的开锁秘钥发给阿明。
6.如果租约到期,服务器就会生成一条合约纪录,标志合约终止,并发布到区块链上,合约终止。
7.整个过程受到老九村村委会监督,村委会可以随时查看合约执行情况。
这样,阿花和阿明什么事都不用做,就完成了这套交易。当然不同的场景合约条件和内容也是不尽相同的。
智能合约的未来
随着区块链技术的到来,智能合约与区块链的结合可能会让人类社会结构产生重大变革。智能合约解决了传统合约中的信任问题,大幅降低了信任成本,虽然智能合约还有一些问题,但随着技术的不断发展,必然会走向一个好的发展之路。
相关文章:

Python学习【第七篇】基本数据类型
基本数据类型 bytes数据类型 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别…

web项目答辩总结_web实战项目遇到问题总结探索
最近在写一个django的web项目,后端代码基本都已经写好了,主要是前端,以前学过一段前端,只是对一些基本的方法知道,但还有很多东西不熟练,问题是在遇到表单数据时候,如何对参数整体打包发送后端接…

iOS----------计算一段代码执行时间
CFAbsoluteTime start CFAbsoluteTimeGetCurrent(); //在这写入要计算时间的代码 // do something CFAbsoluteTime end CFAbsoluteTimeGetCurrent(); NSLog("%f", end - start);转载于:https://www.cnblogs.com/KiVen2015/p/8926265.html

区块链热度不减 应用风险不容忽视
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 今年来,除了区块链本身之外,越来越多的业内人士也更加关注区块链在金融等方面的应用。 4月2日,由京东金融研究院…

POJ 3258:River Hopscotch (最大化最小值)
【题意】 牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离, 现在去掉M块石头,要求去掉M块石头后,剩下的石头之间以及石头与河岸的最小距离…

python获取文本光标_使用python readline时如何获取(并设置)当前bash光标位置?
我可以建议Python curses吗?The curses module provides an interface to the curses library, the de-facto standard for portable advanced terminal handling.While curses is most widely used in the Unix environment, versions are available for DOS, OS/2…

Gridview改变单元格颜色
if (e.Row.RowType DataControlRowType.DataRow) { e.Row.Cells[1].BackColor System.Drawing.Color.Red;//第二列的颜色 }转载于:https://www.cnblogs.com/objectxhy/p/5896970.html

区块链为什么这么热?有这么大热度的原因是什么
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链的热度是超乎想象的。 在上地和西二旗密集的写字楼办公空间里,年轻人三五成群聚在一起,在午饭后或散步或聚在茶水间…
使用nmonchart把.nmon文件转换成html
转载:https://blog.csdn.net/zd470015321/article/details/68923280 我的环境 :centos6.6 下载地址 nmon: http://nmon.sourceforge.net/pmwiki.php?nSite.Download nmon analyzer: https://www.ibm.com/developerworks/community/wikis/home?langen#!/wiki/Power…

java web中文乱码处理笔记
一、发生中文乱码的情况有以下三种: 1.表单form的两种提交出现中文乱码 ① get提交 ② post提交 2.超链接(本质是get提交)出现中文乱码 3、sendRedirect(发生乱码) 二、乱码产生的原因: 浏览器编码 utf-8 发送请求给服务器是会产…

python websocket 客户端_aiohttp Websocket客户端和HTTP
我正在编写一个应用程序,它需要从两个来源接收事件。有些事件来自Websocket客户机连接,有些来自传入的HTTP请求。aiohttp是否可以在同一个应用程序中同时使用这两个侦听器,还是需要两个单独的可执行文件?在我目前有一个函数&#…

你关注区块链了吗?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 前言:关于什么是区块链的论述有很多,本文从公共数据库、印刷机、治理、经济学、组织方式等方面进行阐述,作者观点…

(转)记忆杭州中的(非杭户籍人)
非杭州户籍外来人员在杭州 一、为杭州所做的贡献 1.知识分子 科技创新(这个很简单明了,现在的国家已经不是八九十年代的国家了,飞速发展的今天离不开一群知识分子) 人才培养(光谈科技发展,也要有一群人教育…

ProgressDialog的使用-------------范例(学习笔记)
-------------------------------XML------------------------ <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:tools"http://schemas.android.com/too…

python自动化ppt_python自动化怎么操作ppt?
社会的不断进步,科技的不断发展,让每个人都越发趋向自动化的社会,大家有没有想过居然可以在工作软件上也实现自动化,是不是非常神奇呢?请大家在惊叹神奇之余,跟着小编一起来感受下吧~python-pptx模块简介1、…

你不应该关注区块链的“杀手级应用”
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 在每一次区块链大会上,人们无不讨论一个话题:区块链的下一个杀手级应用是什么?下一个获得大规模应用的成功案例是…

项目管理中问题与对策探讨
[摘要]以深圳市东深电子技术有限公司的项目管理现状为基础,剖析该公司在项目管理方面存在的弊端,并提出若干指导性建议。 一、存在问题 深圳市东深电子技术有限公司是一家以水行业计算机监控系统工程项目为主的公司。该公司成立于1997年,经过…

ssm启动报错cannot find class_SSM整合补充 RBAC(权限控制)过滤器
1. 什么是RBAC(1) 请简述什么是RBACRBAC(Role-Based Access Control)基于角色的访问控制RBAC认为权限的过程可以抽象概括为:判断 [Who 是否可以对 What 进行 How的访问操作(Operator)]Who:权限的拥有者或主键What:权限针对的对象或资源How:具体的权限Operator:操作.表明对 What…
EasyPusher实现Android手机屏幕桌面直播,实时推送操作画面,用于手游直播等应用
本文转自EasyDarwin开源团队成员John的博客:http://blog.csdn.net/jyt0551/article/details/52651194由于Android 5.0提供了捕获当前屏幕画面的SDK,基于该SDK,EasyPusher实现了实时推送手机屏幕画面的功能。经测试,效果很不错&…

区块链技术之以太坊ETH白皮书
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 基于中本聪区块链比特币1.0之后,天才少年Vitalik Buterin(V神)在2013年年末发布了以太坊白皮书,其实…

codevs1137 计算系数
1137 计算系数 2011年NOIP全国联赛提高组 时间限制: 1 s空间限制: 128000 KB题目等级 : 黄金 Gold题解题目描述 Description给定一个多项式(ax by)^k,请求出多项式展开后x^n y^m项的系数。 输入描述 Input Description共一行,包含 5 个整数࿰…

选择器优先级_CSS选择器优先级指北
来源:大前端FE(gh_f26dd6c6cfbf)欢迎大家一起来学习前端,期待你加入~相信大部分人刚开始写 css 的时候应该碰到过这样的问题。明明只改了一行样式,然后整个页面就变成了这样↓本文将小节一下 css的优先级,帮助解决碰到的样式重叠 …

区块链膨胀:以太坊客户如何解决存储问题
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 4,270个代币。27,358笔交易。数字小猫463,713。 以太坊最近举办了很多活动,虽然很多加密爱好者认为这是一个积极的信号ÿ…

Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)
一、进程: 1、语法 2、进程间通讯 3、进程池 二、Gevent协程 三、Select\Poll\Epoll异步IO与事件驱动 一、进程: 1、语法 1 简单的启动线程语法 2 def run(name): 3 time.sleep(2) 4 print("hello",name) 5 6 if __name__ __main__:…

python画圣诞帽_用Python给头像加上圣诞帽
原标题:用Python给头像加上圣诞帽随着圣诞的到来,大家纷纷官微给自己的头像加上一顶圣诞帽。我们有必要写一个程序来做这件事情。用到的工具OpenCVdlib流程一、素材准备首先我们需要准备一个圣诞帽的素材,格式最好为PNG,因为PNG的…
Python知识点进阶——生成器
生成器为什么要将列表转化为迭代器?因为列表太大的话用内存太大,做成迭代器可以节省空间,用的时候再拿出部分。生成器是不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,知道…

以太坊开启区块链2.0时代
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 今天我们唠唠以太坊,这个开启区块链2.0时代的伟大项目。 前面我们说比特币实际上是一个大账本,从比特币白皮书里走出来的区…

手把手教你架构3d游戏引擎pdf_一个在游戏行业摸爬滚打了十几年的人,为何我对这本书情有独钟...
Big News!《游戏开发:世嘉新人培训教材》今日开始预售啦!经过漫长的等待,这次终于可以买到了。现在下单,你将在图书出印厂的第一时间收到书哦~这本书由世嘉一线开发者执笔,并被选为世嘉新人培训…

PostgreSQL获取年月日
1.获取当前日期的年份 select to_char(t.detect_date,YYYY) select extract(year from now())为double precision 格式类型select to_char((SELECT now()::timestamp),yyyy) 2.获取下一年select to_char((SELECT now()::timestamp 1 year),yyyy) 3.获取上一年select to_char((S…

查看mysql主外键信息
SELECT *FROMinformation_schema.key_column_usage tWHERE t.constraint_schema 库名称AND t.constraint_name 外键名;转载于:https://www.cnblogs.com/igoodful/p/8954091.html