一方面,由于区块链具有不可篡改性,因此智能合约是无法更新的。

当我们将智能合约与传统软件相比时我们会发现,如果软件中存在漏洞,我们可以修复该软件并发布新版本,而智能合约的漏洞却很难修复,只能通过硬分叉来实现。考虑到智能合约平台上通常附加着大规模的区块链经济,因此智能合约无法更新是一个很大的发展限制。截至2018年6月17日,仅以太坊的市值就约为500亿美元。

另一方面,智能合约在支付计算成本上的燃料机制(gas mechanism)上也区别于传统编程语言。

因此,在编写智能合约时,开发者必须确保其中的每个功能都能不受燃料限制按预期运行。不恰当的资源分析可能会导致智能合约代码的一部分因燃料限制而无法执行,从而出现资金卡住的情况,而在传统的软件系统中却不存在这种约束。

因此,确保部署在区块链上的智能合约是无缺陷且安全的尤为重要。智能合约的安全性特别重要,因为它们是运行在拜占庭式的环境中的,每一个合约参与方都可能是拜占庭的即恶意的。例如,一个参与合约的恶意用户可能想要盗取资金;一个矿工可能在一个区块中刻意排序一些交易,以产生一些意想不到的结果;或者最糟糕的情况是用户在调用合约时引发调用其他合约(比如调用一个库合约),而后者却是由攻击者控制的,因此产生恶意行为等。

作者:Zilliqa爱好者中文社区
链接:https://www.jianshu.com/p/5379e44280f5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

智能合约语言 传统编程语言 异同相关推荐

  1. 智能合约语言Solidity Solidity API

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约语言Solidity Solidity API Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对 ...

  2. 智能合约语言Solidity 类型介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约语言Solidity 类型介绍11 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合 ...

  3. 智能合约语言 Solidity 教程系列9 - 错误处理

    这是Solidity教程系列文章第9篇介绍Solidity 错误处理. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文 ...

  4. 智能合约语言 Solidity 教程系列8 - Solidity API

    这是Solidity教程系列文章第8篇介绍Solidity API,它们主要表现为内置的特殊的变量及函数,存在于全局命名空间里. <!-- more --> 写在前面 Solidity 是 ...

  5. Nick Szabo:智能合约与传统合约的区别及其用途

    Nick Szabo:密码学家,智能合约之父. 智能合约理念可追溯至1993年,为密码学家Nick Szabo所发明.自从以太坊引入智能合约之后,其在区块链领域被越来越多的人所熟知.本文正是Nick ...

  6. BC之SC:区块链之智能合约——与传统合约的比较以及智能合约模型部署原理、运行原理相关配图

    BC之SC:区块链之智能合约--与传统合约的比较以及智能合约模型部署原理.运行原理相关配图 目录 SC与传统合约的比较 SC模型部署原理.运行原理 SC与传统合约的比较 1.传统合约VS智能合约  特 ...

  7. 区块链技术进阶-深入详解以太坊智能合约语言 solidity(含源码)-熊丽兵-专题视频课程...

    区块链技术进阶-深入详解以太坊智能合约语言 solidity(含源码)-103人已学习 课程介绍         区块链开发技术进阶-深入详解以太坊智能合约语言 solidity视频培训教程:本课程是 ...

  8. 智能合约开发solidity编程语言实例

    智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力.智能合约其实是"执行合 ...

  9. 智能合约语言 Solidity 教程系列9 - 错误处理 1

    什么是错误处理 错误处理是指在程序发生错误时的处理方式,Solidity处理错误和我们常见的语言不一样,Solidity是通过回退状态的方式来处理错误.发生异常时会撤消当前调用(及其所有子调用)所改变 ...

  10. 以太坊智能合约语言Solidity - 1 走进Solidity

    1. 走进Solidity 1.1 Remix IDE 界面初识 在本地编写我们可能会遇到各种各样的问题,所以使用在线的Remix编译器来编写合约:https://remix.ethereum.org ...

最新文章

  1. live meeting中白板无法正常使用
  2. Python从数据库读取大量数据批量写入文件的方法
  3. Moved to Google Blogger: hongstudios.blogspot.com
  4. 帕斯卡命名法 pascal命名法
  5. 论文浅尝 | 问题生成(QG)与答案生成(QA)的结合
  6. raid ahci模式哪个好_比群晖好用?威联通TR-004磁盘阵列外接盒使用详解
  7. Installing Flex Data Services on JBoss
  8. c++去除图片上的文字_图片文字修改去除方法
  9. Oracle 创建表空间与用户
  10. word2016实现制表法设置公式居中,公式居中,编号右对齐
  11. html代码雨特效代码,html开发数字雨特效代码 - 贪吃蛇学院-专业IT技术平台
  12. 统计基础(十)特征选择
  13. NYOJ 144 小柯的烦恼
  14. 课堂派考完直接看成绩怎么说(已被修复)
  15. 华为云--云平台部署管理架构图
  16. 嵌入式GUI盘点-你了解几款?
  17. EMC设计中的”猪尾巴效应“
  18. 世间最美的情诗——仓央嘉措
  19. PS学习笔记8-画笔工具
  20. java定义类属性方法_java定义类、属性、方法

热门文章

  1. JS_简单倒计时_实例_格式:0 天 20 小时 48 分 54 秒
  2. 〖Linux〗在tmux同时使用bash和zsh
  3. Uniscribe文字自动换行
  4. MyEclipse 使用文档
  5. Python_三级菜单
  6. 一个很可爱的二次元风格的个人技术博客
  7. iOS ASI--POST请求
  8. 数据转换服务-PDF转换技术
  9. 非确定型图灵机(转移函数的选择)
  10. bdm导入mysql_MySQL数据库导入教程