首页 > 其他分享 >solidity结构以及部分方法

solidity结构以及部分方法

时间:2023-01-12 23:12:25浏览次数:39  
标签:function error name Unauthorized solidity address 方法 public 结构

合约结构:

// SPDX-License-Identifier: GPL-3.0 //或者 UNLICENSED表示非开源,无法审核

 

pragma solidity >=0.4.0 <0.9.0; //solidity版本设置

import "name1.sol"; //引入remix含有的合约

import "../name2.sol"; //通过路径引入合约

import{name as name_1} from "../name2.sol"; //name_1为自定义别名

 

//单行注释

/*

多行注释

*/

 

contract contract_name{

function function_name() function_modifier {//方法名  修饰符

    ...//内容

}

}

 

 

Modifier方法

modifier:代替重复的判断

用法:modifier modifier_name(){

...//内容

require( A , “operation failed” );//require方法可用于判断 如果A成立则继续执行否则弹//出“operation failed”

require(A1 , “”);

_;//使用require方法添加

}

例:function function_name(type parameter 1) public modifier_name{

C;//当A成立时执行C否则弹出“operation failed”

}  

 

Event:事件是合约的可继承成员。发出一个事件,它存储在事务日志中传递的参数。这些日志存储在区块链上,并且可以使用合约地址访问,直到合约出现在区块链上。生成的事件无法从合同中访问,即使是创建和发出它们的人也无法访问。可以使用 event 关键字声明事件。

    event Deposit(address _from, string _name, uint256 _value);//将值写入logs日志中

 

function deposit(string memory _name) public payable{

        emit Deposit(msg.sender , _name , msg.value);

}

 

Enum:枚举将变量限制为只有几个预定义值之一。此枚举列表中的值称为枚举。

contract test {

   enum FreshJuiceSize{ SMALL, MEDIUM, LARGE }

   FreshJuiceSize choice;

   FreshJuiceSize constant defaultChoice = FreshJuiceSize.MEDIUM;

 

   function setLarge() public {

      choice = FreshJuiceSize.LARGE;

   }

   function getChoice() public view returns (FreshJuiceSize) {

      return choice;

   }

   function getDefaultChoice() public pure returns (uint) {

      return uint(defaultChoice);

   }

}

输出://输出的值为012顺序输出

uint8: 2

uint256: 1

 

Error自定义:

//error Unauthorized(string error);单个参数

error Unauthorized(string error,address _address);

contract ErrorExample { 

    address payable owner = payable(msg.sender);

 

    function withraw() public{

        if(msg.sender != owner)

            //revert Unauthorized("Unauthorized"); //单个参数

            revert Unauthorized({error:"Unauthorized",_address:msg.sender});

//条件满足if的内容,就会输出error:"Unauthorized",_address:msg.sender

        owner.transfer(address(this).balance);

    }

}

标签:function,error,name,Unauthorized,solidity,address,方法,public,结构
From: https://www.cnblogs.com/xingzheakai/p/17048221.html

相关文章

  • win10输入法(qaa-latn) 删除方法
     1.  按Windows徽标+S,弹出搜索框,输入powershell 找到WindowsPowerShell,右键点击,点击以管理员身份运行。在Powershell输入:$LanguageList=Get-WinUserLanguage......
  • 《数据结构 - C语言》单链表
    目录结构定义初始化建立清空求表长判断是否为空表取值查找插入删除销毁遍历打印测试结构定义#include<stdio.h>#include<malloc.h>#include<stdlib.h>#defineOK......
  • 英语学习方法(五)
    学习英语十大误区1.做习题.做习题不是一种学习英语的方式,或者说做习题是没有办法提高你的英语水平的.做习题是一种学习数学的方式,是一种推导验证的过程.通......
  • 区块链特辑——solidity语言基础(五)
    Solidity语法基础学习九、实战项目(一):学以致用UP主捐款合约·合约要求:·建立时,需将合约的建立者设定成owner(constructor,msg.sender)·需记录每个观众的捐款......
  • 【课程作业】最优化理论与方法:第三次作业
    目录​​简介​​​​5-26​​​​结语​​简介Hello!非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭昵称:海轰标签:程序猿|C++选手|学生简介:因C......
  • 【课程作业】最优化理论与方法:第二次作业
    目录​​简介​​​​3-16(C)​​​​3-17​​​​3-20​​​​3-22(C)​​​​3-23(B)​​​​3-32​​​​3-36(e)​​​​3-45​​​​3-55​​​​结语​​简介Hello!......
  • 【课程作业】最优化理论与方法:第一次作业
    目录​​简介​​​​2-5​​​​2-8​​​​2-9​​​​3-4​​​​3-6​​​​结语​​简介Hello!非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕ......
  • 【转】用“逐步排除”的方法定位Java服务线上“系统性”故障
    一、摘要由于硬件问题、系统资源紧缺或者程序本身的BUG,Java服务在线上不可避免地会出现一些“系统性”故障,比如:服务性能明显下降、部分(或所有)接口超时或卡死等。其中部分......
  • 什么是数据结构
    数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。什么是数据数据是描述客观事物的符号,是计算机中可以操作的对象,......
  • Ubuntu使用源码安装Python3方法及步骤
    之前使用CentOS安装Python3基本上按照步骤就可以,但Ubuntu上安装Python3还是有挺多问题。本文主要总结介绍一下Ubuntu使用源码安装Python3方法及步骤。原文地址:Ubuntu使用......