第四课主要介绍payable函数相关。

chapter1: payable修饰函数

  以太坊允许同时调用函数和eth转账。msg.value显示发送到合约的以太币数,ether是内置整型数。如果函数没有payable,将不能接受前端调用时附加的eth。

chapter2:transfer

  transfer函数可以发送eth,this.balance是当前账户所有资产。格式:

address.transfer(value);

  address是目的地址,value是发送的eth数。

  当你发送eth到合约账户中时,eth是一直存储在合约账户里的,直到你通过一个函数把它取走,实例如下:

contract GetPaid is Ownable {
function withdraw() external onlyOwner {
owner.transfer(this.balance);
}
}

chapter3:zombieBattles

  就是利用payable新建一个功能函数

chapter4:随机数

  solidity里,用keccak256生成随机数,生成随机数的参数只能用一次,其实是一种伪随机。这样易被不诚实节点攻击。

  因为solidity采用pow共识机制,大量挖矿竞争者需要竞争解决一个数学问题,优先解决者将工作量证明和事务共同发布。此时该挖矿者可以在自己节点无限生成随机数直到达到满意结果后再发布。

  这个问题解决比较复杂,可以参考https://ethereum.stackexchange.com/questions/191/how-can-i-securely-generate-a-random-number-in-my-smart-contract的回答。有一种思路是利用oracles访问外部函数生成随机数。

  当然,这种攻击需要耗费大量资源,所以像我们做的这种小游戏可以直接用random函数来生成随机数,没有谁那么闲来攻击一个效益极差的节点。

chapter5:Zombie Fighting

  一个新功能

chapter6,7:重构通用逻辑

  把代码里使用了好多次的require打包成了一个modifier。

chapter8:完善attack函数

chapter9之后:新增一些函数参数,和一些完善

  

  

  

最新文章

  1. Mina入门教程(二)----Spring4 集成Mina
  2. gradle相关配置内容解析
  3. MVC5+EF6 入门完整教程七
  4. DOM事件机制进一步理解
  5. C#12种顺序排序
  6. javaweb回顾第四篇Servlet异常处理
  7. android 小记
  8. C语言数据结构之栈:括号匹配
  9. Postman用法简介-Http请求模拟工具
  10. XCode7中不能使用http的临时配置解决办法
  11. 打印 PHP $_SERVER 常量
  12. mysql5.6.16绿色版配置、运行
  13. 懵懂oracle之存储过程2
  14. project euler做题记录
  15. 2-创建spring boot项目
  16. CentOS7中安装MySQL5.7
  17. MySQL高可用方案MHA在线切换的步骤及原理
  18. 检测到目标URL存在http host头攻击漏洞
  19. R read.tabe line 5 did not have 2 elements
  20. 查询ip

热门文章

  1. (Linux学习笔记一:压缩)[20180209]
  2. Wireshark工具抓包的数据包分析
  3. Spring MVC 的核心应用-1
  4. 第2章 jQuery选择器
  5. form表单的一个页面多个上传按钮实例
  6. linux操作系统的目录以及用户权权限的管理
  7. python教程(一)·简介
  8. 选择排序,C语言实现
  9. C指针(2)——指针在函数中的应用(程序讲解)
  10. 16-oauth2-oidc-Client实现