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 将检索并打印状态变量的值。
输出: