Contract Address Details

0xfAC000a12dA42B871c0AaD5F25391aAe62958Db1

Contract Name
GenericFactory
Creator
0x519ca6–6899a8 at 0x558b2a–34e54d
Balance
0 xRLC
Tokens
Fetching tokens...
Transactions
24 Transactions
Transfers
0 Transfers
Gas Used
35,970,356
Last Balance Update
30184806
Contract name:
GenericFactory




Optimization enabled
true
Compiler version
v0.6.4+commit.1dca32f3




Optimization runs
200
EVM Version
default




Verified at
2024-08-06T07:35:17.703929Z

Contract source code

Sol2uml
new
pragma solidity ^0.6.0;

contract CounterfactualFactory
{
	function _create2(bytes memory _code, bytes32 _salt)
	internal returns(address)
	{
		bytes memory code = _code;
		bytes32      salt = _salt;
		address      addr;
		// solium-disable-next-line security/no-inline-assembly
		assembly
		{
			addr := create2(0, add(code, 0x20), mload(code), salt)
			if iszero(extcodesize(addr)) { revert(0, 0) }
		}
		return addr;
	}

	function _predictAddress(bytes memory _code, bytes32 _salt)
	internal view returns (address)
	{
		return address(bytes20(keccak256(abi.encodePacked(
			bytes1(0xff),
			address(this),
			_salt,
			keccak256(_code)
		)) << 0x60));
	}
}

contract GenericFactory is CounterfactualFactory
{
	event NewContract(address indexed addr);

	function predictAddress(bytes memory _code, bytes32 _salt)
	public view returns(address)
	{
		return predictAddressWithCall(_code, _salt, bytes(""));
	}

	function createContract(bytes memory _code, bytes32 _salt)
	public returns(address)
	{
		return createContractAndCall(_code, _salt, bytes(""));
	}

	function predictAddressWithCall(bytes memory _code, bytes32 _salt, bytes memory _call)
	public view returns(address)
	{
		return _predictAddress(_code, keccak256(abi.encodePacked(_salt, _call)));
	}

	function createContractAndCall(bytes memory _code, bytes32 _salt, bytes memory _call)
	public returns(address)
	{
		address addr = _create2(_code, keccak256(abi.encodePacked(_salt, _call)));
		emit NewContract(addr);
		if (_call.length > 0)
		{
			// solium-disable-next-line security/no-low-level-calls
			(bool success, bytes memory reason) = addr.call(_call);
			require(success, string(reason));
		}
		return addr;
	}
}
        

Contract ABI

[{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"createContract","inputs":[{"type":"bytes","name":"_code","internalType":"bytes"},{"type":"bytes32","name":"_salt","internalType":"bytes32"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"createContractAndCall","inputs":[{"type":"bytes","name":"_code","internalType":"bytes"},{"type":"bytes32","name":"_salt","internalType":"bytes32"},{"type":"bytes","name":"_call","internalType":"bytes"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"predictAddress","inputs":[{"type":"bytes","name":"_code","internalType":"bytes"},{"type":"bytes32","name":"_salt","internalType":"bytes32"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"predictAddressWithCall","inputs":[{"type":"bytes","name":"_code","internalType":"bytes"},{"type":"bytes32","name":"_salt","internalType":"bytes32"},{"type":"bytes","name":"_call","internalType":"bytes"}]},{"type":"event","name":"NewContract","inputs":[{"type":"address","name":"addr","indexed":true}],"anonymous":false}]
              

Contract Creation Code

0x608060405234801561001057600080fd5b50610794806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80631dcce26514610051578063482f20241461019e5780638563a8f614610244578063bbdd8aeb146102ea575b600080fd5b6101826004803603606081101561006757600080fd5b810190602081018135600160201b81111561008157600080fd5b82018360208201111561009357600080fd5b803590602001918460018302840111600160201b831117156100b457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561010e57600080fd5b82018360208201111561012057600080fd5b803590602001918460018302840111600160201b8311171561014157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061041b945050505050565b604080516001600160a01b039092168252519081900360200190f35b610182600480360360408110156101b457600080fd5b810190602081018135600160201b8111156101ce57600080fd5b8201836020820111156101e057600080fd5b803590602001918460018302840111600160201b8311171561020157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506104a4915050565b6101826004803603604081101561025a57600080fd5b810190602081018135600160201b81111561027457600080fd5b82018360208201111561028657600080fd5b803590602001918460018302840111600160201b831117156102a757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506104c7915050565b6101826004803603606081101561030057600080fd5b810190602081018135600160201b81111561031a57600080fd5b82018360208201111561032c57600080fd5b803590602001918460018302840111600160201b8311171561034d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111600160201b831117156103da57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104df945050505050565b600061049c8484846040516020018083815260200182805190602001908083835b6020831061045b5780518252601f19909201916020918201910161043c565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052805190602001206106df565b949350505050565b60006104c083836040518060200160405280600081525061041b565b9392505050565b60006104c08383604051806020016040528060008152505b6000806105618585856040516020018083815260200182805190602001908083835b602083106105205780518252601f199092019160209182019101610501565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120610735565b6040519091506001600160a01b038216907f387ea218537e939551af33bbc2dd6c53b1fee55d377a0dce288258f972cb3a9c90600090a282511561049c5760006060826001600160a01b0316856040518082805190602001908083835b602083106105dd5780518252601f1990920191602091820191016105be565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461063f576040519150601f19603f3d011682016040523d82523d6000602084013e610644565b606091505b50915091508181906106d45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610699578181015183820152602001610681565b50505050905090810190601f1680156106c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050949350505050565b8151602092830120604080516001600160f81b0319818601523060601b6021820152603581019390935260558084019290925280518084039092018252607590920190915280519101206001600160a01b031690565b815160009083908390839082906020850183f59050803b61075557600080fd5b9594505050505056fea2646970667358221220d30d7bad226f3b603fe6d87b4642d706cee02daab1e811fe1e12f76f2718be2564736f6c63430006040033

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80631dcce26514610051578063482f20241461019e5780638563a8f614610244578063bbdd8aeb146102ea575b600080fd5b6101826004803603606081101561006757600080fd5b810190602081018135600160201b81111561008157600080fd5b82018360208201111561009357600080fd5b803590602001918460018302840111600160201b831117156100b457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561010e57600080fd5b82018360208201111561012057600080fd5b803590602001918460018302840111600160201b8311171561014157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061041b945050505050565b604080516001600160a01b039092168252519081900360200190f35b610182600480360360408110156101b457600080fd5b810190602081018135600160201b8111156101ce57600080fd5b8201836020820111156101e057600080fd5b803590602001918460018302840111600160201b8311171561020157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506104a4915050565b6101826004803603604081101561025a57600080fd5b810190602081018135600160201b81111561027457600080fd5b82018360208201111561028657600080fd5b803590602001918460018302840111600160201b831117156102a757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506104c7915050565b6101826004803603606081101561030057600080fd5b810190602081018135600160201b81111561031a57600080fd5b82018360208201111561032c57600080fd5b803590602001918460018302840111600160201b8311171561034d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111600160201b831117156103da57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104df945050505050565b600061049c8484846040516020018083815260200182805190602001908083835b6020831061045b5780518252601f19909201916020918201910161043c565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052805190602001206106df565b949350505050565b60006104c083836040518060200160405280600081525061041b565b9392505050565b60006104c08383604051806020016040528060008152505b6000806105618585856040516020018083815260200182805190602001908083835b602083106105205780518252601f199092019160209182019101610501565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120610735565b6040519091506001600160a01b038216907f387ea218537e939551af33bbc2dd6c53b1fee55d377a0dce288258f972cb3a9c90600090a282511561049c5760006060826001600160a01b0316856040518082805190602001908083835b602083106105dd5780518252601f1990920191602091820191016105be565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461063f576040519150601f19603f3d011682016040523d82523d6000602084013e610644565b606091505b50915091508181906106d45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610699578181015183820152602001610681565b50505050905090810190601f1680156106c65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050949350505050565b8151602092830120604080516001600160f81b0319818601523060601b6021820152603581019390935260558084019290925280518084039092018252607590920190915280519101206001600160a01b031690565b815160009083908390839082906020850183f59050803b61075557600080fd5b9594505050505056fea2646970667358221220d30d7bad226f3b603fe6d87b4642d706cee02daab1e811fe1e12f76f2718be2564736f6c63430006040033