前言

这门课在网站里面说的是高级solidity理论,实际上察觉并没有这样。


知识点

智能合约的特性

  1. 无法篡改
  2. 倘若代码错误后只能够转移到新的智能合约
  3. dapp的合约部分建议使用函数而不是硬编码的风格

修饰符

modifier是修饰符,代码如下:

modifier function Ownable () public {
    ower=msg.sender;
}

这里的修饰符是能修改函数被其他函数默认调用的关键字,如需要在函数体还没有开始使用,就得先执行Ownable函数的代码:

function Test() extenal Ownable{}

写成这样就会先一步调用修饰符的代码


安全性问题

因为合约部分的部署者大多是拥有特权的,所以衍生了部分的安全性问题,所以需要部署者特权问题。

所以需要检查solidity的问题,但是我认为部署账户更需要注意。


solidity 的时间系统

他是使用now获取当前时间戳的,如:

uint TimeTest = now;

但是solidity这个语言也很有很多语法糖,所以还有获取一天的时间戳方法,是使用1 days,记住days这是day复数,不能是day

uint TimeTest = 1 days;

函数体传递指针

当我们需要修改外界参数的时候,可以使用函数的传参,但是函数必须传递的是指针。

传递指针的函数,只能是privae,internal等标识的函数,代码如下:

function Test(one storage _name) internal {}

这样就能传递执政了,storage在前文提到过。


使用view 标识的函数节省gas的消耗

当我们需要只读并且减少消耗时可以使用view函数。

memory时需要消耗gas的,但是放在view函数中不需要,代码如下:

function Test() view {
// 想要声明一个数组
uint[] memory test = uint[](zombies[dna])
}

注意事项:

当是memory声明的内存变量,倘若是uint类型则需要指定数组的长度,上文中的代码,我们假定zombies[dna],就是一个长度的数组。


这里看见解释说:

2f9d08ee-4a6c-400c-948c-45ed66b79f9d.png

506e07c0-f6f3-446b-b0c8-1671aa3976e7.png

认为这样写代码是违反直觉的,这里表示并没有,只要分清什么是公有财产和私有财产即可

最后修改:2023 年 03 月 26 日
如果觉得我的文章对你有用,请随意赞赏