开发工具

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相关推荐

  1. Solidity学习记录——第二章

    Solidity学习记录 第一章 创建生产僵尸的工厂 第二章 设置僵尸的攻击功能 第三章 编写DAPP所需的基础理论 第四章 完善僵尸功能 第五章 ERC721 标准和加密资产 文章目录 Solidi ...

  2. Solidity学习记录——第四章

    Solidity学习记录 第一章 创建生产僵尸的工厂 第二章 设置僵尸的攻击功能 第三章 编写DAPP所需的基础理论 第四章 完善僵尸功能 第五章 ERC721 标准和加密资产 文章目录 Solidi ...

  3. solidity学习记录4 (函数的初步入门)

    函数的重载 函数重载是指函数命名相同的函数,但需要满足以下两个条件之一 函数入参的数量不同 函数入参的类型不同 注意:address类型 与uint160 类型相同,若重载函数参数是两个类型则会报错 ...

  4. Openzeppelin学习记录二:utils模块(SafeMath.sol+SafeCast.sol)

    Openzeppelin学习记录一:access模块(AccessControl.sol+Ownable.sol) Openzeppelin学习记录 2.Utils 2.1 Math 2.2 Safe ...

  5. Openzeppelin学习记录一:access模块(AccessControl.sol+Ownable.sol)

    Openzeppelin学习记录 Openzeppelin学习记录 模块结构 1. access 1.1 AccessControl.sol 1.2 AccessControlEnumerable.s ...

  6. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  7. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  8. springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis

    本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...

  9. 【Cmake】Cmake学习记录

    Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...

最新文章

  1. 2019年《计算机应用基础》,2019年自考《计算机应用基础》模拟练习及答案一
  2. Java中的拆箱与装箱
  3. oracle 创建database link
  4. ssm框架搭建+easyui增删改查实现
  5. 每首歌都保存着一份记忆
  6. SAP物料主数据随笔
  7. 【前端技术】一篇文章搞掂:微信小程序
  8. java基础----java调用oracle存储过程(转)
  9. 会翻页GridView-1
  10. Android逐帧动画的实现
  11. cad怎样弄出放线的坐标_利用CAD绘制全站仪放线用的坐标点
  12. STM32怎么判断按键是不是低电平有效
  13. MTK6577+Android之TP(触摸屏)
  14. 一位IT博士的大学十年
  15. Libgdx游戏编程之卡牌游戏UI布局
  16. 在线ER模型设计工具,支持MySQL、SQLServer、Oracle、Postgresql sql导入,支持表、视图等编辑
  17. 运动模糊(MotionBlur)
  18. MR(混合现实)无绿幕拍摄
  19. 三种算法求两个正整数的最大公约数和最小公倍数;求三个数的最大公约数和最小公倍数
  20. [组合数学] 容斥原理polya定理

热门文章

  1. .NET框架体系结构(一部分)
  2. windows7更换系统时间服务器,Windows7系统更改时间同步服务器
  3. 网购平台比价系统源码
  4. 【历史上的今天】8 月 15 日:苹果推出初代 iMac;谷歌收购摩托罗拉移动;Fuchsia 首次发布
  5. 隐藏状态栏的几种方式
  6. 苹果官方iPhone/iPad以旧换新5步攻略
  7. 涂鸦智能将登陆纽交所:赤字约2亿美元,高管出自阿里,转投腾讯
  8. 能帮你找到网页设计灵感的16个网站-沪江UI团队资料翻译组
  9. 计算机视觉的历史、现状与发展趋势
  10. 被遗忘的Windows快捷键