solidity 学习记录1
开发工具
remix
Remix - Ethereum IDE
需要下载的插件
solidity文档
Units and Globally Available Variables — Solidity 0.8.12 documentation
helloworld
//版本号
pragma solidity ^0.4.0;contract helloworld {string myName = "waston";function getName() public view returns(string){return myName;}function changeName(string _newName) public {myName = _newName;} function pureTest(string _name) public pure returns(string){return _name;}
}
相关权限
public:任何人都可以调用该函数,包括DApp的使用者。
private:只有合约本身可以调用该函数(在另一个函数中)。
internal:只有这份合同以及由此产生的所有合同才能称之为合同。
external:只有外部可以调用该函数,而合约内部不能调用。
solidity的三种修饰符
view: 可以自由调用,因为它只是“查看”区块链的状态而不改变它
pure: 也可以自由调用,既不读取也不写入区块链
payable:常常用于将代币发送给合约地址。
bool类型及 与 或
pragma solidity ^0.4.0;
contract booleanTest{bool _a;int num1 = 100;int num2 = 200;function getBool() returns(bool){return _a;}function getBool2() returns(bool){return !_a;}function panduan() returns(bool){return num1==num2;}function panduan2() returns(bool){return num1!=num2;}// true && false = false//true ||false = truefunction yu() returns(bool){return (num1==num2) && (num1!=num2);}function huo() returns(bool){return false||true;}
}
相关运算符
pragma solidity ^0.4.0;
contract math{// int uint int可正可负 uint只能正uint numa=4; uint numb =2;uint8 numc= 2;function add(uint a,uint b) pure public returns(uint){return a+b;} function jian(uint a,uint b) pure public returns(uint){return a-b;} function cheng(uint a,uint b) pure public returns(uint){return a*b;} function chu(uint a,uint b) pure public returns(uint){return a/b;} function yu(uint a,uint b) pure public returns(uint){return a%b;} function pingfang(uint a, uint b) pure public returns(uint){return a**b;}uint8 a = 3;uint8 b = 4;function weiyu() view public returns(uint){return a & b;}function weihuo() view public returns(uint){return a | b;}function weifan() view public returns(uint){return ~a;}function yihuo() view public returns(uint){return a ^ b;}function zuoyi() view public returns(uint){return a << 1;}function youyi() view public returns(uint){return a >> 1;}function flow() pure public returns(uint){uint8 mm =255;mm++;return mm;}function flow2() pure public returns(uint){uint8 mm =0;mm--;return mm;}// function errorTest() returns(int){// int a =2;// // int b=0; 不执行除0操作// // return a/b;// }// function errorTest2() returns(int){// int a =2;// int b = -1;// a << b;// }function intergerTest() returns(uint){uint num= (2**800+1) -2**800;return num;}function intergerTest2() returns(uint){uint num= 2/4*1000;return num;}function intergerTest3() returns(uint){uint num= 11111111111111111111111111111213123112312311231312-11111111111111111111111111111213123112312311231311;return num;}
}
solidity中的运算不管内部的过程 只要结果符合对应的变量类型即可
int表示的整型可以有负数
uint表示的整型不能有负数
相关运算符
1.& 操作数之间转换成二进制之后每位进行与运算操作(同1取1)
2.| 操作数之间转换成二进制之后每位进行或运算操作(有1取1)
3.~ 操作数转换成二进制之后每位进行取反操作(直接相反)
4.^ 操作数之间转换成二进制之后每位进行异或操作(不同取1)
5.<<操作数转换成二进制之后每位向左移动x位的操作
6.>>操作数转换成二进制之后每位向右移动x位的操作
字节数组
byte数组为bytes1,bytes2......bytes32,依次以八个位递增
不能字节数组改变长度
pragma solidity ^0.4.0;
contract ByteArray{bytes1 public num1 = 0x7a; //0111 1010bytes2 public num2 = 0x7a68; //0111 1010 0110 1000function getLength() returns(uint){return num1.length;}function getLength2() returns(uint){return num2.length;}function setLength(){// num1.length=18;}bytes1 a = 0x7a; //0111 1010bytes1 b = 0x68; //0110 1000function bijiao() public view returns(bool){return a>b;}function bijiao2() public view returns(bool){return a>=b;}function bijiao3() public view returns(bool){return a<b;}function bijiao4() public view returns(bool){return a<=b;}function bijiao5() public view returns(bool){return a==b;}function bijiao6() public view returns(bool){return a!=b;}function weiyu() view public returns(bytes1){return a & b;}function weihuo() view public returns(bytes1){return a | b;}function weifan() view public returns(bytes1){return ~a;}function yihuo() view public returns(bytes1){return a ^ b;}function zuoyi() view public returns(bytes1){return a << 1;}function youyi() view public returns(bytes1){return a >> 1;}function changeContent() public {num1 = 2;}
}
可变数组长度
pragma solidity ^0.4.0;contract DynamicByte{bytes public name = new bytes(2);function initName(){name[0] = 0x7a;name[1] = 0x68;}function getLength() view returns(uint){return name.length;}function changeName(){name[0] = 0x88;}function changeLength(){name.length=5;}function pushtest(){name.push(0x99);}
}
solidity 学习记录1相关推荐
- Solidity学习记录——第二章
Solidity学习记录 第一章 创建生产僵尸的工厂 第二章 设置僵尸的攻击功能 第三章 编写DAPP所需的基础理论 第四章 完善僵尸功能 第五章 ERC721 标准和加密资产 文章目录 Solidi ...
- Solidity学习记录——第四章
Solidity学习记录 第一章 创建生产僵尸的工厂 第二章 设置僵尸的攻击功能 第三章 编写DAPP所需的基础理论 第四章 完善僵尸功能 第五章 ERC721 标准和加密资产 文章目录 Solidi ...
- solidity学习记录4 (函数的初步入门)
函数的重载 函数重载是指函数命名相同的函数,但需要满足以下两个条件之一 函数入参的数量不同 函数入参的类型不同 注意:address类型 与uint160 类型相同,若重载函数参数是两个类型则会报错 ...
- Openzeppelin学习记录二:utils模块(SafeMath.sol+SafeCast.sol)
Openzeppelin学习记录一:access模块(AccessControl.sol+Ownable.sol) Openzeppelin学习记录 2.Utils 2.1 Math 2.2 Safe ...
- Openzeppelin学习记录一:access模块(AccessControl.sol+Ownable.sol)
Openzeppelin学习记录 Openzeppelin学习记录 模块结构 1. access 1.1 AccessControl.sol 1.2 AccessControlEnumerable.s ...
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- HTML5与CSS3权威指南之CSS3学习记录
title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...
- springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis
本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...
- 【Cmake】Cmake学习记录
Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...
最新文章
- 2019年《计算机应用基础》,2019年自考《计算机应用基础》模拟练习及答案一
- Java中的拆箱与装箱
- oracle 创建database link
- ssm框架搭建+easyui增删改查实现
- 每首歌都保存着一份记忆
- SAP物料主数据随笔
- 【前端技术】一篇文章搞掂:微信小程序
- java基础----java调用oracle存储过程(转)
- 会翻页GridView-1
- Android逐帧动画的实现
- cad怎样弄出放线的坐标_利用CAD绘制全站仪放线用的坐标点
- STM32怎么判断按键是不是低电平有效
- MTK6577+Android之TP(触摸屏)
- 一位IT博士的大学十年
- Libgdx游戏编程之卡牌游戏UI布局
- 在线ER模型设计工具,支持MySQL、SQLServer、Oracle、Postgresql sql导入,支持表、视图等编辑
- 运动模糊(MotionBlur)
- MR(混合现实)无绿幕拍摄
- 三种算法求两个正整数的最大公约数和最小公倍数;求三个数的最大公约数和最小公倍数
- [组合数学] 容斥原理polya定理