tag 标签: Solidity

相关资源
  • 所需E币: 0
    时间: 2024-5-9 09:32
    大小: 2.65KB
    上传者: 开心就很好了
    Solidity简介Solidity是一种静态类型、面向合约的高级编程语言,专门为编写智能合约而设计,它被用于eth和其他兼容区块链平台。Solidity语言受到了C++、Python和JavaScript等语言的影响,旨在提供一种安全、易于理解的方式来创建和管理智能合约。特点静态类型:Solidity是一种静态类型语言,这意味着所有变量的类型在编译时都必须明确指定。面向合约:Solidity中的主要构建块是合约(Contracts),它们类似于面向对象编程中的类。合约可以包含状态变量、函数、事件、修饰符等。继承:Solidity支持多重继承,允许合约继承其他合约的属性和行为。兼容EVM:Solidity编写的智能合约被编译成EVM(虚拟机)字节码,这使得它们可以在eth网络上部署和执行。什么是智能合约?智能合约(Smartcontract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由NickSzabo首次提出。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。简单地说,智能合约可以理解为一个自执行的协议。智能合约可以自动处理协议的履行、管理、以及支付。例如,可以编写这样一个智能合约:本月底之前,老王转账给小张1个以太币,这个智能合约部署后,就会在月底之前,自动把老王的1个以太币转账给小张,无需人为干预。关键零件:1.逻辑:Solidity允许使用if-else语句、for和while循环以及其他逻辑运算符,如and、or、not。2.作用域:Solidity具有全局、契约和函数级别的作用域。每个变量或函数都有一个特定的范围,在该范围内可以访问或修改它。3.模式:Solidity具有可用于编写智能合约的通用设计模式,例如Open-ClosePrinciple和PullPayment模式。4.函数:Solidity支持内部和外部函数。内部函数只能被同一合约内的其他函数调用,而外部函数可以被任何合约或外部调用。5.结构:Solidity允许创建自定义数据结构,例如结构和数组。6.库:Solidity支持库的使用,库是可以被多个合约调用的可重用代码块。让我们亲自动手,使用代码示例和解释来解释这些关键组件中的每一个。以下是用Solidity编写的逻辑示例。functioncheckAge(uintage)publicpurereturns(bool){  if(age>=18){ //thislinechecksiftheinputageisgreaterthanorequalto18    returntrue;  //iftheaboveconditionismet,itreturnstrue  }else{    returnfalse; //iftheaboveconditionisnotmet,itreturnsfalse  }}该函数具有public和pure可见性,这意味着它不读取或修改状态变量,仅使用传递给它的参数或其中存在的局部变量返回值。它可以在编译期间从外部调用而不会产生任何副作用。如果年龄大于或等于18岁,则该函数还返回一个布尔值true,否则返回一个布尔值false。很简单,对吧?现在让我们在下面的示例中编写一些Solidity范围。contractEnitandev{  uintprivateage=25; //thislinedeclaresaprivatevariableoftypeuintcalledageandassignsitthevalue25  functiongetAge()publicviewreturns(uint){ //thisfunctionispublicandread-only    returnage; //thislinereturnsthevalueoftheprivatevariableage  }}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币: 0
    时间: 2023-6-8 13:33
    大小: 2.34KB
    上传者: 蝴蝶结欧恩
    学完《Solidity从入门到精通课(转型区块链必修课)》你将收获:掌握Solidity智能合约开发技巧掌握Solidity语法掌握以太坊私链搭建课程介绍:很多人对于区块链有所了解,但对于区块链开发始终一知半解。如果把区块链理解为数据库的话,智能合约相当于这个数据库的SQL,也是学习区块链应用开发的必经之路。本课程为Solidity智能合约的精讲课程,老师以代码边写边讲的方式向大家展示Solidity的写法与设计理念。1、编译器升级:本课程是针对之前的Solidity智能合约教程的升级版,区块链技术升级更新较快,目前编译器的版本已经达到了0.8.x,虽然与0.6.x版本的编译器语法差别不算太大,但仍然会对部分同学学习造成困扰。本课程是采用0.8.7版本编译器版本为基础进行代码设计与讲解。2、实战项目升级:本课程除了借鉴之前课程使用的案例库之外,又增加了多签存证、多签结婚证书、产品溯源等合约项目。3、Geth升级:以太坊客户端更新也带来了一些参数上的变化,同样需要注意。4、代码驱动:课程内讲授的代码以边写边讲的方式介绍,也建议同学们一同练习。5、课程服务:课程源码可以下载。第一章:智能合约概念与环境准备第二章:Solidity基础语法第三章:智能合约基础案例第四章:ERC标准第五章:可升级合约与设计模式第六章:多签存证案例第七章:永载史册的结婚证书第八章:商品溯源案例