### 前言 这门课在网站里面说的是高级solidity理论,实际上察觉并没有这样。 --- ### 知识点 #### 智能合约的特性 1. 无法篡改 2. 倘若代码错误后只能够转移到新的智能合约 3. dapp的合约部分建议使用函数而不是硬编码的风格 #### 修饰符 **modifier**是修饰符,代码如下: ```solicdity modifier function Ownable () public { ower=msg.sender; } ``` 这里的修饰符是能修改函数被其他函数默认调用的关键字,如需要在函数体还没有开始使用,就得先执行Ownable函数的代码: ```solicdity 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]**,就是一个长度的数组。 --- 这里看见解释说:   认为这样写代码是违反直觉的,这里表示并没有,*只要分清什么是公有财产和私有财产即可*。 Loading... ### 前言 这门课在网站里面说的是高级solidity理论,实际上察觉并没有这样。 --- ### 知识点 #### 智能合约的特性 1. 无法篡改 2. 倘若代码错误后只能够转移到新的智能合约 3. dapp的合约部分建议使用函数而不是硬编码的风格 #### 修饰符 **modifier**是修饰符,代码如下: ```solicdity modifier function Ownable () public { ower=msg.sender; } ``` 这里的修饰符是能修改函数被其他函数默认调用的关键字,如需要在函数体还没有开始使用,就得先执行Ownable函数的代码: ```solicdity 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]**,就是一个长度的数组。 --- 这里看见解释说:   认为这样写代码是违反直觉的,这里表示并没有,*只要分清什么是公有财产和私有财产即可*。 最后修改:2023 年 03 月 26 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏