ETH Price: $2,819.48 (+7.42%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Accept Ownership209615682024-10-14 4:56:5924 days ago1728881819IN
0x8489b923...6bAa3aE2E
0 ETH0.0002828510
Nominate New Own...209614252024-10-14 4:27:5924 days ago1728880079IN
0x8489b923...6bAa3aE2E
0 ETH0.0005648512
Accept Ownership197008322024-04-21 2:33:59200 days ago1713666839IN
0x8489b923...6bAa3aE2E
0 ETH0.000169716
Nominate New Own...197007652024-04-21 2:20:35200 days ago1713666035IN
0x8489b923...6bAa3aE2E
0 ETH0.000282426
Set Associated C...196976442024-04-20 15:53:47200 days ago1713628427IN
0x8489b923...6bAa3aE2E
0 ETH0.0004195814
Accept Ownership156741012022-10-04 10:13:11765 days ago1664878391IN
0x8489b923...6bAa3aE2E
0 ETH0.000197997
Nominate New Own...156740272022-10-04 9:58:11765 days ago1664877491IN
0x8489b923...6bAa3aE2E
0 ETH0.000376568
Set Associated C...150556672022-07-01 8:57:12860 days ago1656665832IN
0x8489b923...6bAa3aE2E
0 ETH0.000899130
Set Associated C...150165752022-06-24 4:45:18867 days ago1656045918IN
0x8489b923...6bAa3aE2E
0 ETH0.000899130
Set Associated C...149298712022-06-09 1:14:33882 days ago1654737273IN
0x8489b923...6bAa3aE2E
0 ETH0.002697390
Set Associated C...146772602022-04-29 5:08:33923 days ago1651208913IN
0x8489b923...6bAa3aE2E
0 ETH0.0010489535
Set Associated C...130023852021-08-11 6:50:131184 days ago1628664613IN
0x8489b923...6bAa3aE2E
0 ETH0.0013486545
0x60806040130021772021-08-11 6:01:191184 days ago1628661679IN
 Create: PeriFinanceState
0 ETH0.024154440

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
211339512024-11-07 6:21:353 hrs ago1730960495
0x8489b923...6bAa3aE2E
0 ETH
211339432024-11-07 6:19:594 hrs ago1730960399
0x8489b923...6bAa3aE2E
0 ETH
211269112024-11-06 6:46:2327 hrs ago1730875583
0x8489b923...6bAa3aE2E
0 ETH
211172972024-11-04 22:33:232 days ago1730759603
0x8489b923...6bAa3aE2E
0 ETH
211120922024-11-04 5:08:113 days ago1730696891
0x8489b923...6bAa3aE2E
0 ETH
211107542024-11-04 0:39:233 days ago1730680763
0x8489b923...6bAa3aE2E
0 ETH
211106852024-11-04 0:25:353 days ago1730679935
0x8489b923...6bAa3aE2E
0 ETH
211050052024-11-03 5:24:594 days ago1730611499
0x8489b923...6bAa3aE2E
0 ETH
210981812024-11-02 6:30:235 days ago1730529023
0x8489b923...6bAa3aE2E
0 ETH
210979382024-11-02 5:41:475 days ago1730526107
0x8489b923...6bAa3aE2E
0 ETH
210979092024-11-02 5:35:595 days ago1730525759
0x8489b923...6bAa3aE2E
0 ETH
210962902024-11-02 0:10:235 days ago1730506223
0x8489b923...6bAa3aE2E
0 ETH
210962642024-11-02 0:05:115 days ago1730505911
0x8489b923...6bAa3aE2E
0 ETH
210962642024-11-02 0:05:115 days ago1730505911
0x8489b923...6bAa3aE2E
0 ETH
210895762024-11-01 1:41:476 days ago1730425307
0x8489b923...6bAa3aE2E
0 ETH
210865432024-10-31 15:33:356 days ago1730388815
0x8489b923...6bAa3aE2E
0 ETH
210864762024-10-31 15:20:116 days ago1730388011
0x8489b923...6bAa3aE2E
0 ETH
210807072024-10-30 20:01:357 days ago1730318495
0x8489b923...6bAa3aE2E
0 ETH
210772932024-10-30 8:33:358 days ago1730277215
0x8489b923...6bAa3aE2E
0 ETH
210772522024-10-30 8:25:238 days ago1730276723
0x8489b923...6bAa3aE2E
0 ETH
210627882024-10-28 7:58:2310 days ago1730102303
0x8489b923...6bAa3aE2E
0 ETH
210617062024-10-28 4:19:5910 days ago1730089199
0x8489b923...6bAa3aE2E
0 ETH
210500712024-10-26 13:23:2311 days ago1729949003
0x8489b923...6bAa3aE2E
0 ETH
210500432024-10-26 13:17:4711 days ago1729948667
0x8489b923...6bAa3aE2E
0 ETH
210500192024-10-26 13:12:5911 days ago1729948379
0x8489b923...6bAa3aE2E
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PeriFinanceState

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-11
*/

/*
    ___            _       ___  _                          
    | .\ ___  _ _ <_> ___ | __><_>._ _  ___ ._ _  ___  ___ 
    |  _// ._>| '_>| ||___|| _> | || ' |<_> || ' |/ | '/ ._>
    |_|  \___.|_|  |_|     |_|  |_||_|_|<___||_|_|\_|_.\___.
    
* PeriFinance: PeriFinanceState.sol
*
* Latest source (may be newer): https://github.com/perifinance/peri-finance/blob/master/contracts/PeriFinanceState.sol
* Docs: Will be added in the future. 
* https://docs.peri.finance/contracts/source/contracts/PeriFinanceState
*
* Contract Dependencies: 
*	- IPeriFinanceState
*	- Owned
*	- State
* Libraries: 
*	- SafeDecimalMath
*	- SafeMath
*
* MIT License
* ===========
*
* Copyright (c) 2021 PeriFinance
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
*/



pragma solidity 0.5.16;

// https://docs.peri.finance/contracts/source/contracts/owned
contract Owned {
    address public owner;
    address public nominatedOwner;

    constructor(address _owner) public {
        require(_owner != address(0), "Owner address cannot be 0");
        owner = _owner;
        emit OwnerChanged(address(0), _owner);
    }

    function nominateNewOwner(address _owner) external onlyOwner {
        nominatedOwner = _owner;
        emit OwnerNominated(_owner);
    }

    function acceptOwnership() external {
        require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership");
        emit OwnerChanged(owner, nominatedOwner);
        owner = nominatedOwner;
        nominatedOwner = address(0);
    }

    modifier onlyOwner {
        _onlyOwner();
        _;
    }

    function _onlyOwner() private view {
        require(msg.sender == owner, "Only the contract owner may perform this action");
    }

    event OwnerNominated(address newOwner);
    event OwnerChanged(address oldOwner, address newOwner);
}


// Inheritance


// https://docs.peri.finance/contracts/source/contracts/state
contract State is Owned {
    // the address of the contract that can modify variables
    // this can only be changed by the owner of this contract
    address public associatedContract;

    constructor(address _associatedContract) internal {
        // This contract is abstract, and thus cannot be instantiated directly
        require(owner != address(0), "Owner must be set");

        associatedContract = _associatedContract;
        emit AssociatedContractUpdated(_associatedContract);
    }

    /* ========== SETTERS ========== */

    // Change the associated contract to a new address
    function setAssociatedContract(address _associatedContract) external onlyOwner {
        associatedContract = _associatedContract;
        emit AssociatedContractUpdated(_associatedContract);
    }

    /* ========== MODIFIERS ========== */

    modifier onlyAssociatedContract {
        require(msg.sender == associatedContract, "Only the associated contract can perform this action");
        _;
    }

    /* ========== EVENTS ========== */

    event AssociatedContractUpdated(address associatedContract);
}


// https://docs.peri.finance/contracts/source/interfaces/iperiFinancestate
interface IPeriFinanceState {
    // Views
    function debtLedger(uint index) external view returns (uint);

    function issuanceData(address account) external view returns (uint initialDebtOwnership, uint debtEntryIndex);

    function debtLedgerLength() external view returns (uint);

    function hasIssued(address account) external view returns (bool);

    function lastDebtLedgerEntry() external view returns (uint);

    // Mutative functions
    function incrementTotalIssuerCount() external;

    function decrementTotalIssuerCount() external;

    function setCurrentIssuanceData(address account, uint initialDebtOwnership) external;

    function appendDebtLedgerValue(uint value) external;

    function clearIssuanceData(address account) external;
}


/**
 * @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 subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        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-solidity/pull/522
        if (a == 0) {
            return 0;
        }

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

        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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        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) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}


// Libraries


// https://docs.peri.finance/contracts/source/libraries/safedecimalmath
library SafeDecimalMath {
    using SafeMath for uint;

    /* Number of decimal places in the representations. */
    uint8 public constant decimals = 18;
    uint8 public constant highPrecisionDecimals = 27;

    /* The number representing 1.0. */
    uint public constant UNIT = 10**uint(decimals);

    /* The number representing 1.0 for higher fidelity numbers. */
    uint public constant PRECISE_UNIT = 10**uint(highPrecisionDecimals);
    uint private constant UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR = 10**uint(highPrecisionDecimals - decimals);

    /**
     * @return Provides an interface to UNIT.
     */
    function unit() external pure returns (uint) {
        return UNIT;
    }

    /**
     * @return Provides an interface to PRECISE_UNIT.
     */
    function preciseUnit() external pure returns (uint) {
        return PRECISE_UNIT;
    }

    /**
     * @return The result of multiplying x and y, interpreting the operands as fixed-point
     * decimals.
     *
     * @dev A unit factor is divided out after the product of x and y is evaluated,
     * so that product must be less than 2**256. As this is an integer division,
     * the internal division always rounds down. This helps save on gas. Rounding
     * is more expensive on gas.
     */
    function multiplyDecimal(uint x, uint y) internal pure returns (uint) {
        /* Divide by UNIT to remove the extra factor introduced by the product. */
        return x.mul(y) / UNIT;
    }

    /**
     * @return The result of safely multiplying x and y, interpreting the operands
     * as fixed-point decimals of the specified precision unit.
     *
     * @dev The operands should be in the form of a the specified unit factor which will be
     * divided out after the product of x and y is evaluated, so that product must be
     * less than 2**256.
     *
     * Unlike multiplyDecimal, this function rounds the result to the nearest increment.
     * Rounding is useful when you need to retain fidelity for small decimal numbers
     * (eg. small fractions or percentages).
     */
    function _multiplyDecimalRound(
        uint x,
        uint y,
        uint precisionUnit
    ) private pure returns (uint) {
        /* Divide by UNIT to remove the extra factor introduced by the product. */
        uint quotientTimesTen = x.mul(y) / (precisionUnit / 10);

        if (quotientTimesTen % 10 >= 5) {
            quotientTimesTen += 10;
        }

        return quotientTimesTen / 10;
    }

    /**
     * @return The result of safely multiplying x and y, interpreting the operands
     * as fixed-point decimals of a precise unit.
     *
     * @dev The operands should be in the precise unit factor which will be
     * divided out after the product of x and y is evaluated, so that product must be
     * less than 2**256.
     *
     * Unlike multiplyDecimal, this function rounds the result to the nearest increment.
     * Rounding is useful when you need to retain fidelity for small decimal numbers
     * (eg. small fractions or percentages).
     */
    function multiplyDecimalRoundPrecise(uint x, uint y) internal pure returns (uint) {
        return _multiplyDecimalRound(x, y, PRECISE_UNIT);
    }

    /**
     * @return The result of safely multiplying x and y, interpreting the operands
     * as fixed-point decimals of a standard unit.
     *
     * @dev The operands should be in the standard unit factor which will be
     * divided out after the product of x and y is evaluated, so that product must be
     * less than 2**256.
     *
     * Unlike multiplyDecimal, this function rounds the result to the nearest increment.
     * Rounding is useful when you need to retain fidelity for small decimal numbers
     * (eg. small fractions or percentages).
     */
    function multiplyDecimalRound(uint x, uint y) internal pure returns (uint) {
        return _multiplyDecimalRound(x, y, UNIT);
    }

    /**
     * @return The result of safely dividing x and y. The return value is a high
     * precision decimal.
     *
     * @dev y is divided after the product of x and the standard precision unit
     * is evaluated, so the product of x and UNIT must be less than 2**256. As
     * this is an integer division, the result is always rounded down.
     * This helps save on gas. Rounding is more expensive on gas.
     */
    function divideDecimal(uint x, uint y) internal pure returns (uint) {
        /* Reintroduce the UNIT factor that will be divided out by y. */
        return x.mul(UNIT).div(y);
    }

    /**
     * @return The result of safely dividing x and y. The return value is as a rounded
     * decimal in the precision unit specified in the parameter.
     *
     * @dev y is divided after the product of x and the specified precision unit
     * is evaluated, so the product of x and the specified precision unit must
     * be less than 2**256. The result is rounded to the nearest increment.
     */
    function _divideDecimalRound(
        uint x,
        uint y,
        uint precisionUnit
    ) private pure returns (uint) {
        uint resultTimesTen = x.mul(precisionUnit * 10).div(y);

        if (resultTimesTen % 10 >= 5) {
            resultTimesTen += 10;
        }

        return resultTimesTen / 10;
    }

    /**
     * @return The result of safely dividing x and y. The return value is as a rounded
     * standard precision decimal.
     *
     * @dev y is divided after the product of x and the standard precision unit
     * is evaluated, so the product of x and the standard precision unit must
     * be less than 2**256. The result is rounded to the nearest increment.
     */
    function divideDecimalRound(uint x, uint y) internal pure returns (uint) {
        return _divideDecimalRound(x, y, UNIT);
    }

    /**
     * @return The result of safely dividing x and y. The return value is as a rounded
     * high precision decimal.
     *
     * @dev y is divided after the product of x and the high precision unit
     * is evaluated, so the product of x and the high precision unit must
     * be less than 2**256. The result is rounded to the nearest increment.
     */
    function divideDecimalRoundPrecise(uint x, uint y) internal pure returns (uint) {
        return _divideDecimalRound(x, y, PRECISE_UNIT);
    }

    /**
     * @dev Convert a standard decimal representation to a high precision one.
     */
    function decimalToPreciseDecimal(uint i) internal pure returns (uint) {
        return i.mul(UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR);
    }

    /**
     * @dev Convert a high precision decimal to a standard decimal representation.
     */
    function preciseDecimalToDecimal(uint i) internal pure returns (uint) {
        uint quotientTimesTen = i / (UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR / 10);

        if (quotientTimesTen % 10 >= 5) {
            quotientTimesTen += 10;
        }

        return quotientTimesTen / 10;
    }

    /**
     * @dev Round down the value with given number
     */
    function roundDownDecimal(uint x, uint d) internal pure returns (uint) {
        return x.div(10**d).mul(10**d);
    }

    /**
     * @dev Round up the value with given number
     */
    function roundUpDecimal(uint x, uint d) internal pure returns (uint) {
        uint _decimal = 10**d;

        if (x % _decimal > 0) {
            x = x.add(10**d);
        }

        return x.div(_decimal).mul(_decimal);
    }
}


// Inheritance


// Libraries


// https://docs.peri.finance/contracts/source/contracts/periFinancestate
contract PeriFinanceState is Owned, State, IPeriFinanceState {
    using SafeMath for uint;
    using SafeDecimalMath for uint;

    // A struct for handing values associated with an individual user's debt position
    struct IssuanceData {
        // Percentage of the total debt owned at the time
        // of issuance. This number is modified by the global debt
        // delta array. You can figure out a user's exit price and
        // collateralisation ratio using a combination of their initial
        // debt and the slice of global debt delta which applies to them.
        uint initialDebtOwnership;
        // This lets us know when (in relative terms) the user entered
        // the debt pool so we can calculate their exit price and
        // collateralistion ratio
        uint debtEntryIndex;
    }

    // Issued pynth balances for individual fee entitlements and exit price calculations
    mapping(address => IssuanceData) public issuanceData;

    // The total count of people that have outstanding issued pynths in any flavour
    uint public totalIssuerCount;

    // Global debt pool tracking
    uint[] public debtLedger;

    constructor(address _owner, address _associatedContract) public Owned(_owner) State(_associatedContract) {}

    /* ========== SETTERS ========== */

    /**
     * @notice Set issuance data for an address
     * @dev Only the associated contract may call this.
     * @param account The address to set the data for.
     * @param initialDebtOwnership The initial debt ownership for this address.
     */
    function setCurrentIssuanceData(address account, uint initialDebtOwnership) external onlyAssociatedContract {
        issuanceData[account].initialDebtOwnership = initialDebtOwnership;
        issuanceData[account].debtEntryIndex = debtLedger.length;
    }

    /**
     * @notice Clear issuance data for an address
     * @dev Only the associated contract may call this.
     * @param account The address to clear the data for.
     */
    function clearIssuanceData(address account) external onlyAssociatedContract {
        delete issuanceData[account];
    }

    /**
     * @notice Increment the total issuer count
     * @dev Only the associated contract may call this.
     */
    function incrementTotalIssuerCount() external onlyAssociatedContract {
        totalIssuerCount = totalIssuerCount.add(1);
    }

    /**
     * @notice Decrement the total issuer count
     * @dev Only the associated contract may call this.
     */
    function decrementTotalIssuerCount() external onlyAssociatedContract {
        totalIssuerCount = totalIssuerCount.sub(1);
    }

    /**
     * @notice Append a value to the debt ledger
     * @dev Only the associated contract may call this.
     * @param value The new value to be added to the debt ledger.
     */
    function appendDebtLedgerValue(uint value) external onlyAssociatedContract {
        debtLedger.push(value);
    }

    /* ========== VIEWS ========== */

    /**
     * @notice Retrieve the length of the debt ledger array
     */
    function debtLedgerLength() external view returns (uint) {
        return debtLedger.length;
    }

    /**
     * @notice Retrieve the most recent entry from the debt ledger
     */
    function lastDebtLedgerEntry() external view returns (uint) {
        if (debtLedger.length == 0) {
            return 0;
        }

        return debtLedger[debtLedger.length - 1];
    }

    /**
     * @notice Query whether an account has issued and has an outstanding debt balance
     * @param account The address to query for
     */
    function hasIssued(address account) external view returns (bool) {
        return issuanceData[account].initialDebtOwnership > 0;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_associatedContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"associatedContract","type":"address"}],"name":"AssociatedContractUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"appendDebtLedgerValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"associatedContract","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"clearIssuanceData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"debtLedger","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"debtLedgerLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"decrementTotalIssuerCount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"hasIssued","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"incrementTotalIssuerCount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"issuanceData","outputs":[{"internalType":"uint256","name":"initialDebtOwnership","type":"uint256"},{"internalType":"uint256","name":"debtEntryIndex","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastDebtLedgerEntry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_associatedContract","type":"address"}],"name":"setAssociatedContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"initialDebtOwnership","type":"uint256"}],"name":"setCurrentIssuanceData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalIssuerCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610aa1380380610aa18339818101604052604081101561003357600080fd5b50805160209091015180826001600160a01b038116610099576040805162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a1506000546001600160a01b0316610143576040805162461bcd60e51b815260206004820152601160248201527013dddb995c881b5d5cdd081899481cd95d607a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f73f20cff579e8a4086fa607db83867595f1b6a798e718c0bfa0b94a404128e039181900360200190a15050506108fb806101a66000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638b3f8088116100a2578063aefc4ccb11610071578063aefc4ccb14610261578063b16c09f014610269578063b992812e1461028f578063ba08f299146102c9578063cd92eba9146102d15761010b565b80638b3f8088146101e65780638da5cb5b146102255780639371bede1461022d578063a764eb45146102355761010b565b806346317712116100de578063463177121461018c57806352f445ca1461019457806353a47bb7146101ba57806379ba5097146101de5761010b565b806308d95cd5146101105780631627540c1461013f5780631bfba595146101675780633d31e97b1461016f575b600080fd5b61012d6004803603602081101561012657600080fd5b50356102d9565b60408051918252519081900360200190f35b6101656004803603602081101561015557600080fd5b50356001600160a01b03166102f7565b005b610165610353565b6101656004803603602081101561018557600080fd5b50356103b5565b61012d610433565b610165600480360360208110156101aa57600080fd5b50356001600160a01b0316610468565b6101c26104c4565b604080516001600160a01b039092168252519081900360200190f35b6101656104d3565b61020c600480360360208110156101fc57600080fd5b50356001600160a01b031661058f565b6040805192835260208301919091528051918290030190f35b6101c26105a8565b61012d6105b7565b6101656004803603604081101561024b57600080fd5b506001600160a01b0381351690602001356105bd565b6101c261062d565b6101656004803603602081101561027f57600080fd5b50356001600160a01b031661063c565b6102b5600480360360208110156102a557600080fd5b50356001600160a01b03166106a5565b604080519115158252519081900360200190f35b6101656106c2565b61012d61071f565b600581815481106102e657fe5b600091825260209091200154905081565b6102ff610725565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b6002546001600160a01b0316331461039c5760405162461bcd60e51b81526004018080602001828103825260348152602001806108936034913960400191505060405180910390fd5b6004546103b090600163ffffffff61077016565b600455565b6002546001600160a01b031633146103fe5760405162461bcd60e51b81526004018080602001828103825260348152602001806108936034913960400191505060405180910390fd5b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00155565b60055460009061044557506000610465565b60058054600019810190811061045757fe5b906000526020600020015490505b90565b610470610725565b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f73f20cff579e8a4086fa607db83867595f1b6a798e718c0bfa0b94a404128e039181900360200190a150565b6001546001600160a01b031681565b6001546001600160a01b0316331461051c5760405162461bcd60e51b815260040180806020018281038252603581526020018061082f6035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6003602052600090815260409020805460019091015482565b6000546001600160a01b031681565b60045481565b6002546001600160a01b031633146106065760405162461bcd60e51b81526004018080602001828103825260348152602001806108936034913960400191505060405180910390fd5b6001600160a01b039091166000908152600360205260409020908155600554600190910155565b6002546001600160a01b031681565b6002546001600160a01b031633146106855760405162461bcd60e51b81526004018080602001828103825260348152602001806108936034913960400191505060405180910390fd5b6001600160a01b0316600090815260036020526040812081815560010155565b6001600160a01b0316600090815260036020526040902054151590565b6002546001600160a01b0316331461070b5760405162461bcd60e51b81526004018080602001828103825260348152602001806108936034913960400191505060405180910390fd5b6004546103b090600163ffffffff6107d116565b60055490565b6000546001600160a01b0316331461076e5760405162461bcd60e51b815260040180806020018281038252602f815260200180610864602f913960400191505060405180910390fd5b565b6000828201838110156107ca576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115610828576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e4f6e6c7920746865206173736f63696174656420636f6e74726163742063616e20706572666f726d207468697320616374696f6ea265627a7a72315820716908b90556eb19706270737c1097b0ca3b6e4b76831732a3afc048080d079564736f6c63430005100032000000000000000000000000918153d6e806df9d4d33664d1cc580416171f720000000000000000000000000918153d6e806df9d4d33664d1cc580416171f720

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80638b3f8088116100a2578063aefc4ccb11610071578063aefc4ccb14610261578063b16c09f014610269578063b992812e1461028f578063ba08f299146102c9578063cd92eba9146102d15761010b565b80638b3f8088146101e65780638da5cb5b146102255780639371bede1461022d578063a764eb45146102355761010b565b806346317712116100de578063463177121461018c57806352f445ca1461019457806353a47bb7146101ba57806379ba5097146101de5761010b565b806308d95cd5146101105780631627540c1461013f5780631bfba595146101675780633d31e97b1461016f575b600080fd5b61012d6004803603602081101561012657600080fd5b50356102d9565b60408051918252519081900360200190f35b6101656004803603602081101561015557600080fd5b50356001600160a01b03166102f7565b005b610165610353565b6101656004803603602081101561018557600080fd5b50356103b5565b61012d610433565b610165600480360360208110156101aa57600080fd5b50356001600160a01b0316610468565b6101c26104c4565b604080516001600160a01b039092168252519081900360200190f35b6101656104d3565b61020c600480360360208110156101fc57600080fd5b50356001600160a01b031661058f565b6040805192835260208301919091528051918290030190f35b6101c26105a8565b61012d6105b7565b6101656004803603604081101561024b57600080fd5b506001600160a01b0381351690602001356105bd565b6101c261062d565b6101656004803603602081101561027f57600080fd5b50356001600160a01b031661063c565b6102b5600480360360208110156102a557600080fd5b50356001600160a01b03166106a5565b604080519115158252519081900360200190f35b6101656106c2565b61012d61071f565b600581815481106102e657fe5b600091825260209091200154905081565b6102ff610725565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b6002546001600160a01b0316331461039c5760405162461bcd60e51b81526004018080602001828103825260348152602001806108936034913960400191505060405180910390fd5b6004546103b090600163ffffffff61077016565b600455565b6002546001600160a01b031633146103fe5760405162461bcd60e51b81526004018080602001828103825260348152602001806108936034913960400191505060405180910390fd5b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00155565b60055460009061044557506000610465565b60058054600019810190811061045757fe5b906000526020600020015490505b90565b610470610725565b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f73f20cff579e8a4086fa607db83867595f1b6a798e718c0bfa0b94a404128e039181900360200190a150565b6001546001600160a01b031681565b6001546001600160a01b0316331461051c5760405162461bcd60e51b815260040180806020018281038252603581526020018061082f6035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6003602052600090815260409020805460019091015482565b6000546001600160a01b031681565b60045481565b6002546001600160a01b031633146106065760405162461bcd60e51b81526004018080602001828103825260348152602001806108936034913960400191505060405180910390fd5b6001600160a01b039091166000908152600360205260409020908155600554600190910155565b6002546001600160a01b031681565b6002546001600160a01b031633146106855760405162461bcd60e51b81526004018080602001828103825260348152602001806108936034913960400191505060405180910390fd5b6001600160a01b0316600090815260036020526040812081815560010155565b6001600160a01b0316600090815260036020526040902054151590565b6002546001600160a01b0316331461070b5760405162461bcd60e51b81526004018080602001828103825260348152602001806108936034913960400191505060405180910390fd5b6004546103b090600163ffffffff6107d116565b60055490565b6000546001600160a01b0316331461076e5760405162461bcd60e51b815260040180806020018281038252602f815260200180610864602f913960400191505060405180910390fd5b565b6000828201838110156107ca576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115610828576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e4f6e6c7920746865206173736f63696174656420636f6e74726163742063616e20706572666f726d207468697320616374696f6ea265627a7a72315820716908b90556eb19706270737c1097b0ca3b6e4b76831732a3afc048080d079564736f6c63430005100032

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

000000000000000000000000918153d6e806df9d4d33664d1cc580416171f720000000000000000000000000918153d6e806df9d4d33664d1cc580416171f720

-----Decoded View---------------
Arg [0] : _owner (address): 0x918153D6e806dF9d4D33664D1cC580416171f720
Arg [1] : _associatedContract (address): 0x918153D6e806dF9d4D33664D1cC580416171f720

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000918153d6e806df9d4d33664d1cc580416171f720
Arg [1] : 000000000000000000000000918153d6e806df9d4d33664d1cc580416171f720


Libraries Used


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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.