Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 11 from a total of 11 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Deploy | 22671497 | 265 days ago | IN | 0 ETH | 0.00795182 | ||||
| Deploy | 22671449 | 265 days ago | IN | 0 ETH | 0.00744576 | ||||
| Deploy | 20511035 | 567 days ago | IN | 0 ETH | 0.00565878 | ||||
| Deploy | 20109549 | 623 days ago | IN | 0 ETH | 0.00569009 | ||||
| Deploy | 19980387 | 641 days ago | IN | 0 ETH | 0.01120261 | ||||
| Deploy | 19961106 | 644 days ago | IN | 0 ETH | 0.02981845 | ||||
| Deploy | 19961101 | 644 days ago | IN | 0 ETH | 0.02392972 | ||||
| Deploy | 19961099 | 644 days ago | IN | 0 ETH | 0.02918197 | ||||
| Deploy | 19961094 | 644 days ago | IN | 0 ETH | 0.02154176 | ||||
| Deploy | 19961093 | 644 days ago | IN | 0 ETH | 0.0026132 | ||||
| Deploy | 19961092 | 644 days ago | IN | 0 ETH | 0.05196959 |
Latest 17 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x67363d3d | 22671497 | 265 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 22671449 | 265 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 20511035 | 567 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 20109549 | 623 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19980473 | 641 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19980473 | 641 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19980473 | 641 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19980473 | 641 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19980473 | 641 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19980473 | 641 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19980387 | 641 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19961106 | 644 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19961101 | 644 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19961099 | 644 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19961094 | 644 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19961093 | 644 days ago | Contract Creation | 0 ETH | |||
| 0x67363d3d | 19961092 | 644 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FBTCFactory
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 20000 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.20;
/**
* @title FBTC Smart Contract Factory
* @dev Inspired by https://github.com/pcaversaccio/createx
*/
contract FBTCFactory {
event ContractDeployed(
address indexed _contract,
address indexed _deployer
);
enum DeployType {
Create2,
Create2WithSender,
Create3,
Create3WithSender
}
function _guardSalt(
address sender,
bytes32 salt,
uint256 tag
) internal pure returns (bytes32) {
return keccak256(abi.encode(sender, salt, tag));
}
function deployCreate2(
bytes32 salt,
bytes memory initCode,
bool _private
) internal returns (address _contract) {
address sender = _private ? msg.sender : address(0);
salt = _guardSalt(sender, salt, 2);
assembly {
_contract := create2(0, add(initCode, 0x20), mload(initCode), salt)
}
require(_contract != address(0), "Create2 failed");
emit ContractDeployed(_contract, msg.sender);
}
function deployCreate3(
bytes32 salt,
bytes memory initCode,
bool _private
) internal returns (address _contract) {
address sender = _private ? msg.sender : address(0);
bytes32 finalSalt = _guardSalt(sender, salt, 3);
bytes
memory proxyChildBytecode = hex"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3";
address proxy;
assembly {
proxy := create2(
0,
add(proxyChildBytecode, 32),
mload(proxyChildBytecode),
finalSalt
)
}
require(proxy != address(0), "Create3 proxy failed");
(bool success, bytes memory _retData) = proxy.call(initCode);
if (!success) {
assembly {
let size := mload(_retData)
revert(add(32, _retData), size)
}
}
_contract = getCreate3Address(salt, sender);
require(_contract.code.length > 0, "Create3 failed");
emit ContractDeployed(_contract, msg.sender);
}
function deploy(
DeployType typ,
bytes32 salt,
bytes memory initCode
) public returns (address _contract) {
if (typ == DeployType.Create2) {
_contract = deployCreate2(salt, initCode, false);
} else if (typ == DeployType.Create2WithSender) {
_contract = deployCreate2(salt, initCode, true);
} else if (typ == DeployType.Create3) {
_contract = deployCreate3(salt, initCode, false);
} else if (typ == DeployType.Create3WithSender) {
_contract = deployCreate3(salt, initCode, true);
}
}
function deployAndInit(
DeployType typ,
bytes32 salt,
bytes calldata initCode,
bytes calldata callData
) public returns (address _contract) {
_contract = deploy(typ, salt, initCode);
(bool success, bytes memory _retData) = _contract.call(callData);
if (!success) {
assembly {
let size := mload(_retData)
revert(add(32, _retData), size)
}
}
}
function getCreate2Address(
bytes32 salt,
address sender,
bytes calldata initCode
) public view returns (address _contract) {
bytes32 initCodeHash = keccak256(initCode);
address deployer = address(this);
salt = _guardSalt(sender, salt, 2);
assembly {
let ptr := mload(0x40)
mstore(add(ptr, 0x40), initCodeHash)
mstore(add(ptr, 0x20), salt)
mstore(ptr, deployer)
let start := add(ptr, 0x0b)
mstore8(start, 0xff)
_contract := keccak256(start, 85)
}
}
function getCreate3Address(
bytes32 salt,
address sender
) public view returns (address _contract) {
address deployer = address(this);
salt = _guardSalt(sender, salt, 3);
assembly {
let ptr := mload(0x40)
mstore(0x00, deployer)
mstore8(0x0b, 0xff)
mstore(0x20, salt)
mstore(
0x40,
hex"21_c3_5d_be_1b_34_4a_24_88_cf_33_21_d6_ce_54_2f_8e_9f_30_55_44_ff_09_e4_99_3a_62_31_9a_49_7c_1f"
)
mstore(0x14, keccak256(0x0b, 0x55))
mstore(0x40, ptr)
mstore(0x00, 0xd694)
mstore8(0x34, 0x01)
_contract := keccak256(0x1e, 0x17)
}
}
function getAddress(
DeployType typ,
bytes32 salt,
address sender,
bytes calldata initCode
) external view returns (address _contract) {
if (typ == DeployType.Create2) {
_contract = getCreate2Address(salt, address(0), initCode);
} else if (typ == DeployType.Create2WithSender) {
_contract = getCreate2Address(salt, sender, initCode);
} else if (typ == DeployType.Create3) {
_contract = getCreate3Address(salt, address(0));
} else if (typ == DeployType.Create3WithSender) {
_contract = getCreate3Address(salt, sender);
}
}
}{
"remappings": [
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/"
],
"optimizer": {
"enabled": true,
"runs": 20000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london",
"viaIR": true,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_contract","type":"address"},{"indexed":true,"internalType":"address","name":"_deployer","type":"address"}],"name":"ContractDeployed","type":"event"},{"inputs":[{"internalType":"enum FBTCFactory.DeployType","name":"typ","type":"uint8"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"deploy","outputs":[{"internalType":"address","name":"_contract","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum FBTCFactory.DeployType","name":"typ","type":"uint8"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"}],"name":"deployAndInit","outputs":[{"internalType":"address","name":"_contract","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum FBTCFactory.DeployType","name":"typ","type":"uint8"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"getAddress","outputs":[{"internalType":"address","name":"_contract","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"initCode","type":"bytes"}],"name":"getCreate2Address","outputs":[{"internalType":"address","name":"_contract","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"}],"name":"getCreate3Address","outputs":[{"internalType":"address","name":"_contract","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
6080806040523461001657610b40908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c9081632f0791d51461006a57508063456276b714610065578063a0354b7114610060578063d4fadcad1461005b5763e6eb7a291461005657600080fd5b6104d1565b610463565b6102ff565b61021e565b346101935760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610193576100a1610196565b602435916100ad6101aa565b906064359367ffffffffffffffff851161018f576100d26101179536906004016101f0565b939092946100df81610537565b8061011b5750506100f09350610a4b565b60405173ffffffffffffffffffffffffffffffffffffffff90911681529081906020820190565b0390f35b61012781939293610537565b6001810361013f575061013a9450610a85565b6100f0565b61014e91945080929350610537565b6002810361016257505061013a9150610aa6565b80610171600392949394610537565b1461017e575b50506100f0565b6101889250610b01565b8280610177565b5080fd5b80fd5b6004359060048210156101a557565b600080fd5b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101a557565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101a557565b9181601f840112156101a55782359167ffffffffffffffff83116101a557602083818601950101116101a557565b346101a55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a557610255610196565b67ffffffffffffffff6044358181116101a5576102769036906004016101f0565b92906064359283116101a5576102af600093926102a561029b869536906004016101f0565b949097369161042c565b9060243590610570565b938160405192839283378101838152039082855af1906102cd6108c9565b91156102f65760405173ffffffffffffffffffffffffffffffffffffffff919091168152602090f35b50805190602001fd5b346101a55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a557602061034361033b6101cd565b600435610b01565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6080810190811067ffffffffffffffff8211176103ac57604052565b610361565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103ac57604052565b67ffffffffffffffff81116103ac57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610438826103f2565b9161044660405193846103b1565b8294818452818301116101a5578281602093846000960137010152565b346101a55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a55761049a610196565b60443567ffffffffffffffff81116101a557366023820112156101a5576020916102a561034392369060248160040135910161042c565b346101a55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a5576105086101cd565b60443567ffffffffffffffff81116101a55760209161052e6103439236906004016101f0565b91600435610a85565b6004111561054157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b92919060009360009061058281610537565b8061059757505061059492935061074f565b90565b6105a081610537565b600181036105b5575050610594929350610696565b6105be81610537565b600281036105d357505061059492935061095e565b806105e360039295949395610537565b146105ed57505050565b909180809495506105fe83336107df565b61060661081a565b60208151910183f59373ffffffffffffffffffffffffffffffffffffffff946106328682161515610864565b82602083519301915af16106446108c9565b901561068e5750610656903390610b01565b91610663833b15156108f9565b7f33c981baba081f8fd2c52ac6ad1ea95b6814b4376640f55689051f6584729688339284169180a390565b805190602001fd5b6106a0903361077f565b906020815191016000f59073ffffffffffffffffffffffffffffffffffffffff821680156106f15733907f33c981baba081f8fd2c52ac6ad1ea95b6814b4376640f55689051f6584729688600080a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f43726561746532206661696c65640000000000000000000000000000000000006044820152fd5b6106a0905b6040516020810191600083526040820152600260608201526060815261077981610390565b51902090565b906040519073ffffffffffffffffffffffffffffffffffffffff60208301931683526040820152600260608201526060815261077981610390565b6040516020810191600083526040820152600360608201526060815261077981610390565b906040519073ffffffffffffffffffffffffffffffffffffffff60208301931683526040820152600360608201526060815261077981610390565b604051906040820182811067ffffffffffffffff8211176103ac57604052601082527f67363d3d37363d34f03d5260086018f3000000000000000000000000000000006020830152565b1561086b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f437265617465332070726f7879206661696c65640000000000000000000000006044820152fd5b3d156108f4573d906108da826103f2565b916108e860405193846103b1565b82523d6000602084013e565b606090565b1561090057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f43726561746533206661696c65640000000000000000000000000000000000006044820152fd5b9190610969836107ba565b92602061097461081a565b805195600096879384930183f59373ffffffffffffffffffffffffffffffffffffffff946109a58682161515610864565b82602083519301915af16109b76108c9565b901561068e57506109c7906107ba565b6040519030855260ff600b536020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b2060145260405261d694835260016034536017601e2092610a21843b15156108f9565b7f33c981baba081f8fd2c52ac6ad1ea95b6814b4376640f55689051f6584729688339285169180a3565b610a6b610a5e600b93605595369161042c565b6020815191012091610754565b60405191604083015260208201523081520160ff81532090565b610a6b90610a99600b94605596369161042c565b602081519101209261077f565b610aaf906107ba565b604051903060005260ff600b536020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b2060145260405261d69460005260016034536017601e2090565b610aaf916107df56fea2646970667358221220b121f3e14f898537ca2202ce97f1e6988c154b29105d210f287d0d88c632249d64736f6c63430008140033
Deployed Bytecode
0x6080604052600436101561001257600080fd5b6000803560e01c9081632f0791d51461006a57508063456276b714610065578063a0354b7114610060578063d4fadcad1461005b5763e6eb7a291461005657600080fd5b6104d1565b610463565b6102ff565b61021e565b346101935760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610193576100a1610196565b602435916100ad6101aa565b906064359367ffffffffffffffff851161018f576100d26101179536906004016101f0565b939092946100df81610537565b8061011b5750506100f09350610a4b565b60405173ffffffffffffffffffffffffffffffffffffffff90911681529081906020820190565b0390f35b61012781939293610537565b6001810361013f575061013a9450610a85565b6100f0565b61014e91945080929350610537565b6002810361016257505061013a9150610aa6565b80610171600392949394610537565b1461017e575b50506100f0565b6101889250610b01565b8280610177565b5080fd5b80fd5b6004359060048210156101a557565b600080fd5b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101a557565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101a557565b9181601f840112156101a55782359167ffffffffffffffff83116101a557602083818601950101116101a557565b346101a55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a557610255610196565b67ffffffffffffffff6044358181116101a5576102769036906004016101f0565b92906064359283116101a5576102af600093926102a561029b869536906004016101f0565b949097369161042c565b9060243590610570565b938160405192839283378101838152039082855af1906102cd6108c9565b91156102f65760405173ffffffffffffffffffffffffffffffffffffffff919091168152602090f35b50805190602001fd5b346101a55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a557602061034361033b6101cd565b600435610b01565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6080810190811067ffffffffffffffff8211176103ac57604052565b610361565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103ac57604052565b67ffffffffffffffff81116103ac57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610438826103f2565b9161044660405193846103b1565b8294818452818301116101a5578281602093846000960137010152565b346101a55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a55761049a610196565b60443567ffffffffffffffff81116101a557366023820112156101a5576020916102a561034392369060248160040135910161042c565b346101a55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a5576105086101cd565b60443567ffffffffffffffff81116101a55760209161052e6103439236906004016101f0565b91600435610a85565b6004111561054157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b92919060009360009061058281610537565b8061059757505061059492935061074f565b90565b6105a081610537565b600181036105b5575050610594929350610696565b6105be81610537565b600281036105d357505061059492935061095e565b806105e360039295949395610537565b146105ed57505050565b909180809495506105fe83336107df565b61060661081a565b60208151910183f59373ffffffffffffffffffffffffffffffffffffffff946106328682161515610864565b82602083519301915af16106446108c9565b901561068e5750610656903390610b01565b91610663833b15156108f9565b7f33c981baba081f8fd2c52ac6ad1ea95b6814b4376640f55689051f6584729688339284169180a390565b805190602001fd5b6106a0903361077f565b906020815191016000f59073ffffffffffffffffffffffffffffffffffffffff821680156106f15733907f33c981baba081f8fd2c52ac6ad1ea95b6814b4376640f55689051f6584729688600080a3565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f43726561746532206661696c65640000000000000000000000000000000000006044820152fd5b6106a0905b6040516020810191600083526040820152600260608201526060815261077981610390565b51902090565b906040519073ffffffffffffffffffffffffffffffffffffffff60208301931683526040820152600260608201526060815261077981610390565b6040516020810191600083526040820152600360608201526060815261077981610390565b906040519073ffffffffffffffffffffffffffffffffffffffff60208301931683526040820152600360608201526060815261077981610390565b604051906040820182811067ffffffffffffffff8211176103ac57604052601082527f67363d3d37363d34f03d5260086018f3000000000000000000000000000000006020830152565b1561086b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f437265617465332070726f7879206661696c65640000000000000000000000006044820152fd5b3d156108f4573d906108da826103f2565b916108e860405193846103b1565b82523d6000602084013e565b606090565b1561090057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f43726561746533206661696c65640000000000000000000000000000000000006044820152fd5b9190610969836107ba565b92602061097461081a565b805195600096879384930183f59373ffffffffffffffffffffffffffffffffffffffff946109a58682161515610864565b82602083519301915af16109b76108c9565b901561068e57506109c7906107ba565b6040519030855260ff600b536020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b2060145260405261d694835260016034536017601e2092610a21843b15156108f9565b7f33c981baba081f8fd2c52ac6ad1ea95b6814b4376640f55689051f6584729688339285169180a3565b610a6b610a5e600b93605595369161042c565b6020815191012091610754565b60405191604083015260208201523081520160ff81532090565b610a6b90610a99600b94605596369161042c565b602081519101209261077f565b610aaf906107ba565b604051903060005260ff600b536020527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f6040526055600b2060145260405261d69460005260016034536017601e2090565b610aaf916107df56fea2646970667358221220b121f3e14f898537ca2202ce97f1e6988c154b29105d210f287d0d88c632249d64736f6c63430008140033
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.