Cross-Chain Transactions
Loading...
Loading
Contract Name:
RageDepot
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import {ReentrancyGuard} from "./ReentrancyGuard.sol";
import {IERC20} from "./IERC20.sol";
import {IRageChaosEngine} from "./IRageChaosEngine.sol";
import {RageStructs} from "./RageStructs.sol";
/**
* RageDepot
*
* Central depot that holds RAGE tokens on behalf of multiple other contracts
* Each registered contract has an attributed RAGE allowance that can only be increased, never decreased.
* Registered contracts can request transfers of RAGE to recipients up to their attributed amount.
* Adding or removing contracts requires both RCE owners to nominate the same address.
* The automator can increase a registered contract's attribution up to the unallocated balance.
*/
contract RageDepot is ReentrancyGuard {
// constant
IRageChaosEngine private constant RAGE_CHAOS_ENGINE = IRageChaosEngine(0x4C15F778Ab59F25D5dFD2dD508236a25eD2813fe);
IERC20 private constant RAGE = IERC20(0xc0df50143EA93AeC63e38A6ED4E92B378079eA15);
uint256 private constant VERSION = 1;
address private constant MULTISIG = 0x507fbdE39ba40DA4Fc79426AD5E3C64944fE43d4;
// state
address[] private contracts; // list of registered contract addresses
mapping(address => RageStructs.DepotContract) private CONTRACTS_MAP; // mapping for all registered contracts
RageStructs.DepotState private STATE;
// events
event ContractNominatedForAdd(address indexed owner, address indexed nominee);
event ContractAdded(address indexed caller);
event ContractNominatedForRemove(address indexed owner, address indexed nominee);
event ContractRemoved(address indexed caller, uint256 attributed);
event AttributionIncreased(address indexed caller, uint256 added, uint256 newTotal);
event RageTransferred(address indexed caller, address indexed recipient, uint256 amount);
event RageWithdrawn(uint256 amount);
// modifier
modifier onlyAutomator() {
require(msg.sender == RAGE_CHAOS_ENGINE.getAutomator(), "unauthorized");
_;
}
modifier onlyOwner() {
(address owner1, address owner2) = getOwners();
require(msg.sender == owner1 || msg.sender == owner2,"unauthorized");
_;
}
modifier onlyRegisteredContract() {
require(CONTRACTS_MAP[msg.sender].wallet != address(0), "invalidCaller");
_;
}
// withdrawEth
function withdrawEth() external nonReentrant onlyAutomator {
uint256 balance = address(this).balance;
require(balance > 0, "noEthBalance");
(bool success, ) = payable(MULTISIG).call{value: balance}("");
require(success, "ethTransferFailed");
}
// withdrawRage
// withdraws all unallocated rage to the multisig
function withdrawRage() external nonReentrant onlyAutomator {
uint256 amount = getUnallocated();
require(amount > 0, "noUnallocatedRage");
require(RAGE.transfer(MULTISIG, amount), "transferFailed");
emit RageWithdrawn(amount);
}
// withdrawToken
// rage cannot be withdraw from this function
function withdrawToken(address tokenAdr) external nonReentrant onlyAutomator {
require(tokenAdr != address(RAGE), "cannotWithdrawRage");
IERC20 token = IERC20(tokenAdr);
uint256 balance = token.balanceOf(address(this));
require(balance > 0, "noTokenBalance");
require(token.transfer(MULTISIG, balance), "transferFailed");
}
// addContract
// owner nominates a contract to be added as a registered contract
// when both owners nominate the same address, the contract is registered
function addContract(address caller) external nonReentrant onlyOwner {
require(caller != address(0), "zeroAddress");
require(CONTRACTS_MAP[caller].wallet == address(0), "alreadyRegistered");
(address owner1,) = getOwners();
if (msg.sender == owner1) {
STATE.addNominee1 = caller;
} else {
STATE.addNominee2 = caller;
}
emit ContractNominatedForAdd(msg.sender, caller);
// if both owners nominated the same address, register it
if (STATE.addNominee1 != address(0) && STATE.addNominee1 == STATE.addNominee2) {
CONTRACTS_MAP[caller].wallet = caller;
contracts.push(caller);
// reset nominations
STATE.addNominee1 = address(0);
STATE.addNominee2 = address(0);
emit ContractAdded(caller);
}
}
// removeContract
// owner nominates a contract to be removed
// when both owners nominate the same address, the contract is deregistered and its attribution freed
function removeContract(address caller) external nonReentrant onlyOwner {
require(CONTRACTS_MAP[caller].wallet != address(0), "invalidCaller");
(address owner1,) = getOwners();
if (msg.sender == owner1) {
STATE.removeNominee1 = caller;
} else {
STATE.removeNominee2 = caller;
}
emit ContractNominatedForRemove(msg.sender, caller);
// if both owners nominated the same address, remove it
if (STATE.removeNominee1 != address(0) && STATE.removeNominee1 == STATE.removeNominee2) {
uint256 attributed = CONTRACTS_MAP[caller].attributed;
STATE.totalAttributed -= attributed;
CONTRACTS_MAP[caller].wallet = address(0);
CONTRACTS_MAP[caller].attributed = 0;
CONTRACTS_MAP[caller].transferred = 0;
CONTRACTS_MAP[caller].available = 0;
CONTRACTS_MAP[caller].transferCount = 0;
// remove from contracts array (swap with last element)
for (uint256 i = 0; i < contracts.length; i++) {
if (contracts[i] == caller) {
contracts[i] = contracts[contracts.length - 1];
contracts.pop();
break;
}
}
// reset nominations
STATE.removeNominee1 = address(0);
STATE.removeNominee2 = address(0);
emit ContractRemoved(caller, attributed);
}
}
// increaseAttribution
// add more rage to a registered contract's allowance
function increaseAttribution(address caller, uint256 amount) external nonReentrant onlyAutomator {
require(CONTRACTS_MAP[caller].wallet != address(0), "invalidCaller");
require(amount > 0, "zeroAmount");
require(amount <= getUnallocated(), "exceedsUnallocated");
CONTRACTS_MAP[caller].attributed += amount;
CONTRACTS_MAP[caller].available = CONTRACTS_MAP[caller].attributed - CONTRACTS_MAP[caller].transferred;
STATE.totalAttributed += amount;
emit AttributionIncreased(caller, amount, CONTRACTS_MAP[caller].attributed);
}
// requestTransfer
// registered contract requests rage to be sent to a recipient
function requestTransfer(address recipient, uint256 amount) external nonReentrant onlyRegisteredContract returns (bool) {
require(recipient != address(0), "zeroRecipient");
require(amount > 0, "zeroAmount");
uint256 available = CONTRACTS_MAP[msg.sender].attributed - CONTRACTS_MAP[msg.sender].transferred;
require(amount <= available, "insufficientAttribution");
uint256 rageBalance = getRageBalance();
require(amount <= rageBalance, "insufficientRageBalance");
CONTRACTS_MAP[msg.sender].transferred += amount;
CONTRACTS_MAP[msg.sender].available = CONTRACTS_MAP[msg.sender].attributed - CONTRACTS_MAP[msg.sender].transferred;
CONTRACTS_MAP[msg.sender].transferCount += 1;
STATE.transferCount += 1;
STATE.transferTotal += amount;
require(RAGE.transfer(recipient, amount), "transferFailed");
emit RageTransferred(msg.sender, recipient, amount);
return true;
}
// getAvailableFor
// returns how much rage is currently available for a specific registered contract
function getAvailableFor(address caller) external view returns (uint256) {
require(CONTRACTS_MAP[caller].wallet != address(0), "contractNotRegistered");
return CONTRACTS_MAP[caller].attributed - CONTRACTS_MAP[caller].transferred;
}
// getOwners
function getOwners() internal view returns (address, address) {
return RAGE_CHAOS_ENGINE.getOwners();
}
// getUnallocated
// returns rage balance not attributed to any registered contract
function getUnallocated() internal view returns (uint256) {
uint256 totalTransferred;
for (uint256 i = 0; i < contracts.length; i++) {
totalTransferred += CONTRACTS_MAP[contracts[i]].transferred;
}
uint256 rageBalance = getRageBalance();
uint256 totalAvailable = STATE.totalAttributed - totalTransferred;
return rageBalance > totalAvailable ? rageBalance - totalAvailable : 0;
}
// getRageBalance
function getRageBalance() internal view returns (uint256) {
return RAGE.balanceOf(address(this));
}
// getRegisteredContracts
// returns the full DepotContract struct for every registered contract
function getRegisteredContracts() external view returns (RageStructs.DepotContract[] memory) {
uint256 count = contracts.length;
RageStructs.DepotContract[] memory result = new RageStructs.DepotContract[](count);
for (uint256 i = 0; i < count; i++) {
result[i] = CONTRACTS_MAP[contracts[i]];
}
return result;
}
// getState
// return the state of the contract
function getState() external view returns (RageStructs.DepotGetState memory) {
uint256 callerCount = contracts.length;
(address owner1, address owner2) = getOwners();
uint256 totalTransferredSum;
for (uint256 i = 0; i < callerCount; i++) {
address caller = contracts[i];
totalTransferredSum += CONTRACTS_MAP[caller].transferred;
}
uint256 totalAvailable = STATE.totalAttributed - totalTransferredSum;
return RageStructs.DepotGetState({
version: VERSION,
automator: RAGE_CHAOS_ENGINE.getAutomator(),
owner1: owner1,
owner2: owner2,
state: STATE,
contractCount: callerCount,
contracts: contracts,
rageBalance: getRageBalance(),
totalTransferred: totalTransferredSum,
totalAvailable: totalAvailable,
unallocated: getUnallocated()
});
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.26;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import {RageStructs} from "./RageStructs.sol";
interface IRageChaosEngine {
// Events
event LockNft(uint256 nftId);
event AutomatorSet(address automator);
event RageBuyingProtocolProposed(address indexed proposer, address indexed pendingRbp);
event RageBuyingProtocolSet(address indexed newRbp);
event OwnershipTransferred(address indexed oldOwner, address indexed newOwner);
event SupplyRequested(uint256 percent);
event SupplyBurned(uint256 amount);
event YearlyAllowanceRequested(address indexed requester, address indexed recipient, uint256 amount, uint256 activeSupply);
event RageTransferred(address recipient, uint256 amount);
event ConfigChanged(uint256 stackRage, uint256 stackHestia, uint256 boostRage, uint128 crushDecrease, bool crushBuy, uint256 burstRage, uint256 burstLoop, uint256 slippage, address podAddress, address sideAddress1, address sideAddress2);
event PoolBoosted(uint256 rageIncrease, uint256 usdcIncrease);
event UnderlyingStacked(uint256 rageSold, uint256 pHestia, uint256 pCircle);
event RageCrushed(uint256 rageBurned, uint256 usdcBought);
event RageBursted(uint256 rageCollected, uint256 usdcCollected);
// Withdrawal functions
function withdrawEth() external;
function withdrawToken(address tokenAdr) external;
// NFT management
function lockNFT() external;
// Ownership and access control
function transferOwnership(address newOwner) external;
function setRageBuyingProtocol(address newRbp) external;
function setAutomator(address automator) external;
// RAGE token operations
function requestSupply(uint256 percent) external;
function burnSupply(uint256 amount) external;
function requestYearlyAllowance(uint256 percent) external;
function transferRage(address recipient, uint256 amount) external;
// Core functionality
function stackUnderlying() external;
function poolBoost() external;
function rageCrush() external;
function rageBurst() external;
// View functions
function getMultisig() external pure returns (address);
function getAutomator() external view returns (address);
function getOwners() external view returns (address owner1, address owner2);
function getRageBuyingProtocol() external view returns (address);
function getActiveSupply() external view returns (uint256);
function getRageInNft() external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
library RageStructs {
// OtcConfig: configurable parameters for the OTC contract, adjustable by the automator
struct OtcConfig {
bool active; // whether the OTC contract is accepting trades
bool allowHestia; // whether HESTIA is accepted as input token
bool allowCircle; // whether CIRCLE is accepted as input token
uint256 allowUsdcMinBonus; // minimum bonus % required to allow USDC (0 = always allowed, >bonusMax = disabled)
uint256 percentMultisig; // maximum percentage of input tokens sent to multisig (0-100, whole percents); effective value may be reduced when bonus is high to ensure percentMultisig + bonus never exceeds 100
uint256 buyType; // which asset to buy when input is USDC: 1 = HESTIA, 2 = CIRCLE
uint256 bonusInterval; // time interval for the bonus to automatically increment by 1 (min 1 hour, max 1 day, default 12 hours)
uint256 bonusMin; // minimum amount of bonus in percent (min 0, max 5, default 0)
uint256 bonusMax; // maximum amount of bonus in percent (min 10, max 50, default 25)
uint256 minUsdcValue; // minimum USDC equivalent value required for a trade (6 decimals, e.g. 10e6 = $10)
uint256 slippage; // max slippage for pool swaps in basis points (0-2500, e.g. 500 = 5%)
uint32 twap; // TWAP duration in seconds for oracle price calculations (1-3600)
}
// OtcState: internal state tracking for the OTC contract
struct OtcState {
uint256 txCount; // total number of OTC trades executed
uint256 batchTxCount; // number of OTC trades since last setConfigs call
uint256 txHestiaCount; // number of OTC trades with HESTIA as input
uint256 txCircleCount; // number of OTC trades with CIRCLE as input
uint256 txUsdcCount; // number of OTC trades with USDC as input
uint256 inputValue; // cumulative USDC value of all input tokens across all trades
uint256 inputValueForMultisig; // cumulative USDC value of input portions sent to multisig
uint256 inputValueForBacking; // cumulative USDC value of input portions converted to pTokens for backing
uint256 hestiaAmount; // cumulative HESTIA tokens received as input
uint256 circleAmount; // cumulative CIRCLE tokens received as input
uint256 usdcAmount; // cumulative USDC tokens received as input
uint256 rageOutputAmount; // cumulative RAGE tokens sent to users
uint256 rageOutputValue; // cumulative USDC value of all RAGE tokens sent to users
uint256 nextConfigTime; // earliest timestamp when config can be changed again
}
// OtcGetState: complete read-only snapshot of the OTC contract returned by getState()
struct OtcGetState {
uint256 version; // contract version identifier
address rageChaosEngine; // address of the RageChaosEngine contract
address rageSwapper; // address of the RageSwapper contract used for token swaps
address rageOracle; // address of the RageOracle contract used for price lookups
address rageDepot; // address of the RageDepot contract where the rage balance is stored
address multisig; // multisig wallet that receives the percentMultisig portion of input
address automator; // current automator address with config privileges
uint256 rageBalance; // RAGE token balance held by this contract, available for OTC trades
bool active; // True if contract active config is true, and if rage balance > 1 token
uint256 minHestia; // Minimum Hestia amount for the investor to submit
uint256 maxHestia; // Maximum Hestia amount for the investor to submit (takes into account rageBalance value)
uint256 minCircle; // Minimum Circle amount for the investor to submit
uint256 maxCircle; // Maximum Circle amount for the investor to submit (takes into account rageBalance value)
uint256 minUsdc; // Minimum USDC amount for the investor to submit (is equal to config minUsdcValue)
uint256 maxUsdc; // Maximum USDC amount for the investor to submit (takes into account rageBalance value)
uint256 ragePrice; // Price of 1 Rage token
uint256 hestiaPrice; // Price of 1 Hestia token
uint256 circlePrice; // Price of 1 Circle token
uint256 bonusCurrent; // Current amount of the bonus in percent
uint256 bonusNextIncrement; // Timestamp of the next bonus increment
uint256 bonusLastReset; // Timestamp of the last bonus reset
RageStructs.OtcOverview lastTx; // last transaction
RageStructs.OtcState state; // current internal state
RageStructs.OtcConfig config; // current configuration
}
// OtcOverview: preview of an OTC trade returned by otcOverview(), used by both frontend and otc()
struct OtcOverview {
uint256 timestamp; // timestamp of the transaction
address wallet; // wallet who initiated the transaction
bool canOtc; // true if all conditions are met for the trade to execute
bool userBalance; // true if the wallet holds enough of the input token
bool contractBalance; // true if the contract holds enough RAGE for the output
uint256 inputAmount; // amount of input tokens the user is sending
uint256 inputType; // input token type: 1 = HESTIA, 2 = CIRCLE, 3 = USDC
uint256 inputValue; // usdc value of input token amount
uint256 outputAmount; // total RAGE tokens the user will receive (base + bonus)
uint256 outputBonus; // portion of outputAmount that comes from the bonus
uint256 outputValue; // usdc value of output rage amount
uint256 inputForMultisig; // portion of inputAmount sent to multisig
uint256 inputValueForMultisig; // usdc value of the input portion sent to multisig
uint256 inputForBacking; // portion of inputAmount converted to pTokens and sent to RBP as backing
uint256 inputValueForBacking; // usdc value of the input portion converted to pTokens for backing
uint256 bonus; // bonus percentage of extra RAGE value given to the user (whole percents)
uint256 percentMultisig; // percentage of input tokens sent to multisig (0-100, whole percents)
uint256 rageBalance; // current rage balance in the contract
}
// DepotContract: per-caller attribution snapshot
struct DepotContract {
address wallet; // registered caller contract address
uint256 attributed; // total rage attributed to this caller
uint256 transferred; // total rage already transferred by this caller
uint256 available; // rage still available (attributed - transferred)
uint256 transferCount; // number of times tokens where transfered for this caller
}
// Depot state for the contract
struct DepotState {
uint256 totalAttributed; // sum of all attributed amounts
uint256 transferCount; // number of transfer tokens transactions for all contract
uint256 transferTotal; // number of rage tokens transfered for all contract
address addNominee1; // address nominated by owner1 for add
address addNominee2; // address nominated by owner2 for add
address removeNominee1; // address nominated by owner1 for remove
address removeNominee2; // address nominated by owner2 for remove
}
// DepotGetState: complete read-only snapshot of the Depot contract
struct DepotGetState {
uint256 version; // contract version identifier
address automator; // current automator address
address owner1; // RCE owner1
address owner2; // RCE owner2
DepotState state; // full depot state
address[] contracts; // array of all registered contracts addresses
uint256 contractCount; // number of contracts currently active within the depot contract
uint256 rageBalance; // actual RAGE balance held by the contract
uint256 totalTransferred; // sum of all transferred amounts across callers
uint256 totalAvailable; // totalAttributed - totalTransferred
uint256 unallocated; // rage in contract not attributed to any caller
}
}// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;
/// @notice Gas optimized reentrancy protection for smart contracts.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/ReentrancyGuard.sol)
/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol)
abstract contract ReentrancyGuard {
uint256 private locked = 1;
modifier nonReentrant() virtual {
require(locked == 1, "REENTRANCY");
locked = 2;
_;
locked = 1;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"viaIR": true,
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"added","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotal","type":"uint256"}],"name":"AttributionIncreased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"}],"name":"ContractAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"nominee","type":"address"}],"name":"ContractNominatedForAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"nominee","type":"address"}],"name":"ContractNominatedForRemove","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"attributed","type":"uint256"}],"name":"ContractRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RageTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RageWithdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"addContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"getAvailableFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRegisteredContracts","outputs":[{"components":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"attributed","type":"uint256"},{"internalType":"uint256","name":"transferred","type":"uint256"},{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"transferCount","type":"uint256"}],"internalType":"struct RageStructs.DepotContract[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getState","outputs":[{"components":[{"internalType":"uint256","name":"version","type":"uint256"},{"internalType":"address","name":"automator","type":"address"},{"internalType":"address","name":"owner1","type":"address"},{"internalType":"address","name":"owner2","type":"address"},{"components":[{"internalType":"uint256","name":"totalAttributed","type":"uint256"},{"internalType":"uint256","name":"transferCount","type":"uint256"},{"internalType":"uint256","name":"transferTotal","type":"uint256"},{"internalType":"address","name":"addNominee1","type":"address"},{"internalType":"address","name":"addNominee2","type":"address"},{"internalType":"address","name":"removeNominee1","type":"address"},{"internalType":"address","name":"removeNominee2","type":"address"}],"internalType":"struct RageStructs.DepotState","name":"state","type":"tuple"},{"internalType":"address[]","name":"contracts","type":"address[]"},{"internalType":"uint256","name":"contractCount","type":"uint256"},{"internalType":"uint256","name":"rageBalance","type":"uint256"},{"internalType":"uint256","name":"totalTransferred","type":"uint256"},{"internalType":"uint256","name":"totalAvailable","type":"uint256"},{"internalType":"uint256","name":"unallocated","type":"uint256"}],"internalType":"struct RageStructs.DepotGetState","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseAttribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"removeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"requestTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawRage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdr","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60808060405234601a57600160005561195290816100208239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c9081631865c57d146111a9575080633497f26d14610fd05780635f539d6914610dc75780638947606914610ba757806395877f3214610a24578063a0ef91df14610887578063aa5fc794146105f1578063c375c2ef146102fd578063ce858a2f146101385763fa1fe82e1461008d57600080fd5b34610133576020366003190112610133576001600160a01b036100ae61157b565b166000818152600260205260409020546001600160a01b0316156100f657600090815260026020818152604090922060018101549101546100ee91611646565b604051908152f35b60405162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9858dd139bdd149959da5cdd195c9959605a1b6044820152606490fd5b600080fd5b3461013357600036600319011261013357610157600160005414611667565b6002600055604051632b74522360e21b8152602081600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa801561027d576000906102c2575b6101a991506001600160a01b031633146116a0565b6101b16118c7565b80156102895760405163a9059cbb60e01b815273507fbde39ba40da4fc79426ad5e3c64944fe43d460048201526024810182905290602082604481600073c0df50143ea93aec63e38a6ed4e92b378079ea155af190811561027d576102426020927f4e755e40075a6548a33ee2cdb7b97121dacef60b22fd0fc346698c1923060ecf94600091610250575b50611768565b604051908152a16001600055005b6102709150843d8611610276575b61026881836115e6565b810190611750565b8561023c565b503d61025e565b6040513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260116024820152706e6f556e616c6c6f63617465645261676560781b6044820152606490fd5b506020813d6020116102f5575b816102dc602093836115e6565b81010312610133576102f06101a991611653565b610194565b3d91506102cf565b346101335760203660031901126101335761031661157b565b610324600160005414611667565b600260005561034d6103346117d1565b9060018060a01b031633149081156105de575b506116a0565b6001600160a01b039081166000818152600260205260409020549091610375911615156116db565b61037d6117d1565b50336001600160a01b0391909116036105c757600880546001600160a01b031916821790555b80337f86a660b6a76f59127cc547658d390444318fa3f6bdc4cca310b935cb1755f6c6600080a36008546001600160a01b031680151590816105b2575b506103ed575b6001600055005b80600052600260205260016040600020015461040b81600354611646565b60039081556000838152600260208190526040822080546001600160a01b03191681556001810183905590810182905591820181905560049091018190555b6001549081811015610587578361046082611608565b905460039190911b1c6001600160a01b03161461048157600191500161044a565b6000198201918211610571576104b461049c6104d893611608565b905460039190911b1c6001600160a01b031691611608565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b600154801561055b577f1941e29a0e9f15492f0bb97f82d955da3462e09f3981db178c595b0b2005ba62916020916000190161051381611608565b81549060018060a01b039060031b1b191690556001555b6001600160601b0360a01b600854166008556001600160601b0360a01b60095416600955604051908152a2806103e6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b505060207f1941e29a0e9f15492f0bb97f82d955da3462e09f3981db178c595b0b2005ba629161052a565b6009546001600160a01b0316149050826103e0565b600980546001600160a01b031916821790556103a3565b6001600160a01b03163314905083610347565b346101335760403660031901126101335761060a61157b565b6024359061061c600160005414611667565b600260005533600052600260205261064260018060a01b036040600020541615156116db565b6001600160a01b03169081156108525761065d811515611717565b336000908152600260208190526040909120600181015491015461068091611646565b811161080d5761068e611856565b81116107c85733600052600260205260026040600020016106b0828254611639565b905533600090815260026020819052604090912060018101549101546106d591611646565b3360009081526002602052604090206003810191909155600401805460018101919082106105715755600454600181018091116105715760045561071b81600554611639565b60055560405163a9059cbb60e01b8152826004820152816024820152602081604481600073c0df50143ea93aec63e38a6ed4e92b378079ea155af1801561027d5761076d916000916107a95750611768565b6040519081527f6294c286530f77866920654b6752dcf694867dbc1991f4cf426324380db5149760203392a36001600055602060405160018152f35b6107c2915060203d6020116102765761026881836115e6565b8461023c565b60405162461bcd60e51b815260206004820152601760248201527f696e73756666696369656e745261676542616c616e63650000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f696e73756666696369656e744174747269627574696f6e0000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c1e995c9bd49958da5c1a595b9d609a1b6044820152606490fd5b34610133576000366003190112610133576108a6600160005414611667565b6002600055604051632b74522360e21b8152602081600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa801561027d576000906109e9575b6108f891506001600160a01b031633146116a0565b4780156109b55760008080809373507fbde39ba40da4fc79426ad5e3c64944fe43d45af13d156109b0573d67ffffffffffffffff811161099a576040519061094a601f8201601f1916602001836115e6565b8152600060203d92013e5b15610961576001600055005b60405162461bcd60e51b8152602060048201526011602482015270195d1a151c985b9cd9995c91985a5b1959607a1b6044820152606490fd5b634e487b7160e01b600052604160045260246000fd5b610955565b60405162461bcd60e51b815260206004820152600c60248201526b6e6f45746842616c616e636560a01b6044820152606490fd5b506020813d602011610a1c575b81610a03602093836115e6565b8101031261013357610a176108f891611653565b6108e3565b3d91506109f6565b3461013357600036600319011261013357600154610a41816117a5565b90610a4f60405192836115e6565b808252601f19610a5e826117a5565b0160005b818110610b6d57505060005b818110610aec578260405180916020820160208352815180915260206040840192019060005b818110610aa2575050500390f35b91935091602060a0600192608087518580851b0381511683528481015185840152604081015160408401526060810151606084015201516080820152019401910191849392610a94565b80610af8600192611608565b838060a01b0391549060031b1c1660005260026020526040600020600460405191610b22836115ca565b848060a01b038154168352848101546020840152600281015460408401526003810154606084015201546080820152610b5b82866117bd565b52610b6681856117bd565b5001610a6e565b602090604051610b7c816115ca565b6000815260008382015260006040820152600060608201526000608082015282828701015201610a62565b3461013357602036600319011261013357610bc061157b565b610bce600160005414611667565b6002600055604051632b74522360e21b8152602081600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa801561027d57600090610d8c575b610c2091506001600160a01b031633146116a0565b6001600160a01b031673c0df50143ea93aec63e38a6ed4e92b378079ea158114610d52576040516370a0823160e01b8152306004820152602081602481855afa90811561027d57600091610d1d575b508015610ce7576000916044602092604051948593849263a9059cbb60e01b845273507fbde39ba40da4fc79426ad5e3c64944fe43d4600485015260248401525af1801561027d576103e691600091610cc85750611768565b610ce1915060203d6020116102765761026881836115e6565b8261023c565b60405162461bcd60e51b815260206004820152600e60248201526d6e6f546f6b656e42616c616e636560901b6044820152606490fd5b906020823d602011610d4a575b81610d37602093836115e6565b81010312610d4757505182610c6f565b80fd5b3d9150610d2a565b60405162461bcd60e51b815260206004820152601260248201527163616e6e6f7457697468647261775261676560701b6044820152606490fd5b506020813d602011610dbf575b81610da6602093836115e6565b8101031261013357610dba610c2091611653565b610c0b565b3d9150610d99565b3461013357602036600319011261013357610de061157b565b610dee600160005414611667565b6002600055610dfe6103346117d1565b6001600160a01b038116908115610f9d576000828152600260205260409020546001600160a01b0316610f6457610e336117d1565b50336001600160a01b039190911603610f4d57600680546001600160a01b031916831790555b81337f0dee59e0fc9e5b8b2e79444ae8c52a5ea15014a1a971ad2b8749388536b55b0d600080a36006546001600160a01b03168015159081610f38575b50610ea2576001600055005b600082815260026020526040902080546001600160a01b03191683179055600154906801000000000000000082101561099a576104b4826001610ee89401600155611608565b6001600160601b0360a01b600654166006556001600160601b0360a01b600754166007557f89c66952b48f3e96bf1d8ba1b63189520fd988a6979b8b740bd5c5d8dc53e205600080a280806103e6565b6007546001600160a01b031614905083610e96565b600780546001600160a01b03191683179055610e59565b60405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e549959da5cdd195c9959607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a7a65726f4164647265737360a81b6044820152606490fd5b3461013357604036600319011261013357610fe961157b565b60243590610ffb600160005414611667565b6002600055604051632b74522360e21b8152602081600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa801561027d5760009061116e575b61104d91506001600160a01b031633146116a0565b6001600160a01b03908116600081815260026020526040902054909291611076911615156116db565b611081811515611717565b6110896118c7565b81116111345760407f39cede6754145420bb2d8ef283c60bcf5e3ca491badc6d85a30c9c6e429ae21a91836000526002602052600182600020016110ce828254611639565b90556000848152600260208190529083902060018101549101546110f191611646565b846000526002602052600383600020015561110e81600354611639565b600355836000526002602052600182600020015482519182526020820152a26001600055005b60405162461bcd60e51b8152602060048201526012602482015271195e18d959591cd55b985b1b1bd8d85d195960721b6044820152606490fd5b506020813d6020116111a1575b81611188602093836115e6565b810103126101335761119c61104d91611653565b611038565b3d915061117b565b3461013357600036600319011261013357610140816111c9600093611591565b8281528260208201528260408201528260608201526040516111ea816115ae565b8381528360208201528360408201528360608201528360808201528360a08201528360c08201526080820152606060a08201528260c08201528260e0820152826101008201528261012082015201526001546112446117d1565b916000805b82811061153f57506003549061125f8183611646565b9060405194632b74522360e21b8652602086600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa95861561027d57600096611503575b506112a3611856565b906112ac6118c7565b94604051986112ba8a611591565b60018a526001600160a01b0398891660208b019081529289166040808c019182529190991660608b019081529051929892916112f5836115ae565b82526004546020830152600554604083015260018060a01b0360065416606083015260018060a01b0360075416608083015260018060a01b036008541660a083015260018060a01b036009541660c083015260808a01918252604051926020848a8152016001600052847fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69160005b8c81106114e15750611398925003856115e6565b60a08b0193845260c08b0198895260e08b019485526101008b019586526101208b019687526101408b019788526040519960208b526102408b019b5160208c015260018060a01b0390511660408b015260018060a01b0390511660608a015260018060a01b03905116608089015251805160a0890152602081015160c0890152604081015160e089015260018060a01b0360608201511661010089015260018060a01b0360808201511661012089015260018060a01b0360a08201511661014089015260c060018060a01b0391015116610160880152519461022061018088015285518098526020610260880196016000985b808a106114be575050869750516101a0870152516101c0860152516101e085015251610200840152516102208301520390f35b81516001600160a01b03168852600199909901986020978801979091019061148b565b83546001600160a01b0316825260019384019388935060209092019101611384565b9095506020813d602011611537575b8161151f602093836115e6565b810103126101335761153090611653565b948761129a565b3d9150611512565b9061157460019161154f84611608565b848060a01b0391549060031b1c16600052600260205260026040600020015490611639565b9101611249565b600435906001600160a01b038216820361013357565b610160810190811067ffffffffffffffff82111761099a57604052565b60e0810190811067ffffffffffffffff82111761099a57604052565b60a0810190811067ffffffffffffffff82111761099a57604052565b90601f8019910116810190811067ffffffffffffffff82111761099a57604052565b60015481101561162357600160005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b9190820180921161057157565b9190820391821161057157565b51906001600160a01b038216820361013357565b1561166e57565b60405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b6044820152606490fd5b156116a757565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b156116e257565b60405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b221b0b63632b960991b6044820152606490fd5b1561171e57565b60405162461bcd60e51b815260206004820152600a6024820152691e995c9bd05b5bdd5b9d60b21b6044820152606490fd5b90816020910312610133575180151581036101335790565b1561176f57565b60405162461bcd60e51b815260206004820152600e60248201526d1d1c985b9cd9995c91985a5b195960921b6044820152606490fd5b67ffffffffffffffff811161099a5760051b60200190565b80518210156116235760209160051b010190565b6040805163a0e67e2b60e01b8152919082600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa91821561027d5760009060009361181257509190565b9250506040823d60401161184e575b8161182e604093836115e6565b810103126101335761184b602061184484611653565b9301611653565b90565b3d9150611821565b6040516370a0823160e01b815230600482015260208160248173c0df50143ea93aec63e38a6ed4e92b378079ea155afa90811561027d57600091611898575090565b90506020813d6020116118bf575b816118b3602093836115e6565b81010312610133575190565b3d91506118a6565b6000806001545b8082106119035750506118eb6118e2611856565b91600354611646565b808211156118fc5761184b91611646565b5050600090565b909161191460019161154f85611608565b9201906118ce56fea2646970667358221220785fa6bb24787e876f3683a0e4606b372fd8ac61b877899255309c0753e5799764736f6c634300081a0033
Deployed Bytecode
0x608080604052600436101561001357600080fd5b60003560e01c9081631865c57d146111a9575080633497f26d14610fd05780635f539d6914610dc75780638947606914610ba757806395877f3214610a24578063a0ef91df14610887578063aa5fc794146105f1578063c375c2ef146102fd578063ce858a2f146101385763fa1fe82e1461008d57600080fd5b34610133576020366003190112610133576001600160a01b036100ae61157b565b166000818152600260205260409020546001600160a01b0316156100f657600090815260026020818152604090922060018101549101546100ee91611646565b604051908152f35b60405162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9858dd139bdd149959da5cdd195c9959605a1b6044820152606490fd5b600080fd5b3461013357600036600319011261013357610157600160005414611667565b6002600055604051632b74522360e21b8152602081600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa801561027d576000906102c2575b6101a991506001600160a01b031633146116a0565b6101b16118c7565b80156102895760405163a9059cbb60e01b815273507fbde39ba40da4fc79426ad5e3c64944fe43d460048201526024810182905290602082604481600073c0df50143ea93aec63e38a6ed4e92b378079ea155af190811561027d576102426020927f4e755e40075a6548a33ee2cdb7b97121dacef60b22fd0fc346698c1923060ecf94600091610250575b50611768565b604051908152a16001600055005b6102709150843d8611610276575b61026881836115e6565b810190611750565b8561023c565b503d61025e565b6040513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260116024820152706e6f556e616c6c6f63617465645261676560781b6044820152606490fd5b506020813d6020116102f5575b816102dc602093836115e6565b81010312610133576102f06101a991611653565b610194565b3d91506102cf565b346101335760203660031901126101335761031661157b565b610324600160005414611667565b600260005561034d6103346117d1565b9060018060a01b031633149081156105de575b506116a0565b6001600160a01b039081166000818152600260205260409020549091610375911615156116db565b61037d6117d1565b50336001600160a01b0391909116036105c757600880546001600160a01b031916821790555b80337f86a660b6a76f59127cc547658d390444318fa3f6bdc4cca310b935cb1755f6c6600080a36008546001600160a01b031680151590816105b2575b506103ed575b6001600055005b80600052600260205260016040600020015461040b81600354611646565b60039081556000838152600260208190526040822080546001600160a01b03191681556001810183905590810182905591820181905560049091018190555b6001549081811015610587578361046082611608565b905460039190911b1c6001600160a01b03161461048157600191500161044a565b6000198201918211610571576104b461049c6104d893611608565b905460039190911b1c6001600160a01b031691611608565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b600154801561055b577f1941e29a0e9f15492f0bb97f82d955da3462e09f3981db178c595b0b2005ba62916020916000190161051381611608565b81549060018060a01b039060031b1b191690556001555b6001600160601b0360a01b600854166008556001600160601b0360a01b60095416600955604051908152a2806103e6565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b505060207f1941e29a0e9f15492f0bb97f82d955da3462e09f3981db178c595b0b2005ba629161052a565b6009546001600160a01b0316149050826103e0565b600980546001600160a01b031916821790556103a3565b6001600160a01b03163314905083610347565b346101335760403660031901126101335761060a61157b565b6024359061061c600160005414611667565b600260005533600052600260205261064260018060a01b036040600020541615156116db565b6001600160a01b03169081156108525761065d811515611717565b336000908152600260208190526040909120600181015491015461068091611646565b811161080d5761068e611856565b81116107c85733600052600260205260026040600020016106b0828254611639565b905533600090815260026020819052604090912060018101549101546106d591611646565b3360009081526002602052604090206003810191909155600401805460018101919082106105715755600454600181018091116105715760045561071b81600554611639565b60055560405163a9059cbb60e01b8152826004820152816024820152602081604481600073c0df50143ea93aec63e38a6ed4e92b378079ea155af1801561027d5761076d916000916107a95750611768565b6040519081527f6294c286530f77866920654b6752dcf694867dbc1991f4cf426324380db5149760203392a36001600055602060405160018152f35b6107c2915060203d6020116102765761026881836115e6565b8461023c565b60405162461bcd60e51b815260206004820152601760248201527f696e73756666696369656e745261676542616c616e63650000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f696e73756666696369656e744174747269627574696f6e0000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c1e995c9bd49958da5c1a595b9d609a1b6044820152606490fd5b34610133576000366003190112610133576108a6600160005414611667565b6002600055604051632b74522360e21b8152602081600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa801561027d576000906109e9575b6108f891506001600160a01b031633146116a0565b4780156109b55760008080809373507fbde39ba40da4fc79426ad5e3c64944fe43d45af13d156109b0573d67ffffffffffffffff811161099a576040519061094a601f8201601f1916602001836115e6565b8152600060203d92013e5b15610961576001600055005b60405162461bcd60e51b8152602060048201526011602482015270195d1a151c985b9cd9995c91985a5b1959607a1b6044820152606490fd5b634e487b7160e01b600052604160045260246000fd5b610955565b60405162461bcd60e51b815260206004820152600c60248201526b6e6f45746842616c616e636560a01b6044820152606490fd5b506020813d602011610a1c575b81610a03602093836115e6565b8101031261013357610a176108f891611653565b6108e3565b3d91506109f6565b3461013357600036600319011261013357600154610a41816117a5565b90610a4f60405192836115e6565b808252601f19610a5e826117a5565b0160005b818110610b6d57505060005b818110610aec578260405180916020820160208352815180915260206040840192019060005b818110610aa2575050500390f35b91935091602060a0600192608087518580851b0381511683528481015185840152604081015160408401526060810151606084015201516080820152019401910191849392610a94565b80610af8600192611608565b838060a01b0391549060031b1c1660005260026020526040600020600460405191610b22836115ca565b848060a01b038154168352848101546020840152600281015460408401526003810154606084015201546080820152610b5b82866117bd565b52610b6681856117bd565b5001610a6e565b602090604051610b7c816115ca565b6000815260008382015260006040820152600060608201526000608082015282828701015201610a62565b3461013357602036600319011261013357610bc061157b565b610bce600160005414611667565b6002600055604051632b74522360e21b8152602081600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa801561027d57600090610d8c575b610c2091506001600160a01b031633146116a0565b6001600160a01b031673c0df50143ea93aec63e38a6ed4e92b378079ea158114610d52576040516370a0823160e01b8152306004820152602081602481855afa90811561027d57600091610d1d575b508015610ce7576000916044602092604051948593849263a9059cbb60e01b845273507fbde39ba40da4fc79426ad5e3c64944fe43d4600485015260248401525af1801561027d576103e691600091610cc85750611768565b610ce1915060203d6020116102765761026881836115e6565b8261023c565b60405162461bcd60e51b815260206004820152600e60248201526d6e6f546f6b656e42616c616e636560901b6044820152606490fd5b906020823d602011610d4a575b81610d37602093836115e6565b81010312610d4757505182610c6f565b80fd5b3d9150610d2a565b60405162461bcd60e51b815260206004820152601260248201527163616e6e6f7457697468647261775261676560701b6044820152606490fd5b506020813d602011610dbf575b81610da6602093836115e6565b8101031261013357610dba610c2091611653565b610c0b565b3d9150610d99565b3461013357602036600319011261013357610de061157b565b610dee600160005414611667565b6002600055610dfe6103346117d1565b6001600160a01b038116908115610f9d576000828152600260205260409020546001600160a01b0316610f6457610e336117d1565b50336001600160a01b039190911603610f4d57600680546001600160a01b031916831790555b81337f0dee59e0fc9e5b8b2e79444ae8c52a5ea15014a1a971ad2b8749388536b55b0d600080a36006546001600160a01b03168015159081610f38575b50610ea2576001600055005b600082815260026020526040902080546001600160a01b03191683179055600154906801000000000000000082101561099a576104b4826001610ee89401600155611608565b6001600160601b0360a01b600654166006556001600160601b0360a01b600754166007557f89c66952b48f3e96bf1d8ba1b63189520fd988a6979b8b740bd5c5d8dc53e205600080a280806103e6565b6007546001600160a01b031614905083610e96565b600780546001600160a01b03191683179055610e59565b60405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e549959da5cdd195c9959607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a7a65726f4164647265737360a81b6044820152606490fd5b3461013357604036600319011261013357610fe961157b565b60243590610ffb600160005414611667565b6002600055604051632b74522360e21b8152602081600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa801561027d5760009061116e575b61104d91506001600160a01b031633146116a0565b6001600160a01b03908116600081815260026020526040902054909291611076911615156116db565b611081811515611717565b6110896118c7565b81116111345760407f39cede6754145420bb2d8ef283c60bcf5e3ca491badc6d85a30c9c6e429ae21a91836000526002602052600182600020016110ce828254611639565b90556000848152600260208190529083902060018101549101546110f191611646565b846000526002602052600383600020015561110e81600354611639565b600355836000526002602052600182600020015482519182526020820152a26001600055005b60405162461bcd60e51b8152602060048201526012602482015271195e18d959591cd55b985b1b1bd8d85d195960721b6044820152606490fd5b506020813d6020116111a1575b81611188602093836115e6565b810103126101335761119c61104d91611653565b611038565b3d915061117b565b3461013357600036600319011261013357610140816111c9600093611591565b8281528260208201528260408201528260608201526040516111ea816115ae565b8381528360208201528360408201528360608201528360808201528360a08201528360c08201526080820152606060a08201528260c08201528260e0820152826101008201528261012082015201526001546112446117d1565b916000805b82811061153f57506003549061125f8183611646565b9060405194632b74522360e21b8652602086600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa95861561027d57600096611503575b506112a3611856565b906112ac6118c7565b94604051986112ba8a611591565b60018a526001600160a01b0398891660208b019081529289166040808c019182529190991660608b019081529051929892916112f5836115ae565b82526004546020830152600554604083015260018060a01b0360065416606083015260018060a01b0360075416608083015260018060a01b036008541660a083015260018060a01b036009541660c083015260808a01918252604051926020848a8152016001600052847fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69160005b8c81106114e15750611398925003856115e6565b60a08b0193845260c08b0198895260e08b019485526101008b019586526101208b019687526101408b019788526040519960208b526102408b019b5160208c015260018060a01b0390511660408b015260018060a01b0390511660608a015260018060a01b03905116608089015251805160a0890152602081015160c0890152604081015160e089015260018060a01b0360608201511661010089015260018060a01b0360808201511661012089015260018060a01b0360a08201511661014089015260c060018060a01b0391015116610160880152519461022061018088015285518098526020610260880196016000985b808a106114be575050869750516101a0870152516101c0860152516101e085015251610200840152516102208301520390f35b81516001600160a01b03168852600199909901986020978801979091019061148b565b83546001600160a01b0316825260019384019388935060209092019101611384565b9095506020813d602011611537575b8161151f602093836115e6565b810103126101335761153090611653565b948761129a565b3d9150611512565b9061157460019161154f84611608565b848060a01b0391549060031b1c16600052600260205260026040600020015490611639565b9101611249565b600435906001600160a01b038216820361013357565b610160810190811067ffffffffffffffff82111761099a57604052565b60e0810190811067ffffffffffffffff82111761099a57604052565b60a0810190811067ffffffffffffffff82111761099a57604052565b90601f8019910116810190811067ffffffffffffffff82111761099a57604052565b60015481101561162357600160005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b9190820180921161057157565b9190820391821161057157565b51906001600160a01b038216820361013357565b1561166e57565b60405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b6044820152606490fd5b156116a757565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b156116e257565b60405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b221b0b63632b960991b6044820152606490fd5b1561171e57565b60405162461bcd60e51b815260206004820152600a6024820152691e995c9bd05b5bdd5b9d60b21b6044820152606490fd5b90816020910312610133575180151581036101335790565b1561176f57565b60405162461bcd60e51b815260206004820152600e60248201526d1d1c985b9cd9995c91985a5b195960921b6044820152606490fd5b67ffffffffffffffff811161099a5760051b60200190565b80518210156116235760209160051b010190565b6040805163a0e67e2b60e01b8152919082600481734c15f778ab59f25d5dfd2dd508236a25ed2813fe5afa91821561027d5760009060009361181257509190565b9250506040823d60401161184e575b8161182e604093836115e6565b810103126101335761184b602061184484611653565b9301611653565b90565b3d9150611821565b6040516370a0823160e01b815230600482015260208160248173c0df50143ea93aec63e38a6ed4e92b378079ea155afa90811561027d57600091611898575090565b90506020813d6020116118bf575b816118b3602093836115e6565b81010312610133575190565b3d91506118a6565b6000806001545b8082106119035750506118eb6118e2611856565b91600354611646565b808211156118fc5761184b91611646565b5050600090565b909161191460019161154f85611608565b9201906118ce56fea2646970667358221220785fa6bb24787e876f3683a0e4606b372fd8ac61b877899255309c0753e5799764736f6c634300081a0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$6.95
Net Worth in ETH
0.003137
Token Allocations
RAGE
100.00%
Multichain Portfolio | 32 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| BASE | 100.00% | $7.83 | 0.8882 | $6.95 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.