ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

智能合约开发-Solidity学习1

2022-09-12 18:30:51  阅读:169  来源: 互联网

标签:function favoriteNumber 函数 People uint256 Solidity 智能 合约 public


2. 编程开发

Solidity语言学习
// >=0.8.7 < 0.9.0  高于0.8.7小于0.9.0
// 分号; 结尾

pragma solidity 0.8.8; 

1. 基础数据类型
   // contract 关键字,告诉编译器后面的代码是来定义智能合约的
   contract SimpleStorage{
    // 数据类型
    // boolean ,uint ,int,address,bytes
    // uint 无符号整数,不是可正可负,只能是正数
    // address 表示地址
    bool hasFavoriteNumber = false;
    uint256 favoriteNumber = 5 ;
    string  favoriteNumberInText = "Five";
    int256 favoriteInt = 5 ;
    // 钱包地址
    // address myAddress = 
    // bytes 被分配的最大空间 32
    bytes32 favoriteBytes = 'cat'; //0x
    //   会以0初始化变量
    uint256 favoriteNumber;

}

2. 函数
   contract SimpleStorage{

//   会以0初始化变量
  uint256 favoriteNumber;

//   function 方法关键字
// store函数会接受一个参数,然后将参数赋值给 favoriteNumber
  function store(uint256 _favoriteNumber) public{
      favoriteNumber = _favoriteNumber;
  }

}
//标识符
contract SimpleStorage{

//   会以0初始化变量
  uint256  public favoriteNumber;

//   function 方法关键字
// store函数会接受一个参数,然后将参数赋值给 favoriteNumber
//函数和变量有4种可见度标识符,public ,private,external internal 
  function store(uint256 _favoriteNumber) public{
      favoriteNumber = _favoriteNumber;
      favoriteNumber = favoriteNumber + 1;
      uint256 testVar = 5;
  }
//   testVar并不能被something函数获取,当你创建一个变量时,它只有在这个作用域才可见
// 作用域,可以看花括号
  function something() public{
      testVar = 6;
  }

}
//  retrieve 相当于   uint256  public favoriteNumber;  public变量在程序创建geter函数
// Solidity中有两个关键字,标识函数的调用不需要消耗gas  view 和 pure、
//因为只是读取区块链数据,只有更改状态的时候才支付gas;点击蓝色按钮,我们不发送交易,只是在链下读取数值
// 如果一个要改变区块链状态的函数状态的函数(也就是在消耗gas的函数)调用了类似 retrieve 这种view或者pure函数才会消耗gas ,23471 gas (Cost only applies when called by a contract) 
// view 只读 
  function retrieve()public view returns(uint256){
      return favoriteNumber;
  }
//   pure 类似于这种,常用的方法,或者不需要读取数据的算法
   function add() public pure returns(uint256){
       return (1+1) ;
   }

3.数组和结构体 
pragma solidity 0.8.8;

contract SimepleStorage {
    uint256 favoriteNumber;
    
    // 结构体
    struct People{
        uint256 favoriteNumber;
        string name;

    }
    // People public people = People({favoriteNumber:2,name:"pott"});
    // People public p = People(3,'joi');
    //数组,[] 动态数组,可以加任何数量的人进入
    People[] public people;
   // 如何通过名字找他最喜欢的数字,映射  
    // string 映射到 uint256
    mapping(string => uint256) public nameToFavoriteNumber;

    function store(uint256 _favoriteNumber) public {
        favoriteNumber = _favoriteNumber;
    }
    function retrieve() public view returns(uint256){
        return favoriteNumber;
    }
    // 添加人  
    //存储有两种方式 memory ,storage 
    // memory 关键字 ,存储在内存,只会被存储在函数执行的过程中,
    //storage  存储在外存,数据会持久化
    // string 并不是值类型,严格来说是一种特殊类型的数组,是一个object,必须决定其在那里存储
    function addPerson(string memory _name ,uint256 _favoriteNumber) public{
        // people.push(People({_favoriteNumber:_name}));
        people.push(People(_favoriteNumber,_name));
        nameToFavoriteNumber[_name] = _favoriteNumber;
    }


}

标签:function,favoriteNumber,函数,People,uint256,Solidity,智能,合约,public
来源: https://www.cnblogs.com/moshanghuai/p/16686955.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有