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:
withdrawBalance()
setSecondsPerBlock(uint256 _secs)
withdrawAuctionBalances()
pause()
can receive withdrawal through:
withdrawBalance()
current value:
....
ceoAddress
can be changed by:
ceoAddress in setCEO(address _newCEO)
can call those functions:
setGeneScienceAddress(address _address)
pause()
setSiringAuctionAddress(address _address)
setSecondsPerBlock(uint256 _secs)
setCFO(address _newCFO)
setNewAddress(address _v2Address)
withdrawAuctionBalances()
setCEO(address _newCEO)
unpause()
setCOO(address _newCOO)
setMetadataAddress(address _contractAddress)
setSaleAuctionAddress(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()
createSiringAuction(uint256 _EtherDogId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration)
bidOnSiringAuction(uint256 _sireId, uint256 _matronId)
current value:
....
cooAddress
can be changed by:
ceoAddress in setCOO(address _newCOO)
can call those functions:
pause()
createGen0Auction(uint256 _genes)
setSecondsPerBlock(uint256 _secs)
withdrawAuctionBalances()
createPromoKitty(uint256 _genes, address _owner)
setAutoBirthFee(uint256 _val)
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()
createGen0Auction(uint256 _genes)
createSaleAuction(uint256 _flowerId, uint256 _startingPrice, uint256 _endingPrice, uint256 _duration)
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)
setSiringAuctionAddress(address _address)
setSaleAuctionAddress(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%.