「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」
前言
智能合约简单的字面理解那就是很智能的意思,会自动执行的一个合约,也就是一种约定。从技术角度来说它就是执行一组指令的计算机代码,还有它是一段写在区块链上的代码,一旦某个事件触发合约中的条款,代码即自动执行。也就是说,满足条件就执行,不需要人为操控。
什么是solidity语言
Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。设计的目的是能在以太坊虚拟机上运行。Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。
- solidity的类型
- 值类型
布尔类型、整型、定长浮点型、地址类型、定长字节数组、地址字面常数、有理数和整数字面常数、字符串字面常数、十六进制字面常数、枚举类型、函数类型。
- 引用类型
数据位置、数组、结构体
solidity的开发工具
这是一个可以在线编译智能合约的网页,非常方便调试,是最受欢迎的开发工具。
2.truffle编译工具
这个可以使用脚本进行合约文件的编译
learnblockchain.cn/docs/truffl…
这是truffle工具的官方文档,熟读可以进入使用,下次在详细介绍。
一个简单的智能合约例子
// SPDX-License-Identifier: GPL-3.0
//保存格式为solidity后缀的
pragma solidity >=0.4.16 <0.9.0;
contract SimpleStorage {
uint storedData;
function set(uint x) public {
storedData = x;
}
function get() public view returns (uint) {
return storedData;
}
}
这是一个简单的存取合约,set方法表示将数据存到智能合约中,即链上。
Solidity中合约的含义就是一组代码(它的函数)和数据(它的状态),它们位于以太坊区块链的一个特定地址上。 代码行 uint storedData; 声明一个类型为 uint (256位无符号整数)的状态变量,叫做 storedData 。 你可以认为它是数据库里的一个位置,可以通过调用管理数据库代码的函数进行查询和变更。
对于以太坊来说,上述的合约就是拥有合约(owning contract)。在这种情况下,函数 set 和 get 可以用来变更或取出变量的值。
总结
智能合约极大的改变了我们传统的业务模式,让代码更智能,更去中心化的执行。同时,学习智能合约需要我们有一定区块链技术基础,对区块链技术有所了解,慢慢去理解这里面的逻辑,让我们从智能合约开始,一步一步走进区块链技术的世界。