以太坊是最早提出做智能合约的平台。由于以太坊区块链被普遍接受,因此多数区块链的智能合约采取与以太坊相似的设计。本文将详细介绍以太坊的智能合约:它是什么?它有什么用?

以太坊的智能合约是什么

以太坊的智能合约并非现实中常见的合同,而是存在区块链上,可以被触发执行的一段程序代码,这些代码实现了某种预定的规则,是存在于以太坊执行环境中的“自治代理”。以太坊的账户与合约如图 1 所示。


图1:以太坊的账户与合约

以太坊的智能合约设计很简明。

  • 任何人都可以在以太坊区块链上开发智能合约,这些智能合约的代码是存在于以太坊的账户中的,这类存有代码的账户叫合约账户。对应地,由密钥控制的账户可称为外部账户。
  • 以太坊的智能合约程序,是在以太坊虚拟机(Ethereum Virtual Machine,EVM)上运行的。
  • 合约账户不能自己启动运行自己的智能合约。要运行一个智能合约,需要由外部账户对合约账户发起交易,从而启动其中的代码的执行。

以太坊和比特币的一个重大不同是,前者提供了图灵完备的编程语言(Solidity)和相应的运行环境(EVM)。所谓图灵完备,指的是这个脚本编程语言可以运行所有可能的计算,而比特币的UTXO模型和脚本只能运行部分计算。

以太坊的智能合约有什么用

以太坊的智能合约被广泛应用的一个用途是创建通证,通证对应的多是以太坊区块链之外的资产。

图 2 是一个简明的图示,这是从 Komhar 咨询公司的一个图示重绘而来的。图示是一个典型的 ERC20 通证发行过程:一个项目通过智能合约创建通证,这个通证是实体资产或线上资产的价值表示物。投资者(用户)发起交易,向智能合约转入以太币(ETH),智能合约自动运转,在满足一定规则后,它向投资者账户转入相应数量的通证。


图2:以太坊的通证合约逻辑示意图

以太坊智能合约是什么?相关推荐

  1. 以太坊智能合约Demo

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战demo示例快速入门,用demo例 ...

  2. 区块链兼容以太坊智能合约

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

  3. 以太坊智能合约开发第二篇:理解以太坊相关概念

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 很多人都说比特币是区块链1.0,以太坊是区块链2.0.在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太 ...

  4. 使用Remix编译和部署以太坊智能合约

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 使用Remix编译和部署以太坊智能合约 Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的 ...

  5. 区块链项目实战 - 使用以太坊/智能合约solidity,全栈开发区块链借贷记账小应用,含完整源码

    本文使用区块链平台以太坊+智能合约实现一个区块链记账的功能,具体为: 借款人和贷款人以及数额被记录在区块链中.使用区块链地址来表示借款人或者贷款人. 若一个借款人多次向一个贷款人借钱,更新所有的数额之 ...

  6. 以太坊智能合约预言机

    2019独角兽企业重金招聘Python工程师标准>>> 什么是预言机(oracle)?和以太坊智能合约开发是什么关系?在区块链去中心化的条件下如何实现预言机?面对这些疑惑首先来了解下 ...

  7. 用Visual Studio开发以太坊智能合约

    2019独角兽企业重金招聘Python工程师标准>>> 区块链和以太坊 自从我熟悉区块链.以太坊和智能合约以来,一直失眠. 我一直在阅读,阅读和阅读,最后我能够使用一些工具,他们建议 ...

  8. truffle (ETH以太坊智能合约集成开发工具) 入门教程

    truffle (ETH以太坊智能合约集成开发工具) 入门教程 前言 在你了解区块链开发之前,你有必要了解区块链的一些基础知识,什么是DApp,DApp与传统app的区别, 什么是以太坊,以太坊中的智 ...

  9. 以太坊 智能合约 简介

    以太坊是一个分布式的计算平台.它会生成一个名为Ether的加密货币.程序员可以在以太坊区块链上写下"智能合约",这些以太坊智能合约会根据代码自动执行. 以太坊是什么? 以太坊经常与 ...

  10. 以太坊智能合约开发第七篇:智能合约与网页交互

    原文发表于:以太坊智能合约开发第七篇:智能合约与网页交互 上一篇中,我们通过truffle开发框架快速编译部署了合约.本篇,我们将来介绍网页如何与智能合约进行交互. 编写网页 首先我们需要编写一个网页 ...

最新文章

  1. C语言字符串一道比较难的题!_只愿与一人十指紧扣_新浪博客
  2. C#-DataSet和DataTable详解
  3. 没有人能够解释为什么飞机可以待在空中
  4. openpyxl模块介绍
  5. BZOJ 2111 [ZJOI2010]Perm 排列计数:Tree dp + Lucas定理
  6. 同一DIV内,两个行内块元素不对齐的解决方案
  7. Eclipse深度患者设置VSCode快捷键
  8. java 线程中创建线程_java – 在线程中创建线程 – 良好的做​​法?
  9. 吴恩达机器学习 -- 神经网络学习
  10. PHP 执行系统外部命令 system() exec() passthru()
  11. ATL-CComCreator(CComCoClass的使用)
  12. mysql 修改最大连接数
  13. easyui datagrid 列中的checkbox 动态绑定
  14. 文氏图Java逻辑表达式,离散数学及其应用 PDF 完整第7版
  15. Java冒泡算法(优化版)
  16. Linux编译dd源码
  17. 3D打印机T3升级corexy  制作过程(二)
  18. 数据库课程设计-宿舍管理系统
  19. 如何调出手机信任计算机的指令,苹果手机怎么连接到电脑上面去发(苹果在哪设置信任电脑)...
  20. Ebistrategy亦策软件提升仙婷贸易竞争实力

热门文章

  1. 纯英文,数字不换行问题处理
  2. tiny4412使用MiniTools时连不上
  3. 计算机二级中的9种运算问题:笛卡尔积,自然连接,交,并,选择,投影。。。
  4. 在vscode的html文件中写入图片标签显示“二进制文件”无法打开解决办法(自记录)
  5. FastDFS 设计理念、文件上传、下载、同步、删除和断点续传原理
  6. PHP如何使用免费在线客服插件
  7. vue element上一步下一步跳转
  8. android cta 权限,Android手机应用CTA认证自测
  9. 【器件选型】TVS二极管在复杂电路中的三大应用
  10. linux最简单的命令,Linux 简单命令整理