智能合约开发-Solidity学习1
2022/9/12 23:23:15
本文主要是介绍智能合约开发-Solidity学习1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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; } }
这篇关于智能合约开发-Solidity学习1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-01为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署