资料
  • 资料
  • 专题
【2024】solidity智能合约开发零基础精细化入门教程
推荐星级:
类别: 软件/EDA/IP
时间:2024-05-09
大小:2.65KB
阅读数:650
上传用户:开心就很好了
查看他发布的资源
下载次数
3
所需E币
0
ebi
新用户注册即送 300 E币
更多E币赚取方法,请查看
close
资料介绍
Solidity 简介
Solidity是一种静态类型、面向合约的高级编程语言,专门为编写智能合约而设计,它被用于eth和其他兼容区块链平台。
Solidity语言受到了C++、Python和JavaScript等语言的影响,旨在提供一种安全、易于理解的方式来创建和管理智能合约。

特点
静态类型:Solidity是一种静态类型语言,这意味着所有变量的类型在编译时都必须明确指定。
面向合约:Solidity中的主要构建块是合约(Contracts),它们类似于面向对象编程中的类。合约可以包含状态变量、函数、事件、修饰符等。
继承:Solidity支持多重继承,允许合约继承其他合约的属性和行为。
兼容EVM:Solidity编写的智能合约被编译成EVM(虚拟机)字节码,这使得它们可以在eth网络上部署和执行。

什么是智能合约?
智能合约(Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由Nick Szabo首次提出。
智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。
简单地说,智能合约可以理解为一个自执行的协议。智能合约可以自动处理协议的履行、管理、以及支付。
例如,可以编写这样一个智能合约:本月底之前,老王转账给小张1个以太币,这个智能合约部署后,就会在月底之前,自动把老王的1个以太币转账给小张,无需人为干预。

关键零件:
1. 逻辑: Solidity 允许使用 if-else 语句、for 和 while 循环以及其他逻辑运算符,如 and、or、not。
2. 作用域: Solidity 具有全局、契约和函数级别的作用域。每个变量或函数都有一个特定的范围,在该范围内可以访问或修改它。
3. 模式: Solidity 具有可用于编写智能合约的通用设计模式,例如 Open-Close Principle 和 Pull Payment 模式。
4. 函数: Solidity 支持内部和外部函数。内部函数只能被同一合约内的其他函数调用,而外部函数可以被任何合约或外部调用。
5. 结构: Solidity 允许创建自定义数据结构,例如结构和数组。
6. 库: Solidity 支持库的使用,库是可以被多个合约调用的可重用代码块。
让我们亲自动手,使用代码示例和解释来解释这些关键组件中的每一个。

以下是用 Solidity 编写的逻辑示例。
function checkAge(uint age) public pure returns (bool) {
    if (age >= 18) {  // this line checks if the input age is greater than or equal to 18
        return true;   // if the above condition is met, it returns true
    } else {
        return false;  // if the above condition is not met, it returns false
    }
}

该函数具有public和pure可见性,这意味着它不读取或修改状态变量,仅使用传递给它的参数或其中存在的局部变量返回值。它可以在编译期间从外部调用而不会产生任何副作用。
如果年龄大于或等于 18 岁,则该函数还返回一个布尔值true,否则返回一个布尔值false。
很简单,对吧?现在让我们在下面的示例中编写一些 Solidity 范围。
contract Enitandev {
    uint private age = 25;  // this line declares a private variable of type uint called age and assigns it the value 25

    function getAge() public view returns (uint) {  // this function is public and read-only
        return age;  // this line returns the value of the private variable age
    }
}

Solidity值类型
布尔(bool):可能的取值为字符常量值 true 或 false
整型(int/uint):分别表示有符号和无符号的不同位数的整型变量; 支持
关键字 uint8 到 uint256(无符号,从 8 位到 256 位)以及 int8 到 int256, 以 8 位为步长递增
定长浮点型(fixed / ufixed): 表示各种大小的有符号和无符号的定长浮
点型;在关键字 ufixedMxN 和 fixedMxN 中,M 表示该类型占用的位数,
N 表示可用的小数位数
地址(address):存储一个 20 字节的值(以太坊地址大小)
定长字节数组:关键字有 bytes1, bytes2, bytes3, …, bytes32
枚举(enum):一种用户可以定义类型的方法,与C语言类似,默认从0
开始递增,一般用来模拟合约的状态
函数(function):一种表示函数的类型

版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或 联系我们 删除。
相关评论 (下载后评价送E币 我要评论)
没有更多评论了
  • 可能感兴趣
  • 关注本资料的网友还下载了
  • 技术白皮书