ETH Price: $3,658.32 (+1.20%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
76032112019-04-20 7:16:002086 days ago1555744560  Contract Creation0 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x47a87cbB...004E6f9C2
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Identity

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-09-04
*/

pragma solidity ^0.4.22;

contract ERC725 {

    uint256 public constant MANAGEMENT_KEY = 1;
    uint256 public constant ACTION_KEY = 2;
    uint256 public constant CLAIM_SIGNER_KEY = 3;
    uint256 public constant ENCRYPTION_KEY = 4;

    event KeyAdded(bytes32 indexed key, uint256 indexed purpose, uint256 indexed keyType);
    event KeyRemoved(bytes32 indexed key, uint256 indexed purpose, uint256 indexed keyType);
    event ExecutionRequested(uint256 indexed executionId, address indexed to, uint256 indexed value, bytes data);
    event Executed(uint256 indexed executionId, address indexed to, uint256 indexed value, bytes data);
    event Approved(uint256 indexed executionId, bool approved);

    struct Key {
        uint256[] purpose; //e.g., MANAGEMENT_KEY = 1, ACTION_KEY = 2, etc.
        uint256 keyType; // e.g. 1 = ECDSA, 2 = RSA, etc.
        bytes32 key;
    }

    function getKey(bytes32 _key) public constant returns(uint256[] purpose, uint256 keyType, bytes32 key);
    function getKeyPurpose(bytes32 _key) public constant returns(uint256[] purpose);
    function getKeysByPurpose(uint256 _purpose) public constant returns(bytes32[] keys);
    function addKey(bytes32 _key, uint256 _purpose, uint256 _keyType) public returns (bool success);
    function removeKey(bytes32 _key, uint256 _purpose) public returns (bool success);
    function execute(address _to, uint256 _value, bytes _data) public returns (uint256 executionId);
    function approve(uint256 _id, bool _approve) public returns (bool success);
}


contract ERC20Basic {
    function balanceOf(address _who) public constant returns (uint256);
    function transfer(address _to, uint256 _value) public returns (bool);
}

contract Identity is ERC725 {

    uint256 constant LOGIN_KEY = 10;
    uint256 constant FUNDS_MANAGEMENT = 11;

    uint256 executionNonce;

    struct Execution {
        address to;
        uint256 value;
        bytes data;
        bool approved;
        bool executed;
    }

    mapping (bytes32 => Key) keys;
    mapping (uint256 => bytes32[]) keysByPurpose;
    mapping (uint256 => Execution) executions;

    event ExecutionFailed(uint256 indexed executionId, address indexed to, uint256 indexed value, bytes data);

    modifier onlyManagement() {
        require(keyHasPurpose(keccak256(msg.sender), MANAGEMENT_KEY), "Sender does not have management key");
        _;
    }

    modifier onlyAction() {
        require(keyHasPurpose(keccak256(msg.sender), ACTION_KEY), "Sender does not have action key");
        _;
    }

    modifier onlyFundsManagement() {
        require(keyHasPurpose(keccak256(msg.sender), FUNDS_MANAGEMENT), "Sender does not have funds key");
        _;
    }

    constructor() public {
        bytes32 _key = keccak256(msg.sender);
        keys[_key].key = _key;
        keys[_key].purpose = [MANAGEMENT_KEY];
        keys[_key].keyType = 1;
        keysByPurpose[MANAGEMENT_KEY].push(_key);
        emit KeyAdded(_key, MANAGEMENT_KEY, 1);
    }

    function getKey(bytes32 _key)
        public
        view
        returns(uint256[] purpose, uint256 keyType, bytes32 key)
    {
        return (keys[_key].purpose, keys[_key].keyType, keys[_key].key);
    }

    function getKeyPurpose(bytes32 _key)
        public
        view
        returns(uint256[] purpose)
    {
        return (keys[_key].purpose);
    }

    function getKeysByPurpose(uint256 _purpose)
        public
        view
        returns(bytes32[] _keys)
    {
        return keysByPurpose[_purpose];
    }

    function addKey(bytes32 _key, uint256 _purpose, uint256 _type)
        public
        onlyManagement
        returns (bool success)
    {
        if (keyHasPurpose(_key, _purpose)) {
            return true;
        }

        keys[_key].key = _key;
        keys[_key].purpose.push(_purpose);
        keys[_key].keyType = _type;

        keysByPurpose[_purpose].push(_key);

        emit KeyAdded(_key, _purpose, _type);

        return true;
    }

    function approve(uint256 _id, bool _approve)
        public
        onlyAction
        returns (bool success)
    {
        emit Approved(_id, _approve);

        if (_approve == true) {
            executions[_id].approved = true;
            success = executions[_id].to.call(executions[_id].data, 0);
            if (success) {
                executions[_id].executed = true;
                emit Executed(
                    _id,
                    executions[_id].to,
                    executions[_id].value,
                    executions[_id].data
                );
            } else {
                emit ExecutionFailed(
                    _id,
                    executions[_id].to,
                    executions[_id].value,
                    executions[_id].data
                );
            }
            return success;
        } else {
            executions[_id].approved = false;
        }
        return true;
    }

    function execute(address _to, uint256 _value, bytes _data)
        public
        returns (uint256 executionId)
    {
        require(!executions[executionNonce].executed, "Already executed");
        executions[executionNonce].to = _to;
        executions[executionNonce].value = _value;
        executions[executionNonce].data = _data;

        emit ExecutionRequested(executionNonce, _to, _value, _data);

        if (keyHasPurpose(keccak256(msg.sender), ACTION_KEY)) {
            approve(executionNonce, true);
        }

        executionNonce++;
        return executionNonce-1;
    }

    function removeKey(bytes32 _key, uint256 _purpose)
        public
        onlyManagement
        returns (bool success)
    {
        require(keys[_key].key == _key, "No such key");

        if (!keyHasPurpose(_key, _purpose)) {
            return false;
        }

        uint256 arrayLength = keys[_key].purpose.length;
        int index = -1;
        for (uint i = 0; i < arrayLength; i++) {
            if (keys[_key].purpose[i] == _purpose) {
                index = int(i);
                break;
            }
        }

        if (index != -1) {
            keys[_key].purpose[uint(index)] = keys[_key].purpose[arrayLength - 1];
            delete keys[_key].purpose[arrayLength - 1];
            keys[_key].purpose.length--;
        }

        uint256 purposesLen = keysByPurpose[_purpose].length;
        for (uint j = 0; j < purposesLen; j++) {
            if (keysByPurpose[_purpose][j] == _key) {
                keysByPurpose[_purpose][j] = keysByPurpose[_purpose][purposesLen - 1];
                delete keysByPurpose[_purpose][purposesLen - 1];
                keysByPurpose[_purpose].length--;
                break;
            }
        }

        emit KeyRemoved(_key, _purpose, keys[_key].keyType);

        return true;
    }

    function keyHasPurpose(bytes32 _key, uint256 _purpose)
        public
        view
        returns(bool result)
    {
        if (keys[_key].key == 0) return false;
        uint256 arrayLength = keys[_key].purpose.length;
        for (uint i = 0; i < arrayLength; i++) {
            if (keys[_key].purpose[i] == _purpose) {
                return true;
            }
        }
        return false;
    }

   /**
     * Send all ether to msg.sender
     * Requires FUNDS_MANAGEMENT purpose for msg.sender
     */
    function withdraw() public onlyFundsManagement {
        msg.sender.transfer(address(this).balance);
    }

    /**
     * Transfer ether to _account
     * @param _amount amount to transfer in wei
     * @param _account recepient
     * Requires FUNDS_MANAGEMENT purpose for msg.sender
     */
    function transferEth(uint _amount, address _account) public onlyFundsManagement {
        require(_amount <= address(this).balance, "Amount should be less than total balance of the contract");
        require(_account != address(0), "must be valid address");
        _account.transfer(_amount);
    }

    /**
     * Returns contract eth balance
     */
    function getBalance() public view returns(uint)  {
        return address(this).balance;
    }

    /**
     * Returns ERC20 token balance for _token
     * @param _token token address
     */
    function getTokenBalance(address _token) public view returns (uint) {
        return ERC20Basic(_token).balanceOf(this);
    }

    /**
     * Send all tokens for _token to msg.sender
     * @param _token ERC20 contract address
     * Requires FUNDS_MANAGEMENT purpose for msg.sender
     */
    function withdrawTokens(address _token) public onlyFundsManagement {
        require(_token != address(0));
        ERC20Basic token = ERC20Basic(_token);
        uint balance = token.balanceOf(this);
        // token returns true on successful transfer
        assert(token.transfer(msg.sender, balance));
    }

    /**
     * Send tokens for _token to _to
     * @param _token ERC20 contract address
     * @param _to recepient
     * @param _amount amount in 
     * Requires FUNDS_MANAGEMENT purpose for msg.sender
     */
    function transferTokens(address _token, address _to, uint _amount) public onlyFundsManagement {
        require(_token != address(0));
        require(_to != address(0));
        ERC20Basic token = ERC20Basic(_token);
        uint balance = token.balanceOf(this);
        require(_amount <= balance);
        assert(token.transfer(_to, _amount));
    }

    function () public payable {}

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_key","type":"bytes32"}],"name":"getKeyPurpose","outputs":[{"name":"purpose","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MANAGEMENT_KEY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_key","type":"bytes32"}],"name":"getKey","outputs":[{"name":"purpose","type":"uint256[]"},{"name":"keyType","type":"uint256"},{"name":"key","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"bytes32"},{"name":"_purpose","type":"uint256"},{"name":"_type","type":"uint256"}],"name":"addKey","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"}],"name":"getTokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"withdrawTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_account","type":"address"}],"name":"transferEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"bytes32"},{"name":"_purpose","type":"uint256"}],"name":"removeKey","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_approve","type":"bool"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ACTION_KEY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_purpose","type":"uint256"}],"name":"getKeysByPurpose","outputs":[{"name":"_keys","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ENCRYPTION_KEY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"execute","outputs":[{"name":"executionId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CLAIM_SIGNER_KEY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_key","type":"bytes32"},{"name":"_purpose","type":"uint256"}],"name":"keyHasPurpose","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"executionId","type":"uint256"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"ExecutionFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"key","type":"bytes32"},{"indexed":true,"name":"purpose","type":"uint256"},{"indexed":true,"name":"keyType","type":"uint256"}],"name":"KeyAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"key","type":"bytes32"},{"indexed":true,"name":"purpose","type":"uint256"},{"indexed":true,"name":"keyType","type":"uint256"}],"name":"KeyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"executionId","type":"uint256"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"ExecutionRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"executionId","type":"uint256"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Executed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"executionId","type":"uint256"},{"indexed":false,"name":"approved","type":"bool"}],"name":"Approved","type":"event"}]

Deployed Bytecode

0x6080604052600436106100fb5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663032c1a8a81146100fd578063058b316c1461016557806312065fe01461018c57806312aaac70146101a15780631d3812401461021a5780633aecd0e31461024c5780633ccfd60b1461026d57806349df728c1461028257806349f9c0e4146102a357806353d413c5146102c7578063747442d3146102e257806375e5598c146102ff5780639010f726146103145780639e140cc81461032c578063a64b6e5f14610341578063b61d27f61461036b578063c6702187146103d4578063d202158d146103e9575b005b34801561010957600080fd5b50610115600435610404565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610151578181015183820152602001610139565b505050509050019250505060405180910390f35b34801561017157600080fd5b5061017a610466565b60408051918252519081900360200190f35b34801561019857600080fd5b5061017a61046b565b3480156101ad57600080fd5b506101b9600435610471565b60408051602080820185905291810183905260608082528551908201528451909182916080830191878101910280838360005b838110156102045781810151838201526020016101ec565b5050505090500194505050505060405180910390f35b34801561022657600080fd5b506102386004356024356044356104ea565b604080519115158252519081900360200190f35b34801561025857600080fd5b5061017a600160a060020a036004351661062b565b34801561027957600080fd5b506100fb6106c1565b34801561028e57600080fd5b506100fb600160a060020a0360043516610761565b3480156102af57600080fd5b506100fb600435600160a060020a0360243516610920565b3480156102d357600080fd5b50610238600435602435610aa5565b3480156102ee57600080fd5b506102386004356024351515610e41565b34801561030b57600080fd5b5061017a6111c2565b34801561032057600080fd5b506101156004356111c7565b34801561033857600080fd5b5061017a611229565b34801561034d57600080fd5b506100fb600160a060020a036004358116906024351660443561122e565b34801561037757600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261017a948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506114239650505050505050565b3480156103e057600080fd5b5061017a6115ee565b3480156103f557600080fd5b506102386004356024356115f3565b60008181526001602090815260409182902080548351818402810184019094528084526060939283018282801561045a57602002820191906000526020600020905b815481526020019060010190808311610446575b50505050509050919050565b600181565b30315b90565b6000818152600160208181526040808420928301546002840154845483518186028101860190945280845260609695869590949185918301828280156104d657602002820191906000526020600020905b8154815260200190600101908083116104c2575b505050505092509250925092509193909250565b604080516c010000000000000000000000003302815290519081900360140190206000906105199060016115f3565b1515610595576040805160e560020a62461bcd02815260206004820152602360248201527f53656e64657220646f6573206e6f742068617665206d616e6167656d656e742060448201527f6b65790000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61059f84846115f3565b156105ac57506001610624565b600084815260016020818152604080842060028082018a905581548086018355828752848720018990559084018790558785528252808420805493840181558452908320909101869055518391859187917f480000bb1edad8ca1470381cc334b1917fbd51c6531f3a623ea8e0ec7e38a6e991a45060015b9392505050565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600091600160a060020a038416916370a082319160248082019260209290919082900301818787803b15801561068f57600080fd5b505af11580156106a3573d6000803e3d6000fd5b505050506040513d60208110156106b957600080fd5b505192915050565b604080516c010000000000000000000000003302815290519081900360140190206106ed90600b6115f3565b1515610731576040805160e560020a62461bcd02815260206004820152601e602482015260008051602061173c833981519152604482015290519081900360640190fd5b6040513390303180156108fc02916000818181858888f1935050505015801561075e573d6000803e3d6000fd5b50565b604080516c01000000000000000000000000330281529051908190036014019020600090819061079290600b6115f3565b15156107d6576040805160e560020a62461bcd02815260206004820152601e602482015260008051602061173c833981519152604482015290519081900360640190fd5b600160a060020a03831615156107eb57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b505050506040513d602081101561087957600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b1580156108e757600080fd5b505af11580156108fb573d6000803e3d6000fd5b505050506040513d602081101561091157600080fd5b5051151561091b57fe5b505050565b604080516c0100000000000000000000000033028152905190819003601401902061094c90600b6115f3565b1515610990576040805160e560020a62461bcd02815260206004820152601e602482015260008051602061173c833981519152604482015290519081900360640190fd5b3031821115610a0f576040805160e560020a62461bcd02815260206004820152603860248201527f416d6f756e742073686f756c64206265206c657373207468616e20746f74616c60448201527f2062616c616e6365206f662074686520636f6e74726163740000000000000000606482015290519081900360840190fd5b600160a060020a0381161515610a6f576040805160e560020a62461bcd02815260206004820152601560248201527f6d7573742062652076616c696420616464726573730000000000000000000000604482015290519081900360640190fd5b604051600160a060020a0382169083156108fc029084906000818181858888f1935050505015801561091b573d6000803e3d6000fd5b600080600080600080610aef336040518082600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401915050604051809103902060016115f3565b1515610b6b576040805160e560020a62461bcd02815260206004820152602360248201527f53656e64657220646f6573206e6f742068617665206d616e6167656d656e742060448201527f6b65790000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000888152600160205260409020600201548814610bd3576040805160e560020a62461bcd02815260206004820152600b60248201527f4e6f2073756368206b6579000000000000000000000000000000000000000000604482015290519081900360640190fd5b610bdd88886115f3565b1515610bec5760009550610e36565b6000888152600160205260408120549550600019945092505b84831015610c4e576000888152600160205260409020805488919085908110610c2a57fe5b90600052602060002001541415610c4357829350610c4e565b600190920191610c05565b6000198414610cf757600088815260016020526040902080546000198701908110610c7557fe5b60009182526020808320909101548a835260019091526040909120805486908110610c9c57fe5b600091825260208083209091019290925589815260019091526040902080546000198701908110610cc957fe5b600091825260208083209091018290558982526001905260409020805490610cf590600019830161167f565b505b5050600085815260026020526040812054905b81811015610df1576000878152600260205260409020805489919083908110610d2f57fe5b6000918252602090912001541415610de957600087815260026020526040902080546000198401908110610d5f57fe5b90600052602060002001546002600089815260200190815260200160002082815481101515610d8a57fe5b600091825260208083209091019290925588815260029091526040902080546000198401908110610db757fe5b600091825260208083209091018290558882526002905260409020805490610de390600019830161167f565b50610df1565b600101610d0a565b6000888152600160208190526040808320909101549051909189918b917f585a4aef50f8267a92b32412b331b20f7f8b96f2245b253b9cc50dcc621d339791a4600195505b505050505092915050565b604080516c01000000000000000000000000330281529051908190036014019020600090610e709060026115f3565b1515610ec6576040805160e560020a62461bcd02815260206004820152601f60248201527f53656e64657220646f6573206e6f74206861766520616374696f6e206b657900604482015290519081900360640190fd5b604080518315158152905184917fb3932da477fe5d6c8ff2eafef050c0f3a1af18fc07121001482600f36f3715d8919081900360200190a26001821515141561119e576000838152600360208190526040808320918201805460ff191660019081179091558254915160029384018054600160a060020a03909416959094909391928392869260001992821615610100029290920116048015610faa5780601f10610f7f57610100808354040283529160200191610faa565b820191906000526020600020905b815481529060010190602001808311610f8d57829003601f168201915b50508260ff168152602001925050506000604051808303816000865af1915050905080156110bf57600083815260036020818152604092839020918201805461010061ff00199091168117909155600180840154845486518581526002968701805494851615909502600019019093169590950493820184905294600160a060020a039094169388937f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b8939291829190820190849080156110ac5780601f10611081576101008083540402835291602001916110ac565b820191906000526020600020905b81548152906001019060200180831161108f57829003601f168201915b50509250505060405180910390a4611199565b6000838152600360209081526040918290206001808201548254855185815260029485018054600019958116156101000295909501909416949094049484018590529094600160a060020a039091169388937fe10c49d9f7c71da23262367013434763cfdb2332267641728d25cd712c5c6a689392909182918201908490801561118a5780601f1061115f5761010080835404028352916020019161118a565b820191906000526020600020905b81548152906001019060200180831161116d57829003601f168201915b50509250505060405180910390a45b6111bc565b600083815260036020819052604090912001805460ff191690555060015b92915050565b600281565b60008181526002602090815260409182902080548351818402810184019094528084526060939283018282801561045a57602002820191906000526020600020905b815481526001909101906020018083116112095750505050509050919050565b600481565b604080516c01000000000000000000000000330281529051908190036014019020600090819061125f90600b6115f3565b15156112a3576040805160e560020a62461bcd02815260206004820152601e602482015260008051602061173c833981519152604482015290519081900360640190fd5b600160a060020a03851615156112b857600080fd5b600160a060020a03841615156112cd57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051869350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561133157600080fd5b505af1158015611345573d6000803e3d6000fd5b505050506040513d602081101561135b57600080fd5b505190508083111561136c57600080fd5b81600160a060020a031663a9059cbb85856040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156113e857600080fd5b505af11580156113fc573d6000803e3d6000fd5b505050506040513d602081101561141257600080fd5b5051151561141c57fe5b5050505050565b60008054815260036020819052604082200154610100900460ff1615611493576040805160e560020a62461bcd02815260206004820152601060248201527f416c726561647920657865637574656400000000000000000000000000000000604482015290519081900360640190fd5b600080548152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038916179055825483528083206001018690558254835290912083516114f3926002909201918501906116a3565b508284600160a060020a03166000547f8afcfabcb00e47a53a8fc3e9f23ff47ee1926194bb1350dd007c50b412a6cee8856040518080602001828103825283818151815260200191508051906020019080838360005b83811015611561578181015183820152602001611549565b50505050905090810190601f16801561158e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a4604080516c010000000000000000000000003302815290519081900360140190206115c79060026115f3565b156115db576115d96000546001610e41565b505b5060008054600181019091559392505050565b600381565b6000828152600160205260408120600201548190819015156116185760009250611677565b5050600083815260016020526040812054905b8181101561167257600085815260016020526040902080548591908390811061165057fe5b9060005260206000200154141561166a5760019250611677565b60010161162b565b600092505b505092915050565b81548183558181111561091b5760008381526020902061091b918101908301611721565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116e457805160ff1916838001178555611711565b82800160010185558215611711579182015b828111156117115782518255916020019190600101906116f6565b5061171d929150611721565b5090565b61046e91905b8082111561171d5760008155600101611727560053656e64657220646f6573206e6f7420686176652066756e6473206b65790000a165627a7a7230582020d5a79b2254964de92a1f7bc9607f8356c0d458c903e73678376ed79440e5550029

Swarm Source

bzzr://20d5a79b2254964de92a1f7bc9607f8356c0d458c903e73678376ed79440e555

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.