ETH Price: $3,809.87 (+4.27%)

Contract

0x6E8cc2Bd8B19ABB4C72B103Ab87078A1aCcA194D
 

Overview

ETH Balance

0.006 ETH

Eth Value

$22.86 (@ $3,809.87/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute213680682024-12-09 22:55:472 days ago1733784947IN
0x6E8cc2Bd...1aCcA194D
0 ETH0.0048780241.51548337
Execute208941442024-10-04 19:06:2368 days ago1728068783IN
0x6E8cc2Bd...1aCcA194D
0 ETH0.0006995410
Execute208298222024-09-25 19:52:1177 days ago1727293931IN
0x6E8cc2Bd...1aCcA194D
0 ETH0.080911320.98218869
Execute208297272024-09-25 19:33:1177 days ago1727292791IN
0x6E8cc2Bd...1aCcA194D
0 ETH0.0027564329.99478635
Execute207907382024-09-20 8:54:4782 days ago1726822487IN
0x6E8cc2Bd...1aCcA194D
0 ETH0.0013864216.39513401
Transfer207904042024-09-20 7:47:4782 days ago1726818467IN
0x6E8cc2Bd...1aCcA194D
0.015 ETH0.0002613712.42261091

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
207907382024-09-20 8:54:4782 days ago1726822487
0x6E8cc2Bd...1aCcA194D
0.009 ETH
Loading...
Loading

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

Contract Name:
SimpleMultiSig

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-06-24
*/

pragma solidity ^0.4.24;

contract SimpleMultiSig {

// EIP712 Precomputed hashes:
// keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)")
bytes32 constant EIP712DOMAINTYPE_HASH = 0xd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac56472;

// keccak256("Simple MultiSig")
bytes32 constant NAME_HASH = 0xb7a0bfa1b79f2443f4d73ebb9259cddbcd510b18be6fc4da7d1aa7b1786e73e6;

// keccak256("1")
bytes32 constant VERSION_HASH = 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6;

// keccak256("MultiSigTransaction(address destination,uint256 value,bytes data,uint256 nonce,address executor,uint256 gasLimit)")
bytes32 constant TXTYPE_HASH = 0x3ee892349ae4bbe61dce18f95115b5dc02daf49204cc602458cd4c1f540d56d7;

bytes32 constant SALT = 0x251543af6a222378665a76fe38dbceae4871a070b7fdaf5c6c30cf758dc33cc0;

  uint public nonce;                 // (only) mutable state
  uint public threshold;             // immutable state
  mapping (address => bool) isOwner; // immutable state
  address[] public ownersArr;        // immutable state

  bytes32 DOMAIN_SEPARATOR;          // hash for EIP712, computed from contract address

  function owners() public view returns (address[]) {
    return ownersArr;
  }

  // Note that owners_ must be strictly increasing, in order to prevent duplicates
  function setOwners_(uint threshold_, address[] owners_) private {
    require(owners_.length <= 20 && threshold_ <= owners_.length && threshold_ > 0);

    // remove old owners from map
    for (uint i = 0; i < ownersArr.length; i++) {
      isOwner[ownersArr[i]] = false;
    }

    // add new owners to map
    address lastAdd = address(0);
    for (i = 0; i < owners_.length; i++) {
      require(owners_[i] > lastAdd);
      isOwner[owners_[i]] = true;
      lastAdd = owners_[i];
    }

    // set owners array and threshold
    ownersArr = owners_;
    threshold = threshold_;
  }

  constructor(uint threshold_, address[] owners_, uint chainId) public {
    setOwners_(threshold_, owners_);

    DOMAIN_SEPARATOR = keccak256(abi.encode(EIP712DOMAINTYPE_HASH,
                                            NAME_HASH,
                                            VERSION_HASH,
                                            chainId,
                                            this,
                                            SALT));
  }

  // Requires a quorum of owners to call from this contract using execute
  function setOwners(uint threshold_, address[] owners_) external {
    require(msg.sender == address(this));
    setOwners_(threshold_, owners_);
  }

  // Note that address recovered from signatures must be strictly increasing, in order to prevent duplicates
  function execute(uint8[] sigV, bytes32[] sigR, bytes32[] sigS, address destination, uint value, bytes data, address executor, uint gasLimit) public {
    require(sigR.length == threshold);
    require(sigR.length == sigS.length && sigR.length == sigV.length);
    require(executor == msg.sender || executor == address(0));

    // EIP712 scheme: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md
    bytes32 txInputHash = keccak256(abi.encode(TXTYPE_HASH, destination, value, keccak256(data), nonce, executor, gasLimit));
    bytes32 totalHash = keccak256(abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR, txInputHash));

    address lastAdd = address(0); // cannot have address(0) as an owner
    for (uint i = 0; i < threshold; i++) {
      address recovered = ecrecover(totalHash, sigV[i], sigR[i], sigS[i]);
      require(recovered > lastAdd && isOwner[recovered]);
      lastAdd = recovered;
    }

    // If we make it here all signatures are accounted for.
    // The address.call() syntax is no longer recommended, see:
    // https://github.com/ethereum/solidity/issues/2884
    nonce = nonce + 1;
    bool success = false;
    assembly { success := call(gasLimit, destination, value, add(data, 0x20), mload(data), 0, 0) }
    require(success);
  }

  function () payable external {}
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"threshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sigV","type":"uint8[]"},{"name":"sigR","type":"bytes32[]"},{"name":"sigS","type":"bytes32[]"},{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"executor","type":"address"},{"name":"gasLimit","type":"uint256"}],"name":"execute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"ownersArr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owners","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"threshold_","type":"uint256"},{"name":"owners_","type":"address[]"}],"name":"setOwners","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"threshold_","type":"uint256"},{"name":"owners_","type":"address[]"},{"name":"chainId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

Deployed Bytecode

0x6080604052600436106100775763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166342cde4e88114610079578063a0ab9653146100a0578063aa5df9e2146101cc578063affe39c114610200578063affed0e014610265578063f3182e851461027a575b005b34801561008557600080fd5b5061008e61029e565b60408051918252519081900360200190f35b3480156100ac57600080fd5b506040805160206004803580820135838102808601850190965280855261007795369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050508335600160a060020a03169450505060209091013590506102a4565b3480156101d857600080fd5b506101e4600435610627565b60408051600160a060020a039092168252519081900360200190f35b34801561020c57600080fd5b5061021561064f565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610251578181015183820152602001610239565b505050509050019250505060405180910390f35b34801561027157600080fd5b5061008e6106b2565b34801561028657600080fd5b506100776004803590602480359081019101356106b8565b60015481565b6000806000806000806001548d511415156102be57600080fd5b8b518d511480156102d057508d518d51145b15156102db57600080fd5b600160a060020a0388163314806102f95750600160a060020a038816155b151561030457600080fd5b7f3ee892349ae4bbe61dce18f95115b5dc02daf49204cc602458cd4c1f540d56d76001028b8b8b6040518082805190602001908083835b6020831061035a5780518252601f19909201916020918201910161033b565b518151600019602094850361010090810a9190910191821691199290921617909152604080519590930185900385206000548684019b909b52600160a060020a03998a16868501526060860198909852608085019790975260a0840198909852958f1660c08301525060e08082018e9052855180830390910181529301938490525050805190928291908401908083835b6020831061040a5780518252601f1990920191602091820191016103eb565b51815160209384036101000a6000190180199092169116179052604080519290940182900382206004547f19010000000000000000000000000000000000000000000000000000000000008484015260228401526042808401829052855180850390910181526062909301948590528251909c509195509293508392850191508083835b602083106104ad5780518252601f19909201916020918201910161048e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020945060009350600092505b6001548310156105f1576001858f8581518110151561050057fe5b906020019060200201518f8681518110151561051857fe5b906020019060200201518f8781518110151561053057fe5b60209081029091018101516040805160008082528185018084529790975260ff9095168582015260608501939093526080840152905160a0808401949293601f19830193908390039091019190865af1158015610591573d6000803e3d6000fd5b50505060206040510351915083600160a060020a031682600160a060020a03161180156105d65750600160a060020a03821660009081526002602052604090205460ff165b15156105e157600080fd5b81935082806001019350506104e5565b5060008054600101815588518190819060208c018d8f8cf1905080151561061757600080fd5b5050505050505050505050505050565b600380548290811061063557fe5b600091825260209091200154600160a060020a0316905081565b606060038054806020026020016040519081016040528092919081815260200182805480156106a757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610689575b505050505090505b90565b60005481565b3330146106c457600080fd5b6106fb8383838080602002602001604051908101604052809392919081815260200183836020028082843750610700945050505050565b505050565b6000806014835111158015610716575082518411155b80156107225750600084115b151561072d57600080fd5b600091505b6003548210156107915760006002600060038581548110151561075157fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff191691151591909117905560019190910190610732565b5060009050805b82518210156108415780600160a060020a031683838151811015156107b957fe5b60209081029091010151600160a060020a0316116107d657600080fd5b60016002600085858151811015156107ea57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055825183908390811061082a57fe5b602090810290910101516001909201919050610798565b8251610854906003906020860190610860565b50505060019190915550565b8280548282559060005260206000209081019282156108c2579160200282015b828111156108c2578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909116178255602090920191600190910190610880565b506108ce9291506108d2565b5090565b6106af91905b808211156108ce57805473ffffffffffffffffffffffffffffffffffffffff191681556001016108d85600a165627a7a72305820b64a6b48b8cf5ba778e8633b37621b5c5635bf66a15ba6263d89da684b3105a20029

Deployed Bytecode Sourcemap

28:4108:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;960:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;960:21:0;;;;;;;;;;;;;;;;;;;;2808:1288;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2808:1288:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2808:1288:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2808:1288:0;;;;-1:-1:-1;2808:1288:0;-1:-1:-1;2808:1288:0;;-1:-1:-1;2808:1288:0;;;;;;;;;-1:-1:-1;;2808:1288:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2808:1288:0;;;;-1:-1:-1;2808:1288:0;-1:-1:-1;2808:1288:0;;-1:-1:-1;2808:1288:0;;;;;;;;;-1:-1:-1;;2808:1288:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2808:1288:0;;;;;;;;;;;-1:-1:-1;2808:1288:0;;;;;-1:-1:-1;2808:1288:0;;-1:-1:-1;2808:1288:0;;;;-1:-1:-1;2808:1288:0;;;;;;;;;;-1:-1:-1;2808:1288:0;;-1:-1:-1;;;2808:1288:0;;-1:-1:-1;;;;;2808:1288:0;;-1:-1:-1;;;2808:1288:0;;;;;;-1:-1:-1;2808:1288:0;;1074:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1074:26:0;;;;;;;;;-1:-1:-1;;;;;1074:26:0;;;;;;;;;;;;;;1224:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1224:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1224:79:0;;;;;;;;;;;;;;;;;898:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:17:0;;;;2541:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2541:151:0;;;;;;;;;;;;;;;;960:21;;;;:::o;2808:1288::-;3225:19;3352:17;3451:15;3529:6;3570:17;3947:12;2986:9;;2971:4;:11;:24;2963:33;;;;;;;;3026:4;:11;3011:4;:11;:26;:56;;;;;3056:4;:11;3041:4;:11;:26;3011:56;3003:65;;;;;;;;-1:-1:-1;;;;;3083:22:0;;3095:10;3083:22;;:48;;-1:-1:-1;;;;;;3109:22:0;;;3083:48;3075:57;;;;;;;;730:66;3268:11;;3281;3294:5;3311:4;3301:15;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;;;340:21;;;311:9;;295:26;;;;377:20;365:33;;;3301:15:0;;;;;;;;;;;;-1:-1:-1;3318:5:0;3257:87;;;;;;;-1:-1:-1;;;;;3257:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3257:87:0;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3257:87:0;;;;;;-1:-1:-1;;3247:98:0;;3257:87;;;;3247:98;;;;;3257:87;3247:98;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;3247:98:0;;;;;;;;;;;;3411:16;;3382:59;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3382:59:0;;;;;;;;3372:70;;3247:98;;-1:-1:-1;3382:59:0;;-1:-1:-1;3382:59:0;;-1:-1:-1;3382:59:0;;3372:70;;;-1:-1:-1;3372:70:0;3382:59;3372:70;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3372:70:0;;;;;;;;;;;;;;;;3352:90;;3477:1;3451:28;;3538:1;3529:10;;3524:208;3545:9;;3541:1;:13;3524:208;;;3590:47;3600:9;3611:4;3616:1;3611:7;;;;;;;;;;;;;;;;;;3620:4;3625:1;3620:7;;;;;;;;;;;;;;;;;;3629:4;3634:1;3629:7;;;;;;;;;;;;;;;;;;;;3590:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3629:7;;-1:-1:-1;;3590:47:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3590:47:0;;;;;;;;3570:67;;3666:7;-1:-1:-1;;;;;3654:19:0;:9;-1:-1:-1;;;;;3654:19:0;;:41;;;;-1:-1:-1;;;;;;3677:18:0;;;;;;:7;:18;;;;;;;;3654:41;3646:50;;;;;;;;3715:9;3705:19;;3556:3;;;;;;;3524:208;;;-1:-1:-1;3931:5:0;;;3939:1;3931:9;3923:17;;4048:11;;3931:5;;;;4041:4;4031:15;;4024:5;4011:11;4001:8;3996:70;3985:81;;4082:7;4074:16;;;;;;;;2808:1288;;;;;;;;;;;;;;:::o;1074:26::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1074:26:0;;-1:-1:-1;1074:26:0;:::o;1224:79::-;1263:9;1288;1281:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1281:16:0;;;;;;;;;;;;;;;;;;;;;;;1224:79;;:::o;898:17::-;;;;:::o;2541:151::-;2620:10;2642:4;2620:27;2612:36;;;;;;2655:31;2666:10;2678:7;;2655:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2655:10:0;;-1:-1:-1;;;;;2655:31:0:i;:::-;2541:151;;;:::o;1393:605::-;1592:6;1715:15;1490:2;1472:7;:14;:20;;:52;;;;;1510:7;:14;1496:10;:28;;1472:52;:70;;;;;1541:1;1528:10;:14;1472:70;1464:79;;;;;;;;1601:1;1592:10;;1587:90;1608:9;:16;1604:20;;1587:90;;;1664:5;1640:7;:21;1648:9;1658:1;1648:12;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1648:12:0;1640:21;;;;;;;;;;;;:29;;-1:-1:-1;;1640:29:0;;;;;;;;;;-1:-1:-1;1626:3:0;;;;;1587:90;;;-1:-1:-1;1741:1:0;;-1:-1:-1;1741:1:0;1750:147;1766:7;:14;1762:1;:18;1750:147;;;1817:7;-1:-1:-1;;;;;1804:20:0;:7;1812:1;1804:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1804:20:0;;1796:29;;;;;;1856:4;1834:7;:19;1842:7;1850:1;1842:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1834:19:0;;;;;;;;;;;-1:-1:-1;1834:19:0;:26;;-1:-1:-1;;1834:26:0;;;;;;;;;;1879:10;;;;1887:1;;1879:10;;;;;;;;;;;;;;;1782:3;;;;;1879:10;-1:-1:-1;1750:147:0;;;1944:19;;;;:9;;:19;;;;;:::i;:::-;-1:-1:-1;;;1970:9:0;:22;;;;-1:-1:-1;1393:605:0:o;28:4108::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28:4108:0;-1:-1:-1;;;;;28:4108:0;;;;;;;;;;;-1:-1:-1;28:4108:0;;;;;;;-1:-1:-1;28:4108:0;;;-1:-1:-1;28:4108:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;28:4108:0;;;;;;

Swarm Source

bzzr://b64a6b48b8cf5ba778e8633b37621b5c5635bf66a15ba6263d89da684b3105a2

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  ]
[ 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.