ETH Price: $3,300.35 (+2.62%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Write Off196264832024-04-10 16:40:59296 days ago1712767259IN
0x5E22cB70...bFE606957
0 ETH0.0042397128.14373087
Write Off169906732023-04-06 16:14:59666 days ago1680797699IN
0x5E22cB70...bFE606957
0 ETH0.0042140131.74854362
Write Off169189872023-03-27 13:22:59676 days ago1679923379IN
0x5E22cB70...bFE606957
0 ETH0.0037822928.64877885
Write Off169189692023-03-27 13:19:23676 days ago1679923163IN
0x5E22cB70...bFE606957
0 ETH0.0035134222.47657778
Write Off168268662023-03-14 14:44:35689 days ago1678805075IN
0x5E22cB70...bFE606957
0 ETH0.0052268139.79754277
Write Off168268612023-03-14 14:43:35689 days ago1678805015IN
0x5E22cB70...bFE606957
0 ETH0.0066624342.49709548
Write Off168268522023-03-14 14:41:47689 days ago1678804907IN
0x5E22cB70...bFE606957
0 ETH0.0009957641.04877349
Write Off165706772023-02-06 15:35:35725 days ago1675697735IN
0x5E22cB70...bFE606957
0 ETH0.0045337330.77810929
Write Off165705572023-02-06 15:11:35725 days ago1675696295IN
0x5E22cB70...bFE606957
0 ETH0.0008208430.55655068
Write Off165497102023-02-03 17:20:23728 days ago1675444823IN
0x5E22cB70...bFE606957
0 ETH0.0007456930.74014327
Write Off163297162023-01-04 0:03:11759 days ago1672790591IN
0x5E22cB70...bFE606957
0 ETH0.0025592416.96642416
Write Off163010472022-12-31 0:04:47763 days ago1672445087IN
0x5E22cB70...bFE606957
0 ETH0.0025116717.29563653
Write Off163010442022-12-31 0:04:11763 days ago1672445051IN
0x5E22cB70...bFE606957
0 ETH0.0024496116.86831253
Write Off163010402022-12-31 0:03:23763 days ago1672445003IN
0x5E22cB70...bFE606957
0 ETH0.0027413818.87744546
Write Off163010372022-12-31 0:02:47763 days ago1672444967IN
0x5E22cB70...bFE606957
0 ETH0.0030173920.77809807
Write Off163010342022-12-31 0:02:11763 days ago1672444931IN
0x5E22cB70...bFE606957
0 ETH0.0031134821.43976356
Write Off163010312022-12-31 0:01:35763 days ago1672444895IN
0x5E22cB70...bFE606957
0 ETH0.0030853120.08693088
Rely162925322022-12-29 19:34:23764 days ago1672342463IN
0x5E22cB70...bFE606957
0 ETH0.000880218.59723041

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WriteOffWrapper

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : writeOffWrapper.sol
// SPDX-License-Identifier: AGPL-3.0-only
// Copyright (C) 2018  Rain <[email protected]>, Centrifuge
pragma solidity >=0.7.6;
pragma experimental ABIEncoderV2;

import "tinlake-auth/auth.sol";
import {Discounting} from "../feed/discounting.sol";

struct Loan {
    address registry;
    uint256 tokenId;
}

interface ShelfLike {
    function shelf(uint256) external view returns (Loan memory);
}

interface PileLike {
    function changeRate(uint256, uint256) external;
}

interface FeedLike {
    function pile() external view returns (address);
    function shelf() external view returns (address);
    function nftID(uint256 loan) external view returns (bytes32);
    function maturityDate(bytes32 nft_) external view returns (uint256);
}

interface RootLike {
    function borrowerDeployer() external view returns (address);
}

interface BorrowerDeployerLike {
    function pile() external view returns (address);
    function shelf() external view returns (address);
    function feed() external view returns (address);
}

/// @notice WriteOff contract can move overdue loans into a write off group
/// The wrapper contract manages multiple different pools
contract WriteOffWrapper is Auth, Discounting {
    mapping(address => uint256) public writeOffRates;

    constructor() {
        wards[msg.sender] = 1;
        emit Rely(msg.sender);

        writeOffRates[address(0x05739C677286d38CcBF0FfC8f9cdbD45904B47Fd)] = 1000; // Bling Series 1
        writeOffRates[address(0xAAEaCfcCc3d3249f125Ba0644495560309C266cB)] = 1001; // Pezesha 1
        writeOffRates[address(0x9E39e0130558cd9A01C1e3c7b2c3803baCb59616)] = 1001; // GIG Pool
        writeOffRates[address(0x11C14AAa42e361Cf3500C9C46f34171856e3f657)] = 1000; // Fortunafi 1
        writeOffRates[address(0xE7876f282bdF0f62e5fdb2C63b8b89c10538dF32)] = 1000; // Harbor Trade 2
        writeOffRates[address(0x3eC5c16E7f2C6A80E31997C68D8Fa6ACe089807f)] = 1000; // New Silver 2
        writeOffRates[address(0xe17F3c35C18b2Af84ceE2eDed673c6A08A671695)] = 1000; // Branch Series 3
        writeOffRates[address(0x99D0333f97432fdEfA25B7634520d505e58B131B)] = 1000; // FactorChain 1
        writeOffRates[address(0x37c8B836eA1b89b7cC4cFdDed4C4fbC454CcC679)] = 1000; // Paperchain 3
        writeOffRates[address(0xB7d1DE24c0243e6A3eC4De9fAB2B19AB46Fa941F)] = 1001; // UP Series 1
        writeOffRates[address(0x3fC72dA5545E2AB6202D81fbEb1C8273Be95068C)] = 1000; // ConsolFreight 4
        writeOffRates[address(0xdB07B21109117208a0317adfbed484C87c9c2aFf)] = 1000; // databased.FINANCE 1
        writeOffRates[address(0x4b0f712Aa9F91359f48D8628De8483B04530751a)] = 1001; // Peoples 1
    }

    /// @notice writes off an overdue loan
    /// @param root the address of the root contract
    function writeOff(address root, uint256 loan) public auth {
        BorrowerDeployerLike deployer = BorrowerDeployerLike(RootLike(root).borrowerDeployer());
        FeedLike feed = FeedLike(deployer.feed());
        PileLike pile = PileLike(deployer.pile());
        require(writeOffRates[address(pile)] != 0, "WriteOffWrapper/pile-has-no-write-off-group");
        ShelfLike shelf = ShelfLike(deployer.shelf());
        require(shelf.shelf(loan).tokenId != 0, "WriteOffWrapper/loan-does-not-exist");
        uint256 nnow = uniqueDayTimestamp(block.timestamp);
        bytes32 nftID = feed.nftID(loan);
        uint256 maturityDate = feed.maturityDate(nftID);

        require(maturityDate < nnow, "WriteOffWrapper/loan-not-overdue");

        pile.changeRate(loan, writeOffRates[address(pile)]);
    }

    function file(bytes32 what, address addr, uint256 data) public auth {
        if (what == "writeOffRates") {
            writeOffRates[addr] = data;
        }
    }
}

File 2 of 4 : auth.sol
// SPDX-License-Identifier: AGPL-3.0-only
// Copyright (C) Centrifuge 2020, based on MakerDAO dss https://github.com/makerdao/dss
pragma solidity >=0.5.15;

contract Auth {
    mapping (address => uint256) public wards;
    
    event Rely(address indexed usr);
    event Deny(address indexed usr);

    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, "not-authorized");
        _;
    }

}

File 3 of 4 : math.sol
// SPDX-License-Identifier: AGPL-3.0-only
// Copyright (C) 2018 Rain <[email protected]>
pragma solidity >=0.5.15;

contract Math {
    uint256 constant ONE = 10 ** 27;

    function safeAdd(uint x, uint y) public pure returns (uint z) {
        require((z = x + y) >= x, "safe-add-failed");
    }

    function safeSub(uint x, uint y) public pure returns (uint z) {
        require((z = x - y) <= x, "safe-sub-failed");
    }

    function safeMul(uint x, uint y) public pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, "safe-mul-failed");
    }

    function safeDiv(uint x, uint y) public pure returns (uint z) {
        z = x / y;
    }

    function rmul(uint x, uint y) public pure returns (uint z) {
        z = safeMul(x, y) / ONE;
    }

    function rdiv(uint x, uint y) public pure returns (uint z) {
        require(y > 0, "division by zero");
        z = safeAdd(safeMul(x, ONE), y / 2) / y;
    }

    function rdivup(uint x, uint y) internal pure returns (uint z) {
        require(y > 0, "division by zero");
        // always rounds up
        z = safeAdd(safeMul(x, ONE), safeSub(y, 1)) / y;
    }


}

File 4 of 4 : discounting.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.7.6;

import "tinlake-math/math.sol";

/// @notice Discounting contract without a state which defines the relevant formulas for the navfeed
contract Discounting is Math {
    /// @notice calculates the discount for a given loan
    /// @param discountRate the discount rate
    /// @param fv the future value of the loan
    /// @param normalizedBlockTimestamp the normalized block time (each day to midnight)
    /// @param maturityDate the maturity date of the loan
    /// @return result discount for the loan
    function calcDiscount(uint256 discountRate, uint256 fv, uint256 normalizedBlockTimestamp, uint256 maturityDate)
        public
        pure
        returns (uint256 result)
    {
        return rdiv(fv, rpow(discountRate, safeSub(maturityDate, normalizedBlockTimestamp), ONE));
    }

    /// @notice calculate the future value based on the amount, maturityDate interestRate and recoveryRate
    /// @param loanInterestRate the interest rate of the loan
    /// @param amount of the loan (principal)
    /// @param maturityDate the maturity date of the loan
    /// @param recoveryRatePD the recovery rate together with the probability of default of the loan
    /// @return fv future value of the loan
    function calcFutureValue(uint256 loanInterestRate, uint256 amount, uint256 maturityDate, uint256 recoveryRatePD)
        public
        view
        returns (uint256 fv)
    {
        uint256 nnow = uniqueDayTimestamp(block.timestamp);
        uint256 timeRemaining = 0;
        if (maturityDate > nnow) {
            timeRemaining = safeSub(maturityDate, nnow);
        }

        return rmul(rmul(rpow(loanInterestRate, timeRemaining, ONE), amount), recoveryRatePD);
    }

    /// @notice substracts to values if the result smaller than 0 it returns 0
    /// @param x the first value (minuend)
    /// @param y the second value (subtrahend)
    /// @return result result of the subtraction
    function secureSub(uint256 x, uint256 y) public pure returns (uint256 result) {
        if (y > x) {
            return 0;
        }
        return safeSub(x, y);
    }

    /// @notice normalizes a timestamp to round down to the nearest midnight (UTC)
    /// @param timestamp the timestamp which should be normalized
    /// @return nTimestamp normalized timestamp
    function uniqueDayTimestamp(uint256 timestamp) public pure returns (uint256 nTimestamp) {
        return (1 days) * (timestamp / (1 days));
    }
    /// @notice rpow peforms a math pow operation with fixed point number
    /// adopted from ds-math
    /// @param x the base for the pow operation
    /// @param n the exponent for the pow operation
    /// @param base the base of the fixed point number
    /// @return z the result of the pow operation

    function rpow(uint256 x, uint256 n, uint256 base) public pure returns (uint256 z) {
        assembly {
            switch x
            case 0 {
                switch n
                case 0 { z := base }
                default { z := 0 }
            }
            default {
                switch mod(n, 2)
                case 0 { z := base }
                default { z := x }
                let half := div(base, 2) // for rounding.
                for { n := div(n, 2) } n { n := div(n, 2) } {
                    let xx := mul(x, x)
                    if iszero(eq(div(xx, x), x)) { revert(0, 0) }
                    let xxRound := add(xx, half)
                    if lt(xxRound, xx) { revert(0, 0) }
                    x := div(xxRound, base)
                    if mod(n, 2) {
                        let zx := mul(z, x)
                        if and(iszero(iszero(x)), iszero(eq(div(zx, x), z))) { revert(0, 0) }
                        let zxRound := add(zx, half)
                        if lt(zxRound, zx) { revert(0, 0) }
                        z := div(zxRound, base)
                    }
                }
            }
        }
    }
}

Settings
{
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "tinlake-auth/=lib/tinlake-auth/src/",
    "tinlake-erc20/=lib/tinlake-erc20/src/",
    "tinlake-math/=lib/tinlake-math/src/",
    "tinlake-title/=lib/tinlake-title/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "istanbul",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"inputs":[{"internalType":"uint256","name":"discountRate","type":"uint256"},{"internalType":"uint256","name":"fv","type":"uint256"},{"internalType":"uint256","name":"normalizedBlockTimestamp","type":"uint256"},{"internalType":"uint256","name":"maturityDate","type":"uint256"}],"name":"calcDiscount","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"loanInterestRate","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"maturityDate","type":"uint256"},{"internalType":"uint256","name":"recoveryRatePD","type":"uint256"}],"name":"calcFutureValue","outputs":[{"internalType":"uint256","name":"fv","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"data","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"rdiv","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"rmul","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"uint256","name":"base","type":"uint256"}],"name":"rpow","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"safeAdd","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"safeDiv","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"safeMul","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"safeSub","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"secureSub","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"uniqueDayTimestamp","outputs":[{"internalType":"uint256","name":"nTimestamp","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"root","type":"address"},{"internalType":"uint256","name":"loan","type":"uint256"}],"name":"writeOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"writeOffRates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b503360008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a260016020526103e87fc043db3edf500fc1158114cdec3758a5bd1366f07f5554d5d61b3fb3564c12458190556103e97f394d5b9784c79582366e8f6ebbb7c087cdb359bc40f88a22d46a540a34bfbe928190557f751127a6224240f374b6d10a4d12e8e166a6637d3724ae7ff1a0dffc34f706098190557f98e79411fb3af3cf0a87a4dd7ac07861c3962cfb6718a32130e11208d23b8da18290557f34a5ba086d19884a446923bb1ffa574d54df8a580eb9d1ba4b26f891b61557748290557f52ac53b312ff3f649b80db67c8698aa85984194f6e3539b7c35bb0847cf369208290557f03bd7dc02e365e676212106f9de08cf29ca85aac72be0636ae4ed6b6c14280ee8290557f6963b79e4a81e36786dca0202107befc55fdda0b5b4c1626fca15d8c4908edb18290557ffffdbdf5ee90c900e8a2b2f4833d1c4b2137981d7d68d051671b44ababbfe0778290557fb5c467644771eb9fd045c65f813c9ef26d686e8960b86fc38ba6ce31084c9c968190557f4d996df17b69a6a79eada1881d72ac91fb6fe1ab9f9b05e59377382392cef8e58290557ff85edf82dcbd341d846ed35ec4dc7b6845ad9d8c4ededcb5e79f90281e14517c91909155734b0f712aa9f91359f48d8628de8483b04530751a6000527fb7f5cd1a70cfbd03b57c7efbfe99c71cef3c2af999cce17f24940ab1807de59f55610ec58061024f6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806367b870af116100a2578063bf353dbb11610071578063bf353dbb1461020c578063d05c78da1461021f578063e6cb901314610232578063e96bd8c814610245578063ffe38447146102585761010b565b806367b870af146101c05780639c52a7f1146101d3578063a293d1e8146101e6578063b5931f7c146101f95761010b565b806333e9151c116100de57806333e9151c146101745780633a43c42a1461018757806365fae35e1461019a57806367457022146101ad5761010b565b80630e2286d3146101105780631c5a27db1461013957806322b385d81461014c57806326ed486c14610161575b600080fd5b61012361011e366004610d20565b61026b565b6040516101309190610d9d565b60405180910390f35b610123610147366004610d6c565b6102e6565b61015f61015a366004610c3d565b61033f565b005b61015f61016f366004610c80565b6107e8565b610123610182366004610d08565b610876565b610123610195366004610d6c565b610882565b61015f6101a8366004610c05565b6108b1565b6101236101bb366004610d20565b61094b565b6101236101ce366004610d41565b610964565b61015f6101e1366004610c05565b610a22565b6101236101f4366004610d20565b610abb565b610123610207366004610d20565b610b0b565b61012361021a366004610c05565b610b16565b61012361022d366004610d20565b610b28565b610123610240366004610d20565b610b86565b610123610253366004610d20565b610bd0565b610123610266366004610c05565b610bf3565b60008082116102b4576040805162461bcd60e51b815260206004820152601060248201526f6469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b816102d76102ce856b033b2e3c9fd0803ce8000000610b28565b60028504610b86565b816102de57fe5b049392505050565b6000806102f242610876565b905060008185111561030b576103088583610abb565b90505b61033461032e61032889846b033b2e3c9fd0803ce8000000610964565b8861094b565b8561094b565b979650505050505050565b33600090815260208190526040902054600114610394576040805162461bcd60e51b815260206004820152600e60248201526d1b9bdd0b585d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6000826001600160a01b031663fe7a33ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cf57600080fd5b505afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610c21565b90506000816001600160a01b03166337a7b7d86040518163ffffffff1660e01b815260040160206040518083038186803b15801561044457600080fd5b505afa158015610458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047c9190610c21565b90506000826001600160a01b03166362f6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b957600080fd5b505afa1580156104cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f19190610c21565b6001600160a01b0381166000908152600160205260409020549091506105325760405162461bcd60e51b815260040161052990610de9565b60405180910390fd5b6000836001600160a01b031663479b9c6c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a59190610c21565b60405163056e00b360e01b81529091506001600160a01b0382169063056e00b3906105d4908890600401610d9d565b604080518083038186803b1580156105eb57600080fd5b505afa1580156105ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106239190610cb7565b602001516106435760405162461bcd60e51b815260040161052990610da6565b600061064e42610876565b90506000846001600160a01b03166337a5d9ee886040518263ffffffff1660e01b815260040161067e9190610d9d565b60206040518083038186803b15801561069657600080fd5b505afa1580156106aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ce9190610c68565b90506000856001600160a01b031663065dad8f836040518263ffffffff1660e01b81526004016106fe9190610d9d565b60206040518083038186803b15801561071657600080fd5b505afa15801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e9190610c68565b905082811061076f5760405162461bcd60e51b815260040161052990610e34565b6001600160a01b03851660008181526001602052604090819020549051632a20ec3160e21b815263a883b0c4916107ab918c9190600401610e69565b600060405180830381600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b50505050505050505050505050565b3360009081526020819052604090205460011461083d576040805162461bcd60e51b815260206004820152600e60248201526d1b9bdd0b585d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b826c77726974654f6666526174657360981b1415610871576001600160a01b03821660009081526001602052604090208190555b505050565b62015180908190040290565b60006108a88461011e876108968688610abb565b6b033b2e3c9fd0803ce8000000610964565b95945050505050565b33600090815260208190526040902054600114610906576040805162461bcd60e51b815260206004820152600e60248201526d1b9bdd0b585d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b60006b033b2e3c9fd0803ce80000006102d78484610b28565b6000838015610a045760018416801561097f57859250610983565b8392505b50600283046002850494505b84156109fe5785860286878204146109a657600080fd5b818101818110156109b657600080fd5b85900496505060018516156109f35785830283878204141587151516156109dc57600080fd5b818101818110156109ec57600080fd5b8590049350505b60028504945061098f565b50610a1a565b838015610a145760009250610a18565b8392505b505b509392505050565b33600090815260208190526040902054600114610a77576040805162461bcd60e51b815260206004820152600e60248201526d1b9bdd0b585d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b80820382811115610b05576040805162461bcd60e51b815260206004820152600f60248201526e1cd859994b5cdd588b59985a5b1959608a1b604482015290519081900360640190fd5b92915050565b60008183816102de57fe5b60006020819052908152604090205481565b6000811580610b4357505080820282828281610b4057fe5b04145b610b05576040805162461bcd60e51b815260206004820152600f60248201526e1cd859994b5b5d5b0b59985a5b1959608a1b604482015290519081900360640190fd5b80820182811015610b05576040805162461bcd60e51b815260206004820152600f60248201526e1cd859994b5859190b59985a5b1959608a1b604482015290519081900360640190fd5b600082821115610be257506000610b05565b610bec8383610abb565b9392505050565b60016020526000908152604090205481565b600060208284031215610c16578081fd5b8135610bec81610e77565b600060208284031215610c32578081fd5b8151610bec81610e77565b60008060408385031215610c4f578081fd5b8235610c5a81610e77565b946020939093013593505050565b600060208284031215610c79578081fd5b5051919050565b600080600060608486031215610c94578081fd5b833592506020840135610ca681610e77565b929592945050506040919091013590565b600060408284031215610cc8578081fd5b6040516040810181811067ffffffffffffffff82111715610ce557fe5b6040528251610cf381610e77565b81526020928301519281019290925250919050565b600060208284031215610d19578081fd5b5035919050565b60008060408385031215610d32578182fd5b50508035926020909101359150565b600080600060608486031215610d55578283fd5b505081359360208301359350604090920135919050565b60008060008060808587031215610d81578081fd5b5050823594602084013594506040840135936060013592509050565b90815260200190565b60208082526023908201527f57726974654f6666577261707065722f6c6f616e2d646f65732d6e6f742d65786040820152621a5cdd60ea1b606082015260800190565b6020808252602b908201527f57726974654f6666577261707065722f70696c652d6861732d6e6f2d7772697460408201526a0652d6f66662d67726f75760ac1b606082015260800190565b6020808252818101527f57726974654f6666577261707065722f6c6f616e2d6e6f742d6f766572647565604082015260600190565b918252602082015260400190565b6001600160a01b0381168114610e8c57600080fd5b5056fea26469706673582212204c1ea0eb3b24b4d18f8d394b22dbc506c8aeaca331f9337376538d76ef9b347a64736f6c63430007060033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806367b870af116100a2578063bf353dbb11610071578063bf353dbb1461020c578063d05c78da1461021f578063e6cb901314610232578063e96bd8c814610245578063ffe38447146102585761010b565b806367b870af146101c05780639c52a7f1146101d3578063a293d1e8146101e6578063b5931f7c146101f95761010b565b806333e9151c116100de57806333e9151c146101745780633a43c42a1461018757806365fae35e1461019a57806367457022146101ad5761010b565b80630e2286d3146101105780631c5a27db1461013957806322b385d81461014c57806326ed486c14610161575b600080fd5b61012361011e366004610d20565b61026b565b6040516101309190610d9d565b60405180910390f35b610123610147366004610d6c565b6102e6565b61015f61015a366004610c3d565b61033f565b005b61015f61016f366004610c80565b6107e8565b610123610182366004610d08565b610876565b610123610195366004610d6c565b610882565b61015f6101a8366004610c05565b6108b1565b6101236101bb366004610d20565b61094b565b6101236101ce366004610d41565b610964565b61015f6101e1366004610c05565b610a22565b6101236101f4366004610d20565b610abb565b610123610207366004610d20565b610b0b565b61012361021a366004610c05565b610b16565b61012361022d366004610d20565b610b28565b610123610240366004610d20565b610b86565b610123610253366004610d20565b610bd0565b610123610266366004610c05565b610bf3565b60008082116102b4576040805162461bcd60e51b815260206004820152601060248201526f6469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b816102d76102ce856b033b2e3c9fd0803ce8000000610b28565b60028504610b86565b816102de57fe5b049392505050565b6000806102f242610876565b905060008185111561030b576103088583610abb565b90505b61033461032e61032889846b033b2e3c9fd0803ce8000000610964565b8861094b565b8561094b565b979650505050505050565b33600090815260208190526040902054600114610394576040805162461bcd60e51b815260206004820152600e60248201526d1b9bdd0b585d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6000826001600160a01b031663fe7a33ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cf57600080fd5b505afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610c21565b90506000816001600160a01b03166337a7b7d86040518163ffffffff1660e01b815260040160206040518083038186803b15801561044457600080fd5b505afa158015610458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047c9190610c21565b90506000826001600160a01b03166362f6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b957600080fd5b505afa1580156104cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f19190610c21565b6001600160a01b0381166000908152600160205260409020549091506105325760405162461bcd60e51b815260040161052990610de9565b60405180910390fd5b6000836001600160a01b031663479b9c6c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a59190610c21565b60405163056e00b360e01b81529091506001600160a01b0382169063056e00b3906105d4908890600401610d9d565b604080518083038186803b1580156105eb57600080fd5b505afa1580156105ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106239190610cb7565b602001516106435760405162461bcd60e51b815260040161052990610da6565b600061064e42610876565b90506000846001600160a01b03166337a5d9ee886040518263ffffffff1660e01b815260040161067e9190610d9d565b60206040518083038186803b15801561069657600080fd5b505afa1580156106aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ce9190610c68565b90506000856001600160a01b031663065dad8f836040518263ffffffff1660e01b81526004016106fe9190610d9d565b60206040518083038186803b15801561071657600080fd5b505afa15801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e9190610c68565b905082811061076f5760405162461bcd60e51b815260040161052990610e34565b6001600160a01b03851660008181526001602052604090819020549051632a20ec3160e21b815263a883b0c4916107ab918c9190600401610e69565b600060405180830381600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b50505050505050505050505050565b3360009081526020819052604090205460011461083d576040805162461bcd60e51b815260206004820152600e60248201526d1b9bdd0b585d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b826c77726974654f6666526174657360981b1415610871576001600160a01b03821660009081526001602052604090208190555b505050565b62015180908190040290565b60006108a88461011e876108968688610abb565b6b033b2e3c9fd0803ce8000000610964565b95945050505050565b33600090815260208190526040902054600114610906576040805162461bcd60e51b815260206004820152600e60248201526d1b9bdd0b585d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b60006b033b2e3c9fd0803ce80000006102d78484610b28565b6000838015610a045760018416801561097f57859250610983565b8392505b50600283046002850494505b84156109fe5785860286878204146109a657600080fd5b818101818110156109b657600080fd5b85900496505060018516156109f35785830283878204141587151516156109dc57600080fd5b818101818110156109ec57600080fd5b8590049350505b60028504945061098f565b50610a1a565b838015610a145760009250610a18565b8392505b505b509392505050565b33600090815260208190526040902054600114610a77576040805162461bcd60e51b815260206004820152600e60248201526d1b9bdd0b585d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b80820382811115610b05576040805162461bcd60e51b815260206004820152600f60248201526e1cd859994b5cdd588b59985a5b1959608a1b604482015290519081900360640190fd5b92915050565b60008183816102de57fe5b60006020819052908152604090205481565b6000811580610b4357505080820282828281610b4057fe5b04145b610b05576040805162461bcd60e51b815260206004820152600f60248201526e1cd859994b5b5d5b0b59985a5b1959608a1b604482015290519081900360640190fd5b80820182811015610b05576040805162461bcd60e51b815260206004820152600f60248201526e1cd859994b5859190b59985a5b1959608a1b604482015290519081900360640190fd5b600082821115610be257506000610b05565b610bec8383610abb565b9392505050565b60016020526000908152604090205481565b600060208284031215610c16578081fd5b8135610bec81610e77565b600060208284031215610c32578081fd5b8151610bec81610e77565b60008060408385031215610c4f578081fd5b8235610c5a81610e77565b946020939093013593505050565b600060208284031215610c79578081fd5b5051919050565b600080600060608486031215610c94578081fd5b833592506020840135610ca681610e77565b929592945050506040919091013590565b600060408284031215610cc8578081fd5b6040516040810181811067ffffffffffffffff82111715610ce557fe5b6040528251610cf381610e77565b81526020928301519281019290925250919050565b600060208284031215610d19578081fd5b5035919050565b60008060408385031215610d32578182fd5b50508035926020909101359150565b600080600060608486031215610d55578283fd5b505081359360208301359350604090920135919050565b60008060008060808587031215610d81578081fd5b5050823594602084013594506040840135936060013592509050565b90815260200190565b60208082526023908201527f57726974654f6666577261707065722f6c6f616e2d646f65732d6e6f742d65786040820152621a5cdd60ea1b606082015260800190565b6020808252602b908201527f57726974654f6666577261707065722f70696c652d6861732d6e6f2d7772697460408201526a0652d6f66662d67726f75760ac1b606082015260800190565b6020808252818101527f57726974654f6666577261707065722f6c6f616e2d6e6f742d6f766572647565604082015260600190565b918252602082015260400190565b6001600160a01b0381168114610e8c57600080fd5b5056fea26469706673582212204c1ea0eb3b24b4d18f8d394b22dbc506c8aeaca331f9337376538d76ef9b347a64736f6c63430007060033

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.