3.7 智能合约与solidity简介

  1. 智能合约简介
    1. 什么是智能合约:在计算机科学领域,智能合约是指一种计算机协议。 这类协议一旦部署就能自我执行和自我验证,不再需要人为干预
    2. 智能合约的优点:
      1. 高效的实时更新
      2. 准确执行
      3. 较低的人为干预风险
      4. 去中心化权威
      5. 较低的运行成本
    3. 缺点:
      1. The DAO攻击事件:合约存在漏洞导致大量以太币被盗,而且因为智能合约的去人为干预特性,使得漏洞无法线上修复。最终采用的办法是分叉。所以,智能合约需要保证合约代码的逻辑完整性和安全性,否则一旦受到攻击,后果会非常严重
  2. 智能合约的部署流程
    1. 启动一个以太坊节点
    2. 使用solidity编写智能合约
    3. 编译智能合约
    4. 将编译好的合约代码部署到以太坊上
    5. 使用web3.js库所提供的js api调用合约
  3. solidity详解
    1. 概述
      1. 以太坊拥有多种高级语言,可用于编写智能合约。最流行的一种叫做Solidity,它基于JavaScript。Solidity是迄今为止最成熟的以太坊语言,也是社区大力鼓励开发人员现在使用的语言。
    2. 语法特点:它的语法接近于Javascript,是一种面向对象的语言。 但作为一种真正意义上运行在网络上的支持支付属性的去中心合约语言,它与传统编程语言相比、又有很多不同之处。
      1. 以太坊底层是基于帐户,账户分为外部账户与合约账户,有一个特殊的Address的类型。用于定位用户,定位合约,定位合约的代码(合约本身也是一个帐户)
      2. 鉴于以太坊本身的支付属性,因此在其内部框架中支持支付、拥有payable关键字,可以在语言层面直接支付
      3. 分为状态变量(storage)和内存变量(memory),其中状态变量会永久存储在合约的存储空间
      4. 可见性,solidity可见性不像其它编程一样只分为private以及public等,它还有叫做internal以及external的可见性声明方式
      5. 异常机制,使用solidty编程,一旦出现异常,所有的执行都将会被回滚,这主要是为了保证合约执行的原子性,以避免中间状态出现的数据不一致
    3. 由于Solidity是一个静态类型的语言,所以编译时需明确指定变量的类型(包括本地变量或状态变量),Solidity编程语言提供了一些基本类型(elementary types)可以用来组合成复杂类型

猜你喜欢

转载自blog.csdn.net/u014396366/article/details/82319328
3.7