2018-03-15 星期四
正月廿八戊戌年 【狗年】乙卯月 丙午日
宜: 嫁娶 冠笄 会亲友 安机械 纳财
忌: 开市 造屋 治病 作灶
我是花夏,今天是智能合约第五天,今天学习中心更新了第二讲视频,所以进入了第二讲课程,刚刚看完了第二遍,大致有了个了解,其中也讲解了很多知识,为了避免丢失,我还是做一个笔记记录下。
合约中可以书写一个构造函数,这个构造函数是在合约创建就会自动执行的,比如将创建者的address存起来作为后面判断是否是创建者。
错误检测
使用在程序运行时,查看运行时是否错误
使用在程序运行时,查看输入时是否错误
数组
静态数组,运行时长度是不能被改变的
动态数组, 运行时长度是可以被改变的
成员
长度
向尾部添加元素,只能在动态数组中使用
定义一个自定义变量,类似于的对象?
循环
循环, 和其他语言循环一模一样
循环
删除一个成员,我发现,数组一个元素后,并不是把元素删除,而是空白掉,后面元素不会跟上,私认为这个设计太逗了,这点记下,要去源码提交代码了。
指代任意类型的变量
var (employee, index) = _findEmployee(employeeId); // 表示将_findEmployee函数查找到对应 // employeeId地址的employee和index返回值赋给(employee, index)
可视度
:外部函数是合约接口的一部分,这意味着它们可以从其他合约调用, 也可以通过事务调用。外部函数f不能被内部调用(即 f()不执行,但this.f()执行)。外部函数,当他们接收大数组时,更有效。
:公共函数是合约接口的一部分,可以通过内部调用或通过消息调用。对公共状态变量而言,会有的自动访问限制符的函数生成。
:这些函数和状态变量只能内部访问(即在当前合约或由它派生的合约),而不使用(关键字)。
:私有函数和状态变量仅仅在定义该合约中可见, 在派生的合约中不可见。
中函数默认的可视度为,针对一个函数返回值为自定义的,期末人度改为才不会报错
数据存储
永久性空间,也即是在区块链上
临时空间,程序运行完后,所占用的控件就会被释放掉
类似于
强制规定
memory`
本地变量:
默认
状态变量:
输入参数:
和C++的指针很相似
规则
相同储值空间变量赋值: 传递(EVM上的内存地址)
不同储值空间变量赋值: 拷贝
这点特别重要也特别饶,估计会有很多漏洞出现哦,想想C++的指针那是让多少人脑疼的东西
温馨提示:
1. 如果后面时间充裕,我会写好solidity工具通过github开源的,我的github地址:
https://github.com/huarxia
2. 另一个有意思还有前景的项目正在酝酿中,需要大量技术等等人员,有兴趣的关注公众号或者github
关注公众号回复so5获取源码链接及漏洞预测
分享完毕, 荆轲刺秦王~~
我的ENS打赏地址: huarxia.eth
我的github地址:https://github.com/huarxia
领取专属 10元无门槛券
私享最新 技术干货