false
true
0

Contract Address Details

0x3fa88872368b9bfea50c35b35fff55c425C8ac53

Contract Name
DaiJoin
Creator
0xbcaee0–64cea5 at 0xaeb31d–f9c914
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
180 Transactions
Transfers
0 Transfers
Gas Used
0
Last Balance Update
26167547
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
DaiJoin




Optimization enabled
true
Compiler version
v0.6.12+commit.27d51765




Optimization runs
200
EVM Version
default




Verified at
2025-04-18T13:56:56.182162Z

Constructor Arguments

0x00000000000000000000000016ca93f2f65d5495c874109fff38d11d39850b67000000000000000000000000c40c58afff0a8908c392a752f4951eff381aa0b2

Arg [0] (address) : 0x16ca93f2f65d5495c874109fff38d11d39850b67
Arg [1] (address) : 0xc40c58afff0a8908c392a752f4951eff381aa0b2

              

Contract source code

// SPDX-License-Identifier: AGPL-3.0-or-later

/// join.sol -- Basic token adapters

pragma solidity ^0.6.12;

interface GemLike {
    function decimals() external view returns (uint);
    function transfer(address,uint) external returns (bool);
    function transferFrom(address,address,uint) external returns (bool);
}

interface DSTokenLike {
    function mint(address,uint) external;
    function burn(address,uint) external;
}

interface VatLike {
    function slip(bytes32,address,int) external;
    function move(address,address,uint) external;
}

contract GemJoin {
    // --- Auth ---
    mapping (address => uint) public wards;
    function rely(address usr) external auth {
        wards[usr] = 1;
        emit Rely(usr);
    }
    function deny(address usr) external auth {
        wards[usr] = 0;
        emit Deny(usr);
    }
    modifier auth {
        require(wards[msg.sender] == 1, "GemJoin/not-authorized");
        _;
    }

    VatLike public vat;   // CDP Engine
    bytes32 public ilk;   // Collateral Type
    GemLike public gem;
    uint    public dec;
    uint    public live;  // Active Flag

    // Events
    event Rely(address indexed usr);
    event Deny(address indexed usr);
    event Join(address indexed usr, uint256 wad);
    event Exit(address indexed usr, uint256 wad);
    event Cage();

    constructor(address vat_, bytes32 ilk_, address gem_) public {
        wards[msg.sender] = 1;
        live = 1;
        vat = VatLike(vat_);
        ilk = ilk_;
        gem = GemLike(gem_);
        dec = gem.decimals();
        emit Rely(msg.sender);
    }

    function cage() external auth {
        live = 0;
        emit Cage();
    }

    function join(address usr, uint wad) external {
        require(live == 1, "GemJoin/not-live");
        require(int(wad) >= 0, "GemJoin/overflow");
        vat.slip(ilk, usr, int(wad));
        require(gem.transferFrom(msg.sender, address(this), wad), "GemJoin/failed-transfer");
        emit Join(usr, wad);
    }

    function exit(address usr, uint wad) external {
        require(live == 1, "GemJoin/not-live"); // Added live check
        require(wad <= 2 ** 255, "GemJoin/overflow");
        vat.slip(ilk, msg.sender, -int(wad));
        require(gem.transfer(usr, wad), "GemJoin/failed-transfer");
        emit Exit(usr, wad);
    }
}

contract DaiJoin {
    // --- Auth ---
    mapping (address => uint) public wards;
    function rely(address usr) external auth {
        wards[usr] = 1;
        emit Rely(usr);
    }
    function deny(address usr) external auth {
        wards[usr] = 0;
        emit Deny(usr);
    }
    modifier auth {
        require(wards[msg.sender] == 1, "DaiJoin/not-authorized");
        _;
    }

    VatLike public vat;      // CDP Engine
    DSTokenLike public dai;  // Stablecoin Token
    uint    public live;     // Active Flag

    // Events
    event Rely(address indexed usr);
    event Deny(address indexed usr);
    event Join(address indexed usr, uint256 wad);
    event Exit(address indexed usr, uint256 wad);
    event Cage();

    constructor(address vat_, address dai_) public {
        wards[msg.sender] = 1;
        live = 1;
        vat = VatLike(vat_);
        dai = DSTokenLike(dai_);
        emit Rely(msg.sender);
    }

    function cage() external auth {
        live = 0;
        emit Cage();
    }

    uint constant ONE = 10 ** 27;
    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x);
    }

    function join(address usr, uint wad) external {
        require(live == 1, "DaiJoin/not-live"); // Added live check
        vat.move(address(this), usr, mul(ONE, wad));
        dai.burn(msg.sender, wad);
        emit Join(usr, wad);
    }

    function exit(address usr, uint wad) external {
        require(live == 1, "DaiJoin/not-live");
        vat.move(msg.sender, address(this), mul(ONE, wad));
        dai.mint(usr, wad);
        emit Exit(usr, wad);
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"vat_","internalType":"address"},{"type":"address","name":"dai_","internalType":"address"}]},{"type":"event","name":"Cage","inputs":[],"anonymous":false},{"type":"event","name":"Deny","inputs":[{"type":"address","name":"usr","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Exit","inputs":[{"type":"address","name":"usr","internalType":"address","indexed":true},{"type":"uint256","name":"wad","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Join","inputs":[{"type":"address","name":"usr","internalType":"address","indexed":true},{"type":"uint256","name":"wad","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Rely","inputs":[{"type":"address","name":"usr","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"cage","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract DSTokenLike"}],"name":"dai","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"deny","inputs":[{"type":"address","name":"usr","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"exit","inputs":[{"type":"address","name":"usr","internalType":"address"},{"type":"uint256","name":"wad","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"join","inputs":[{"type":"address","name":"usr","internalType":"address"},{"type":"uint256","name":"wad","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"live","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rely","inputs":[{"type":"address","name":"usr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract VatLike"}],"name":"vat","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"wards","inputs":[{"type":"address","name":"","internalType":"address"}]}]
              

Contract Creation Code

Verify & Publish
0x608060405234801561001057600080fd5b506040516107f73803806107f78339818101604052604081101561003357600080fd5b508051602091820151336000818152938490526040808520600190819055600381905580546001600160a01b038087166001600160a01b0319928316179092556002805492861692909116919091179055519293919290917fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6091a25050610738806100bf6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063957aa58c11610066578063957aa58c146101185780639c52a7f114610132578063bf353dbb14610158578063ef693bed1461017e578063f4b9fa75146101aa57610093565b806336569e77146100985780633b4da69f146100bc57806365fae35e146100ea5780636924500914610110575b600080fd5b6100a06101b2565b604080516001600160a01b039092168252519081900360200190f35b6100e8600480360360408110156100d257600080fd5b506001600160a01b0381351690602001356101c1565b005b6100e86004803603602081101561010057600080fd5b50356001600160a01b0316610350565b6100e86103f2565b61012061047f565b60408051918252519081900360200190f35b6100e86004803603602081101561014857600080fd5b50356001600160a01b0316610485565b6101206004803603602081101561016e57600080fd5b50356001600160a01b0316610526565b6100e86004803603604081101561019457600080fd5b506001600160a01b038135169060200135610538565b6100a06106c9565b6001546001600160a01b031681565b60035460011461020b576040805162461bcd60e51b815260206004820152601060248201526f4461694a6f696e2f6e6f742d6c69766560801b604482015290519081900360640190fd5b6001546001600160a01b031663bb35783b30846102346b033b2e3c9fd0803ce8000000866106d8565b6040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561028a57600080fd5b505af115801561029e573d6000803e3d6000fd5b505060025460408051632770a7eb60e21b81523360048201526024810186905290516001600160a01b039092169350639dc29fac925060448082019260009290919082900301818387803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693507fb4e09949657f21548b58afe74e7b86cd2295da5ff1598ae1e5faecb1cf19ca9592509081900360200190a25050565b336000908152602081905260409020546001146103ad576040805162461bcd60e51b815260206004820152601660248201527511185a529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b3360009081526020819052604090205460011461044f576040805162461bcd60e51b815260206004820152601660248201527511185a529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b600060038190556040517f2308ed18a14e800c39b86eb6ea43270105955ca385b603b64eca89f98ae8fbda9190a1565b60035481565b336000908152602081905260409020546001146104e2576040805162461bcd60e51b815260206004820152601660248201527511185a529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60006020819052908152604090205481565b600354600114610582576040805162461bcd60e51b815260206004820152601060248201526f4461694a6f696e2f6e6f742d6c69766560801b604482015290519081900360640190fd5b6001546001600160a01b031663bb35783b33306105ab6b033b2e3c9fd0803ce8000000866106d8565b6040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561060157600080fd5b505af1158015610615573d6000803e3d6000fd5b5050600254604080516340c10f1960e01b81526001600160a01b0387811660048301526024820187905291519190921693506340c10f199250604480830192600092919082900301818387803b15801561066e57600080fd5b505af1158015610682573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693507f22d324652c93739755cf4581508b60875ebdd78c20c0cff5cf8e23452b29963192509081900360200190a25050565b6002546001600160a01b031681565b60008115806106f3575050808202828282816106f057fe5b04145b6106fc57600080fd5b9291505056fea26469706673582212204e415ccaae7f57d2693d75ff5e591093d681c2330e7c20b33bc45d3208fcf39d64736f6c634300060c003300000000000000000000000016ca93f2f65d5495c874109fff38d11d39850b67000000000000000000000000c40c58afff0a8908c392a752f4951eff381aa0b2

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063957aa58c11610066578063957aa58c146101185780639c52a7f114610132578063bf353dbb14610158578063ef693bed1461017e578063f4b9fa75146101aa57610093565b806336569e77146100985780633b4da69f146100bc57806365fae35e146100ea5780636924500914610110575b600080fd5b6100a06101b2565b604080516001600160a01b039092168252519081900360200190f35b6100e8600480360360408110156100d257600080fd5b506001600160a01b0381351690602001356101c1565b005b6100e86004803603602081101561010057600080fd5b50356001600160a01b0316610350565b6100e86103f2565b61012061047f565b60408051918252519081900360200190f35b6100e86004803603602081101561014857600080fd5b50356001600160a01b0316610485565b6101206004803603602081101561016e57600080fd5b50356001600160a01b0316610526565b6100e86004803603604081101561019457600080fd5b506001600160a01b038135169060200135610538565b6100a06106c9565b6001546001600160a01b031681565b60035460011461020b576040805162461bcd60e51b815260206004820152601060248201526f4461694a6f696e2f6e6f742d6c69766560801b604482015290519081900360640190fd5b6001546001600160a01b031663bb35783b30846102346b033b2e3c9fd0803ce8000000866106d8565b6040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561028a57600080fd5b505af115801561029e573d6000803e3d6000fd5b505060025460408051632770a7eb60e21b81523360048201526024810186905290516001600160a01b039092169350639dc29fac925060448082019260009290919082900301818387803b1580156102f557600080fd5b505af1158015610309573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693507fb4e09949657f21548b58afe74e7b86cd2295da5ff1598ae1e5faecb1cf19ca9592509081900360200190a25050565b336000908152602081905260409020546001146103ad576040805162461bcd60e51b815260206004820152601660248201527511185a529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b3360009081526020819052604090205460011461044f576040805162461bcd60e51b815260206004820152601660248201527511185a529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b600060038190556040517f2308ed18a14e800c39b86eb6ea43270105955ca385b603b64eca89f98ae8fbda9190a1565b60035481565b336000908152602081905260409020546001146104e2576040805162461bcd60e51b815260206004820152601660248201527511185a529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60006020819052908152604090205481565b600354600114610582576040805162461bcd60e51b815260206004820152601060248201526f4461694a6f696e2f6e6f742d6c69766560801b604482015290519081900360640190fd5b6001546001600160a01b031663bb35783b33306105ab6b033b2e3c9fd0803ce8000000866106d8565b6040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561060157600080fd5b505af1158015610615573d6000803e3d6000fd5b5050600254604080516340c10f1960e01b81526001600160a01b0387811660048301526024820187905291519190921693506340c10f199250604480830192600092919082900301818387803b15801561066e57600080fd5b505af1158015610682573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693507f22d324652c93739755cf4581508b60875ebdd78c20c0cff5cf8e23452b29963192509081900360200190a25050565b6002546001600160a01b031681565b60008115806106f3575050808202828282816106f057fe5b04145b6106fc57600080fd5b9291505056fea26469706673582212204e415ccaae7f57d2693d75ff5e591093d681c2330e7c20b33bc45d3208fcf39d64736f6c634300060c0033