Contract 0x7fFad0dA714f4595fC9c48FE789d76b9137D7245

Token Contract 
 
 
Txn Hash
Method
Block
From
To
Value
0x557f88536c3c14758593e8f9525692760d4ac3d46287e6bcfbfda203b77b2fe7Approve163135762023-01-01 18:01:5925 days 12 hrs ago0x9824697f7c12cabada9b57842060931c48dea969 IN  Paladin: palUNI Token0 Ether0.00040747 16.83985499
0x21bb00679062a09e41a7196a5ac78f314179e9f636f5e389e22570e63212461bApprove158462862022-10-28 11:33:3590 days 19 hrs ago0xe487396fe3b10c67d5293a6cdb5e2cb2f504ca85 IN  Paladin: palUNI Token0 Ether0.00045352 9.75725526
0xf8e4399c1fe2bba6a7b0e3d895e4e5b22fcca6b48a1e1a290f1e69718ce217a0Approve158415042022-10-27 19:29:4791 days 11 hrs ago0x44ac36d4eac3ff3ddca6cde05b1562d9b67d415e IN  Paladin: palUNI Token0 Ether0.00121325 26.1020758
0x2b9a391efc01542c5cf18d8c60e4f86f1ca8ca69b8e084fa3ade892d8d535ca4Approve157557422022-10-15 19:55:11103 days 11 hrs agoENS Name ledgerwall.eth IN  Paladin: palUNI Token0 Ether0.000715 15.38266857
0x5623e1fecc65f4275c6b57824caccc16f3a3490cbb1ade3496c9ccc88ae3d24dApprove148048212022-05-19 11:55:30252 days 19 hrs agoENS Name 0xrage.eth IN  Paladin: palUNI Token0 Ether0.00094774 20.38990852
0xadca2c2df084723e06a899678a220ef92856a8fb4751eff590fcd166b8dd0eadApprove147170482022-05-05 11:39:35266 days 19 hrs agoENS Name 2670.eth IN  Paladin: palUNI Token0 Ether0.00192657 41.44866384
0x783c3ea928d5435130dc1587fd3922382d7ed819b1ad5cd4d1dd97adf0dac59aApprove146852172022-04-30 11:03:28271 days 19 hrs ago0x202d0bec720743e0d41503e19b93298b0dad6531 IN  Paladin: palUNI Token0 Ether0.00164555 35.40266894
0xbddc97e00a15e12feccd29bdacba1abf72a2889731edcf829276351e69754d82Approve146109592022-04-18 19:13:51283 days 11 hrs ago0x5a62572cb3fab27b3c210917915363e3f12f9680 IN  Paladin: palUNI Token0 Ether0.00228694 49.2016776
0x91e3f6d4659bd048b6a1b6b6274868c310e2c816c99eb58fadbaa24350eb2987Approve144834932022-03-29 21:19:25303 days 9 hrs ago0x0ec07259e0cec1a4894c0c475da711701a03af33 IN  Paladin: palUNI Token0 Ether0.00289682 62.32283077
0x3f3663b4395d94d358118b1a68cf0b303919fe66ac1d204c2ab64310e4c34618Transfer144645802022-03-26 22:48:16306 days 8 hrs agoENS Name defiog.eth IN  Paladin: palUNI Token0 Ether0.00086698 18.3535777
0x65db2cf6d5268b1d924c94317b083f90a7c2e3921eba73640ba9f8686b8491e0Approve144101362022-03-18 11:27:38314 days 19 hrs ago0x8262267b55ab184f6b303e7e1ef260dc5165b5bf IN  Paladin: palUNI Token0 Ether0.00123841 26.64352627
0x60660ffbbec4db79f5e4b5282775739129d5e4dd723fd3dbd1a9e4eb22fbf4e2Approve143907022022-03-15 10:48:50317 days 20 hrs agoENS Name 0x1e51.eth IN  Paladin: palUNI Token0 Ether0.00079017 17
0xa70d05e55a2bcf0f81ed5951e2837a87aee25394dd1c6aebc4860888d3d24e39Approve143720982022-03-12 13:02:59320 days 17 hrs ago0x562b2b6860ae55621181ff70b8fe34fa96eeaa16 IN  Paladin: palUNI Token0 Ether0.0016808 36.16108564
0x88ec0829c3b99df7ed0464cb2e84b9463220ce3f79e913b3378a83f1ddce9739Approve143681192022-03-11 22:20:23321 days 8 hrs ago0x6f9bb7e454f5b3eb2310343f0e99269dc2bb8a1d IN  Paladin: palUNI Token0 Ether0.00204637 44.02598119
0x3e40a7fb614138735fa4807b559760a69f03627bb7ceea95f2a0354d50b9b2baApprove142221852022-02-17 7:00:28343 days 23 hrs agoENS Name totalrecaller.eth IN  Paladin: palUNI Token0 Ether0.00236339 50.84650187
0x27d9b3d589137f45c163fb9c74ff1fcb4cb1fc4f25e8f4da76e54492547ce540Transfer142049252022-02-14 14:52:00346 days 16 hrs ago0x7b2a056c1aa75d8248e0c0955f318a283b457949 IN  Paladin: palUNI Token0 Ether0.00409395 86.66647486
0xf95f4b8a8a21070a41816ac2dfb6dca52bfa370be664110c0a5dc30a9bfc5b83Approve141401962022-02-04 14:59:07356 days 15 hrs ago0x3fae23168f8f8d79bf3d24cc64bf34f2399b8715 IN  Paladin: palUNI Token0 Ether0.00208849 44.93225878
0xf4a84d86ced42f98eeb1854754d4bcaeb3a0bc0c07c232710096751e3d6f273fApprove141266592022-02-02 12:34:26358 days 18 hrs ago0xe7b68e282dfce12b21dca8faa8f50278818a9123 IN  Paladin: palUNI Token0 Ether0.00423028 91.01097612
0xf6628b4bd98d2a0fa92af7bef8c42633949059762b99f1e98506b07a7f92c0c3Approve141155262022-01-31 19:24:04360 days 11 hrs ago0x40d2ce4c14f04bd91c59c6a1cd6e28f2a0fc81f8 IN  Paladin: palUNI Token0 Ether0.00610121 131.26246707
0xe9c8178cd554e1186437d0ccdef096e0d17fd69706ae705e9d02678a55347506Approve140879282022-01-27 13:25:23364 days 17 hrs ago0xe5350e927b904fdb4d2af55c566e269bb3df1941 IN  Paladin: palUNI Token0 Ether0.00361286 77.72785836
0x886f8c61c709f0c229da002bb4cb78525062d23672c67369dda58153d5766da9Approve140346132022-01-19 7:26:54372 days 23 hrs agoENS Name terrace.eth IN  Paladin: palUNI Token0 Ether0.00411416 88.51292219
0x5940ce0e81ec42ab67466156c646d6bfec9fd0f1cfdfa452c5e00088de1adc7fApprove140249302022-01-17 19:30:28374 days 11 hrs ago0x7bfee91193d9df2ac0bfe90191d40f23c773c060 IN  Paladin: palUNI Token0 Ether0.01292935 278.16440625
0xab3b0542f8987a42af7d195351b5cbe21e1a42dd0e74a2b26539201f2e897dbbApprove140120282022-01-15 19:51:59376 days 11 hrs agoENS Name lambo.eth IN  Paladin: palUNI Token0 Ether0.00617503 132.85077374
0x61dcd86537bb8d1e343a70105bf35a8b7548d161cb806e7e05e7063cc5e6d2c1Approve140111122022-01-15 16:31:50376 days 14 hrs ago0xec80b5494e873fd9a7c7bf2368d743b38eb0b9ea IN  Paladin: palUNI Token0 Ether0.00654534 140.81764931
0xdea6eadfd524080349761a2a7c4e087e8b5d866f226482740e577aa9a4021ee7Approve140031892022-01-14 10:48:06377 days 20 hrs ago0x56e42e67f1986dcdc8a8c7c3b354efef57a876ef IN  Paladin: palUNI Token0 Ether0.00527745 113.54009037
[ Download CSV Export 

OVERVIEW

Paladin is a governance lending protocol transforming your voting power into a new money lego.

View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PalToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 25000 runs

Other Settings:
default evmVersion
File 1 of 5 : PalToken.sol
//██████╗  █████╗ ██╗      █████╗ ██████╗ ██╗███╗   ██╗
//██╔══██╗██╔══██╗██║     ██╔══██╗██╔══██╗██║████╗  ██║
//██████╔╝███████║██║     ███████║██║  ██║██║██╔██╗ ██║
//██╔═══╝ ██╔══██║██║     ██╔══██║██║  ██║██║██║╚██╗██║
//██║     ██║  ██║███████╗██║  ██║██████╔╝██║██║ ╚████║
//╚═╝     ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚═════╝ ╚═╝╚═╝  ╚═══╝
                                                     

pragma solidity ^0.7.6;
//SPDX-License-Identifier: MIT

import "./utils/SafeMath.sol";
import "./utils/IERC20.sol";
import "./utils/Admin.sol";
import {Errors} from  "./utils/Errors.sol";

/** @title palToken ERC20 contract  */
/// @author Paladin
contract PalToken is IERC20, Admin {
    using SafeMath for uint;

    //ERC20 Variables & Mappings :

    /** @notice ERC20 token Name */
    string public name;
    /** @notice ERC20 token Symbol */
    string public symbol;
    /** @notice ERC20 token Decimals */
    uint public decimals;

    // ERC20 total Supply
    uint private _totalSupply;


    //don't want to initiate the contract twice
    bool private initialized;


    /** @notice PalPool contract that can Mint/Burn this token */
    address public palPool;


    /** @dev Balances for this ERC20 token */
    mapping(address => uint) internal balances;
    /** @dev Allowances for this ERC20 token, sorted by user */
    mapping(address => mapping (address => uint)) internal transferAllowances;


    /** @dev Modifier so only the PalPool linked to this contract can Mint/Burn tokens */
    modifier onlyPool() {
        require(msg.sender == palPool);

        _;
    }


    //Functions : 


    constructor (string memory name_, string memory symbol_) {
        admin = msg.sender;

        name = name_;
        symbol = symbol_;
        decimals = 18;
        initialized = false;
    }


    function initiate(address _palPool) external adminOnly returns (bool){
        require(!initialized);

        initialized = true;
        palPool = _palPool;

        return true;
    }


    function totalSupply() external override view returns (uint256){
        return _totalSupply;
    }


    function transfer(address dest, uint amount) external override returns(bool){
        return _transfer(msg.sender, dest, amount);
    }


    function transferFrom(address src, address dest, uint amount) external override returns(bool){
        require(transferAllowances[src][msg.sender] >= amount, Errors.ALLOWANCE_TOO_LOW);

        transferAllowances[src][msg.sender] = transferAllowances[src][msg.sender].sub(amount);

        _transfer(src, dest, amount);

        return true;
    }


    function _transfer(address src, address dest, uint amount) internal returns(bool){
        //Check if the transfer is possible
        require(balances[src] >= amount, Errors.BALANCE_TOO_LOW);
        require(dest != src, Errors.SELF_TRANSFER);
        require(src != address(0) && dest != address(0), Errors.ZERO_ADDRESS);

        //Update balances
        balances[src] = balances[src].sub(amount);
        balances[dest] = balances[dest].add(amount);

        //emit the Transfer Event
        emit Transfer(src,dest,amount);
        return true;
    }

    function approve(address spender, uint amount) external override returns(bool){
        return _approve(msg.sender, spender, amount);
    }

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
        return _approve(msg.sender, spender, transferAllowances[msg.sender][spender].add(addedValue));
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        uint256 currentAllowance = transferAllowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "decreased allowance below zero");
        return _approve(msg.sender, spender, currentAllowance.sub(subtractedValue));
    }


    function _approve(address owner, address spender, uint amount) internal returns(bool){
        require(spender != address(0), Errors.ZERO_ADDRESS);

        //Update allowance and emit the Approval event
        transferAllowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);

        return true;
    }


    function allowance(address owner, address spender) external view override returns(uint){
        return transferAllowances[owner][spender];
    }


    function balanceOf(address owner) external view override returns(uint){
        return balances[owner];
    }


    function mint(address _user, uint _toMint) external onlyPool returns(bool){
        require(_user != address(0), Errors.ZERO_ADDRESS);

        _totalSupply = _totalSupply.add(_toMint);
        balances[_user] = balances[_user].add(_toMint);

        emit Transfer(address(0),_user,_toMint);

        return true;
    }


    function burn(address _user, uint _toBurn) external onlyPool returns(bool){
        require(_user != address(0), Errors.ZERO_ADDRESS);
        require(balances[_user] >= _toBurn, Errors.INSUFFICIENT_BALANCE);

        _totalSupply = _totalSupply.sub(_toBurn);
        balances[_user] = balances[_user].sub(_toBurn);

        emit Transfer(_user,address(0),_toBurn);

        return true;
    }

}

File 2 of 5 : SafeMath.sol
pragma solidity ^0.7.6;
//SPDX-License-Identifier: MIT

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction underflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

File 3 of 5 : IERC20.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity ^0.7.6;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 4 of 5 : Admin.sol
pragma solidity ^0.7.6;
//SPDX-License-Identifier: MIT


/** @title Admin contract  */
/// @author Paladin
contract Admin {

    /** @notice (Admin) Event when the contract admin is updated */
    event NewAdmin(address oldAdmin, address newAdmin);

    /** @dev Admin address for this contract */
    address payable internal admin;
    
    modifier adminOnly() {
        //allows only the admin of this contract to call the function
        require(msg.sender == admin, '1');
        _;
    }

        /**
    * @notice Set a new Admin
    * @dev Changes the address for the admin parameter
    * @param _newAdmin address of the new Controller Admin
    */
    function setNewAdmin(address payable _newAdmin) external adminOnly {
        address _oldAdmin = admin;
        admin = _newAdmin;

        emit NewAdmin(_oldAdmin, _newAdmin);
    }
}

File 5 of 5 : Errors.sol
//██████╗  █████╗ ██╗      █████╗ ██████╗ ██╗███╗   ██╗
//██╔══██╗██╔══██╗██║     ██╔══██╗██╔══██╗██║████╗  ██║
//██████╔╝███████║██║     ███████║██║  ██║██║██╔██╗ ██║
//██╔═══╝ ██╔══██║██║     ██╔══██║██║  ██║██║██║╚██╗██║
//██║     ██║  ██║███████╗██║  ██║██████╔╝██║██║ ╚████║
//╚═╝     ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚═════╝ ╚═╝╚═╝  ╚═══╝
                                                     

pragma solidity ^0.7.6;
//SPDX-License-Identifier: MIT

library Errors {
    // Admin error
    string public constant CALLER_NOT_ADMIN = '1'; // 'The caller must be the admin'
    string public constant CALLER_NOT_CONTROLLER = '29'; // 'The caller must be the admin or the controller'
    string public constant CALLER_NOT_ALLOWED_POOL = '30';  // 'The caller must be a palPool listed in the controller'
    string public constant CALLER_NOT_MINTER = '31';

    // ERC20 type errors
    string public constant FAIL_TRANSFER = '2';
    string public constant FAIL_TRANSFER_FROM = '3';
    string public constant BALANCE_TOO_LOW = '4';
    string public constant ALLOWANCE_TOO_LOW = '5';
    string public constant SELF_TRANSFER = '6';

    // PalPool errors
    string public constant INSUFFICIENT_CASH = '9';
    string public constant INSUFFICIENT_BALANCE = '10';
    string public constant FAIL_DEPOSIT = '11';
    string public constant FAIL_LOAN_INITIATE = '12';
    string public constant FAIL_BORROW = '13';
    string public constant ZERO_BORROW = '27';
    string public constant BORROW_INSUFFICIENT_FEES = '23';
    string public constant LOAN_CLOSED = '14';
    string public constant NOT_LOAN_OWNER = '15';
    string public constant LOAN_OWNER = '16';
    string public constant FAIL_LOAN_EXPAND = '17';
    string public constant NOT_KILLABLE = '18';
    string public constant RESERVE_FUNDS_INSUFFICIENT = '19';
    string public constant FAIL_MINT = '20';
    string public constant FAIL_BURN = '21';
    string public constant FAIL_WITHDRAW = '24';
    string public constant FAIL_CLOSE_BORROW = '25';
    string public constant FAIL_KILL_BORROW = '26';
    string public constant ZERO_ADDRESS = '22';
    string public constant INVALID_PARAMETERS = '28'; 
    string public constant FAIL_LOAN_DELEGATEE_CHANGE = '32';
    string public constant FAIL_LOAN_TOKEN_BURN = '33';
    string public constant FEES_ACCRUED_INSUFFICIENT = '34';

}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 25000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_toBurn","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_palPool","type":"address"}],"name":"initiate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_toMint","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"palPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newAdmin","type":"address"}],"name":"setNewAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dest","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dest","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200175d3803806200175d833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b506040525050600080546001600160a01b03191633179055508151620001c6906001906020850190620001f4565b508051620001dc906002906020840190620001f4565b50506012600355506005805460ff19169055620002a0565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200022c576000855562000277565b82601f106200024757805160ff191683800117855562000277565b8280016001018555821562000277579182015b82811115620002775782518255916020019190600101906200025a565b506200028592915062000289565b5090565b5b808211156200028557600081556001016200028a565b6114ad80620002b06000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610380578063a9059cbb146103b9578063ca3d1598146103f2578063dd62ed3e1461042557610100565b806370a08231146102d75780638eec99c81461030a57806395d89b411461033f5780639dc29fac1461034757610100565b806327b4c949116100d357806327b4c9491461022c578063313ce5671461025d578063395093511461026557806340c10f191461029e57610100565b806306fdde0314610105578063095ea7b31461018257806318160ddd146101cf57806323b872dd146101e9575b600080fd5b61010d610460565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101bb6004803603604081101561019857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561050b565b604080519115158252519081900360200190f35b6101d761051f565b60408051918252519081900360200190f35b6101bb600480360360608110156101ff57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610525565b6102346106b3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101d76106d4565b6101bb6004803603604081101561027b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106da565b6101bb600480360360408110156102b457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610722565b6101d7600480360360208110156102ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108a9565b61033d6004803603602081101561032057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108d1565b005b61010d6109df565b6101bb6004803603604081101561035d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a55565b6101bb6004803603604081101561039657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610cbb565b6101bb600480360360408110156103cf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610d72565b6101bb6004803603602081101561040857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d7f565b6101d76004803603604081101561043b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610e8d565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105035780601f106104d857610100808354040283529160200191610503565b820191906000526020600020905b8154815290600101906020018083116104e657829003601f168201915b505050505081565b6000610518338484610ec5565b9392505050565b60045490565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602090815260408083203384528252808320548151808301909252600182527f35000000000000000000000000000000000000000000000000000000000000009282019290925290831115610630576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105f55781810151838201526020016105dd565b50505050905090810190601f1680156106225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff8416600090815260076020908152604080832033845290915290205461066c9083610fed565b73ffffffffffffffffffffffffffffffffffffffff851660009081526007602090815260408083203384529091529020556106a884848461102f565b506001949350505050565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161051891859061071d908661138f565b610ec5565b600554600090610100900473ffffffffffffffffffffffffffffffffffffffff16331461074e57600080fd5b60408051808201909152600281527f3232000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff84166107fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156105f55781810151838201526020016105dd565b5060045461080c908361138f565b60045573ffffffffffffffffffffffffffffffffffffffff831660009081526006602052604090205461083f908361138f565b73ffffffffffffffffffffffffffffffffffffffff841660008181526006602090815260408083209490945583518681529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff16331461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f3100000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040805191909216808252602082019390935281517ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc929181900390910190a15050565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156105035780601f106104d857610100808354040283529160200191610503565b600554600090610100900473ffffffffffffffffffffffffffffffffffffffff163314610a8157600080fd5b60408051808201909152600281527f3232000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416610b31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156105f55781810151838201526020016105dd565b5081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156040518060400160405280600281526020017f313000000000000000000000000000000000000000000000000000000000000081525090610c11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156105f55781810151838201526020016105dd565b50600454610c1f9083610fed565b60045573ffffffffffffffffffffffffffffffffffffffff8316600090815260066020526040902054610c529083610fed565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600660209081526040808320949094558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a350600192915050565b33600090815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610d5b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000604482015290519081900360640190fd5b610d6a338561071d8487610fed565b949350505050565b600061051833848461102f565b6000805473ffffffffffffffffffffffffffffffffffffffff163314610e0657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f3100000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60055460ff1615610e1657600080fd5b506005805473ffffffffffffffffffffffffffffffffffffffff8316610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921660019081179290921617909155919050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205490565b60408051808201909152600281527f3232000000000000000000000000000000000000000000000000000000000000602082015260009073ffffffffffffffffffffffffffffffffffffffff8416610f78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156105f55781810151838201526020016105dd565b5073ffffffffffffffffffffffffffffffffffffffff808516600081815260076020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600061051883836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250611403565b600081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156040518060400160405280600181526020017f340000000000000000000000000000000000000000000000000000000000000081525090611110576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156105f55781810151838201526020016105dd565b508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600181526020017f3600000000000000000000000000000000000000000000000000000000000000815250906111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156105f55781810151838201526020016105dd565b5073ffffffffffffffffffffffffffffffffffffffff841615801590611218575073ffffffffffffffffffffffffffffffffffffffff831615155b6040518060400160405280600281526020017f3232000000000000000000000000000000000000000000000000000000000000815250906112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156105f55781810151838201526020016105dd565b5073ffffffffffffffffffffffffffffffffffffffff84166000908152600660205260409020546112e59083610fed565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600660205260408082209390935590851681522054611321908361138f565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526006602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008282018381101561051857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818484111561146f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156105f55781810151838201526020016105dd565b50505090039056fea26469706673582212203757968f7c910aa191b01e08d73a35583e741cdd181bc55dac0690b77f7c9bf764736f6c6343000706003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b50616c6164696e20554e49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000670616c554e490000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b50616c6164696e20554e49000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000670616c554e490000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Paladin UNI
Arg [1] : symbol_ (string): palUNI

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [3] : 50616c6164696e20554e49000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [5] : 70616c554e490000000000000000000000000000000000000000000000000000


Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.