当前位置: 首页 > news >正文

区块链101:以太智能合同如何运作?

1620

和区块链行业的许多想法一样,普遍的困惑也被称为“智能合同”。

一项由公共区块链所制造的新技术,智能合同难以理解,因为这一术语在一定程度上混淆了所描述的核心交互。

一份标准合同概述了一段关系的条款(通常是由法律强制执行的),而一份聪明的合同则会强制与密码代码的关系。

1620

换句话说,聪明的合同就是那些由他们的创造者设置的程序。

最初构想于1993年,最初由计算机科学家和密码学家Nick Szabo描述为一种数字自动贩卖机。在他著名的例子中,他描述了用户如何输入数据或价值,并从机器接收一个有限的项目,在这种情况下是现实世界的小吃或饮料。

在一个简单的例子中,ethereum用户可以使用智能契约在某个日期向一个朋友发送10个以太(见我们的指南“什么是以太?”)。

在这种情况下,用户将创建一个契约,并将数据推到该契约中,这样它就可以执行所需的命令。

Ethereum是专门为创建智能合同而建立的平台。

但这些新工具并不打算单独使用。人们相信,它们也可以构成“分散应用”的构建模块(参见:“什么是Dapp?”),甚至是整个分散的自治公司(参见:“什么是DAO?”)

智能合约如何工作?

值得注意的是,比特币是第一个支持基本智能合同的人,因为网络可以将价值从一个人转移到另一个人身上。节点网络只有在满足某些条件时才会验证事务。

但是,比特币仅限于货币用例。

相比之下,ethereum取代了比特币更为严格的语言(一种大约100个脚本的脚本语言),并用一种允许开发者编写自己程序的语言取而代之。

Ethereum允许开发人员为他们自己的智能合同编程,或者“自动代理”,就像Ethereum白皮书所称的那样。该语言是“Turing-complete”,意思是它支持更广泛的计算指令集。

聪明的合同可以:

  • 功能是“多签名”账户,因此只有当需要的百分比的人同意时才使用资金。
  • 管理用户之间的协议,比方说,如果一个人从另一个购买保险。
  • 为其他契约提供实用程序(类似于软件库的工作方式)
  • 存储有关应用程序的信息,如域注册信息或成员记录。

人多力量大

从最后一点推断,智能合同很可能需要其他智能合同的帮助。

当一个人在炎热的夏天把一个简单的赌注压在温度上时,它可能会引发一系列的合同。

一份合同将使用外部数据来确定天气情况,另一份合同可以根据在满足条件时从第一份合同中获得的信息来结算。

运行每个合同需要以太交易费用,这取决于所需的计算能力。

正如我们的指南“Ethereum如何工作”中所解释的,当一个用户或另一个合同以足够的交易费用发送消息时,Ethereum会运行智能契约代码。

然后,Ethereum虚拟机在“字节码”中执行智能契约,或由网络读取和解释的一系列1和0。



原文发布时间为:2018-04-07
本文作者:智能计算时代
本文来源:腾讯云 云+社区,如需转载请联系原作者。

相关文章:

  • 初试Code First(附Demo)
  • 我的面试准备过程--容器(更新中)
  • js中 size和length的区别
  • 【转】mysql锁表解决方法
  • angularjs之filter过滤器
  • 一起来玩AZURE SQL(一)AZURE SQL 介绍
  • 内核线程、轻量级进程、用户线程三种线程概念解惑(线程≠轻量级进程)【转】...
  • 试用友盟SDK实现Android分享微信朋友圈
  • 程序员书单【持续更新】
  • 烂代码传奇
  • Docker的安装和测试
  • React-Native - 收藏集 - 掘金
  • java基础-数组的折半查找原理
  • Ubuntu设置屏幕分辨率
  • Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【node学习】协程
  • 【知识碎片】第三方登录弹窗效果
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Angular 2 DI - IoC DI - 1
  • ES6简单总结(搭配简单的讲解和小案例)
  • java多线程
  • mysql外键的使用
  • React Transition Group -- Transition 组件
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • use Google search engine
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 如何在 Tornado 中实现 Middleware
  • 在Mac OS X上安装 Ruby运行环境
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • # include “ “ 和 # include < >两者的区别
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (八十八)VFL语言初步 - 实现布局
  • (剑指Offer)面试题34:丑数
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET 设计模式初探
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .net程序集学习心得
  • .NET处理HTTP请求
  • .net网站发布-允许更新此预编译站点
  • @TableLogic注解说明,以及对增删改查的影响
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • []串口通信 零星笔记
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [C#]猫叫人醒老鼠跑 C#的委托及事件
  • [C++]unordered系列关联式容器
  • [CC-FNCS]Chef and Churu
  • [CQOI 2010]扑克牌
  • [Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包
  • [GN] 设计模式——面向对象设计原则概述
  • [hive] 窗口函数 ROW_NUMBER()