Source Code
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,641 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 381899970 | 56 days ago | IN | 0 ETH | 0.00000919 | ||||
| Withdraw | 239554027 | 470 days ago | IN | 0 ETH | 0.00001739 | ||||
| Withdraw | 237130300 | 477 days ago | IN | 0 ETH | 0.00000034 | ||||
| Withdraw | 235173678 | 482 days ago | IN | 0 ETH | 0.00000053 | ||||
| Withdraw | 235083204 | 483 days ago | IN | 0 ETH | 0.00000041 | ||||
| Withdraw | 221256582 | 523 days ago | IN | 0 ETH | 0.00000068 | ||||
| Withdraw | 220286872 | 526 days ago | IN | 0 ETH | 0.00000044 | ||||
| Withdraw | 220057010 | 526 days ago | IN | 0 ETH | 0.00000082 | ||||
| Withdraw | 209195106 | 558 days ago | IN | 0 ETH | 0.00000058 | ||||
| Withdraw | 204023549 | 573 days ago | IN | 0 ETH | 0.00000186 | ||||
| Withdraw | 201327462 | 581 days ago | IN | 0 ETH | 0.00000059 | ||||
| Withdraw | 197507166 | 592 days ago | IN | 0 ETH | 0.00000084 | ||||
| Withdraw | 197085707 | 593 days ago | IN | 0 ETH | 0.00000473 | ||||
| Withdraw | 194786334 | 600 days ago | IN | 0 ETH | 0.00000162 | ||||
| Withdraw | 193024523 | 605 days ago | IN | 0 ETH | 0.00000073 | ||||
| Withdraw | 191831061 | 609 days ago | IN | 0 ETH | 0.00000903 | ||||
| Withdraw | 191026996 | 611 days ago | IN | 0 ETH | 0.00000676 | ||||
| Withdraw | 190944635 | 611 days ago | IN | 0 ETH | 0.0000078 | ||||
| Withdraw | 179977270 | 644 days ago | IN | 0 ETH | 0.0000313 | ||||
| Withdraw | 178438037 | 649 days ago | IN | 0 ETH | 0.00005473 | ||||
| Withdraw | 178437318 | 649 days ago | IN | 0 ETH | 0.00005473 | ||||
| Withdraw | 178435774 | 649 days ago | IN | 0 ETH | 0.00006281 | ||||
| Withdraw | 178424536 | 649 days ago | IN | 0 ETH | 0.00008832 | ||||
| Withdraw | 173848088 | 663 days ago | IN | 0 ETH | 0.00001828 | ||||
| Withdraw | 169351480 | 676 days ago | IN | 0 ETH | 0.00003642 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 392614971 | 25 days ago | 0.00032217 ETH | ||||
| 383477324 | 51 days ago | 0.00031093 ETH | ||||
| 381899970 | 56 days ago | 1.99318058 ETH | ||||
| 381190571 | 58 days ago | 0.00113198 ETH | ||||
| 381190571 | 58 days ago | 0.00137227 ETH | ||||
| 381190571 | 58 days ago | 0.00216416 ETH | ||||
| 381190571 | 58 days ago | 0.00250202 ETH | ||||
| 381023469 | 59 days ago | 0.00027938 ETH | ||||
| 373629427 | 80 days ago | 0.00028744 ETH | ||||
| 372955213 | 82 days ago | 0.00027315 ETH | ||||
| 371363075 | 86 days ago | 0.00026323 ETH | ||||
| 371315091 | 87 days ago | 0.00026539 ETH | ||||
| 361546595 | 115 days ago | 0.00033628 ETH | ||||
| 360758766 | 117 days ago | 0.00034626 ETH | ||||
| 358687756 | 123 days ago | 0.00036717 ETH | ||||
| 358553443 | 124 days ago | 0.0003705 ETH | ||||
| 355613834 | 132 days ago | 0.0004759 ETH | ||||
| 353931942 | 137 days ago | 0.00048171 ETH | ||||
| 348369814 | 153 days ago | 0.00050266 ETH | ||||
| 346847961 | 157 days ago | 0.00049444 ETH | ||||
| 346774107 | 158 days ago | 0.0025144 ETH | ||||
| 342330389 | 171 days ago | 0.00049551 ETH | ||||
| 341081415 | 174 days ago | 0.00046775 ETH | ||||
| 335473537 | 191 days ago | 0.00049049 ETH | ||||
| 328582706 | 211 days ago | 0.00076223 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ReferralHub
Compiler Version
v0.8.12+commit.f00d7308
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
import "./IReferralHub.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "../registry/ARBID.sol";
import "../resolvers/profiles/AddrResolver.sol";
import "../resolvers/profiles/NameResolver.sol";
import "../registry/IReverseRegistrar.sol";
contract ReferralHub is IReferralHub, Ownable, ReentrancyGuard {
// ReferralHub controllers that can update referral count and related states.
mapping(address => bool) public controllers;
// Commission configuration
struct Comission {
// The number of minimum referrals that is required for the rate.
uint256 minimumReferralCount;
// Percentage of registration fee that will be deposited to referrer.
uint256 referrer;
// Percentage of registration fee that will be discounted to referee.
uint256 referee;
}
//map comission chart to a level
mapping(uint256 => Comission) public comissionCharts;
// map from refferral domain name nodehash to the number of referrals.
mapping(bytes32 => uint256) public referralCount;
// map address to the amount of bonus.
mapping(address => uint256) public referralBalance;
// Map partner's domain's nodehash to customized commission rate.
mapping(bytes32 => Comission) public partnerComissionCharts;
bytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;
bytes32 constant lookup = 0x3031323334353637383961626364656600000000000000000000000000000000;
ARBID immutable arbid;
constructor(ARBID _arbid) {
arbid = _arbid;
comissionCharts[1] = Comission(0, 5, 0);
comissionCharts[2] = Comission(30, 8, 0);
comissionCharts[3] = Comission(100, 11, 0);
comissionCharts[4] = Comission(600, 15, 0);
comissionCharts[5] = Comission(100000000, 15, 0);
comissionCharts[6] = Comission(100000000, 15, 0);
comissionCharts[7] = Comission(100000000, 15, 0);
comissionCharts[8] = Comission(100000000, 15, 0);
comissionCharts[9] = Comission(100000000, 15, 0);
comissionCharts[10] = Comission(100000000, 15, 0);
}
modifier onlyController() {
require(controllers[msg.sender], "Not a authorized controller");
_;
}
modifier validLevel(uint256 _level) {
require(_level >= 1 && _level <= 10, "Invalid level");
_;
}
function getNodehash(string calldata name, string calldata tld) public pure returns (bytes32) {
bytes32 nameHash = keccak256(bytes(name));
bytes32 tldHash = keccak256(abi.encodePacked(bytes32(0), keccak256(bytes(tld))));
return keccak256(abi.encodePacked(tldHash, nameHash));
}
function getReverseNodehash(address addr) public pure returns (bytes32) {
return keccak256(abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr)));
}
/**
* @dev An optimised function to compute the sha3 of the lower-case
* hexadecimal representation of an Ethereum address.
* @param addr The address to hash
* @return ret The SHA3 hash of the lower-case hexadecimal encoding of the
* input address.
*/
function sha3HexAddress(address addr) private pure returns (bytes32 ret) {
assembly {
for {
let i := 40
} gt(i, 0) {
} {
i := sub(i, 1)
mstore8(i, byte(and(addr, 0xf), lookup))
addr := div(addr, 0x10)
i := sub(i, 1)
mstore8(i, byte(and(addr, 0xf), lookup))
addr := div(addr, 0x10)
}
ret := keccak256(0, 40)
}
}
function isReferralEligible(bytes32 nodeHash) external view override returns (bool, address) {
address resolverAddress = arbid.resolver(nodeHash);
if (resolverAddress == address(0)) {
return (false, address(0));
}
AddrResolver resolver = AddrResolver(resolverAddress);
address resolvedAddress = resolver.addr(nodeHash);
bytes32 reverseNodeHash = getReverseNodehash(resolvedAddress);
address reverseResolverAddress = arbid.resolver(reverseNodeHash);
if (reverseResolverAddress == address(0)) {
return (false, address(0));
}
return (true, resolvedAddress);
}
function isPartner(bytes32 nodeHash) public view returns (bool) {
return partnerComissionCharts[nodeHash].referrer > 0 || partnerComissionCharts[nodeHash].referee > 0;
}
function getReferralCommisionFee(uint256 price, bytes32 nodeHash) public view returns (uint256, uint256) {
uint256 referrerRate = 0;
uint256 refereeRate = 0;
uint256 level = 1;
if (isPartner(nodeHash)) {
referrerRate = partnerComissionCharts[nodeHash].referrer;
refereeRate = partnerComissionCharts[nodeHash].referee;
} else {
(level, referrerRate, refereeRate) = _getComissionChart(referralCount[nodeHash]);
}
uint256 referrerFee = (price * referrerRate) / 100;
uint256 refereeFee = (price * refereeRate) / 100;
return (referrerFee, refereeFee);
}
function setPartnerComissionChart(
string calldata name,
string calldata tld,
uint256 minimumReferralCount,
uint256 referrerRate,
uint256 refereeRate
) external onlyOwner {
bytes32 nodeHash = getNodehash(name, tld);
partnerComissionCharts[nodeHash] = Comission(minimumReferralCount, referrerRate, refereeRate);
}
function addNewReferralRecord(bytes32 referrerNodeHash) external override onlyController {
referralCount[referrerNodeHash] += 1;
emit NewReferralRecord(referrerNodeHash);
}
function _getReferralCount(bytes32 referrerNodeHash) internal view returns (uint256) {
return referralCount[referrerNodeHash];
}
function _getComissionChart(uint256 referralAmount)
internal
view
returns (
uint256,
uint256,
uint256
)
{
uint256 curLevel = 1;
uint256 referrerRate;
uint256 refereeRate;
uint256 level;
while (referralAmount >= comissionCharts[curLevel].minimumReferralCount && curLevel <= 10) {
referrerRate = comissionCharts[curLevel].referrer;
refereeRate = comissionCharts[curLevel].referee;
level = curLevel;
curLevel += 1;
}
return (level, referrerRate, refereeRate);
}
function getReferralDetails(bytes32 referrerNodeHash)
external
view
override
returns (
uint256,
uint256,
uint256,
uint256
)
{
uint256 referralNum = _getReferralCount(referrerNodeHash);
(uint256 level, uint256 referrerRate, uint256 refereeRate) = _getComissionChart(referralNum);
return (referralNum, level, referrerRate, refereeRate);
}
function setComissionChart(
uint256 level,
uint256 minimumAmount,
uint256 referrerRate,
uint256 refereeRate
) external onlyOwner validLevel(level) {
comissionCharts[level] = Comission(minimumAmount, referrerRate, refereeRate);
}
function deposit(address _referrer) external payable onlyController{
require(msg.value > 0, "Invalid amount");
referralBalance[_referrer] += msg.value;
emit depositRecord(_referrer, msg.value);
}
function withdraw() external nonReentrant{
uint256 amount = referralBalance[msg.sender];
require(amount > 0, "Insufficient balance");
referralBalance[msg.sender] = 0;
payable(msg.sender).transfer(amount);
emit withdrawRecord(msg.sender, amount);
}
function addController(address controller) external override onlyOwner {
controllers[controller] = true;
emit ControllerAdded(controller);
}
function removeController(address controller) external override onlyOwner {
controllers[controller] = false;
emit ControllerRemoved(controller);
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
interface IReferralHub {
event ControllerAdded(address indexed controller);
event ControllerRemoved(address indexed controller);
event NewReferralRecord(bytes32 indexed referralNodeHash);
event depositRecord(address indexed addr, uint256 amount);
event withdrawRecord(address indexed addr, uint256 amount);
//Authorises a controller, who can issue a gift card.
function addController(address controller) external;
// Revoke controller permission for an address.
function removeController(address controller) external;
//check if a domain name is eligible for referral program
function isReferralEligible(
bytes32 nodeHash
) external view returns (bool, address);
//add a referral count for a given referrer
function addNewReferralRecord(bytes32 referrerNodeHash) external;
//get a domain's referral count, referral comission and referee comission
function getReferralDetails(bytes32 referrerNodeHash)
external
view
returns (
uint256,
uint256,
uint256,
uint256
);
//set partner comission chart
function setPartnerComissionChart(
string calldata name,
string calldata tld,
uint256 minimumReferralCount,
uint256 referrerComission,
uint256 refereeComission
) external;
function getReferralCommisionFee(uint256 price, bytes32 nodeHash) external view returns (uint256, uint256);
function deposit(address _referrer) external payable;
function withdraw() external;
}pragma solidity >=0.8.4;
interface ARBID {
// Logged when the owner of a node assigns a new owner to a subnode.
event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner);
// Logged when the owner of a node transfers ownership to a new account.
event Transfer(bytes32 indexed node, address owner);
// Logged when the resolver for a node changes.
event NewResolver(bytes32 indexed node, address resolver);
// Logged when the TTL of a node changes
event NewTTL(bytes32 indexed node, uint64 ttl);
// Logged when an operator is added or removed.
event ApprovalForAll(
address indexed owner,
address indexed operator,
bool approved
);
function setRecord(
bytes32 node,
address owner,
address resolver,
uint64 ttl
) external;
function setSubnodeRecord(
bytes32 node,
bytes32 label,
address owner,
address resolver,
uint64 ttl
) external;
function setSubnodeOwner(
bytes32 node,
bytes32 label,
address owner
) external returns (bytes32);
function setResolver(bytes32 node, address resolver) external;
function setOwner(bytes32 node, address owner) external;
function setTTL(bytes32 node, uint64 ttl) external;
function setApprovalForAll(address operator, bool approved) external;
function owner(bytes32 node) external view returns (address);
function resolver(bytes32 node) external view returns (address);
function ttl(bytes32 node) external view returns (uint64);
function recordExists(bytes32 node) external view returns (bool);
function isApprovedForAll(address owner, address operator)
external
view
returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
import "../ResolverBase.sol";
import "./IAddrResolver.sol";
import "./IAddressResolver.sol";
abstract contract AddrResolver is IAddrResolver, IAddressResolver, ResolverBase {
uint256 constant private COIN_TYPE_ARB1 = 2147525809;
uint256 constant private COIN_TYPE_ARB_NOVA = 2147525809;
mapping(bytes32=>mapping(uint=>bytes)) _addresses;
/**
* Sets the address associated with an ENS node.
* May only be called by the owner of that node in the ENS registry.
* @param node The node to update.
* @param a The address to set.
*/
function setAddr(bytes32 node, address a) virtual external authorised(node) {
setAddr(node, COIN_TYPE_ARB1, addressToBytes(a));
}
function setAddr(bytes32 node, uint coinType, address a) virtual external authorised(node) {
setAddr(node, coinType, addressToBytes(a));
}
/**
* Returns the address associated with an ENS node.
* @param node The ENS node to query.
* @return The associated address.
*/
function addr(bytes32 node) virtual override public view returns (address payable) {
bytes memory a = addr(node, COIN_TYPE_ARB1);
if(a.length == 0) {
return payable(0);
}
return bytesToAddress(a);
}
function setAddr(bytes32 node, uint coinType, bytes memory a) virtual public authorised(node) {
emit AddressChanged(node, coinType, a);
_addresses[node][coinType] = a;
}
function addr(bytes32 node, uint coinType) virtual override public view returns(bytes memory) {
return _addresses[node][coinType];
}
function supportsInterface(bytes4 interfaceID) virtual override public pure returns(bool) {
return interfaceID == type(IAddrResolver).interfaceId || interfaceID == type(IAddressResolver).interfaceId || super.supportsInterface(interfaceID);
}
function bytesToAddress(bytes memory b) internal pure returns(address payable a) {
require(b.length == 20);
assembly {
a := div(mload(add(b, 32)), exp(256, 12))
}
}
function addressToBytes(address a) internal pure returns(bytes memory b) {
b = new bytes(20);
assembly {
mstore(add(b, 32), mul(a, exp(256, 12)))
}
}
}pragma solidity >=0.8.4;
interface IReverseRegistrar {
function setDefaultResolver(address resolver) external;
function claim(address owner) external returns (bytes32);
function claimForAddr(
address addr,
address owner,
address resolver
) external returns (bytes32);
function claimWithResolver(address owner, address resolver)
external
returns (bytes32);
function setName(string memory name) external returns (bytes32);
function setNameForAddr(
address addr,
address owner,
address resolver,
string memory name
) external returns (bytes32);
function node(address addr) external pure returns (bytes32);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
import "../ResolverBase.sol";
import "./INameResolver.sol";
abstract contract NameResolver is INameResolver, ResolverBase {
mapping(bytes32=>string) names;
/**
* Sets the name associated with an ENS node, for reverse records.
* May only be called by the owner of that node in the ENS registry.
* @param node The node to update.
*/
function setName(bytes32 node, string calldata newName) virtual external authorised(node) {
names[node] = newName;
emit NameChanged(node, newName);
}
/**
* Returns the name associated with an ENS node, for reverse records.
* Defined in EIP181.
* @param node The ENS node to query.
* @return The associated name.
*/
function name(bytes32 node) virtual override external view returns (string memory) {
return names[node];
}
function supportsInterface(bytes4 interfaceID) virtual override public pure returns(bool) {
return interfaceID == type(INameResolver).interfaceId || super.supportsInterface(interfaceID);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
import "./SupportsInterface.sol";
abstract contract ResolverBase is SupportsInterface {
function isAuthorised(bytes32 node) internal virtual view returns(bool);
modifier authorised(bytes32 node) {
require(isAuthorised(node));
_;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
/**
* Interface for the new (multicoin) addr function.
*/
interface IAddressResolver {
event AddressChanged(bytes32 indexed node, uint coinType, bytes newAddress);
function addr(bytes32 node, uint coinType) external view returns(bytes memory);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
/**
* Interface for the legacy (ETH-only) addr function.
*/
interface IAddrResolver {
event AddrChanged(bytes32 indexed node, address a);
/**
* Returns the address associated with an ENS node.
* @param node The ENS node to query.
* @return The associated address.
*/
function addr(bytes32 node) external view returns (address payable);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "./ISupportsInterface.sol";
abstract contract SupportsInterface is ISupportsInterface {
function supportsInterface(bytes4 interfaceID) virtual override public pure returns(bool) {
return interfaceID == type(ISupportsInterface).interfaceId;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
interface ISupportsInterface {
function supportsInterface(bytes4 interfaceID) external pure returns(bool);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
interface INameResolver {
event NameChanged(bytes32 indexed node, string name);
/**
* Returns the name associated with an ENS node, for reverse records.
* Defined in EIP181.
* @param node The ENS node to query.
* @return The associated name.
*/
function name(bytes32 node) external view returns (string memory);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}{
"optimizer": {
"enabled": true,
"runs": 10000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract ARBID","name":"_arbid","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"}],"name":"ControllerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"}],"name":"ControllerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"referralNodeHash","type":"bytes32"}],"name":"NewReferralRecord","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositRecord","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawRecord","type":"event"},{"inputs":[{"internalType":"address","name":"controller","type":"address"}],"name":"addController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"referrerNodeHash","type":"bytes32"}],"name":"addNewReferralRecord","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"comissionCharts","outputs":[{"internalType":"uint256","name":"minimumReferralCount","type":"uint256"},{"internalType":"uint256","name":"referrer","type":"uint256"},{"internalType":"uint256","name":"referee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"controllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_referrer","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"tld","type":"string"}],"name":"getNodehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"nodeHash","type":"bytes32"}],"name":"getReferralCommisionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"referrerNodeHash","type":"bytes32"}],"name":"getReferralDetails","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getReverseNodehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"nodeHash","type":"bytes32"}],"name":"isPartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"nodeHash","type":"bytes32"}],"name":"isReferralEligible","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"partnerComissionCharts","outputs":[{"internalType":"uint256","name":"minimumReferralCount","type":"uint256"},{"internalType":"uint256","name":"referrer","type":"uint256"},{"internalType":"uint256","name":"referee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referralBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"referralCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"controller","type":"address"}],"name":"removeController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"minimumAmount","type":"uint256"},{"internalType":"uint256","name":"referrerRate","type":"uint256"},{"internalType":"uint256","name":"refereeRate","type":"uint256"}],"name":"setComissionChart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"tld","type":"string"},{"internalType":"uint256","name":"minimumReferralCount","type":"uint256"},{"internalType":"uint256","name":"referrerRate","type":"uint256"},{"internalType":"uint256","name":"refereeRate","type":"uint256"}],"name":"setPartnerComissionChart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a060405234801561001057600080fd5b50604051611c75380380611c7583398101604081905261002f91610605565b610038336105b5565b60018080556001600160a01b039091166080526040805160608082018352600080835260056020808501828152858701848152978452600380835295517fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c55517fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054d5595517fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054e5584518084018652601e8152600881880181815282880185815260028652878a5292517fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d55517fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4e5590517fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4f558551808501875260648152600b818901908152818801858152878652878a5291517fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495af55517fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495b055517fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495b155855180850187526102588152600f81890181815282890186815260048752888b5292517f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe9377246555517f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe937724665590517f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe9377246755865180860188526305f5e100808252818a01838152828a01878152958752888b5291517f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b4659422505590517f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b4659422515592517f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b465942252558651808601885283815280890182815281890186815260068752888b5291517fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f355517fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f455517fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f5558651808601885283815280890182815281890186815260078752888b5291517ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd255517ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd355517ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd45586518086018852838152808901828152818901868152938652878a5290517f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbe55517f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbf5590517f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fc0558551808501875282815280880182815281880185815260098652878a5291517f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb45855517f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb45955517f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb45a5585519384018652908352828601908152938201818152600a9091529190935291517f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d5355517f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d5455517f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d5555610635565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561061757600080fd5b81516001600160a01b038116811461062e57600080fd5b9392505050565b60805161161e61065760003960008181610581015261072f015261161e6000f3fe60806040526004361061016a5760003560e01c8063a7fc7a07116100cb578063e238c5c11161007f578063f340fa0111610059578063f340fa0114610495578063f6a74ed7146104a8578063fb32790c146104c857600080fd5b8063e238c5c114610435578063f1af64b314610455578063f2fde38b1461047557600080fd5b8063c9556276116100b0578063c9556276146103b8578063d18568bf146103e5578063da8c229e1461040557600080fd5b8063a7fc7a0714610363578063be64b0691461038357600080fd5b8063563bfecc11610122578063715018a611610107578063715018a6146102f9578063798af0521461030e5780638da5cb5b1461032e57600080fd5b8063563bfecc1461029e5780636cc6b278146102d957600080fd5b8063226334761161015357806322633476146101e45780633448d7771461023b5780633ccfd60b1461028757600080fd5b806304a3cf471461016f5780630fededb2146101b4575b600080fd5b34801561017b57600080fd5b5061018f61018a366004611314565b610504565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b3480156101c057600080fd5b506101d46101cf366004611314565b610545565b60405190151581526020016101ab565b3480156101f057600080fd5b506102206101ff366004611314565b60066020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101ab565b34801561024757600080fd5b5061025b610256366004611314565b61057a565b60408051921515835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101ab565b34801561029357600080fd5b5061029c6107d7565b005b3480156102aa57600080fd5b506102cb6102b936600461134f565b60056020526000908152604090205481565b6040519081526020016101ab565b3480156102e557600080fd5b5061029c6102f4366004611314565b610909565b34801561030557600080fd5b5061029c6109ba565b34801561031a57600080fd5b506102cb61032936600461134f565b610a2d565b34801561033a57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ab565b34801561036f57600080fd5b5061029c61037e36600461134f565b610a88565b34801561038f57600080fd5b506103a361039e366004611373565b610b66565b604080519283526020830191909152016101ab565b3480156103c457600080fd5b506102cb6103d3366004611314565b60046020526000908152604090205481565b3480156103f157600080fd5b5061029c610400366004611395565b610c02565b34801561041157600080fd5b506101d461042036600461134f565b60026020526000908152604090205460ff1681565b34801561044157600080fd5b506102cb610450366004611409565b610d04565b34801561046157600080fd5b5061029c610470366004611475565b610db6565b34801561048157600080fd5b5061029c61049036600461134f565b610e6a565b61029c6104a336600461134f565b610f66565b3480156104b457600080fd5b5061029c6104c336600461134f565b61109d565b3480156104d457600080fd5b506102206104e3366004611314565b60036020526000908152604090208054600182015460029092015490919083565b60008060008060006105228660009081526004602052604090205490565b9050600080600061053284611178565b959b919a50985093965092945050505050565b600081815260066020526040812060010154151580610574575060008281526006602052604090206002015415155b92915050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630178b8bf856040518263ffffffff1660e01b81526004016105da91815260200190565b602060405180830381865afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b91906114fc565b905073ffffffffffffffffffffffffffffffffffffffff81166106445750600093849350915050565b6040517f3b3b57de00000000000000000000000000000000000000000000000000000000815260048101859052819060009073ffffffffffffffffffffffffffffffffffffffff831690633b3b57de90602401602060405180830381865afa1580156106b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d891906114fc565b905060006106e582610a2d565b6040517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630178b8bf90602401602060405180830381865afa158015610776573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079a91906114fc565b905073ffffffffffffffffffffffffffffffffffffffff81166107c7575060009788975095505050505050565b5060019791965090945050505050565b6002600154141561082f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260015533600090815260056020526040902054806108915760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610826565b336000818152600560205260408082208290555183156108fc0291849190818181858888f193505050501580156108cc573d6000803e3d6000fd5b5060405181815233907ff4aef29cd1ceadbbf79c76c7ac42cc8c89d7f444f610fc5dbcd5915fb93adadd9060200160405180910390a25060018055565b3360009081526002602052604090205460ff166109685760405162461bcd60e51b815260206004820152601b60248201527f4e6f74206120617574686f72697a656420636f6e74726f6c6c657200000000006044820152606401610826565b6000818152600460205260408120805460019290610987908490611548565b909155505060405181907f4fbcef6f43e643981ef8dab0617ec510a86e855cea730fe729f77e9fc8e2f8e190600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b610a2b60006111e3565b565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2610a5983611258565b604080516020810193909352820152606001604051602081830303815290604052805190602001209050919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610aef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f0a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d74749190a250565b60008080806001610b7686610545565b15610b9e57600086815260066020526040902060018101546002909101549093509150610bbe565b600086815260046020526040902054610bb690611178565b909450925090505b60006064610bcc858a611560565b610bd6919061159d565b905060006064610be6858b611560565b610bf0919061159d565b919650909450505050505b9250929050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b8360018110158015610c7c5750600a8111155b610cc85760405162461bcd60e51b815260206004820152600d60248201527f496e76616c6964206c6576656c000000000000000000000000000000000000006044820152606401610826565b50604080516060810182529384526020808501938452848201928352600095865260039052909320915182555160018201559051600290910155565b6000808585604051610d179291906115d8565b60405190819003812091506000908190610d3490879087906115d8565b604051908190038120610d539291602001918252602082015260400190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209182012081840152828201949094528051808303820181526060909201905280519201919091209695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b6000610e2b88888888610d04565b60408051606081018252958652602080870195865286820194855260009283526006905290209351845550905160018301555160029091015550505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ed15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b73ffffffffffffffffffffffffffffffffffffffff8116610f5a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610826565b610f63816111e3565b50565b3360009081526002602052604090205460ff16610fc55760405162461bcd60e51b815260206004820152601b60248201527f4e6f74206120617574686f72697a656420636f6e74726f6c6c657200000000006044820152606401610826565b600034116110155760405162461bcd60e51b815260206004820152600e60248201527f496e76616c696420616d6f756e740000000000000000000000000000000000006044820152606401610826565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560205260408120805434929061104a908490611548565b909155505060405134815273ffffffffffffffffffffffffffffffffffffffff8216907f2f26cb6ed1a97b86fc76f998713666e9fafb52cb0fa33b0896c592901b601daf9060200160405180910390a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f33d83959be2573f5453b12eb9d43b3499bc57d96bd2f067ba44803c859e811139190a250565b6000808060018180805b60008481526003602052604090205488108015906111a15750600a8411155b156111d75750505060008181526003602052604090206001808201546002909201549083906111d09082611548565b9350611182565b97919650945092505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060285b8015611308577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a81536010909204917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a815360108304925061125d565b50506028600020919050565b60006020828403121561132657600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f6357600080fd5b60006020828403121561136157600080fd5b813561136c8161132d565b9392505050565b6000806040838503121561138657600080fd5b50508035926020909101359150565b600080600080608085870312156113ab57600080fd5b5050823594602084013594506040840135936060013592509050565b60008083601f8401126113d957600080fd5b50813567ffffffffffffffff8111156113f157600080fd5b602083019150836020828501011115610bfb57600080fd5b6000806000806040858703121561141f57600080fd5b843567ffffffffffffffff8082111561143757600080fd5b611443888389016113c7565b9096509450602087013591508082111561145c57600080fd5b50611469878288016113c7565b95989497509550505050565b600080600080600080600060a0888a03121561149057600080fd5b873567ffffffffffffffff808211156114a857600080fd5b6114b48b838c016113c7565b909950975060208a01359150808211156114cd57600080fd5b506114da8a828b016113c7565b989b979a50986040810135976060820135975060809091013595509350505050565b60006020828403121561150e57600080fd5b815161136c8161132d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561155b5761155b611519565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561159857611598611519565b500290565b6000826115d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818382376000910190815291905056fea2646970667358221220b5f8c6176893db1f05021a4af7280e5045ed6bab5c16553ebdd6bea3ccf1f3f464736f6c634300080c00330000000000000000000000004a067ee58e73ac5e4a43722e008dfdf65b2bf348
Deployed Bytecode
0x60806040526004361061016a5760003560e01c8063a7fc7a07116100cb578063e238c5c11161007f578063f340fa0111610059578063f340fa0114610495578063f6a74ed7146104a8578063fb32790c146104c857600080fd5b8063e238c5c114610435578063f1af64b314610455578063f2fde38b1461047557600080fd5b8063c9556276116100b0578063c9556276146103b8578063d18568bf146103e5578063da8c229e1461040557600080fd5b8063a7fc7a0714610363578063be64b0691461038357600080fd5b8063563bfecc11610122578063715018a611610107578063715018a6146102f9578063798af0521461030e5780638da5cb5b1461032e57600080fd5b8063563bfecc1461029e5780636cc6b278146102d957600080fd5b8063226334761161015357806322633476146101e45780633448d7771461023b5780633ccfd60b1461028757600080fd5b806304a3cf471461016f5780630fededb2146101b4575b600080fd5b34801561017b57600080fd5b5061018f61018a366004611314565b610504565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b3480156101c057600080fd5b506101d46101cf366004611314565b610545565b60405190151581526020016101ab565b3480156101f057600080fd5b506102206101ff366004611314565b60066020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101ab565b34801561024757600080fd5b5061025b610256366004611314565b61057a565b60408051921515835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101ab565b34801561029357600080fd5b5061029c6107d7565b005b3480156102aa57600080fd5b506102cb6102b936600461134f565b60056020526000908152604090205481565b6040519081526020016101ab565b3480156102e557600080fd5b5061029c6102f4366004611314565b610909565b34801561030557600080fd5b5061029c6109ba565b34801561031a57600080fd5b506102cb61032936600461134f565b610a2d565b34801561033a57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ab565b34801561036f57600080fd5b5061029c61037e36600461134f565b610a88565b34801561038f57600080fd5b506103a361039e366004611373565b610b66565b604080519283526020830191909152016101ab565b3480156103c457600080fd5b506102cb6103d3366004611314565b60046020526000908152604090205481565b3480156103f157600080fd5b5061029c610400366004611395565b610c02565b34801561041157600080fd5b506101d461042036600461134f565b60026020526000908152604090205460ff1681565b34801561044157600080fd5b506102cb610450366004611409565b610d04565b34801561046157600080fd5b5061029c610470366004611475565b610db6565b34801561048157600080fd5b5061029c61049036600461134f565b610e6a565b61029c6104a336600461134f565b610f66565b3480156104b457600080fd5b5061029c6104c336600461134f565b61109d565b3480156104d457600080fd5b506102206104e3366004611314565b60036020526000908152604090208054600182015460029092015490919083565b60008060008060006105228660009081526004602052604090205490565b9050600080600061053284611178565b959b919a50985093965092945050505050565b600081815260066020526040812060010154151580610574575060008281526006602052604090206002015415155b92915050565b60008060007f0000000000000000000000004a067ee58e73ac5e4a43722e008dfdf65b2bf34873ffffffffffffffffffffffffffffffffffffffff16630178b8bf856040518263ffffffff1660e01b81526004016105da91815260200190565b602060405180830381865afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b91906114fc565b905073ffffffffffffffffffffffffffffffffffffffff81166106445750600093849350915050565b6040517f3b3b57de00000000000000000000000000000000000000000000000000000000815260048101859052819060009073ffffffffffffffffffffffffffffffffffffffff831690633b3b57de90602401602060405180830381865afa1580156106b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d891906114fc565b905060006106e582610a2d565b6040517f0178b8bf0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004a067ee58e73ac5e4a43722e008dfdf65b2bf3481690630178b8bf90602401602060405180830381865afa158015610776573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079a91906114fc565b905073ffffffffffffffffffffffffffffffffffffffff81166107c7575060009788975095505050505050565b5060019791965090945050505050565b6002600154141561082f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260015533600090815260056020526040902054806108915760405162461bcd60e51b815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610826565b336000818152600560205260408082208290555183156108fc0291849190818181858888f193505050501580156108cc573d6000803e3d6000fd5b5060405181815233907ff4aef29cd1ceadbbf79c76c7ac42cc8c89d7f444f610fc5dbcd5915fb93adadd9060200160405180910390a25060018055565b3360009081526002602052604090205460ff166109685760405162461bcd60e51b815260206004820152601b60248201527f4e6f74206120617574686f72697a656420636f6e74726f6c6c657200000000006044820152606401610826565b6000818152600460205260408120805460019290610987908490611548565b909155505060405181907f4fbcef6f43e643981ef8dab0617ec510a86e855cea730fe729f77e9fc8e2f8e190600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b610a2b60006111e3565b565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2610a5983611258565b604080516020810193909352820152606001604051602081830303815290604052805190602001209050919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610aef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f0a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d74749190a250565b60008080806001610b7686610545565b15610b9e57600086815260066020526040902060018101546002909101549093509150610bbe565b600086815260046020526040902054610bb690611178565b909450925090505b60006064610bcc858a611560565b610bd6919061159d565b905060006064610be6858b611560565b610bf0919061159d565b919650909450505050505b9250929050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b8360018110158015610c7c5750600a8111155b610cc85760405162461bcd60e51b815260206004820152600d60248201527f496e76616c6964206c6576656c000000000000000000000000000000000000006044820152606401610826565b50604080516060810182529384526020808501938452848201928352600095865260039052909320915182555160018201559051600290910155565b6000808585604051610d179291906115d8565b60405190819003812091506000908190610d3490879087906115d8565b604051908190038120610d539291602001918252602082015260400190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209182012081840152828201949094528051808303820181526060909201905280519201919091209695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b6000610e2b88888888610d04565b60408051606081018252958652602080870195865286820194855260009283526006905290209351845550905160018301555160029091015550505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ed15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b73ffffffffffffffffffffffffffffffffffffffff8116610f5a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610826565b610f63816111e3565b50565b3360009081526002602052604090205460ff16610fc55760405162461bcd60e51b815260206004820152601b60248201527f4e6f74206120617574686f72697a656420636f6e74726f6c6c657200000000006044820152606401610826565b600034116110155760405162461bcd60e51b815260206004820152600e60248201527f496e76616c696420616d6f756e740000000000000000000000000000000000006044820152606401610826565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560205260408120805434929061104a908490611548565b909155505060405134815273ffffffffffffffffffffffffffffffffffffffff8216907f2f26cb6ed1a97b86fc76f998713666e9fafb52cb0fa33b0896c592901b601daf9060200160405180910390a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610826565b73ffffffffffffffffffffffffffffffffffffffff811660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f33d83959be2573f5453b12eb9d43b3499bc57d96bd2f067ba44803c859e811139190a250565b6000808060018180805b60008481526003602052604090205488108015906111a15750600a8411155b156111d75750505060008181526003602052604090206001808201546002909201549083906111d09082611548565b9350611182565b97919650945092505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060285b8015611308577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a81536010909204917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600f84161a815360108304925061125d565b50506028600020919050565b60006020828403121561132657600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f6357600080fd5b60006020828403121561136157600080fd5b813561136c8161132d565b9392505050565b6000806040838503121561138657600080fd5b50508035926020909101359150565b600080600080608085870312156113ab57600080fd5b5050823594602084013594506040840135936060013592509050565b60008083601f8401126113d957600080fd5b50813567ffffffffffffffff8111156113f157600080fd5b602083019150836020828501011115610bfb57600080fd5b6000806000806040858703121561141f57600080fd5b843567ffffffffffffffff8082111561143757600080fd5b611443888389016113c7565b9096509450602087013591508082111561145c57600080fd5b50611469878288016113c7565b95989497509550505050565b600080600080600080600060a0888a03121561149057600080fd5b873567ffffffffffffffff808211156114a857600080fd5b6114b48b838c016113c7565b909950975060208a01359150808211156114cd57600080fd5b506114da8a828b016113c7565b989b979a50986040810135976060820135975060809091013595509350505050565b60006020828403121561150e57600080fd5b815161136c8161132d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561155b5761155b611519565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561159857611598611519565b500290565b6000826115d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818382376000910190815291905056fea2646970667358221220b5f8c6176893db1f05021a4af7280e5045ed6bab5c16553ebdd6bea3ccf1f3f464736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004a067ee58e73ac5e4a43722e008dfdf65b2bf348
-----Decoded View---------------
Arg [0] : _arbid (address): 0x4a067EE58e73ac5E4a43722E008DFdf65B2bF348
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004a067ee58e73ac5e4a43722e008dfdf65b2bf348
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ARB | 100.00% | $3,007.76 | 9.6579 | $29,048.67 |
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.