Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lots of ERROR: JUMPI destination is null. errors for a simple contract #21

Open
ghost opened this issue Aug 17, 2017 · 0 comments
Open

Comments

@ghost
Copy link

ghost commented Aug 17, 2017

ABI='[{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isbuyable","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"capaccount","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"ensureTXable","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_capaccount","type":"address"}],"name":"setCAPaccount","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_opexaccount","type":"address"}],"name":"setOPEXacount","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_ratio","type":"uint256"}],"name":"setOPEXRatio","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"opexaccount","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_set","type":"bool"},{"name":"_finneyprice","type":"uint256"}],"name":"setIsBuyable","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"opexratio","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"minimumBalanceInFinney","type":"uint256"}],"name":"setMinBalance","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_'rom","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"}]
BIN=0x606060405236156100f8576000357c01000000000000000000000000000000000000000000000000000000009004806318160ddd1461010157806323b872dd146101295780632c51302a1461016e57806349fc06be146101985780634a501381146101d6578063545743a8146101ea57806370a082311461020757806385ac9f6a146102385780638620410b146102555780638da5cb5b1461027d5780639c243f14146102bb5780639c38cd00146102d85780639dda87ac14610316578063a6f2ae3a1461033c578063a9059cbb1461034b578063b1c7a62314610387578063c91d956c146103af578063f2fde38b146103cc576100f8565b6100ff5b5b565b005b346100025761011360048050506103e9565b6040518082815260200191505060405180910390f35b346100025761015660048080359060200190919080359060200190919080359060200190919050506103f2565b60405180821515815260200191505060405180910390f35b34610002576101806004805050610533565b60405180821515815260200191505060405180910390f35b34610002576101aa6004805050610546565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34610002576101e8600480505061056c565b005b346100025761020560048080359060200190919050506105e1565b005b3461000257610222600480803590602001909190505061067f565b6040518082815260200191505060405180910390f35b346100025761025360048080359060200190919050506106bd565b005b3461000257610267600480505061075b565b6040518082815260200191505060405180910390f35b346100025761028f6004805050610764565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34610002576102d6600480803590602001909190505061078a565b005b34610002576102ea60048050506107f5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b346100025761033a600480803590602001909190803590602001909190505061081b565b005b61034960048050506108cd565b005b346100025761036f6004808035906020019091908035906020019091905050610b8c565b60405180821515815260200191505060405180910390f35b34610002576103996004805050610cd4565b6040518082815260200191505060405180910390f35b34610002576103ca6004808035906020019091905050610cdd565b005b34610002576103e76004808035906020019091905050610d51565b005b60036000505481565b600081600660005060008673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054101580156104335750600082115b156105225781600660005060008573ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282825054019250508190555081600660005060008673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828282505403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905061052c5661052b565b6000905061052c565b5b9392505050565b600060149054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007600050543373ffffffffffffffffffffffffffffffffffffffff163110156105de573373ffffffffffffffffffffffffffffffffffffffff166108fc6007600050549081150290604051809050600060405180830381858888f1935050505015156105dc57610002566105dd565b5b5b5b565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561063d57610002565b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690836c010000000000000000000000009081020402179055505b5b50565b6000600660005060008373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505490506106b8565b919050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561071957610002565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690836c010000000000000000000000009081020402179055505b5b50565b60016000505481565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107e657610002565b806002600050819055505b5b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561087757610002565b81600060146101000a81548160ff02191690837f010000000000000000000000000000000000000000000000000000000000000090810204021790555066038d7ea4c6800081026001600050819055505b5b5050565b6000600060149054906101000a900460ff16151561094b57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051809050600060405180830381858888f19350505050151561094a57610002565b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60026000505434811561000257049081150290604051809050600060405180830381858888f1935050505015156109bd57610002565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600260005054348115610002570434039081150290604051809050600060405180830381858888f193505050501515610a3157610002565b6001600050543481156100025704905080600660005060003373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828282505401925050819055508060036000828282505401925050819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60026000505484811561000257046040518082815260200191505060405180910390a35b50565b600081600660005060003373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505410158015610bcd5750600082115b15610cc45781600660005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282825054039250508190555081600660005060008573ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828282505401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3610cb761056c565b60019050610cce56610ccd565b60009050610cce565b5b92915050565b60026000505481565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d3957610002565b66038d7ea4c6800081026007600050819055505b5b50565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dad57610002565b80600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690836c010000000000000000000000009081020402179055505b5b5056

The command I am using is:

./porosity --abi $ABI --code $BIN --decompile

But the output contains a lot of errors and I definitely get an impression that some parts of the code are missing, for example in the buy() function:

Porosity v0.1 (https://www.comae.io)
Matt Suiche, Comae Technologies <[email protected]>
The Ethereum bytecode commandline decompiler.
Decompiles the given Ethereum input bytecode and outputs the Solidity code.

Attempting to parse ABI definition...
Success.
Hash: 0x18160DDD
ERROR: JUMPI destination is null.
function totalSupply() {
      return store_3;
}


LOC: 3
Hash: 0x23B872DD
ERROR: JUMPI destination is null.
function transferFrom(address,address,uint256) {
      if (!(arg_44 > 0x0)) {
      }
      store[arg_24] = store[arg_24] + arg_44;
      store[arg_4] = store[arg_4] - arg_44;
      memory[0x40] = 0x1;
      return memory[0x40];
}


LOC: 8
Hash: 0x2C51302A
ERROR: JUMPI destination is null.
function isbuyable() {
      memory[0x40] = 0x0;
      return memory[0x40];
}


LOC: 4
Hash: 0x49FC06BE
ERROR: JUMPI destination is null.
function capaccount() {
      return store_4;
}


LOC: 3
Hash: 0x4A501381
ERROR: JUMPI destination is null.
executeInstruction: NOT_IMPLEMENTED: BALANCE
function ensureTXable() {
      if (!store_7) {
      }
      return;
}


LOC: 5
Hash: 0x545743A8
ERROR: JUMPI destination is null.
function setCAPaccount(address) {
      if (msg.sender == store_0) {
         store[var_9Uy7y] = arg_4 * 0x1;
      }
}


LOC: 5
Hash: 0x70A08231
ERROR: JUMPI destination is null.
function balanceOf(address) {
      return store[arg_4];
}


LOC: 3
Hash: 0x85AC9F6A
ERROR: JUMPI destination is null.
function setOPEXacount(address) {
      if (msg.sender == store_0) {
         store[var_S4Af4] = arg_4 * 0x1;
      }
}


LOC: 5
Hash: 0x8620410B
ERROR: JUMPI destination is null.
function buyPrice() {
      return store_1;
}


LOC: 3
Hash: 0x8DA5CB5B
ERROR: JUMPI destination is null.
function owner() {
      return store_0;
}


LOC: 3
Hash: 0x9C243F14
ERROR: JUMPI destination is null.
function setOPEXRatio(uint256) {
      if (msg.sender == store_0) {
         store[var_M9mx1] = arg_4;
      }
}


LOC: 5
Hash: 0x9C38CD00
ERROR: JUMPI destination is null.
function opexaccount() {
      return store_5;
}


LOC: 3
Hash: 0x9DDA87AC
ERROR: JUMPI destination is null.
function setIsBuyable(bool,uint256) {
      if (msg.sender == store_0) {
         store[var_ekIRj] = 0x60000000000000000000000000000000000000000;
         store[var_HsnCA] = arg_24 * 0x38D7EA4C68000;
      }
}


LOC: 6
Hash: 0xA6F2AE3A
ERROR: JUMPI destination is null.
ERROR: JUMPI destination is null.
ERROR: JUMPI destination is null.
ERROR: JUMPI destination is null.
ERROR: JUMPI destination is null.
ERROR: JUMPI destination is null.
ERROR: JUMPI destination is null.
ERROR: JUMPI destination is null.
function buy() {
      if (!msg.value) {
      }
}


LOC: 4
Hash: 0xA9059CBB
ERROR: JUMPI destination is null.
executeInstruction: NOT_IMPLEMENTED: BALANCE
executeInstruction: NOT_IMPLEMENTED: BALANCE
function transfer(address,uint256) {
      if (!(arg_24 > 0x0)) {
      }
      store[msg.sender] = store[msg.sender] - arg_24;
      store[arg_4] = store[arg_4] + arg_24;
      if (!store_7) {
      }
      memory[0x40] = 0x1;
      return memory[0x40];
}


LOC: 10
Hash: 0xB1C7A623
ERROR: JUMPI destination is null.
function opexratio() {
      return store_2;
}


LOC: 3
Hash: 0xC91D956C
ERROR: JUMPI destination is null.
function setMinBalance(uint256) {
      if (msg.sender == store_0) {
         store[var_hO1Z4] = arg_4 * 0x38D7EA4C68000;
      }
}


LOC: 5
Hash: 0xF2FDE38B
ERROR: JUMPI destination is null.
function transferOwnership(address) {
      if (msg.sender == store_0) {
         store[var_2kEWV] = arg_4 * 0x1;
      }
}


LOC: 5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

0 participants