solidity学习笔记01-基础知识
Posted 一袋芋头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了solidity学习笔记01-基础知识相关的知识,希望对你有一定的参考价值。
solidity学习笔记01-基础知识
最近在学习solidity语言,感谢b站先锋教育的视频和郑建勋老师的讲解,参考视频:链接: https://www.bilibili.com/video/BV1St411a7Pk?p=1.
对应视频:P1-P7
基础知识这块知识点很少,也学了一段时间了,老师讲的细节有所遗忘,学习笔记做的也不是很好,所以直接把学习代码粘过来,之后的笔记会有一些注释。
1.Helloword:view+pure
下面展示 Helloworld.sol
。
pragma solidity ^0.4.0;
contract Helloworld
string Myname = "vae";
//view:不能修改状态变量,即不能修改区块链上的代码;只能读取状态变量
function getName() view public returns(string)
return Myname;
function setName(string _newName) public
Myname = _newName;
//pure(永久):读都不会读取状态变量,可以理解为传进去在传出来,不消耗gas
function pureTest(string _newName) pure returns(string)
return _newName;
- 注意函数的声明格式,一些关键字(还是叫标识符来着,傻傻分不清楚)比如view、public等在定义时如果没添加编译不会报错,而且会提醒你,并且不影响程序运行。
- 关键字pure:不能修改状态变量,即不能修改区块链上的代码;只能读取状态变量
- 关键字view:读都不会读取状态变量,可以理解为传进去在传出来,不消耗gas
补充(僵尸大战):如果一个 view 函数在另一个函数的内部被调用,而调用函数与 view 函数的不属于同一个合约,也会产生调用成本。这是因为如果主调函数在以太坊创建了一个事务,它仍然需要逐个节点去验证。所以标记为 view 的函数只有在外部调用时才是免费的。
2.Boolean
下面展示 Boolean.sol
。
这块比较简单,和之前学的语言基本没差,大体看一下就行;另外我的代码和老师的大体一致,有一些一看就懂的没往上写,也有一些做了点小修改。
pragma solidity ^0.4.0;
contract BooleanTest
//1.初始化时不赋值,默认false
bool _a = false;
bool _b = true;
int num1 = 100;
int num2 = 200;
//一些简单判断
function getBool() returns(bool)
return _a;
function getBool2() returns(bool)
return !_a;
function equal(int _n1,int _n2) pure returns(bool)
return _n1 == _n2;
function and(bool _b1,bool _b2) pure returns(bool)
return _b1 && _b2;
function or(bool _b1,bool _b2) returns(bool)
return _b1 ||_b2;
3.Math
下面展示 Math.sol
。
本代码讲解整型特性与运算、底层位运算、整数溢出与异常处理、整型字面量。
整型字面量:solidity在计算过程中的中间值,支持任意的精度,如小数。不会发生溢出操作。
只有在将计算结果赋值给特定类型的时候,才会发生截断溢出等操作。
pragma solidity ^0.4.0;
//本代码讲解整型特性与运算、底层位运算、整数溢出与异常处理、整型字面量
contract math
uint num1 = 3;//int256
uint num2 = 4;//uint256
function add(uint a,uint b) pure public returns(uint)
return a+b;
uint8 a=3;
uint8 b=4;
//位运算时a,b的二进制数进行位运算
function and_B() view public returns(uint)
return a & b;
function or_B() view public returns(uint)
return a | b;
function no_B() view public returns(uint)
return -b;
function yihuo_B() view public returns(uint)
return a ^ b;
function lm_B() view public returns(uint)
return a <<1;
function rm_B() view public returns(uint)
return a >>1;
//溢出
function flow(uint8 _a) pure public returns(uint8)
_a++;
return _a;
//整型字面量
function intergerTest() pure public returns(uint)//整形字面量
uint num = (2**900+1)-2**900;
return num;
再次感谢郑建勋老师的讲解。
以上是关于solidity学习笔记01-基础知识的主要内容,如果未能解决你的问题,请参考以下文章
《solidity学习笔记》chapter 2-solidity基础知识