DECOMPILED SOLIDITY (Heimdall)
VERIFY
// SPDX-License-Identifier: MIT
pragma solidity > = 0.8 . 0 ;
/// @title Decompiled Contract
/// @author Jonathan Becker <jonathan@jbecker.dev>
/// @custom:version heimdall-rs v0.9.2
///
/// @notice This contract was decompiled using the heimdall-rs decompiler.
/// It was generated directly by tracing the EVM opcodes from this contract.
/// As a result, it may not compile or even be valid solidity code.
/// Despite this, it should be obvious what each function does. Overall
/// logic should have been preserved throughout decompiling.
///
/// @custom:github You can find the open-source decompiler here:
/// https://heimdall.rs
contract DecompiledContract {
uint256 public constant rate = 24000 ;
uint256 public constant mkr = 910928527968400316125753109717913824688037263778 ;
uint256 public constant sky = 570921205234808502046533014728369247151631707205 ;
uint256 public fee;
mapping ( bytes32 = > bytes32 ) storage_map_a;
uint256 public take;
mapping ( bytes32 = > bytes32 ) storage_map_c;
event Rely( address ) ;
event MkrToSky( address , address , uint256 , uint256 , uint256 ) ;
event Collect( address , uint256 ) ;
event File( bytes32 , uint256 ) ;
event Deny( address ) ;
event Burn( uint256 ) ;
/// @custom:selector 0x29ae8114
/// @custom:signature file(bytes32 arg0, uint256 arg1) public payable
/// @param arg0 ["uint256", "bytes32", "int256"]
/// @param arg1 ["uint256", "bytes32", "int256"]
function file( bytes32 arg0, uint256 arg1) public payable {
require ( arg0 = = arg0) ;
require ( arg1 = = arg1) ;
address var_a = address ( msg. sender) ;
require ( storage_map_a[ var_a] = = 0x01 , "MkrSky/fee-exceeds-wad" ) ;
require ( arg0 - 0x6665650000000000000000000000000000000000000000000000000000000000 , "MkrSky/fee-exceeds-wad" ) ;
require ( ! ( arg1 > 0x0de0b6b3a7640000 ) , "MkrSky/fee-exceeds-wad" ) ;
fee = arg1;
emit File( arg0, arg1) ;
}
/// @custom:selector 0x42966c68
/// @custom:signature Unresolved_42966c68(uint256 arg0) public payable
/// @param arg0 ["uint256", "bytes32", "int256"]
function Unresolved_42966c68( uint256 arg0) public payable {
require ( arg0 = = arg0) ;
address var_a = address ( msg. sender) ;
require ( storage_map_a[ var_a] = = 0x01 ) ;
address var_d = address ( this) ;
require ( address ( 0x6400fe04cba0d72be2f2e6ece30ba7c591752c45 ) . code. length) ;
( bool success, bytes memory ret0) = address ( 0x6400fe04cba0d72be2f2e6ece30ba7c591752c45 ) . Unresolved_9dc29fac( var_d) ; // call
emit Burn( arg0) ;
}
/// @custom:selector 0xbf353dbb
/// @custom:signature wards(address arg0) public view returns (uint256)
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function wards( address arg0) public view returns ( uint256 ) {
require ( arg0 = = ( address ( arg0) ) ) ;
address var_b = arg0;
return storage_map_c[ var_b] ;
}
/// @custom:selector 0x65fae35e
/// @custom:signature rely(address arg0) public payable
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function rely( address arg0) public payable {
require ( arg0 = = ( address ( arg0) ) ) ;
address var_a = address ( msg. sender) ;
require ( storage_map_a[ var_a] = = 0x01 , "MkrSky/not-authorized" ) ;
var_a = address ( arg0) ;
storage_map_a[ var_a] = 0x01 ;
emit Rely( address ( arg0) ) ;
}
/// @custom:selector 0x9c52a7f1
/// @custom:signature deny(address arg0) public payable
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function deny( address arg0) public payable {
require ( arg0 = = ( address ( arg0) ) ) ;
address var_a = address ( msg. sender) ;
require ( storage_map_a[ var_a] = = 0x01 , "MkrSky/not-authorized" ) ;
var_a = address ( arg0) ;
storage_map_a[ var_a] = 0 ;
emit Deny( address ( arg0) ) ;
}
/// @custom:selector 0x06ec16f8
/// @custom:signature collect(address arg0) public payable returns (uint256)
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function collect( address arg0) public payable returns ( uint256 ) {
require ( arg0 = = ( address ( arg0) ) ) ;
address var_a = address ( msg. sender) ;
require ( storage_map_a[ var_a] = = 0x01 ) ;
require ( take > 0 ) ;
take = 0 ;
address var_d = address ( arg0) ;
require ( address ( 0x6400fe04cba0d72be2f2e6ece30ba7c591752c45 ) . code. length) ;
( bool success, bytes memory ret0) = address ( 0x6400fe04cba0d72be2f2e6ece30ba7c591752c45 ) . Unresolved_a9059cbb( var_d) ; // call
emit Collect( address ( arg0) , take) ;
return take;
}
/// @custom:selector 0xab89605a
/// @custom:signature mkrToSky(address arg0, uint256 arg1) public payable
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
/// @param arg1 ["uint256", "bytes32", "int256"]
function mkrToSky( address arg0, uint256 arg1) public payable {
require ( arg0 = = ( address ( arg0) ) ) ;
require ( arg1 = = arg1) ;
require ( ! arg1 | ( 0x5dc0 = = ( ( arg1 * 0x5dc0 ) / arg1) ) ) ;
require ( ! fee > 0 ) ;
require ( ( ! arg1 * 0x5dc0 ) | ( fee = = ( ( ( arg1 * 0x5dc0 ) * fee) / ( arg1 * 0x5dc0 ) ) ) ) ;
require ( 0x0de0b6b3a7640000 ) ;
require ( ! take > ( take + ( ( ( arg1 * 0x5dc0 ) * fee) / 0x0de0b6b3a7640000 ) ) ) ;
take = take + ( ( ( arg1 * 0x5dc0 ) * fee) / 0x0de0b6b3a7640000 ) ;
address var_d = address ( msg. sender) ;
require ( address ( 0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2 ) . code. length) ;
( bool success, bytes memory ret0) = address ( 0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2 ) . Unresolved_9dc29fac( var_d) ; // call
var_d = address ( arg0) ;
require ( address ( 0x6400fe04cba0d72be2f2e6ece30ba7c591752c45 ) . code. length) ;
( bool success, bytes memory ret0) = address ( 0x6400fe04cba0d72be2f2e6ece30ba7c591752c45 ) . Unresolved_a9059cbb( var_d) ; // call
emit MkrToSky( address ( msg. sender) , address ( arg0) , arg1, ( arg1 * 0x5dc0 ) - ( ( ( arg1 * 0x5dc0 ) * fee) / 0x0de0b6b3a7640000 ) , ( ( arg1 * 0x5dc0 ) * fee) / 0x0de0b6b3a7640000 ) ;
}
}
ABI
[
{
"type": "function",
"name": "Unresolved_42966c68",
"inputs": [
{
"name": "arg0",
"type": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "collect",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "payable"
},
{
"type": "function",
"name": "deny",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "fee",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "file",
"inputs": [
{
"name": "arg0",
"type": "bytes32"
},
{
"name": "arg1",
"type": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "mkr",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "mkrToSky",
"inputs": [
{
"name": "arg0",
"type": "address"
},
{
"name": "arg1",
"type": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "rate",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "rely",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "sky",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "take",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "wards",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "event",
"name": "Burn",
"inputs": [
{
"name": "arg0",
"type": "uint256",
"indexed": false
}
],
"anonymous": false
},
{
"type": "event",
"name": "Collect",
"inputs": [
{
"name": "arg0",
"type": "address",
"indexed": false
},
{
"name": "arg1",
"type": "uint256",
"indexed": false
}
],
"anonymous": false
},
{
"type": "event",
"name": "Deny",
"inputs": [
{
"name": "arg0",
"type": "address",
"indexed": false
}
],
"anonymous": false
},
{
"type": "event",
"name": "File",
"inputs": [
{
"name": "arg0",
"type": "bytes32",
"indexed": false
},
{
"name": "arg1",
"type": "uint256",
"indexed": false
}
],
"anonymous": false
},
{
"type": "event",
"name": "MkrToSky",
"inputs": [
{
"name": "arg0",
"type": "address",
"indexed": false
},
{
"name": "arg1",
"type": "address",
"indexed": false
},
{
"name": "arg2",
"type": "uint256",
"indexed": false
},
{
"name": "arg3",
"type": "uint256",
"indexed": false
},
{
"name": "arg4",
"type": "uint256",
"indexed": false
}
],
"anonymous": false
},
{
"type": "event",
"name": "Rely",
"inputs": [
{
"name": "arg0",
"type": "address",
"indexed": false
}
],
"anonymous": false
}
]