📜  Solidity 简介

📅  最后修改于: 2022-05-13 01:55:09.363000             🧑  作者: Mango

Solidity 简介

Solidity是以太坊创建的一种全新的编程语言,以太坊是按市值计算的第二大加密货币市场,于 2015 年发布,由 Christian Reitwiessner 领导。下面列出了 Solidity 的一些关键特性:

  • Solidity 是一种高级编程语言,旨在实现智能合约。
  • 它是静态类型的面向对象(面向合同)的语言。
  • Solidity 深受运行在以太坊虚拟机 (EVM) 上的Python、c++ 和 JavaScript 的影响。
  • Solidity 支持复杂的用户定义编程、库和继承。
  • Solidity 是运行平台的区块链的主要语言。
  • Solidity 可用于创建合约,如投票、盲拍、众筹、多重签名钱包等。

以太坊

以太坊是一个基于区块链领域的去中心化开源平台,用于运行智能合约,即完全按照程序执行程序的应用程序,没有任何欺诈、第三方干扰、审查或停机的可能性。它为近 2,60,000 种不同的加密货币提供平台。以太币是由以太坊矿工生成的加密货币,用于奖励为保护区块链而执行的计算。

以太坊虚拟机(EVM)

以太坊虚拟机简称 EVM,是在以太坊中执行智能合约的运行时环境。它广泛专注于使用公共节点的国际网络提供不受信任的代码的安全性和执行。 EVM 专门用于防止拒绝服务攻击,并确认程序无权访问彼此的状态,还确保建立通信而没有任何潜在的干扰。

智能合约

智能合约是高级程序代码,它们被编译为 EVM 字节码并部署到以太坊区块链以供进一步执行。它使我们能够在不受第三方干扰的情况下进行可信的交易,这些交易是可追踪且不可逆转的。用于编写智能合约的语言有 Solidity(一种类似于 C 和 JavaScript 的语言库)、Serpent(类似于Python,但已弃用)、LLL(一种低级 Lisp 语言)和 Mutan(基于 Go,但已弃用)。

示例:在下面的示例中,我们讨论了一个示例 Solidity 程序来演示如何在 Solidity 中编写智能合约。

Solidity
// Solidity program to  
// demonstrate how to 
// write a smart contract  
pragma solidity >= 0.4.16 < 0.7.0; 
    
// Defining a contract 
contract Test
{ 
      
    // Declaring state variables 
    uint public var1;
    uint public var2;
    uint public sum;
    
    // Defining public function  
    // that sets the value of  
    // the state variable 
    function set(uint x, uint y) public
    { 
        var1 = x;
        var2=y;
        sum=var1+var2;
    } 
        
    // Defining function to 
    // print the sum of 
    // state variables 
    function get( 
    ) public view returns (uint) { 
        return sum; 
    } 
}


输出:

智能合约

解释:

1. 版本编译指示:  

pragma solidity >=0.4.16 <0.7.0;

Pragma 是编译器如何处理代码的指令。所有solidity源代码都应该以“version pragma”开头,这是该代码应该使用的solidity编译器版本的声明。这有助于代码与可能带来变化的未来版本的编译器不兼容。上述代码声明它兼容版本大于等于0.4.16但小于版本0.7.0的编译器。

2.合约关键词:

contract Test{ 
//Functions and Data 
}

contract 关键字声明了一个合约,在该合约下封装了代码。

3.状态变量:

uint public var1;
uint public var2;
uint public sum;

状态变量永久存储在合约存储中,它们是在以太坊区块链中编写的。 uint public var1行声明了一个名为 var1 的状态变量,类型为 uint(256 位无符号整数)。将其视为在数据库中添加一个插槽。同样,与声明uint public var2uint public sum一起使用。

4.函数声明:

function set(uint x, uint y) public
function get() public view returns (uint)
  • 这是一个名为set的访问修饰符类型public的函数,它以数据类型uint的变量x和变量 y 作为参数。
  • 这是一个简单的智能合约示例,它更新 var1 和 var2 的值。任何人都可以调用函数集并覆盖存储在以太坊区块链中的 var1 和 var2 的值。这是一个去中心化应用程序的示例,它具有审查证明并且不受任何中心化服务器关闭的影响。只要有人在运行以太坊区块链的单个节点,就可以访问该智能合约。
  • 通过将变量 var1 和 var2 的值相加来计算变量 sum。
  • 函数get 将检索并打印状态变量 sum 的值。

如何执行代码:

实际上有两种方法可以执行solidity智能合约:

1.离线模式:在离线模式下运行solidity智能合约需要三个先决条件和4个主要步骤才能运行智能合约:

  • 先决条件:
    • 下载并安装 node.js。
    • 全局安装Truffle
    • 安装ganache-cli
  • 目标:
    • 创建 truffle 项目并配置开发网络
    • 创建和部署智能合约
    • 从 Truffle 控制台与智能合约交互
    • 编写测试以测试 Solidity 提供的主要功能

2、在线模式: Remix IDE一般用于在线模式下编译和运行Solidity智能合约。您可以在此处找到包含所有步骤的完整文章