定价两次-同一事件在确认前再次发生

pragma solidity ^0.4.;

contract TransactionOrdering {
uint256 price;
address owner; event Purchase(address _buyer, uint256 _price);
event PriceChange(address _owner, uint256 _price); modifier ownerOnly() {
require(msg.sender == owner);
_;
} function TransactionOrdering() {
// constructor
owner = msg.sender;
price = ;
} function buy() returns (uint256) {
Purchase(msg.sender, price);
return price;
} function setPrice(uint256 _price) ownerOnly() {
price = _price;
PriceChange(owner, price);
}
}

改价失败-同一事件再次发生前就完成了流程

contract IOU{
// Approves the transfer of tokens
function approve(address _spender, uint256 _val) {
allowed[msg.sender][_spender] = _val;
return true;
}
// Transfers tokens
function transferFrom(address _from, address _to, uint256 _val) {
require(
allowed[_from][msg.sender] >= _val
&& balances[_from] >= _val
&& _val > 0);
balances[_from] -= _val;
balances[_to] += _val;
allowed [_from][msg.sender] -= _val;
return true;
}
}  

多人支付,总量不足-异步调用的问题,没能区别总成交量=目前已经完成的成交量+已经允许,但还没有callback的成交量,忽视了后面这一部分(Improper Check on Ether)

contract Casino{
function bet() payable {
// make sure we can pay out the player
if (address(this).balance < msg.value * ) throw;
bytes32 oid = oraclize_query(...); // random
bets[oid] = msg.value;
players[oid] = msg.sender;
}
function __callback(bytes32 myid, string result)
onlyOraclize onlyIfNotProcessed(myid) {
if (parseInt(result) % == )
players[myid].send( bets[myid] * );
}
}

没有在异步调用时区别身份-异步调用的返回可能是打乱顺序的

contract CasinoAltered{
function bet() payable {
// make sure we can pay out the player
if (address(this).balance < msg.value * ) throw;
bytes32 oid = oraclize_query(...); // random
bets[oid] = msg.value;
players[oid] = msg.sender;
}
function __callback(bytes32 myid, string result)
onlyOraclize onlyIfNotProcessed(myid) {
if (parseInt(result) % == )
players[myid].send( bets[bets.size() -] * );
}
}

EO bugs的更多相关文章

  1. Common Bugs in C Programming

    There are some Common Bugs in C Programming. Most of the contents are directly from or modified from ...

  2. POJ2096 Collecting Bugs

    Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 5090   Accepted: 2529 Case Time Limit: ...

  3. 【poj2096】Collecting Bugs

    题目描述 Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other materia ...

  4. 与你相遇好幸运,Mongodb客户端&BUGS

    > Robomongo https://robomongo.org > 日常使用频率最高的客户端 存在BUG: 在 db.getCollection('xzq').find({" ...

  5. OAF 中的EO 和VO

    EO :oracle.apps.fnd.framework.server.OAEntityImpl VO:oracle.apps.fnd.framework.server.OAViewRowImpl ...

  6. PL/SQL EO 设计与开发

    1.INSERT 调用PL/SQL 去insert的时候,没有使用super(),此时应当自己创建callable statement: 调用checkErrors()方法在执行 callable s ...

  7. 【月末轻松篇】--- 那些奇葩的Bugs

    不能说所有的bug都是纸老虎,但往往那种看似很奇葩的bug,导致的原因确实很简单,烦了你一段时间,找到真相又让你忍不住一笑.什么是奇葩的bug呢.我的定义是:代码逻辑都一样,但在A处是好的,到了B处就 ...

  8. 【POJ2096】Collecting Bugs 期望

    [POJ2096]Collecting Bugs Description Ivan is fond of collecting. Unlike other people who collect pos ...

  9. CSS Bugs 解决方案

    说明:本文档兼容性测试基础环境为:windows系统:IE6-IE10, Firefox6.0, Chrome13.0, Safari5.1, Opera11.51 Bugs及解决方案列表(以下实例默 ...

随机推荐

  1. P3440 [POI2006]SZK-Schools(费用流)

    P3440 [POI2006]SZK-Schools 每所学校$i$开一个点,$link(S,i,1,0)$ 每个编号$j$开一个点,$link(i,T,1,0)$ 蓝后学校向编号连边,$link(i ...

  2. \r \n \t \n\t

    [root@localhost advanced_shell_script]# cat test15.sh #!/bin/bash #!/bin/bash # echo -e# 默认情况下,echo命 ...

  3. Java ascii码值转为输出ascii码

    Java ascii码值转为输出ascii码 public static void main(String[] args) { // TODO Auto-generated method stub S ...

  4. JavaScript核心--Function

    什么是: 保存一段可重用的代码段的对象 何时: 只要一段代码可能反复使用时,都要封装为函数,反复调用函数 如何: 创建: 3种: 1. 直接量: function 函数名(参数列表){ 函数体; re ...

  5. Tomcat每日报错

    本次针对tomcat端口占用所产生的8080:8009:8000报错 1.打开CMD命令提示符(win+R). 2.输入指令netstat str -ano|findstr 8080(8080这里可以 ...

  6. 多邻国学英语 tips

    来源: https://www.cnblogs.com/daysme整理了一分多邻国学英语中的相关语法文档. 地方 null 现在完成时 null 反身代词 浓缩的精华:反身代词就是 “XX 自己” ...

  7. python多环境下虚拟环境的搭建和使用

    由于开发环境要求,或者实际需要.经常会出现python2.7和python3.x共存下的开发环境问题.虚拟环境的搭建可以很好的隔离Projects的开发环境. 1.首先解决python2.7和pyth ...

  8. vue ui 启动,浏览器报错Unexpected token <

    可能的解决办法: 选择清空缓存并硬性重新加载页面. 如果不行,全局卸载@vue/cli,重新安装.

  9. Map.putAll方法

    import Java.util.HashMap; public class Map_putAllTest { public static void main(String[] args){    / ...

  10. Java分布式锁看这篇就够了

    ### 什么是锁? 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量. 而同步的本质是通过锁来实现的 ...