Latest 25 from a total of 5,534 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| New Account | 10986974 | 1984 days ago | IN | 0 ETH | 0.01122108 | ||||
| New Account | 10749098 | 2021 days ago | IN | 0 ETH | 0.01648097 | ||||
| New Account | 10743420 | 2022 days ago | IN | 0 ETH | 0.03997512 | ||||
| New Account | 10738343 | 2023 days ago | IN | 0 ETH | 0.02875403 | ||||
| New Account | 10737631 | 2023 days ago | IN | 0 ETH | 0.04628698 | ||||
| New Account | 10735799 | 2023 days ago | IN | 0 ETH | 0.02618046 | ||||
| New Account | 10735799 | 2023 days ago | IN | 0 ETH | 0.02735046 | ||||
| New Account | 10735738 | 2023 days ago | IN | 0 ETH | 0.02735046 | ||||
| New Account | 10733971 | 2023 days ago | IN | 0 ETH | 0.02483876 | ||||
| New Account | 10733970 | 2023 days ago | IN | 0 ETH | 0.02594876 | ||||
| New Account | 10733026 | 2024 days ago | IN | 0 ETH | 0.02103882 | ||||
| New Account | 10727930 | 2024 days ago | IN | 0 ETH | 0.03962446 | ||||
| New Account | 10727138 | 2024 days ago | IN | 0 ETH | 0.00825244 | ||||
| New Account | 10726359 | 2025 days ago | IN | 0 ETH | 0.02209076 | ||||
| New Account | 10722269 | 2025 days ago | IN | 0 ETH | 0.02875403 | ||||
| New Account | 10722231 | 2025 days ago | IN | 0 ETH | 0.00418622 | ||||
| New Account | 10718847 | 2026 days ago | IN | 0 ETH | 0.02138946 | ||||
| New Account | 10717943 | 2026 days ago | IN | 0 ETH | 0.002392 | ||||
| New Account | 10717864 | 2026 days ago | IN | 0 ETH | 0.03401392 | ||||
| New Account | 10716988 | 2026 days ago | IN | 0 ETH | 0.03155931 | ||||
| Transfer | 10716987 | 2026 days ago | IN | 0.01 ETH | 0.00189 | ||||
| New Account | 10714216 | 2026 days ago | IN | 0 ETH | 0.02454613 | ||||
| New Account | 10710256 | 2027 days ago | IN | 0 ETH | 0.03020931 | ||||
| New Account | 10710250 | 2027 days ago | IN | 0 ETH | 0.03155931 | ||||
| New Account | 10698996 | 2029 days ago | IN | 0 ETH | 0.03226062 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
AccountFactoryV2
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-04-17
*/
pragma solidity 0.4.24;
contract Utils {
modifier addressValid(address _address) {
require(_address != address(0), "Utils::_ INVALID_ADDRESS");
_;
}
}
contract DSMath {
function add(uint x, uint y) internal pure returns (uint z) {
require((z = x + y) >= x);
}
function sub(uint x, uint y) internal pure returns (uint z) {
require((z = x - y) <= x);
}
function mul(uint x, uint y) internal pure returns (uint z) {
require(y == 0 || (z = x * y) / y == x);
}
// custom : not in original DSMath, putting it here for consistency, copied from SafeMath
function div(uint x, uint y) internal pure returns (uint z) {
z = x / y;
}
function min(uint x, uint y) internal pure returns (uint z) {
return x <= y ? x : y;
}
function max(uint x, uint y) internal pure returns (uint z) {
return x >= y ? x : y;
}
function imin(int x, int y) internal pure returns (int z) {
return x <= y ? x : y;
}
function imax(int x, int y) internal pure returns (int z) {
return x >= y ? x : y;
}
uint constant WAD = 10 ** 18;
uint constant RAY = 10 ** 27;
function wmul(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, y), WAD / 2) / WAD;
}
function rmul(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, y), RAY / 2) / RAY;
}
function wdiv(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, WAD), y / 2) / y;
}
function rdiv(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, RAY), y / 2) / y;
}
// This famous algorithm is called "exponentiation by squaring"
// and calculates x^n with x as fixed-point and n as regular unsigned.
//
// It's O(log n), instead of O(n) for naive repeated multiplication.
//
// These facts are why it works:
//
// If n is even, then x^n = (x^2)^(n/2).
// If n is odd, then x^n = x * x^(n-1),
// and applying the equation for even x gives
// x^n = x * (x^2)^((n-1) / 2).
//
// Also, EVM division is flooring and
// floor[(n-1) / 2] = floor[n / 2].
//
function rpow(uint x, uint n) internal pure returns (uint z) {
z = n % 2 != 0 ? x : RAY;
for (n /= 2; n != 0; n /= 2) {
x = rmul(x, x);
if (n % 2 != 0) {
z = rmul(z, x);
}
}
}
}
contract SelfAuthorized {
modifier authorized() {
require(msg.sender == address(this), "Method can only be called from this contract");
_;
}
}
contract Proxy {
// masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.
address masterCopy;
/// @dev Constructor function sets address of master copy contract.
/// @param _masterCopy Master copy address.
constructor(address _masterCopy)
public
{
require(_masterCopy != 0, "Invalid master copy address provided");
masterCopy = _masterCopy;
}
/// @dev Fallback function forwards all transactions and returns all received return data.
function ()
external
payable
{
// solium-disable-next-line security/no-inline-assembly
assembly {
let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)
calldatacopy(0, 0, calldatasize())
let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
if eq(success, 0) { revert(0, returndatasize()) }
return(0, returndatasize())
}
}
function implementation()
public
view
returns (address)
{
return masterCopy;
}
function proxyType()
public
pure
returns (uint256)
{
return 2;
}
}
contract WETH9 {
string public name = "Wrapped Ether";
string public symbol = "WETH";
uint8 public decimals = 18;
event Approval(address indexed _owner, address indexed _spender, uint _value);
event Transfer(address indexed _from, address indexed _to, uint _value);
event Deposit(address indexed _owner, uint _value);
event Withdrawal(address indexed _owner, uint _value);
mapping (address => uint) public balanceOf;
mapping (address => mapping (address => uint)) public allowance;
function() public payable {
deposit();
}
function deposit() public payable {
balanceOf[msg.sender] += msg.value;
Deposit(msg.sender, msg.value);
}
function withdraw(uint wad) public {
require(balanceOf[msg.sender] >= wad);
balanceOf[msg.sender] -= wad;
msg.sender.transfer(wad);
Withdrawal(msg.sender, wad);
}
function totalSupply() public view returns (uint) {
return this.balance;
}
function approve(address guy, uint wad) public returns (bool) {
allowance[msg.sender][guy] = wad;
Approval(msg.sender, guy, wad);
return true;
}
function transfer(address dst, uint wad) public returns (bool) {
return transferFrom(msg.sender, dst, wad);
}
function transferFrom(address src, address dst, uint wad)
public
returns (bool)
{
require(balanceOf[src] >= wad);
if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) {
require(allowance[src][msg.sender] >= wad);
allowance[src][msg.sender] -= wad;
}
balanceOf[src] -= wad;
balanceOf[dst] += wad;
Transfer(src, dst, wad);
return true;
}
}
contract DSNote {
event LogNote(
bytes4 indexed sig,
address indexed guy,
bytes32 indexed foo,
bytes32 indexed bar,
uint wad,
bytes fax
) anonymous;
modifier note {
bytes32 foo;
bytes32 bar;
assembly {
foo := calldataload(4)
bar := calldataload(36)
}
emit LogNote(msg.sig, msg.sender, foo, bar, msg.value, msg.data);
_;
}
}
interface ERC20 {
function name() public view returns(string);
function symbol() public view returns(string);
function decimals() public view returns(uint8);
function totalSupply() public view returns (uint);
function balanceOf(address tokenOwner) public view returns (uint balance);
function allowance(address tokenOwner, address spender) public view returns (uint remaining);
function transfer(address to, uint tokens) public returns (bool success);
function approve(address spender, uint tokens) public returns (bool success);
function transferFrom(address from, address to, uint tokens) public returns (bool success);
event Transfer(address indexed from, address indexed to, uint tokens);
event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}
contract DSAuthority {
function canCall(address src, address dst, bytes4 sig) public view returns (bool);
}
contract DSAuthEvents {
event LogSetAuthority (address indexed authority);
event LogSetOwner (address indexed owner);
}
contract DSAuth is DSAuthEvents {
DSAuthority public authority;
address public owner;
constructor() public {
owner = msg.sender;
emit LogSetOwner(msg.sender);
}
function setOwner(address owner_)
public
auth
{
owner = owner_;
emit LogSetOwner(owner);
}
function setAuthority(DSAuthority authority_)
public
auth
{
authority = authority_;
emit LogSetAuthority(authority);
}
modifier auth {
require(isAuthorized(msg.sender, msg.sig), "DSAuth::_ SENDER_NOT_AUTHORIZED");
_;
}
function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
if (src == address(this)) {
return true;
} else if (src == owner) {
return true;
} else if (authority == DSAuthority(0)) {
return false;
} else {
return authority.canCall(src, this, sig);
}
}
}
contract ErrorUtils {
event LogError(string methodSig, string errMsg);
event LogErrorWithHintBytes32(bytes32 indexed bytes32Value, string methodSig, string errMsg);
event LogErrorWithHintAddress(address indexed addressValue, string methodSig, string errMsg);
}
contract MasterCopy is SelfAuthorized {
// masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.
// It should also always be ensured that the address is stored alone (uses a full word)
address masterCopy;
/// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.
/// @param _masterCopy New contract address.
function changeMasterCopy(address _masterCopy)
public
authorized
{
// Master copy address cannot be null.
require(_masterCopy != 0, "Invalid master copy address provided");
masterCopy = _masterCopy;
}
}
library ECRecovery {
function recover(bytes32 _hash, bytes _sig)
internal
pure
returns (address)
{
bytes32 r;
bytes32 s;
uint8 v;
if (_sig.length != 65) {
return (address(0));
}
assembly {
r := mload(add(_sig, 32))
s := mload(add(_sig, 64))
v := byte(0, mload(add(_sig, 96)))
}
if (v < 27) {
v += 27;
}
if (v != 27 && v != 28) {
return (address(0));
} else {
return ecrecover(_hash, v, r, s);
}
}
function toEthSignedMessageHash(bytes32 _hash)
internal
pure
returns (bytes32)
{
return keccak256(
abi.encodePacked("\x19Ethereum Signed Message:\n32", _hash)
);
}
}
contract Utils2 {
using ECRecovery for bytes32;
function _recoverSigner(bytes32 _hash, bytes _signature)
internal
pure
returns(address _signer)
{
return _hash.toEthSignedMessageHash().recover(_signature);
}
}
contract Config is DSNote, DSAuth, Utils {
WETH9 public weth9;
mapping (address => bool) public isAccountHandler;
mapping (address => bool) public isAdmin;
address[] public admins;
bool public disableAdminControl = false;
event LogAdminAdded(address indexed _admin, address _by);
event LogAdminRemoved(address indexed _admin, address _by);
constructor() public {
admins.push(msg.sender);
isAdmin[msg.sender] = true;
}
modifier onlyAdmin(){
require(isAdmin[msg.sender], "Config::_ SENDER_NOT_AUTHORIZED");
_;
}
function setWETH9
(
address _weth9
)
public
auth
note
addressValid(_weth9)
{
weth9 = WETH9(_weth9);
}
function setAccountHandler
(
address _accountHandler,
bool _isAccountHandler
)
public
auth
note
addressValid(_accountHandler)
{
isAccountHandler[_accountHandler] = _isAccountHandler;
}
function toggleAdminsControl()
public
auth
note
{
disableAdminControl = !disableAdminControl;
}
function isAdminValid(address _admin)
public
view
returns (bool)
{
if(disableAdminControl) {
return true;
} else {
return isAdmin[_admin];
}
}
function getAllAdmins()
public
view
returns(address[])
{
return admins;
}
function addAdmin
(
address _admin
)
external
note
onlyAdmin
addressValid(_admin)
{
require(!isAdmin[_admin], "Config::addAdmin ADMIN_ALREADY_EXISTS");
admins.push(_admin);
isAdmin[_admin] = true;
emit LogAdminAdded(_admin, msg.sender);
}
function removeAdmin
(
address _admin
)
external
note
onlyAdmin
addressValid(_admin)
{
require(isAdmin[_admin], "Config::removeAdmin ADMIN_DOES_NOT_EXIST");
require(msg.sender != _admin, "Config::removeAdmin ADMIN_NOT_AUTHORIZED");
isAdmin[_admin] = false;
for (uint i = 0; i < admins.length - 1; i++) {
if (admins[i] == _admin) {
admins[i] = admins[admins.length - 1];
admins.length -= 1;
break;
}
}
emit LogAdminRemoved(_admin, msg.sender);
}
}
contract DSThing is DSNote, DSAuth, DSMath {
function S(string s) internal pure returns (bytes4) {
return bytes4(keccak256(s));
}
}
contract DSStop is DSNote, DSAuth {
bool public stopped = false;
modifier whenNotStopped {
require(!stopped, "DSStop::_ FEATURE_STOPPED");
_;
}
modifier whenStopped {
require(stopped, "DSStop::_ FEATURE_NOT_STOPPED");
_;
}
function stop() public auth note {
stopped = true;
}
function start() public auth note {
stopped = false;
}
}
contract Account is MasterCopy, DSNote, Utils, Utils2, ErrorUtils {
address[] public users;
mapping (address => bool) public isUser;
mapping (bytes32 => bool) public actionCompleted;
WETH9 public weth9;
Config public config;
bool public isInitialized = false;
event LogTransferBySystem(address indexed token, address indexed to, uint value, address by);
event LogTransferByUser(address indexed token, address indexed to, uint value, address by);
event LogUserAdded(address indexed user, address by);
event LogUserRemoved(address indexed user, address by);
event LogImplChanged(address indexed newImpl, address indexed oldImpl);
modifier initialized() {
require(isInitialized, "Account::_ ACCOUNT_NOT_INITIALIZED");
_;
}
modifier notInitialized() {
require(!isInitialized, "Account::_ ACCOUNT_ALREADY_INITIALIZED");
_;
}
modifier userExists(address _user) {
require(isUser[_user], "Account::_ INVALID_USER");
_;
}
modifier userDoesNotExist(address _user) {
require(!isUser[_user], "Account::_ USER_DOES_NOT_EXISTS");
_;
}
modifier onlyAdmin() {
require(config.isAdminValid(msg.sender), "Account::_ INVALID_ADMIN_ACCOUNT");
_;
}
modifier onlyHandler(){
require(config.isAccountHandler(msg.sender), "Account::_ INVALID_ACC_HANDLER");
_;
}
function init(address _user, address _config)
public
notInitialized
{
users.push(_user);
isUser[_user] = true;
config = Config(_config);
weth9 = config.weth9();
isInitialized = true;
}
function getAllUsers() public view returns (address[]) {
return users;
}
function balanceFor(address _token) public view returns (uint _balance){
_balance = ERC20(_token).balanceOf(this);
}
function transferBySystem
(
address _token,
address _to,
uint _value
)
external
onlyHandler
note
initialized
{
require(ERC20(_token).balanceOf(this) >= _value, "Account::transferBySystem INSUFFICIENT_BALANCE_IN_ACCOUNT");
ERC20(_token).transfer(_to, _value);
emit LogTransferBySystem(_token, _to, _value, msg.sender);
}
function transferByUser
(
address _token,
address _to,
uint _value,
uint _salt,
bytes _signature
)
external
addressValid(_to)
note
initialized
onlyAdmin
{
bytes32 actionHash = _getTransferActionHash(_token, _to, _value, _salt);
if(actionCompleted[actionHash]) {
emit LogError("Account::transferByUser", "ACTION_ALREADY_PERFORMED");
return;
}
if(ERC20(_token).balanceOf(this) < _value){
emit LogError("Account::transferByUser", "INSUFFICIENT_BALANCE_IN_ACCOUNT");
return;
}
address signer = _recoverSigner(actionHash, _signature);
if(!isUser[signer]) {
emit LogError("Account::transferByUser", "SIGNER_NOT_AUTHORIZED_WITH_ACCOUNT");
return;
}
actionCompleted[actionHash] = true;
if (_token == address(weth9)) {
weth9.withdraw(_value);
_to.transfer(_value);
} else {
require(ERC20(_token).transfer(_to, _value), "Account::transferByUser TOKEN_TRANSFER_FAILED");
}
emit LogTransferByUser(_token, _to, _value, signer);
}
function addUser
(
address _user,
uint _salt,
bytes _signature
)
external
note
addressValid(_user)
userDoesNotExist(_user)
initialized
onlyAdmin
{
bytes32 actionHash = _getUserActionHash(_user, "ADD_USER", _salt);
if(actionCompleted[actionHash])
{
emit LogError("Account::addUser", "ACTION_ALREADY_PERFORMED");
return;
}
address signer = _recoverSigner(actionHash, _signature);
if(!isUser[signer]) {
emit LogError("Account::addUser", "SIGNER_NOT_AUTHORIZED_WITH_ACCOUNT");
return;
}
actionCompleted[actionHash] = true;
users.push(_user);
isUser[_user] = true;
emit LogUserAdded(_user, signer);
}
function removeUser
(
address _user,
uint _salt,
bytes _signature
)
external
note
userExists(_user)
initialized
onlyAdmin
{
bytes32 actionHash = _getUserActionHash(_user, "REMOVE_USER", _salt);
if(actionCompleted[actionHash]) {
emit LogError("Account::removeUser", "ACTION_ALREADY_PERFORMED");
return;
}
address signer = _recoverSigner(actionHash, _signature);
if(users.length == 1){
emit LogError("Account::removeUser", "ACC_SHOULD_HAVE_ATLEAST_ONE_USER");
return;
}
if(!isUser[signer]){
emit LogError("Account::removeUser", "SIGNER_NOT_AUTHORIZED_WITH_ACCOUNT");
return;
}
actionCompleted[actionHash] = true;
// should delete value from isUser map? delete isUser[_user]?
isUser[_user] = false;
for (uint i = 0; i < users.length - 1; i++) {
if (users[i] == _user) {
users[i] = users[users.length - 1];
users.length -= 1;
break;
}
}
emit LogUserRemoved(_user, signer);
}
function _getTransferActionHash
(
address _token,
address _to,
uint _value,
uint _salt
)
internal
view
returns (bytes32)
{
return keccak256(
abi.encodePacked(
address(this),
_token,
_to,
_value,
_salt
)
);
}
function _getUserActionHash
(
address _user,
string _action,
uint _salt
)
internal
view
returns (bytes32)
{
return keccak256(
abi.encodePacked(
address(this),
_user,
_action,
_salt
)
);
}
// to directly send ether to contract
function() external payable {
require(msg.data.length == 0 && msg.value > 0, "Account::fallback INVALID_ETHER_TRANSFER");
if(msg.sender != address(weth9)){
weth9.deposit.value(msg.value)();
}
}
function changeImpl
(
address _to,
uint _salt,
bytes _signature
)
external
note
addressValid(_to)
initialized
onlyAdmin
{
bytes32 actionHash = _getUserActionHash(_to, "CHANGE_ACCOUNT_IMPLEMENTATION", _salt);
if(actionCompleted[actionHash])
{
emit LogError("Account::changeImpl", "ACTION_ALREADY_PERFORMED");
return;
}
address signer = _recoverSigner(actionHash, _signature);
if(!isUser[signer]) {
emit LogError("Account::changeImpl", "SIGNER_NOT_AUTHORIZED_WITH_ACCOUNT");
return;
}
actionCompleted[actionHash] = true;
address oldImpl = masterCopy;
this.changeMasterCopy(_to);
emit LogImplChanged(_to, oldImpl);
}
}
contract AccountFactory is DSStop, Utils {
Config public config;
mapping (address => bool) public isAccount;
mapping (address => address[]) public userToAccounts;
address[] public accounts;
address public accountMaster;
constructor
(
Config _config,
address _accountMaster
)
public
{
config = _config;
accountMaster = _accountMaster;
}
event LogAccountCreated(address indexed user, address indexed account, address by);
modifier onlyAdmin() {
require(config.isAdminValid(msg.sender), "AccountFactory::_ INVALID_ADMIN_ACCOUNT");
_;
}
function setConfig(Config _config) external note auth addressValid(_config) {
config = _config;
}
function setAccountMaster(address _accountMaster) external note auth addressValid(_accountMaster) {
accountMaster = _accountMaster;
}
function newAccount(address _user)
public
note
onlyAdmin
addressValid(config)
addressValid(accountMaster)
whenNotStopped
returns
(
Account _account
)
{
address proxy = new Proxy(accountMaster);
_account = Account(proxy);
_account.init(_user, config);
accounts.push(_account);
userToAccounts[_user].push(_account);
isAccount[_account] = true;
emit LogAccountCreated(_user, _account, msg.sender);
}
function batchNewAccount(address[] _users) public note onlyAdmin {
for (uint i = 0; i < _users.length; i++) {
newAccount(_users[i]);
}
}
function getAllAccounts() public view returns (address[]) {
return accounts;
}
function getAccountsForUser(address _user) public view returns (address[]) {
return userToAccounts[_user];
}
}
contract AccountFactoryV2 is DSStop, Utils {
Config public config;
mapping (address => bool) public isAccountValid;
mapping (address => address[]) public userToAccounts;
address[] public accounts;
address public accountMaster;
AccountFactory accountFactoryV1;
constructor
(
Config _config,
address _accountMaster,
AccountFactory _accountFactoryV1
)
public
{
config = _config;
accountMaster = _accountMaster;
accountFactoryV1 = _accountFactoryV1;
}
event LogAccountCreated(address indexed user, address indexed account, address by);
modifier onlyAdmin() {
require(config.isAdminValid(msg.sender), "AccountFactory::_ INVALID_ADMIN_ACCOUNT");
_;
}
function setConfig(Config _config) external note auth addressValid(_config) {
config = _config;
}
function setAccountMaster(address _accountMaster) external note auth addressValid(_accountMaster) {
accountMaster = _accountMaster;
}
function setAccountFactoryV1(AccountFactory _accountFactoryV1) external note auth addressValid(_accountFactoryV1) {
accountFactoryV1 = _accountFactoryV1;
}
function newAccount(address _user)
public
note
addressValid(config)
addressValid(accountMaster)
whenNotStopped
returns
(
Account _account
)
{
address proxy = new Proxy(accountMaster);
_account = Account(proxy);
_account.init(_user, config);
accounts.push(_account);
userToAccounts[_user].push(_account);
isAccountValid[_account] = true;
emit LogAccountCreated(_user, _account, msg.sender);
}
function batchNewAccount(address[] _users) external note onlyAdmin {
for (uint i = 0; i < _users.length; i++) {
newAccount(_users[i]);
}
}
function getAllAccounts() public view returns (address[]) {
uint accLengthV2 = accounts.length; // 1
uint accLengthV1 = accountFactoryV1.getAllAccounts().length; // 1
uint accLength = accLengthV2 + accLengthV1; // 2
address[] memory accs = new address[](accLength);
for(uint i = 0; i < accLength; i++){
if(i < accLengthV2) {
accs[i] = accounts[i];
} else {
accs[i] = accountFactoryV1.accounts(i - accLengthV2);
}
}
return accs;
}
function getAccountsForUser(address _user) public view returns (address[]) {
uint userToAccLengthV2 = userToAccounts[_user].length;
uint userToAccLengthV1 = accountFactoryV1.getAccountsForUser(_user).length;
uint userToAccLength = userToAccLengthV2 + userToAccLengthV1;
address[] memory userToAcc = new address[](userToAccLength);
for(uint i = 0; i < userToAccLength; i++){
if(i < userToAccLengthV2) {
userToAcc[i] = userToAccounts[_user][i];
} else {
userToAcc[i] = accountFactoryV1.userToAccounts(_user, i - userToAccLengthV2);
}
}
return userToAcc;
}
function isAccount(address _account) public view returns (bool) {
return isAccountValid[_account] || accountFactoryV1.isAccount(_account);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"newAccount","outputs":[{"name":"_account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAllAccounts","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"userToAccounts","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"getAccountsForUser","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_config","type":"address"}],"name":"setConfig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"isAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_accountMaster","type":"address"}],"name":"setAccountMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isAccountValid","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"config","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_users","type":"address[]"}],"name":"batchNewAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_accountFactoryV1","type":"address"}],"name":"setAccountFactoryV1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"accountMaster","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"accounts","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_config","type":"address"},{"name":"_accountMaster","type":"address"},{"name":"_accountFactoryV1","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"by","type":"address"}],"name":"LogAccountCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","type":"event"}]Contract Creation Code
60806040526001805460a060020a60ff021916905534801561002057600080fd5b50604051606080611a2983398101604081815282516020840151919093015160018054600160a060020a0319163390811790915591929091907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a260028054600160a060020a03948516600160a060020a03199182161790915560068054938516938216939093179092556007805491909316911617905561195e806100cb6000396000f3006080604052600436106101115763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303152429811461011657806307da68f51461015357806308e93d0a1461016a57806313af4035146101cf578063169b7012146101f05780631eb9ef911461021457806320e3dbd41461023557806325ca4c9c146102565780633e0bd52e1461028b57806373a6b2be146102ac57806375f12b21146102cd57806379502c55146102e25780637a9e5e4b146102f75780638da5cb5b146103185780639996eb641461032d578063b5ca87c41461034d578063be9a65551461036e578063bf7e214f14610383578063f0a72a8414610398578063f2a40db8146103ad575b600080fd5b34801561012257600080fd5b50610137600160a060020a03600435166103c5565b60408051600160a060020a039092168252519081900360200190f35b34801561015f57600080fd5b506101686106d8565b005b34801561017657600080fd5b5061017f6107bc565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101bb5781810151838201526020016101a3565b505050509050019250505060405180910390f35b3480156101db57600080fd5b50610168600160a060020a0360043516610a2d565b3480156101fc57600080fd5b50610137600160a060020a0360043516602435610ae4565b34801561022057600080fd5b5061017f600160a060020a0360043516610b1b565b34801561024157600080fd5b50610168600160a060020a0360043516610dae565b34801561026257600080fd5b50610277600160a060020a0360043516610edb565b604080519115158252519081900360200190f35b34801561029757600080fd5b50610168600160a060020a0360043516610f98565b3480156102b857600080fd5b50610277600160a060020a03600435166110c5565b3480156102d957600080fd5b506102776110da565b3480156102ee57600080fd5b506101376110fb565b34801561030357600080fd5b50610168600160a060020a036004351661110a565b34801561032457600080fd5b506101376111bd565b34801561033957600080fd5b5061016860048035602481019101356111cc565b34801561035957600080fd5b50610168600160a060020a0360043516611373565b34801561037a57600080fd5b506101686114a0565b34801561038f57600080fd5b5061013761156d565b3480156103a457600080fd5b5061013761157c565b3480156103b957600080fd5b5061013760043561158b565b6040805134808252602082018381523693830184905260009384936004359360243593849386933393600160e060020a03198a35169390928a929091606082018484808284376040519201829003965090945050505050a4600254600160a060020a031680151561046e576040805160e560020a62461bcd0281526020600482015260186024820152600080516020611913833981519152604482015290519081900360640190fd5b600654600160a060020a03168015156104bf576040805160e560020a62461bcd0281526020600482015260186024820152600080516020611913833981519152604482015290519081900360640190fd5b60015474010000000000000000000000000000000000000000900460ff1615610532576040805160e560020a62461bcd02815260206004820152601960248201527f445353746f703a3a5f20464541545552455f53544f5050454400000000000000604482015290519081900360640190fd5b600654600160a060020a03166105466116ba565b600160a060020a03909116815260405190819003602001906000f080158015610573573d6000803e3d6000fd5b50600254604080517ff09a4016000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152928316602482015290519298508897509087169163f09a40169160448082019260009290919082900301818387803b1580156105e957600080fd5b505af11580156105fd573d6000803e3d6000fd5b50506005805460018181019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff1992831681179093558c1660008181526004602090815260408083208054808901825590845282842001805490951686179094558482526003815290839020805460ff19169095179094558151338152915192955093507eef0c4d7ce8d09e55441711e41dc8f1a6abbe3313f4369ea8094dbf0b7b182092908290030190a35050505050919050565b6106ee33600035600160e060020a0319166115b3565b1515610732576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a450506001805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60606000806000606060006005805490509450600760009054906101000a9004600160a060020a0316600160a060020a03166308e93d0a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561083b57600080fd5b505af115801561084f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561087857600080fd5b81019080805164010000000081111561089057600080fd5b820160208101848111156108a357600080fd5b81518560208202830111640100000000821117156108c057600080fd5b50509291905050505193508385019250826040519080825280602002602001820160405280156108fa578160200160208202803883390190505b509150600090505b82811015610a24578481101561096257600580548290811061092057fe5b6000918252602090912001548251600160a060020a039091169083908390811061094657fe5b600160a060020a03909216602092830290910190910152610a1c565b600754604080517ff2a40db800000000000000000000000000000000000000000000000000000000815287840360048201529051600160a060020a039092169163f2a40db8916024808201926020929091908290030181600087803b1580156109ca57600080fd5b505af11580156109de573d6000803e3d6000fd5b505050506040513d60208110156109f457600080fd5b50518251839083908110610a0457fe5b600160a060020a039092166020928302909101909101525b600101610902565b50949350505050565b610a4333600035600160e060020a0319166115b3565b1515610a87576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b600460205281600052604060002081815481101515610aff57fe5b600091825260209091200154600160a060020a03169150829050565b600160a060020a0380821660008181526004602081905260408083205460075482517f1eb9ef910000000000000000000000000000000000000000000000000000000081529384019590955290516060959194849387938593921691631eb9ef9191602480820192869290919082900301818387803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610bda57600080fd5b810190808051640100000000811115610bf257600080fd5b82016020810184811115610c0557600080fd5b8151856020820283011164010000000082111715610c2257600080fd5b5050929190505050519350838501925082604051908082528060200260200182016040528015610c5c578160200160208202803883390190505b509150600090505b82811015610da45784811015610cda57600160a060020a0387166000908152600460205260409020805482908110610c9857fe5b6000918252602090912001548251600160a060020a0390911690839083908110610cbe57fe5b600160a060020a03909216602092830290910190910152610d9c565b600754604080517f169b7012000000000000000000000000000000000000000000000000000000008152600160a060020a038a8116600483015288850360248301529151919092169163169b70129160448083019260209291908290030181600087803b158015610d4a57600080fd5b505af1158015610d5e573d6000803e3d6000fd5b505050506040513d6020811015610d7457600080fd5b50518251839083908110610d8457fe5b600160a060020a039092166020928302909101909101525b600101610c64565b5095945050505050565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4610e1533600035600160e060020a0319166115b3565b1515610e59576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b82600160a060020a0381161515610ea8576040805160e560020a62461bcd0281526020600482015260186024820152600080516020611913833981519152604482015290519081900360640190fd5b50506002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b600160a060020a03811660009081526003602052604081205460ff1680610f925750600754604080517f25ca4c9c000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152915191909216916325ca4c9c9160248083019260209291908290030181600087803b158015610f6557600080fd5b505af1158015610f79573d6000803e3d6000fd5b505050506040513d6020811015610f8f57600080fd5b50515b92915050565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4610fff33600035600160e060020a0319166115b3565b1515611043576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b82600160a060020a0381161515611092576040805160e560020a62461bcd0281526020600482015260186024820152600080516020611913833981519152604482015290519081900360640190fd5b50506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b60036020526000908152604090205460ff1681565b60015474010000000000000000000000000000000000000000900460ff1681565b600254600160a060020a031681565b61112033600035600160e060020a0319166115b3565b1515611164576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b604080513480825260208201838152369383018490526000936004359360243593849386933393600160e060020a03198a351693928a929190606082018484808284376040519201829003965090945050505050a4600254604080517f9c14ee290000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691639c14ee29916024808201926020929091908290030181600087803b15801561128757600080fd5b505af115801561129b573d6000803e3d6000fd5b505050506040513d60208110156112b157600080fd5b5051151561132f576040805160e560020a62461bcd02815260206004820152602760248201527f4163636f756e74466163746f72793a3a5f20494e56414c49445f41444d494e5f60448201527f4143434f554e5400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600092505b8383101561136c5761136085858581811061134b57fe5b90506020020135600160a060020a03166103c5565b50600190920191611334565b5050505050565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a46113da33600035600160e060020a0319166115b3565b151561141e576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b82600160a060020a038116151561146d576040805160e560020a62461bcd0281526020600482015260186024820152600080516020611913833981519152604482015290519081900360640190fd5b50506007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b6114b633600035600160e060020a0319166115b3565b15156114fa576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a450506001805474ff000000000000000000000000000000000000000019169055565b600054600160a060020a031681565b600654600160a060020a031681565b600580548290811061159957fe5b600091825260209091200154600160a060020a0316905081565b6000600160a060020a0383163014156115ce57506001610f92565b600154600160a060020a03848116911614156115ec57506001610f92565b600054600160a060020a0316151561160657506000610f92565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152306024830152600160e060020a0319871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561168757600080fd5b505af115801561169b573d6000803e3d6000fd5b505050506040513d60208110156116b157600080fd5b50519392505050565b604051610228806116cb833901905600608060405234801561001057600080fd5b506040516020806102288339810160405251600160a060020a03811615156100be57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e76616c6964206d617374657220636f707920616464726573732070726f7660448201527f6964656400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054600160a060020a03909216600160a060020a031990921691909117905561013a806100ee6000396000f30060806040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c981146100885780635c60da1b146100af575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e801515610083573d6000fd5b3d6000f35b34801561009457600080fd5b5061009d6100ed565b60408051918252519081900360200190f35b3480156100bb57600080fd5b506100c46100f2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b600290565b60005473ffffffffffffffffffffffffffffffffffffffff16905600a165627a7a7230582000e8963a53396a420e260d6762a2b264be1db09b89fce92475fadd0600ddeffb00294453417574683a3a5f2053454e4445525f4e4f545f415554484f52495a4544005574696c733a3a5f20494e56414c49445f414444524553530000000000000000a165627a7a723058201fb993aeaba6d09f9605692ef881a60e2e4a0fb7b7af403218fbf79cad1092310029000000000000000000000000431f429035a1e3059d5c6a9a83208c6d3143d92500000000000000000000000078b37409628e10df0b661c6b205b872a4df8dd6e000000000000000000000000f5a38fbc26c720c79350b99d9c0bd42b3e9b8316
Deployed Bytecode
0x6080604052600436106101115763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303152429811461011657806307da68f51461015357806308e93d0a1461016a57806313af4035146101cf578063169b7012146101f05780631eb9ef911461021457806320e3dbd41461023557806325ca4c9c146102565780633e0bd52e1461028b57806373a6b2be146102ac57806375f12b21146102cd57806379502c55146102e25780637a9e5e4b146102f75780638da5cb5b146103185780639996eb641461032d578063b5ca87c41461034d578063be9a65551461036e578063bf7e214f14610383578063f0a72a8414610398578063f2a40db8146103ad575b600080fd5b34801561012257600080fd5b50610137600160a060020a03600435166103c5565b60408051600160a060020a039092168252519081900360200190f35b34801561015f57600080fd5b506101686106d8565b005b34801561017657600080fd5b5061017f6107bc565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101bb5781810151838201526020016101a3565b505050509050019250505060405180910390f35b3480156101db57600080fd5b50610168600160a060020a0360043516610a2d565b3480156101fc57600080fd5b50610137600160a060020a0360043516602435610ae4565b34801561022057600080fd5b5061017f600160a060020a0360043516610b1b565b34801561024157600080fd5b50610168600160a060020a0360043516610dae565b34801561026257600080fd5b50610277600160a060020a0360043516610edb565b604080519115158252519081900360200190f35b34801561029757600080fd5b50610168600160a060020a0360043516610f98565b3480156102b857600080fd5b50610277600160a060020a03600435166110c5565b3480156102d957600080fd5b506102776110da565b3480156102ee57600080fd5b506101376110fb565b34801561030357600080fd5b50610168600160a060020a036004351661110a565b34801561032457600080fd5b506101376111bd565b34801561033957600080fd5b5061016860048035602481019101356111cc565b34801561035957600080fd5b50610168600160a060020a0360043516611373565b34801561037a57600080fd5b506101686114a0565b34801561038f57600080fd5b5061013761156d565b3480156103a457600080fd5b5061013761157c565b3480156103b957600080fd5b5061013760043561158b565b6040805134808252602082018381523693830184905260009384936004359360243593849386933393600160e060020a03198a35169390928a929091606082018484808284376040519201829003965090945050505050a4600254600160a060020a031680151561046e576040805160e560020a62461bcd0281526020600482015260186024820152600080516020611913833981519152604482015290519081900360640190fd5b600654600160a060020a03168015156104bf576040805160e560020a62461bcd0281526020600482015260186024820152600080516020611913833981519152604482015290519081900360640190fd5b60015474010000000000000000000000000000000000000000900460ff1615610532576040805160e560020a62461bcd02815260206004820152601960248201527f445353746f703a3a5f20464541545552455f53544f5050454400000000000000604482015290519081900360640190fd5b600654600160a060020a03166105466116ba565b600160a060020a03909116815260405190819003602001906000f080158015610573573d6000803e3d6000fd5b50600254604080517ff09a4016000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152928316602482015290519298508897509087169163f09a40169160448082019260009290919082900301818387803b1580156105e957600080fd5b505af11580156105fd573d6000803e3d6000fd5b50506005805460018181019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054600160a060020a03808c1673ffffffffffffffffffffffffffffffffffffffff1992831681179093558c1660008181526004602090815260408083208054808901825590845282842001805490951686179094558482526003815290839020805460ff19169095179094558151338152915192955093507eef0c4d7ce8d09e55441711e41dc8f1a6abbe3313f4369ea8094dbf0b7b182092908290030190a35050505050919050565b6106ee33600035600160e060020a0319166115b3565b1515610732576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a450506001805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60606000806000606060006005805490509450600760009054906101000a9004600160a060020a0316600160a060020a03166308e93d0a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15801561083b57600080fd5b505af115801561084f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561087857600080fd5b81019080805164010000000081111561089057600080fd5b820160208101848111156108a357600080fd5b81518560208202830111640100000000821117156108c057600080fd5b50509291905050505193508385019250826040519080825280602002602001820160405280156108fa578160200160208202803883390190505b509150600090505b82811015610a24578481101561096257600580548290811061092057fe5b6000918252602090912001548251600160a060020a039091169083908390811061094657fe5b600160a060020a03909216602092830290910190910152610a1c565b600754604080517ff2a40db800000000000000000000000000000000000000000000000000000000815287840360048201529051600160a060020a039092169163f2a40db8916024808201926020929091908290030181600087803b1580156109ca57600080fd5b505af11580156109de573d6000803e3d6000fd5b505050506040513d60208110156109f457600080fd5b50518251839083908110610a0457fe5b600160a060020a039092166020928302909101909101525b600101610902565b50949350505050565b610a4333600035600160e060020a0319166115b3565b1515610a87576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b600460205281600052604060002081815481101515610aff57fe5b600091825260209091200154600160a060020a03169150829050565b600160a060020a0380821660008181526004602081905260408083205460075482517f1eb9ef910000000000000000000000000000000000000000000000000000000081529384019590955290516060959194849387938593921691631eb9ef9191602480820192869290919082900301818387803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610bda57600080fd5b810190808051640100000000811115610bf257600080fd5b82016020810184811115610c0557600080fd5b8151856020820283011164010000000082111715610c2257600080fd5b5050929190505050519350838501925082604051908082528060200260200182016040528015610c5c578160200160208202803883390190505b509150600090505b82811015610da45784811015610cda57600160a060020a0387166000908152600460205260409020805482908110610c9857fe5b6000918252602090912001548251600160a060020a0390911690839083908110610cbe57fe5b600160a060020a03909216602092830290910190910152610d9c565b600754604080517f169b7012000000000000000000000000000000000000000000000000000000008152600160a060020a038a8116600483015288850360248301529151919092169163169b70129160448083019260209291908290030181600087803b158015610d4a57600080fd5b505af1158015610d5e573d6000803e3d6000fd5b505050506040513d6020811015610d7457600080fd5b50518251839083908110610d8457fe5b600160a060020a039092166020928302909101909101525b600101610c64565b5095945050505050565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4610e1533600035600160e060020a0319166115b3565b1515610e59576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b82600160a060020a0381161515610ea8576040805160e560020a62461bcd0281526020600482015260186024820152600080516020611913833981519152604482015290519081900360640190fd5b50506002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b600160a060020a03811660009081526003602052604081205460ff1680610f925750600754604080517f25ca4c9c000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152915191909216916325ca4c9c9160248083019260209291908290030181600087803b158015610f6557600080fd5b505af1158015610f79573d6000803e3d6000fd5b505050506040513d6020811015610f8f57600080fd5b50515b92915050565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a4610fff33600035600160e060020a0319166115b3565b1515611043576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b82600160a060020a0381161515611092576040805160e560020a62461bcd0281526020600482015260186024820152600080516020611913833981519152604482015290519081900360640190fd5b50506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b60036020526000908152604090205460ff1681565b60015474010000000000000000000000000000000000000000900460ff1681565b600254600160a060020a031681565b61112033600035600160e060020a0319166115b3565b1515611164576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b604080513480825260208201838152369383018490526000936004359360243593849386933393600160e060020a03198a351693928a929190606082018484808284376040519201829003965090945050505050a4600254604080517f9c14ee290000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691639c14ee29916024808201926020929091908290030181600087803b15801561128757600080fd5b505af115801561129b573d6000803e3d6000fd5b505050506040513d60208110156112b157600080fd5b5051151561132f576040805160e560020a62461bcd02815260206004820152602760248201527f4163636f756e74466163746f72793a3a5f20494e56414c49445f41444d494e5f60448201527f4143434f554e5400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600092505b8383101561136c5761136085858581811061134b57fe5b90506020020135600160a060020a03166103c5565b50600190920191611334565b5050505050565b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a46113da33600035600160e060020a0319166115b3565b151561141e576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b82600160a060020a038116151561146d576040805160e560020a62461bcd0281526020600482015260186024820152600080516020611913833981519152604482015290519081900360640190fd5b50506007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03939093169290921790915550565b6114b633600035600160e060020a0319166115b3565b15156114fa576040805160e560020a62461bcd02815260206004820152601f60248201526000805160206118f3833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384938693339360008035600160e060020a031916949092606082018484808284376040519201829003965090945050505050a450506001805474ff000000000000000000000000000000000000000019169055565b600054600160a060020a031681565b600654600160a060020a031681565b600580548290811061159957fe5b600091825260209091200154600160a060020a0316905081565b6000600160a060020a0383163014156115ce57506001610f92565b600154600160a060020a03848116911614156115ec57506001610f92565b600054600160a060020a0316151561160657506000610f92565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152306024830152600160e060020a0319871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b15801561168757600080fd5b505af115801561169b573d6000803e3d6000fd5b505050506040513d60208110156116b157600080fd5b50519392505050565b604051610228806116cb833901905600608060405234801561001057600080fd5b506040516020806102288339810160405251600160a060020a03811615156100be57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e76616c6964206d617374657220636f707920616464726573732070726f7660448201527f6964656400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054600160a060020a03909216600160a060020a031990921691909117905561013a806100ee6000396000f30060806040526004361061004b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634555d5c981146100885780635c60da1b146100af575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e801515610083573d6000fd5b3d6000f35b34801561009457600080fd5b5061009d6100ed565b60408051918252519081900360200190f35b3480156100bb57600080fd5b506100c46100f2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b600290565b60005473ffffffffffffffffffffffffffffffffffffffff16905600a165627a7a7230582000e8963a53396a420e260d6762a2b264be1db09b89fce92475fadd0600ddeffb00294453417574683a3a5f2053454e4445525f4e4f545f415554484f52495a4544005574696c733a3a5f20494e56414c49445f414444524553530000000000000000a165627a7a723058201fb993aeaba6d09f9605692ef881a60e2e4a0fb7b7af403218fbf79cad1092310029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000431f429035a1e3059d5c6a9a83208c6d3143d92500000000000000000000000078b37409628e10df0b661c6b205b872a4df8dd6e000000000000000000000000f5a38fbc26c720c79350b99d9c0bd42b3e9b8316
-----Decoded View---------------
Arg [0] : _config (address): 0x431F429035a1e3059d5c6a9a83208c6D3143D925
Arg [1] : _accountMaster (address): 0x78B37409628e10df0B661C6B205B872a4DF8DD6E
Arg [2] : _accountFactoryV1 (address): 0xF5A38FBc26c720C79350B99d9C0Bd42b3E9B8316
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000431f429035a1e3059d5c6a9a83208c6d3143d925
Arg [1] : 00000000000000000000000078b37409628e10df0b661c6b205b872a4df8dd6e
Arg [2] : 000000000000000000000000f5a38fbc26c720c79350b99d9c0bd42b3e9b8316
Swarm Source
bzzr://1fb993aeaba6d09f9605692ef881a60e2e4a0fb7b7af403218fbf79cad109231
Loading...
Loading
Loading...
Loading
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.