false
true
0

Contract Address Details

0x06FF7BD8AC1136cE6340593292681FAA2A4B8c9d

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




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




Optimization runs
200
EVM Version
default




Verified at
2025-04-18T13:57:40.892283Z

Constructor Arguments

0x00000000000000000000000016ca93f2f65d5495c874109fff38d11d39850b6757504c532d410000000000000000000000000000000000000000000000000000000000000000000000000000a1077a294dde1b09bb078844df40758a5d0f9a27

Arg [0] (address) : 0x16ca93f2f65d5495c874109fff38d11d39850b67
Arg [1] (bytes32) : 57504c532d410000000000000000000000000000000000000000000000000000
Arg [2] (address) : 0xa1077a294dde1b09bb078844df40758a5d0f9a27

              

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":"bytes32","name":"ilk_","internalType":"bytes32"},{"type":"address","name":"gem_","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":"uint256","name":"","internalType":"uint256"}],"name":"dec","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":"view","outputs":[{"type":"address","name":"","internalType":"contract GemLike"}],"name":"gem","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bytes32","name":"","internalType":"bytes32"}],"name":"ilk","inputs":[]},{"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
0x608060405234801561001057600080fd5b506040516109893803806109898339818101604052606081101561003357600080fd5b508051602080830151604093840151336000908152808452859020600190819055600581905580546001600160a01b038087166001600160a01b03199283161790925560028490556003805483851692169190911790819055865163313ce56760e01b8152965195969395929491169263313ce5679260048281019392829003018186803b1580156100c457600080fd5b505afa1580156100d8573d6000803e3d6000fd5b505050506040513d60208110156100ee57600080fd5b505160045560405133907fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6090600090a2505050610859806101306000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063957aa58c11610071578063957aa58c146101365780639c52a7f114610150578063b3bcfa8214610176578063bf353dbb1461017e578063c5ce281e146101a4578063ef693bed146101ac576100a9565b806336569e77146100ae5780633b4da69f146100d257806365fae35e1461010057806369245009146101265780637bd2bea71461012e575b600080fd5b6100b66101d8565b604080516001600160a01b039092168252519081900360200190f35b6100fe600480360360408110156100e857600080fd5b506001600160a01b0381351690602001356101e7565b005b6100fe6004803603602081101561011657600080fd5b50356001600160a01b0316610405565b6100fe6104a7565b6100b6610534565b61013e610543565b60408051918252519081900360200190f35b6100fe6004803603602081101561016657600080fd5b50356001600160a01b0316610549565b61013e6105ea565b61013e6004803603602081101561019457600080fd5b50356001600160a01b03166105f0565b61013e610602565b6100fe600480360360408110156101c257600080fd5b506001600160a01b038135169060200135610608565b6001546001600160a01b031681565b600554600114610231576040805162461bcd60e51b815260206004820152601060248201526f47656d4a6f696e2f6e6f742d6c69766560801b604482015290519081900360640190fd5b600081121561027a576040805162461bcd60e51b815260206004820152601060248201526f47656d4a6f696e2f6f766572666c6f7760801b604482015290519081900360640190fd5b60015460025460408051633e6e9fef60e11b815260048101929092526001600160a01b038581166024840152604483018590529051921691637cdd3fde9160648082019260009290919082900301818387803b1580156102d957600080fd5b505af11580156102ed573d6000803e3d6000fd5b5050600354604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b0390921693506323b872dd92506064808201926020929091908290030181600087803b15801561034b57600080fd5b505af115801561035f573d6000803e3d6000fd5b505050506040513d602081101561037557600080fd5b50516103c2576040805162461bcd60e51b815260206004820152601760248201527623b2b6a537b4b717b330b4b632b216ba3930b739b332b960491b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917fb4e09949657f21548b58afe74e7b86cd2295da5ff1598ae1e5faecb1cf19ca95919081900360200190a25050565b33600090815260208190526040902054600114610462576040805162461bcd60e51b815260206004820152601660248201527511d95b529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b33600090815260208190526040902054600114610504576040805162461bcd60e51b815260206004820152601660248201527511d95b529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b600060058190556040517f2308ed18a14e800c39b86eb6ea43270105955ca385b603b64eca89f98ae8fbda9190a1565b6003546001600160a01b031681565b60055481565b336000908152602081905260409020546001146105a6576040805162461bcd60e51b815260206004820152601660248201527511d95b529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60045481565b60006020819052908152604090205481565b60025481565b600554600114610652576040805162461bcd60e51b815260206004820152601060248201526f47656d4a6f696e2f6e6f742d6c69766560801b604482015290519081900360640190fd5b600160ff1b81111561069e576040805162461bcd60e51b815260206004820152601060248201526f47656d4a6f696e2f6f766572666c6f7760801b604482015290519081900360640190fd5b60015460025460408051633e6e9fef60e11b815260048101929092523360248301526000848103604484015290516001600160a01b0390931692637cdd3fde92606480820193929182900301818387803b1580156106fb57600080fd5b505af115801561070f573d6000803e3d6000fd5b50506003546040805163a9059cbb60e01b81526001600160a01b03878116600483015260248201879052915191909216935063a9059cbb925060448083019260209291908290030181600087803b15801561076957600080fd5b505af115801561077d573d6000803e3d6000fd5b505050506040513d602081101561079357600080fd5b50516107e0576040805162461bcd60e51b815260206004820152601760248201527623b2b6a537b4b717b330b4b632b216ba3930b739b332b960491b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917f22d324652c93739755cf4581508b60875ebdd78c20c0cff5cf8e23452b299631919081900360200190a2505056fea2646970667358221220972933fbc16b18f243601ff2ca7bf168b8c2a8ad5ca8edff9fabbc8aabcb6f9a64736f6c634300060c003300000000000000000000000016ca93f2f65d5495c874109fff38d11d39850b6757504c532d410000000000000000000000000000000000000000000000000000000000000000000000000000a1077a294dde1b09bb078844df40758a5d0f9a27

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063957aa58c11610071578063957aa58c146101365780639c52a7f114610150578063b3bcfa8214610176578063bf353dbb1461017e578063c5ce281e146101a4578063ef693bed146101ac576100a9565b806336569e77146100ae5780633b4da69f146100d257806365fae35e1461010057806369245009146101265780637bd2bea71461012e575b600080fd5b6100b66101d8565b604080516001600160a01b039092168252519081900360200190f35b6100fe600480360360408110156100e857600080fd5b506001600160a01b0381351690602001356101e7565b005b6100fe6004803603602081101561011657600080fd5b50356001600160a01b0316610405565b6100fe6104a7565b6100b6610534565b61013e610543565b60408051918252519081900360200190f35b6100fe6004803603602081101561016657600080fd5b50356001600160a01b0316610549565b61013e6105ea565b61013e6004803603602081101561019457600080fd5b50356001600160a01b03166105f0565b61013e610602565b6100fe600480360360408110156101c257600080fd5b506001600160a01b038135169060200135610608565b6001546001600160a01b031681565b600554600114610231576040805162461bcd60e51b815260206004820152601060248201526f47656d4a6f696e2f6e6f742d6c69766560801b604482015290519081900360640190fd5b600081121561027a576040805162461bcd60e51b815260206004820152601060248201526f47656d4a6f696e2f6f766572666c6f7760801b604482015290519081900360640190fd5b60015460025460408051633e6e9fef60e11b815260048101929092526001600160a01b038581166024840152604483018590529051921691637cdd3fde9160648082019260009290919082900301818387803b1580156102d957600080fd5b505af11580156102ed573d6000803e3d6000fd5b5050600354604080516323b872dd60e01b81523360048201523060248201526044810186905290516001600160a01b0390921693506323b872dd92506064808201926020929091908290030181600087803b15801561034b57600080fd5b505af115801561035f573d6000803e3d6000fd5b505050506040513d602081101561037557600080fd5b50516103c2576040805162461bcd60e51b815260206004820152601760248201527623b2b6a537b4b717b330b4b632b216ba3930b739b332b960491b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917fb4e09949657f21548b58afe74e7b86cd2295da5ff1598ae1e5faecb1cf19ca95919081900360200190a25050565b33600090815260208190526040902054600114610462576040805162461bcd60e51b815260206004820152601660248201527511d95b529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b33600090815260208190526040902054600114610504576040805162461bcd60e51b815260206004820152601660248201527511d95b529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b600060058190556040517f2308ed18a14e800c39b86eb6ea43270105955ca385b603b64eca89f98ae8fbda9190a1565b6003546001600160a01b031681565b60055481565b336000908152602081905260409020546001146105a6576040805162461bcd60e51b815260206004820152601660248201527511d95b529bda5b8bdb9bdd0b585d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60045481565b60006020819052908152604090205481565b60025481565b600554600114610652576040805162461bcd60e51b815260206004820152601060248201526f47656d4a6f696e2f6e6f742d6c69766560801b604482015290519081900360640190fd5b600160ff1b81111561069e576040805162461bcd60e51b815260206004820152601060248201526f47656d4a6f696e2f6f766572666c6f7760801b604482015290519081900360640190fd5b60015460025460408051633e6e9fef60e11b815260048101929092523360248301526000848103604484015290516001600160a01b0390931692637cdd3fde92606480820193929182900301818387803b1580156106fb57600080fd5b505af115801561070f573d6000803e3d6000fd5b50506003546040805163a9059cbb60e01b81526001600160a01b03878116600483015260248201879052915191909216935063a9059cbb925060448083019260209291908290030181600087803b15801561076957600080fd5b505af115801561077d573d6000803e3d6000fd5b505050506040513d602081101561079357600080fd5b50516107e0576040805162461bcd60e51b815260206004820152601760248201527623b2b6a537b4b717b330b4b632b216ba3930b739b332b960491b604482015290519081900360640190fd5b6040805182815290516001600160a01b038416917f22d324652c93739755cf4581508b60875ebdd78c20c0cff5cf8e23452b299631919081900360200190a2505056fea2646970667358221220972933fbc16b18f243601ff2ca7bf168b8c2a8ad5ca8edff9fabbc8aabcb6f9a64736f6c634300060c0033