01_以太坊概念入门

在这里插入图片描述

文章目录

  • 以太坊概念介绍
    • 产生背景 (区块链1.0时代)
    • 什么是以太坊 (区块链2.0时代)
    • 以太坊的特点
    • 智能合约与一般程序的区别
  • 部署第一个智能合约
    • Remix IDE
    • 部署第一个智能合约
    • 运行智能合约
  • 以太坊名词介绍
    • ETH Wallet
    • EVM
    • Solidity
    • Dapp (去中心化应用,即Decentralized application)
    • Ether(以太币)
    • 公有链、联盟链、私有链
    • Truffle
    • Web3.js
    • 以太坊技术架构


以太坊概念介绍

产生背景 (区块链1.0时代)

比特币开创了去中心化密码货币的先河,时间充分验证了区块链技术的可行性和安全性.然而比特币并不完美

  1. 比特币网络中只有一种符号,只支持比特币流通.缺乏应用层面的想象空间
  2. 比特币仅仅只能存储交易数据.不足以构建更高级应用

什么是以太坊 (区块链2.0时代)

能够在区块链上实现智能合约(代码)、开源的操作系统, 如果把区块链比作硬件设施的话.以太坊则是Android操作系统.开发者人员能够在以太坊平台上建立和发布下一代分布式应用.

以太坊的特点

  1. 以太坊并未给用户预设操作 (例如:比特币交易), 而是允许用户按照自己的意愿创建复杂的分布式应用
  2. 以太坊官方推荐的Solidity编程语言是图灵完备的
  3. 和其它区块链一样,以太坊也有一个点对点协议
  4. 以太坊每一个网络节点都可以安装以太坊虚拟机来执行相同的智能合约.

智能合约与一般程序的区别

  1. 去中心化、以信任为基础 (缺点)
  2. 运行智能合约需要费用 (思考)

部署第一个智能合约

Remix IDE

以太坊官方推荐的智能合约开发IDE,适合新手,可以在浏览器中快速部署测试智能合约.缺点是必须要联网才能编写、测试、部署

  • Solidity官网:https://solidity.readthedocs.io/en/v0.6.3/
  • Solidity中译:https://learnblockchain.cn/docs/solidity/
  • Remix IDE地址: https://remix.ethereum.org

01_以太坊概念入门_第1张图片

部署第一个智能合约

/*
   pragma: 代表版本声明 ^代表向上兼容
   solidity:开发语言
   >=0.6.0 <0.7.0 代表当前采用的是0.6.x的编写语法
   ^: 代表支持当前版本及当前以上的版本
*/

pragma solidity >=0.6.0 <0.7.0;
// contract 代表创建一个智能合约,本质就是一个类
contract Demo01{
    
    function fnDemo1(int num) public pure returns (int){
        return num + 1;
    }
}

运行智能合约


以太坊名词介绍

ETH Wallet

以太坊客户端,其实我们可以把它理解为一个智能合约运行环境,它提供账户管理、挖矿、转账、智能合约的部署和执行等等功能,而EVM是由以太坊客户端提供的

EVM

EVM(Ethereum Virtual Machine)以太坊虚拟机是以太坊中智能合约的运行环境.如果把Solidity类比Java.则EVM则为JVM

Solidity

一种语法类似JavaScript的高级语言。语法结构与JavaScript更为接近,支持结构体、面向对象 (封装、继承、多态、接口、抽象合约) 等特性,Solidity会被编译为用于EVM的代码。最大的优势在于可以直接与以太坊分布式账本进行交互。

Dapp (去中心化应用,即Decentralized application)

Dapp是可以让“终端用户间、终端用户和资源间、资源和资源间”在没有中间人的情况下直接进行互动、商定协议或通讯的应用程序

Ether(以太币)

以太币是在以太坊中使用的货币的名称。以太币被用于支付在EVM(以太坊虚拟机)中进行计算所需的开销. Gas

公有链、联盟链、私有链

公有链:对所有人开放,任何人都可以参与,联盟链:Hyperledger Fabric.支持权限、多区块互联. 私有链:对单独的个人或公司内部开放

Truffle

Truffle是针对基于以太坊的Solidity语言的一套开发框架,对开发,测试,部署实现了非常友好的支持. 让开发者专注智能合约本身

Web3.js

Web3.js是以太坊提供的一个Javascript库,提供了一系列与区块链交互的Javascript对象和函数,包括查看网络状态,查看本地账户、查看交易和区块、发送交易、编译/部署智能合约、调用智能合约等 (提供了点对点网络交互的API)

以太坊技术架构

01_以太坊概念入门_第2张图片

在这里插入图片描述

你可能感兴趣的:(Solidity智能合约入门)