Contract 0xadc9982d0030ce17955f5825a554ac2a62adb911

Contract Overview

Balance:
0 Ether

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: dapMultisig
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity 0.4.24;

interface tokenInterface {
    function transfer(address reciever, uint amount) external;
    function balanceOf(address owner) external returns (uint256);
}

contract dapMultisig {

    /*
    * Types
    */
    struct Transaction {
        uint id;
        address destination;
        uint value;
        bytes data;
        TxnStatus status;
        address[] confirmed;
        address creator;
    }
    
    struct tokenTransaction {
        uint id;
        tokenInterface token;
        address reciever;
        uint value;
        address[] confirmed;
        TxnStatus status;
        address creator;
    }
    
    struct Log {
        uint amount;
        address sender;
    }
    
    enum TxnStatus { Unconfirmed, Pending, Executed }
    
    /*
    * Modifiers
    */
    modifier onlyOwner () {
        bool found;
        for (uint i = 0;i<owners.length;i++){
            if (owners[i] == msg.sender){
                found = true;
            }
        }
        if (found){
            _;
        }
    }
    
    /*
    * Events
    */
    event WalletCreated(address creator, address[] owners);
    event TxnSumbitted(uint id);
    event TxnConfirmed(uint id);
    event topUpBalance(uint value);
    event tokenTxnConfirmed(uint id, address owner);
    event tokenTxnExecuted(address token, uint256 value, address reciever);
    /*
    * Storage
    */
    bytes32 public name;
    address public creator;
    uint public allowance;
    address[] public owners;
    Log[] logs;
    Transaction[] transactions;
    tokenTransaction[] tokenTransactions;
    uint public approvalsreq;
    
    /*
    * Constructor
    */
    constructor (uint _approvals, address[] _owners, bytes32 _name) public payable{
        /* check if name was actually given */
        require(_name.length != 0);
        
        /*check if approvals num equals or greater than given owners num*/
        require(_approvals <= _owners.length);
        
        name = _name;
        creator = msg.sender;
        allowance = msg.value;
        owners = _owners;
        approvalsreq = _approvals;
        emit WalletCreated(msg.sender, _owners);
    }

    //fallback to accept funds without method signature
    function () external payable {
        allowance += msg.value;
    }
    
    /*
    * Getters
    */

    function getOwners() external view returns (address[]){
        return owners;
    }
    
    function getTxnNum() external view returns (uint){
        return transactions.length;
    }
    
    function getTxn(uint _id) external view returns (uint, address, uint, bytes, TxnStatus, address[], address){
        Transaction storage txn = transactions[_id];
        return (txn.id, txn.destination, txn.value, txn.data, txn.status, txn.confirmed, txn.creator);
    }
    
    function getLogsNum() external view returns (uint){
        return logs.length;
    }
    
    function getLog(uint logId) external view returns (address, uint){
        return(logs[logId].sender, logs[logId].amount);
    }
    
    function getTokenTxnNum() external view returns (uint){
        return tokenTransactions.length;
    }
    
    function getTokenTxn(uint _id) external view returns(uint, address, address, uint256, address[], TxnStatus, address){
        tokenTransaction storage txn = tokenTransactions[_id];
        return (txn.id, txn.token, txn.reciever, txn.value, txn.confirmed, txn.status, txn.creator);
    }
    
    /*
    * Methods
    */

    function topBalance() external payable {
        require (msg.value > 0 wei);
        allowance += msg.value;
        
        /* create new log entry */
        uint loglen = logs.length++;
        logs[loglen].amount = msg.value;
        logs[loglen].sender = msg.sender;
        emit topUpBalance(msg.value);
    }
    
    function submitTransaction(address _destination, uint _value, bytes _data) onlyOwner () external returns (bool) {
        uint newTxId = transactions.length++;
        transactions[newTxId].id = newTxId;
        transactions[newTxId].destination = _destination;
        transactions[newTxId].value = _value;
        transactions[newTxId].data = _data;
        transactions[newTxId].creator = msg.sender;
        transactions[newTxId].confirmed.push(msg.sender);
        if (transactions[newTxId].confirmed.length == approvalsreq){
            transactions[newTxId].status = TxnStatus.Pending;
        }
        emit TxnSumbitted(newTxId);
        return true;
    }

    function confirmTransaction(uint txId) onlyOwner() external returns (bool){
        Transaction storage txn = transactions[txId];

        //check whether this owner has already confirmed this txn
        bool f;
        for (uint8 i = 0; i<txn.confirmed.length;i++){
            if (txn.confirmed[i] == msg.sender){
                f = true;
            }
        }
        //push sender address into confirmed array if haven't found
        require(!f);
        txn.confirmed.push(msg.sender);
        
        if (txn.confirmed.length == approvalsreq){
            txn.status = TxnStatus.Pending;
        }
        
        //fire event
        emit TxnConfirmed(txId);
        
        return true;
    }
    
    function executeTxn(uint txId) onlyOwner() external returns (bool){
        
        Transaction storage txn = transactions[txId];
        
        /* check txn status */
        require(txn.status == TxnStatus.Pending);
        
        /* check whether wallet has sufficient balance to send this transaction */
        require(allowance >= txn.value);
        
        /* send transaction */
        address dest = txn.destination;
        uint val = txn.value;
        bytes memory dat = txn.data;
        assert(dest.call.value(val)(dat));
            
        /* change transaction's status to executed */
        txn.status = TxnStatus.Executed;

        /* change wallet's balance */
        allowance = allowance - txn.value;

        return true;
        
    }
    
    function submitTokenTransaction(address _tokenAddress, address _receiever, uint _value) onlyOwner() external returns (bool) {
        uint newTxId = tokenTransactions.length++;
        tokenTransactions[newTxId].id = newTxId;
        tokenTransactions[newTxId].token = tokenInterface(_tokenAddress);
        tokenTransactions[newTxId].reciever = _receiever;
        tokenTransactions[newTxId].value = _value;
        tokenTransactions[newTxId].confirmed.push(msg.sender);
        if (tokenTransactions[newTxId].confirmed.length == approvalsreq){
            tokenTransactions[newTxId].status = TxnStatus.Pending;
        }
        emit TxnSumbitted(newTxId);
        return true;
    }
    
    function confirmTokenTransaction(uint txId) onlyOwner() external returns (bool){
        tokenTransaction storage txn = tokenTransactions[txId];

        //check whether this owner has already confirmed this txn
        bool f;
        for (uint8 i = 0; i<txn.confirmed.length;i++){
            if (txn.confirmed[i] == msg.sender){
                f = true;
            }
        }
        //push sender address into confirmed array if haven't found
        require(!f);
        txn.confirmed.push(msg.sender);
        
        if (txn.confirmed.length == approvalsreq){
            txn.status = TxnStatus.Pending;
        }
        
        //fire event
        emit tokenTxnConfirmed(txId, msg.sender);
        
        return true;
    }
    
    function executeTokenTxn(uint txId) onlyOwner() external returns (bool){
        
        tokenTransaction storage txn = tokenTransactions[txId];
        
        /* check txn status */
        require(txn.status == TxnStatus.Pending);
        
        /* check whether wallet has sufficient balance to send this transaction */
        uint256 balance = txn.token.balanceOf(address(this));
        require (txn.value <= balance);
        
        /* Send tokens */
        txn.token.transfer(txn.reciever, txn.value);
        
        /* change transaction's status to executed */
        txn.status = TxnStatus.Executed;
        
        /* Fire event */
        emit tokenTxnExecuted(address(txn.token), txn.value, txn.reciever);
       
        return true;
    }
}

Contract ABI
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"owners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"creator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"approvalsreq","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"logId","type":"uint256"}],"name":"getLog","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTxnNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTokenTxnNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"txId","type":"uint256"}],"name":"executeTokenTxn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getTxn","outputs":[{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"bytes"},{"name":"","type":"uint8"},{"name":"","type":"address[]"},{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_receiever","type":"address"},{"name":"_value","type":"uint256"}],"name":"submitTokenTransaction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getLogsNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"txId","type":"uint256"}],"name":"confirmTransaction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"txId","type":"uint256"}],"name":"confirmTokenTransaction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getTokenTxn","outputs":[{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"address[]"},{"name":"","type":"uint8"},{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_destination","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"submitTransaction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"txId","type":"uint256"}],"name":"executeTxn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"topBalance","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[{"name":"_approvals","type":"uint256"},{"name":"_owners","type":"address[]"},{"name":"_name","type":"bytes32"}],"payable":true,"stateMutability":"payable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"creator","type":"address"},{"indexed":false,"name":"owners","type":"address[]"}],"name":"WalletCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"}],"name":"TxnSumbitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"}],"name":"TxnConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"value","type":"uint256"}],"name":"topUpBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"owner","type":"address"}],"name":"tokenTxnConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"reciever","type":"address"}],"name":"tokenTxnExecuted","type":"event"}]

Contract Creation Code
6080604052604051620019623803806200196283398101604090815281516020830151918301519092919091019081518311156200003c57600080fd5b600081905560018054600160a060020a031916331790553460025581516200006c9060039060208501906200010e565b50826007819055507f0d1013664d1afda1c712a76630e584de8dd1d656331b90608aedc997fdb7839e33836040518083600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015620000f1578181015183820152602001620000d7565b50505050905001935050505060405180910390a1505050620001a2565b82805482825590600052602060002090810192821562000166579160200282015b82811115620001665782518254600160a060020a031916600160a060020a039091161782556020909201916001909101906200012f565b506200017492915062000178565b5090565b6200019f91905b8082111562000174578054600160a060020a03191681556001016200017f565b90565b6117b080620001b26000396000f3006080604052600436106101065763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025e7c27811461011057806302d05d3f1461014457806306fdde03146101595780631bf913df146101805780633206b2c61461019557806348601a7d146101d05780638c534d54146101e55780639e1f5599146101fa578063a0e67e2b14610226578063afd237bd1461028b578063b4b14467146103b1578063babcc04c146103db578063c01a8c84146103f0578063c38672a014610408578063c49b94e914610420578063c6427474146104fa578063dbc389401461052b578063de242ff414610543578063e4df253114610558575b6002805434019055005b34801561011c57600080fd5b50610128600435610562565b60408051600160a060020a039092168252519081900360200190f35b34801561015057600080fd5b5061012861058a565b34801561016557600080fd5b5061016e610599565b60408051918252519081900360200190f35b34801561018c57600080fd5b5061016e61059f565b3480156101a157600080fd5b506101ad6004356105a5565b60408051600160a060020a03909316835260208301919091528051918290030190f35b3480156101dc57600080fd5b5061016e610600565b3480156101f157600080fd5b5061016e610607565b34801561020657600080fd5b5061021260043561060d565b604080519115158252519081900360200190f35b34801561023257600080fd5b5061023b61084f565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561027757818101518382015260200161025f565b505050509050019250505060405180910390f35b34801561029757600080fd5b506102a36004356108b1565b6040518088815260200187600160a060020a0316600160a060020a03168152602001868152602001806020018560028111156102db57fe5b60ff1681526020018060200184600160a060020a0316600160a060020a03168152602001838103835287818151815260200191508051906020019080838360005b8381101561033457818101518382015260200161031c565b50505050905090810190601f1680156103615780820380516001836020036101000a031916815260200191505b508381038252855181528551602091820191808801910280838360005b8381101561039657818101518382015260200161037e565b50505050905001995050505050505050505060405180910390f35b3480156103bd57600080fd5b50610212600160a060020a0360043581169060243516604435610a1e565b3480156103e757600080fd5b5061016e610c46565b3480156103fc57600080fd5b50610212600435610c4c565b34801561041457600080fd5b50610212600435610d9e565b34801561042c57600080fd5b50610438600435610ef5565b6040518088815260200187600160a060020a0316600160a060020a0316815260200186600160a060020a0316600160a060020a031681526020018581526020018060200184600281111561048857fe5b60ff16815260200183600160a060020a0316600160a060020a03168152602001828103825285818151815260200191508051906020019060200280838360005b838110156104e05781810151838201526020016104c8565b505050509050019850505050505050505060405180910390f35b34801561050657600080fd5b5061021260048035600160a060020a0316906024803591604435918201910135610fd3565b34801561053757600080fd5b50610212600435611228565b34801561054f57600080fd5b5061016e611423565b610560611429565b005b600380548290811061057057fe5b600091825260209091200154600160a060020a0316905081565b600154600160a060020a031681565b60005481565b60075481565b6000806004838154811015156105b757fe5b600091825260209091206001600290920201015460048054600160a060020a0390921691859081106105e557fe5b90600052602060002090600202016000015491509150915091565b6005545b90565b60065490565b6000808080805b60035481101561065757600380543391908390811061062f57fe5b600091825260209091200154600160a060020a0316141561064f57600191505b600101610614565b811561084657600680548790811061066b57fe5b6000918252602090912060069091020193506001600585015460ff16600281111561069257fe5b1461069c57600080fd5b6001840154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b15801561070457600080fd5b505af1158015610718573d6000803e3d6000fd5b505050506040513d602081101561072e57600080fd5b5051600385015490935083101561074457600080fd5b600184015460028501546003860154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a039384166004820152602481019290925251919092169163a9059cbb91604480830192600092919082900301818387803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b5050505060058401805460ff19166002908117909155600185015460038601549186015460408051600160a060020a0393841681526020810194909452911682820152517fa7fc8c7085af5d5606138638e6ad8af12b57a4291c6de4431d4502b1a272eb1a916060908290030190a1600194505b50505050919050565b606060038054806020026020016040519081016040528092919081815260200182805480156108a757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610889575b5050505050905090565b60008060006060600060606000806005898154811015156108ce57fe5b6000918252602091829020600791909102018054600180830154600280850154600486015460068701546003880180546040805161010099831615999099026000190190911695909504601f81018b90048b0288018b019095528487529799509597600160a060020a03948516979296929560ff9092169460058b019493169286918301828280156109a15780601f10610976576101008083540402835291602001916109a1565b820191906000526020600020905b81548152906001019060200180831161098457829003601f168201915b50505050509350818054806020026020016040519081016040528092919081815260200182805480156109fd57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116109df575b50505050509150975097509750975097509750975050919395979092949650565b60008080805b600354811015610a67576003805433919083908110610a3f57fe5b600091825260209091200154600160a060020a03161415610a5f57600191505b600101610a24565b8115610c3c576006805490610a7f90600183016114f4565b925082600684815481101515610a9157fe5b90600052602060002090600602016000018190555086600684815481101515610ab657fe5b906000526020600020906006020160010160006101000a815481600160a060020a030219169083600160a060020a0316021790555085600684815481101515610afb57fe5b906000526020600020906006020160020160006101000a815481600160a060020a030219169083600160a060020a0316021790555084600684815481101515610b4057fe5b906000526020600020906006020160030181905550600683815481101515610b6457fe5b600091825260208083206004600693840290910101805460018101825590845292209091018054600160a060020a03191633179055600754815490919085908110610bab57fe5b9060005260206000209060060201600401805490501415610c04576001600684815481101515610bd757fe5b60009182526020909120600560069092020101805460ff19166001836002811115610bfe57fe5b02179055505b6040805184815290517f4a389442ca1de7e621ab11a315943f6bc7b7a4f6479de148c0847a1908f865619181900360200190a1600193505b5050509392505050565b60045490565b600080808080805b600354811015610c97576003805433919083908110610c6f57fe5b600091825260209091200154600160a060020a03161415610c8f57600191505b600101610c54565b8115610d94576005805488908110610cab57fe5b90600052602060002090600702019450600092505b600585015460ff84161015610d105760058501805433919060ff8616908110610ce557fe5b600091825260209091200154600160a060020a03161415610d0557600193505b600190920191610cc0565b8315610d1b57600080fd5b600585018054600181018255600082815260209020018054600160a060020a0319163317905560075490541415610d5c5760048501805460ff191660011790555b6040805188815290517f58078806f424288600d2b63f8bfb3ec73c0b6aa7c5770b9d6fcd06a4babba2aa9181900360200190a1600195505b5050505050919050565b600080808080805b600354811015610de9576003805433919083908110610dc157fe5b600091825260209091200154600160a060020a03161415610de157600191505b600101610da6565b8115610d94576006805488908110610dfd57fe5b90600052602060002090600602019450600092505b600485015460ff84161015610e625760048501805433919060ff8616908110610e3757fe5b600091825260209091200154600160a060020a03161415610e5757600193505b600190920191610e12565b8315610e6d57600080fd5b600485018054600181018255600082815260209020018054600160a060020a0319163317905560075490541415610eae5760058501805460ff191660011790555b6040805188815233602082015281517f8ba25eb404e6139826cfc7d6acec826e034f1614a55096bd99b35906ffedb776929181900390910190a15060019695505050505050565b60008060008060606000806000600689815481101515610f1157fe5b60009182526020918290206006909102018054600182015460028301546003840154600585015460048601805460408051828b0281018b019091528181529799509597600160a060020a0395861697948616969395919460ff841694610100909404909216928591830182828015610fb257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610f94575b50505050509250975097509750975097509750975050919395979092949650565b60008080805b60035481101561101c576003805433919083908110610ff457fe5b600091825260209091200154600160a060020a0316141561101457600191505b600101610fd9565b811561121d5760058054906110349060018301611525565b92508260058481548110151561104657fe5b6000918252602090912060079091020155600580548991908590811061106857fe5b906000526020600020906007020160010160006101000a815481600160a060020a030219169083600160a060020a03160217905550866005848154811015156110ad57fe5b90600052602060002090600702016002018190555085856005858154811015156110d357fe5b906000526020600020906007020160030191906110f1929190611551565b503360058481548110151561110257fe5b906000526020600020906007020160060160006101000a815481600160a060020a030219169083600160a060020a0316021790555060058381548110151561114657fe5b60009182526020808320600560079384029091018101805460018101825590855291909320018054600160a060020a031916331790555481549091908590811061118c57fe5b90600052602060002090600702016005018054905014156111e55760016005848154811015156111b857fe5b60009182526020909120600460079092020101805460ff191660018360028111156111df57fe5b02179055505b6040805184815290517f4a389442ca1de7e621ab11a315943f6bc7b7a4f6479de148c0847a1908f865619181900360200190a1600193505b505050949350505050565b6000808080606081805b60035481101561127557600380543391908390811061124d57fe5b600091825260209091200154600160a060020a0316141561126d57600191505b600101611232565b811561141857600580548990811061128957fe5b6000918252602090912060079091020195506001600487015460ff1660028111156112b057fe5b146112ba57600080fd5b600280870154905410156112cd57600080fd5b60018681015460028089015460038a01805460408051602061010098841615989098026000190190921694909404601f8101879004870282018701909452838152600160a060020a03909416995090975091928301828280156113715780601f1061134657610100808354040283529160200191611371565b820191906000526020600020905b81548152906001019060200180831161135457829003601f168201915b5050505050925084600160a060020a0316848460405180828051906020019080838360005b838110156113ae578181015183820152602001611396565b50505050905090810190601f1680156113db5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af19250505015156113f857fe5b60048601805460ff19166002908117909155808701548154039055600196505b505050505050919050565b60025481565b600034811061143757600080fd5b6002805434019055600480549061145190600183016115cf565b90503460048281548110151561146357fe5b6000918252602090912060029091020155600480543391908390811061148557fe5b906000526020600020906002020160010160006101000a815481600160a060020a030219169083600160a060020a031602179055507fa635392d394f3beba6cb05dcfce80ce5f108f8e519362413385588689e5a4ced346040518082815260200191505060405180910390a150565b8154818355818111156115205760060281600602836000526020600020918201910161152091906115fb565b505050565b81548183558181111561152057600702816007028360005260206000209182019101611520919061166b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106115925782800160ff198235161785556115bf565b828001600101855582156115bf579182015b828111156115bf5782358255916020019190600101906115a4565b506115cb9291506116d9565b5090565b8154818355818111156115205760020281600202836000526020600020918201910161152091906116f3565b61060491905b808211156115cb576000808255600182018054600160a060020a0319908116909155600283018054909116905560038201819055611642600483018261171f565b5060058101805474ffffffffffffffffffffffffffffffffffffffffff19169055600601611601565b61060491905b808211156115cb576000808255600182018054600160a060020a0319169055600282018190556116a46003830182611740565b60048201805460ff191690556116be60058301600061171f565b50600681018054600160a060020a0319169055600701611671565b61060491905b808211156115cb57600081556001016116df565b61060491905b808211156115cb5760008155600181018054600160a060020a03191690556002016116f9565b508054600082559060005260206000209081019061173d91906116d9565b50565b50805460018160011615610100020316600290046000825580601f10611766575061173d565b601f01602090049060005260206000209081019061173d91906116d95600a165627a7a7230582035000bec7c55d7ce0df9965d8ca60c247e1a4cb0e8bb1194fd289d19b40a526d0029000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000604d756c746973696700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000007e7b9da480facf936c5a328ab6cf4433edce38be00000000000000000000000075028bd555e54e8893a6b4800893d48cdd91e0bb


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

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 4d756c7469736967000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [4] : 0000000000000000000000007e7b9da480facf936c5a328ab6cf4433edce38be
Arg [5] : 00000000000000000000000075028bd555e54e8893a6b4800893d48cdd91e0bb


   Swarm Source:
bzzr://35000bec7c55d7ce0df9965d8ca60c247e1a4cb0e8bb1194fd289d19b40a526d
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward