📜  Solidity 中的智能合约是什么?

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

Solidity 中的智能合约是什么?

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 Storage
{
    
    // Declaring state variables
    uint public setData;
  
    // Defining public function 
    // that sets the value of 
    // the state variable
    function set(uint x) public
    {
        setData = x;
    }
      
    // Defining function to
    // print the value of
    // state variable
    function get(
    ) public view returns (uint) {
        return setData;
    }
}


解释:

1. 版本编译指示:

pragma solidity >=0.4.16 <0.7.0;

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

2.合约关键词:

contract Storage{ 
//Functions and Data 
}

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

3.状态变量:

uint public setData;

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

4.函数声明:

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

输出: