Fork me on GitHub

Show me what you got!

An example implementation of Eveem.org decompiler API.

Check out the Github repo to see how this analysis is done.

  
 # kitties -- 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d

 # contract roles

 cfoAddress 
  can be changed by:
    ceoAddress  in setCFO(address _newCFO)

  can call those functions:
    withdrawAuctionBalances()
    pause()
    withdrawBalance()
    setSecondsPerBlock(uint256 _secs)

  can receive withdrawal through:
    withdrawBalance()

  current value:
    ....

 ceoAddress 
  can be changed by:
    ceoAddress  in setCEO(address _newCEO)

  can call those functions:
    setCEO(address _newCEO)
    setGeneScienceAddress(address _address)
    unpause()
    setCOO(address _newCOO)
    setSecondsPerBlock(uint256 _secs)
    pause()
    setMetadataAddress(address _contractAddress)
    setSaleAuctionAddress(address _address)
    withdrawAuctionBalances()
    setNewAddress(address _v2Address)
    setCFO(address _newCFO)
    setSiringAuctionAddress(address _address)

  current value:
    ....

 siringAuction 
  can be changed by:
    ceoAddress  in setSiringAuctionAddress(address _address)

  can call those functions:
    _fallback()

  can receive withdrawal through:
    bidOnSiringAuction(uint256 _sireId, uint256 _matronId)

  can be called by:
    withdrawAuctionBalances()
    bidOnSiringAuction(uint256 _sireId, uint256 _matronId)
    createSiringAuction(uint256 _EtherDogId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration)

  current value:
    ....

 cooAddress 
  can be changed by:
    ceoAddress  in setCOO(address _newCOO)

  can call those functions:
    setSecondsPerBlock(uint256 _secs)
    pause()
    createGen0Auction(uint256 _genes)
    setAutoBirthFee(uint256 _val)
    withdrawAuctionBalances()
    createPromoKitty(uint256 _genes, address _owner)

  current value:
    ....

 erc721Metadata 
  can be changed by:
    ceoAddress  in setMetadataAddress(address _contractAddress)

  can be called by:
    tokenMetadata(uint256 _tokenId, string _preferredTransport)

  current value:
    ....

 saleAuction 
  can be changed by:
    ceoAddress  in setSaleAuctionAddress(address _address)

  can call those functions:
    _fallback()

  can be called by:
    withdrawAuctionBalances()
    createSaleAuction(uint256 _flowerId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration)
    createGen0Auction(uint256 _genes)

  current value:
    ....

 geneScience 
  can be changed by:
    ceoAddress  in setGeneScienceAddress(address _address)

  can be called by:
    giveBirth(uint256 _matronId)

  current value:
    ....

 unknown 
  can be called by:
    setGeneScienceAddress(address _address)
    setSaleAuctionAddress(address _address)
    setSiringAuctionAddress(address _address)

  current value:
    None

 anyone 
  can receive withdrawal through:
    giveBirth(uint256 _matronId)

  current value:
    None


  


If you were ever wondering...

- Who is the admin of a contract?
- Who can withdraw Ether from it?
- Who can kill it?
- Who can change the admins?
- What other contracts does this one reference?

All of this is done by analysing the contract's EVM bytecode.

There are bugs left and right, so don't trust it 100%.