Latest 25 from a total of 148 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Apply Withdrawal | 28134190 | 4 days ago | IN | 0 ETH | 0.00000736 | ||||
| Withdraw | 27084827 | 31 days ago | IN | 0 ETH | 0.00000145 | ||||
| Withdraw | 24577930 | 102 days ago | IN | 0 ETH | 0.00000281 | ||||
| Apply Withdrawal | 24310969 | 109 days ago | IN | 0 ETH | 0.00000788 | ||||
| Apply Withdrawal | 22730783 | 148 days ago | IN | 0 ETH | 0.00000837 | ||||
| Withdraw | 21333649 | 183 days ago | IN | 0 ETH | 0.00000296 | ||||
| Apply Withdrawal | 21190797 | 186 days ago | IN | 0 ETH | 0.00000476 | ||||
| Apply Withdrawal | 20840020 | 196 days ago | IN | 0 ETH | 0.00001016 | ||||
| Withdraw | 20165596 | 220 days ago | IN | 0 ETH | 0.00000311 | ||||
| Apply Withdrawal | 20129526 | 221 days ago | IN | 0 ETH | 0.00000572 | ||||
| Withdraw | 18731400 | 264 days ago | IN | 0 ETH | 0.0000019 | ||||
| Withdraw | 18561326 | 270 days ago | IN | 0 ETH | 0.00000582 | ||||
| Apply Withdrawal | 18379240 | 275 days ago | IN | 0 ETH | 0.00000985 | ||||
| Withdraw | 17155696 | 312 days ago | IN | 0 ETH | 0.00006635 | ||||
| Apply Withdrawal | 16951918 | 317 days ago | IN | 0 ETH | 0.00000495 | ||||
| Apply Withdrawal | 16882208 | 319 days ago | IN | 0 ETH | 0.00026744 | ||||
| Apply Withdrawal | 16578933 | 326 days ago | IN | 0 ETH | 0.00000496 | ||||
| Apply Withdrawal | 16574496 | 326 days ago | IN | 0 ETH | 0.00000496 | ||||
| Withdraw | 16422095 | 330 days ago | IN | 0 ETH | 0.000003 | ||||
| Apply Withdrawal | 16178099 | 336 days ago | IN | 0 ETH | 0.00000432 | ||||
| Apply Withdrawal | 16096209 | 338 days ago | IN | 0 ETH | 0.00000532 | ||||
| Apply Withdrawal | 15725348 | 348 days ago | IN | 0 ETH | 0.00000452 | ||||
| Withdraw | 15174238 | 362 days ago | IN | 0 ETH | 0.00000209 | ||||
| Apply Withdrawal | 14997862 | 366 days ago | IN | 0 ETH | 0.00000507 | ||||
| Withdraw | 14664640 | 374 days ago | IN | 0 ETH | 0.00000827 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 28318735 | 6 hrs ago | 0 ETH | ||||
| 28318726 | 6 hrs ago | 0 ETH | ||||
| 28318718 | 6 hrs ago | 0 ETH | ||||
| 28318708 | 6 hrs ago | 0 ETH | ||||
| 28318700 | 6 hrs ago | 0 ETH | ||||
| 28287464 | 26 hrs ago | 0 ETH | ||||
| 28281163 | 30 hrs ago | 0 ETH | ||||
| 28281154 | 30 hrs ago | 0 ETH | ||||
| 28281145 | 30 hrs ago | 0 ETH | ||||
| 28281105 | 30 hrs ago | 0 ETH | ||||
| 28281092 | 30 hrs ago | 0 ETH | ||||
| 28269629 | 38 hrs ago | 0 ETH | ||||
| 28243544 | 2 days ago | 0 ETH | ||||
| 28243528 | 2 days ago | 0 ETH | ||||
| 28243517 | 2 days ago | 0 ETH | ||||
| 28243506 | 2 days ago | 0 ETH | ||||
| 28243498 | 2 days ago | 0 ETH | ||||
| 28230660 | 2 days ago | 0 ETH | ||||
| 28222694 | 2 days ago | 0 ETH | ||||
| 28222694 | 2 days ago | 0 ETH | ||||
| 28222694 | 2 days ago | 0 ETH | ||||
| 28198980 | 3 days ago | 0 ETH | ||||
| 28198961 | 3 days ago | 0 ETH | ||||
| 28198951 | 3 days ago | 0 ETH | ||||
| 28198940 | 3 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x3b1016E9...5A4F84642 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Gauge
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.8.17;
// SPDX-License-Identifier: AGPL-3.0-only
import "interface/IFarm.sol";
import "./lib/SqrtMath.sol";
import "./lib/TransferHelper.sol";
/// @title Gauge is a voting contract for liquidity pool
/// @notice Each liquidity pool will have its own Gauge contract.
/// User deposit sGOV token, i.e., sDYSON token, to Gauge contract to earn additional reward.
/// This is an ERC20 contract with checkpoints.
contract Gauge {
using SqrtMath for *;
using TransferHelper for address;
uint private constant REWARD_RATE_BASE_UNIT = 1e18;
uint private constant BONUS_MULTIPLIER = 22.5e36;
uint private constant MAX_BONUS = 1.5e18;
IFarm public immutable farm;
/// @dev sGOV token, i.e., sDYSON token
address public immutable SGOV;
/// @notice Pool Id of the liquidity pool registered in Farm contract
address public immutable poolId;
/// @notice The first week this contract is deployed
uint public immutable genesis;
/// @notice Weight determines the how much reward user can earn in Farm contract.
/// The higher the `weight`, the lower the reward
uint public weight;
/// @notice This is the latest total supply
/// Use `totalSupplyAt` to query total supply in previous week
uint public totalSupply;
/// @notice Base reward rate
uint public base;
/// @notice Slope of reward rate
/// The higher the `slope`, the faster the reward rate increases
uint public slope;
/// @notice Current week, i.e., number of weeks since 1970/01/01. Checkpoint is recored on per week basis
/// @dev IMPORTANT: `thisWeek` is updated by calling `tick`, `deposit` or `applyWithdrawal`.
/// It is EXPECTED that either one of these functions are called at least once every week
uint public thisWeek;
address public owner;
struct Checkpoint {
uint week;
uint amount;
}
/// @notice Number of checkpoints user has recorded
mapping(address => uint) public numCheckpoints;
mapping(address => mapping(uint => Checkpoint)) checkpoints;
mapping(uint => uint) internal _totalSupplyAt;
/// @notice Total amount of sGov token pending for withdrawal
mapping(address => uint) public pendingWithdrawal;
/// @notice The week user can complete his withdrawal
mapping(address => uint) public weekToWithdraw;
event TransferOwnership(address newOwner);
event Deposit(address indexed user, address depositor, uint indexed week, uint amount);
event ApplyWithdrawal(address indexed user, uint indexed week, uint amount);
event Withdraw(address indexed user, uint amount);
constructor(address _farm, address _sgov, address _poolId, uint _weight, uint _base, uint _slope) {
require(_sgov != address(0), "sgov cannot be zero");
owner = msg.sender;
farm = IFarm(_farm);
SGOV = _sgov;
poolId = _poolId;
weight = _weight;
base = _base;
slope = _slope;
thisWeek = block.timestamp / 1 weeks;
genesis = block.timestamp / 1 weeks;
}
modifier onlyOwner() {
require(msg.sender == owner, "forbidden");
_;
}
function transferOwnership(address _owner) external onlyOwner {
require(_owner != address(0), "owner cannot be zero");
owner = _owner;
emit TransferOwnership(_owner);
}
/// @notice rescue token stucked in this contract
/// @param tokenAddress Address of token to be rescued
/// @param to Address that will receive token
/// @param amount Amount of token to be rescued
function rescueERC20(address tokenAddress, address to, uint256 amount) onlyOwner external {
require(tokenAddress != SGOV);
tokenAddress.safeTransfer(to, amount);
}
function setParams(uint _weight, uint _base, uint _slope) external onlyOwner {
weight = _weight;
base = _base;
slope = _slope;
}
/// @notice User's latest balance, i.e., balance recorded in user's latest checkpoint
function balanceOf(address account) public view returns (uint) {
uint nCheckpoints = numCheckpoints[account];
return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].amount : 0;
}
/// @notice User's balance at given week. If no checkpoint recorded at given week,
/// search for latest checkpoint amoung previous ones.
/// @dev Due to first `require` check, you can't query balance of current week. Use `balanceOf` instead.
/// @param account User's address
/// @param week The week we are interested to find out user's balance
/// @return User's balance at given week
function balanceOfAt(address account, uint week) external view returns (uint) {
require(week < block.timestamp / 1 weeks, "not yet");
require(week <= thisWeek, "not yet");
uint nCheckpoints = numCheckpoints[account];
if (nCheckpoints == 0) {
return 0;
}
// Check user's balance in latest checkpoint
if (checkpoints[account][nCheckpoints - 1].week <= week) {
return checkpoints[account][nCheckpoints - 1].amount;
}
// Check user's balance in his first checkpoint
if (checkpoints[account][0].week > week) {
return 0;
}
// Binary search to find user's balance in the checkpoint closest to given `week`
uint lower = 0;
uint upper = nCheckpoints - 1;
while (upper > lower) {
uint center = upper - (upper - lower) / 2; // ceil, avoiding overflow
Checkpoint memory cp = checkpoints[account][center];
if (cp.week == week) {
return cp.amount;
} else if (cp.week < week) {
lower = center;
} else {
upper = center - 1;
}
}
return checkpoints[account][lower].amount;
}
/// @dev If this is a new week, add a new checkpoint
function _writeCheckpoint(address account, uint amount) internal {
uint _week = block.timestamp / 1 weeks;
uint nCheckpoints = numCheckpoints[account];
if (nCheckpoints > 0 && checkpoints[account][nCheckpoints - 1].week == _week) {
checkpoints[account][nCheckpoints - 1].amount = amount;
} else {
checkpoints[account][nCheckpoints] = Checkpoint(_week, amount);
numCheckpoints[account]++;
}
}
function totalSupplyAt(uint week) public view returns (uint) {
require(week < block.timestamp / 1 weeks, "not yet");
if (week >= thisWeek) {
return totalSupply;
}
else {
return _totalSupplyAt[week];
}
}
/// @notice If this is a new week, update `thisWeek`, reward rate and record total supply of past week
function tick() public {
uint _week = block.timestamp / 1 weeks;
if (_week > thisWeek) {
for(uint i = thisWeek; i < _week; ++i) {
_totalSupplyAt[i] = totalSupply;
}
thisWeek = _week;
_updateRewardRate();
}
}
/// @dev Update latest total supply and trigger `tick`
function updateTotalSupply(uint _totalSupply) internal {
tick();
totalSupply = _totalSupply;
}
/// @notice Compute new reward rate base on latest total supply, `slope` and `base`
function nextRewardRate() public view returns (uint newRewardRate) {
// rewardRate = token * slope + base
newRewardRate = totalSupply * slope / REWARD_RATE_BASE_UNIT + base;
}
/// @dev Update reward rate recorded in Farm contract
function _updateRewardRate() internal {
try farm.setPoolRewardRate(poolId, nextRewardRate(), weight) {} catch {}
}
/// @notice Deposit sGov token on behalf of `to`
/// @param amount Amount of sGov token
/// @param to Address that owns the amount of sGov token
function deposit(uint amount, address to) external {
require(amount > 0, "cannot deposit 0");
SGOV.safeTransferFrom(msg.sender, address(this), amount);
_writeCheckpoint(to, balanceOf(to) + amount);
updateTotalSupply(totalSupply + amount);
emit Deposit(to, msg.sender, block.timestamp / 1 weeks, amount);
}
/// @notice User requests for withdrawal of his sGov token
/// Withdrawal will have a delay of 1 week
/// @param amount Amount of sGov token to withdraw
function applyWithdrawal(uint amount) external {
require(amount > 0 ,"cannot withdraw 0");
require(amount <= balanceOf(msg.sender) ,"cannot withdraw more than balance");
uint _week = block.timestamp / 1 weeks;
_writeCheckpoint(msg.sender, balanceOf(msg.sender) - amount);
updateTotalSupply(totalSupply - amount);
pendingWithdrawal[msg.sender] += amount;
weekToWithdraw[msg.sender] = _week + 1;
emit ApplyWithdrawal(msg.sender, _week, amount);
}
/// @notice User completes his withdrawal
/// @return amount Amount of sGov token withdrawn
function withdraw() external returns (uint amount) {
require(block.timestamp / 1 weeks >= weekToWithdraw[msg.sender], "not yet");
amount = pendingWithdrawal[msg.sender];
require(amount > 0 ,"cannot withdraw 0");
pendingWithdrawal[msg.sender] = 0;
SGOV.safeTransfer(msg.sender, amount);
emit Withdraw(msg.sender, amount);
}
/// @notice User's bonus ratio computed base on his latest balance.
/// Bonus ratio approaches max when balance gets closer to 1/10 of total supply.
/// Bonus ratio will be capped at 1.5x
/// @param user User's address
/// @return _bonus User's bonus ratio
function bonus(address user) external view returns (uint _bonus) {
uint balance = balanceOf(user);
if(balance > 0) {
_bonus = (balance * BONUS_MULTIPLIER / totalSupply).sqrt();
_bonus = _bonus > MAX_BONUS ? MAX_BONUS : _bonus;
}
}
}pragma solidity >=0.8.0;
// SPDX-License-Identifier: MIT
interface IFarm {
event TransferOwnership(address newOwner);
event RateUpdated(address indexed poolId, uint rewardRate, uint weight);
event GrantSP(address indexed user, address indexed poolId, uint amountIn, uint amountOut);
event Swap(address indexed user, address indexed parent, uint amountIn, uint amountOut);
struct Pool {
uint weight;
uint rewardRate;
uint lastUpdateTime;
uint lastReserve;
address gauge;
}
function agency() external view returns (address);
function gov() external view returns (address);
function owner() external view returns (address);
function globalPool() external view returns (uint weight, uint rewardRate, uint lastUpdateTime, uint lastReserve, address gauge);
function pools(address poolId) external view returns (uint weight, uint rewardRate, uint lastUpdateTime, uint lastReserve, address gauge);
function balanceOf(address user) external view returns (uint);
function cooldown(address user) external view returns (uint);
function transferOwnership(address _owner) external;
function rescueERC20(address tokenAddress, address to, uint256 amount) external;
function setPool(address poolId, address gauge) external;
function setPoolRewardRate(address poolId, uint rewardRate, uint weight) external;
function setGlobalRewardRate(uint rewardRate, uint weight) external;
function getCurrentPoolReserve(address poolId) view external returns (uint reserve);
function getCurrentGlobalReserve() view external returns (uint reserve);
function grantSP(address to, uint amount) external;
function swap(address user) external returns (uint amountOut);
}pragma solidity 0.8.17;
// SPDX-License-Identifier: AGPL-2.0
//https://github.com/Gaussian-Process/solidity-sqrt/blob/main/src/FixedPointMathLib.sol
library SqrtMath {
function sqrt(uint256 x) internal pure returns (uint256 z) {
assembly {
// This segment is to get a reasonable initial estimate for the Babylonian method.
// If the initial estimate is bad, the number of correct bits increases ~linearly
// each iteration instead of ~quadratically.
// The idea is to get z*z*y within a small factor of x.
// More iterations here gets y in a tighter range. Currently, we will have
// y in [256, 256*2^16). We ensure y>= 256 so that the relative difference
// between y and y+1 is small. If x < 256 this is not possible, but those cases
// are easy enough to verify exhaustively.
z := 181 // The 'correct' value is 1, but this saves a multiply later
let y := x
// Note that we check y>= 2^(k + 8) but shift right by k bits each branch,
// this is to ensure that if x >= 256, then y >= 256.
if iszero(lt(y, 0x10000000000000000000000000000000000)) {
y := shr(128, y)
z := shl(64, z)
}
if iszero(lt(y, 0x1000000000000000000)) {
y := shr(64, y)
z := shl(32, z)
}
if iszero(lt(y, 0x10000000000)) {
y := shr(32, y)
z := shl(16, z)
}
if iszero(lt(y, 0x1000000)) {
y := shr(16, y)
z := shl(8, z)
}
// Now, z*z*y <= x < z*z*(y+1), and y <= 2^(16+8),
// and either y >= 256, or x < 256.
// Correctness can be checked exhaustively for x < 256, so we assume y >= 256.
// Then z*sqrt(y) is within sqrt(257)/sqrt(256) of x, or about 20bps.
// The estimate sqrt(x) = (181/1024) * (x+1) is off by a factor of ~2.83 both when x=1
// and when x = 256 or 1/256. In the worst case, this needs seven Babylonian iterations.
z := shr(18, mul(z, add(y, 65536))) // A multiply is saved from the initial z := 181
// Run the Babylonian method seven times. This should be enough given initial estimate.
// Possibly with a quadratic/cubic polynomial above we could get 4-6.
z := shr(1, add(z, div(x, z)))
z := shr(1, add(z, div(x, z)))
z := shr(1, add(z, div(x, z)))
z := shr(1, add(z, div(x, z)))
z := shr(1, add(z, div(x, z)))
z := shr(1, add(z, div(x, z)))
z := shr(1, add(z, div(x, z)))
// See https://en.wikipedia.org/wiki/Integer_square_root#Using_only_integer_division.
// If x+1 is a perfect square, the Babylonian method cycles between
// floor(sqrt(x)) and ceil(sqrt(x)). This check ensures we return floor.
// The solmate implementation assigns zRoundDown := div(x, z) first, but
// since this case is rare, we choose to save gas on the assignment and
// repeat division in the rare case.
// If you don't care whether floor or ceil is returned, you can skip this.
if lt(div(x, z), z) {
z := div(x, z)
}
}
}
}pragma solidity 0.8.17;
// SPDX-License-Identifier: AGPL-2.0
library TransferHelper {
function safeApprove(address token, address to, uint value) internal {
// bytes4(keccak256(bytes('approve(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'transferHelper: approve failed');
}
function safeTransfer(address token, address to, uint value) internal {
// bytes4(keccak256(bytes('transfer(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'transferHelper: transfer failed');
}
function safeTransferFrom(address token, address from, address to, uint value) internal {
// bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'transferHelper: transferFrom failed');
}
function safeTransferETH(address to, uint value) internal {
(bool success,) = to.call{value:value}(new bytes(0));
require(success, 'transferHelper: ETH transfer failed');
}
}{
"remappings": [
"@openzeppelin/=lib/openzeppelin-contracts/",
"interface/=src/interface/",
"util/=src/util/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
"openzeppelin/=lib/openzeppelin-contracts/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs"
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_farm","type":"address"},{"internalType":"address","name":"_sgov","type":"address"},{"internalType":"address","name":"_poolId","type":"address"},{"internalType":"uint256","name":"_weight","type":"uint256"},{"internalType":"uint256","name":"_base","type":"uint256"},{"internalType":"uint256","name":"_slope","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"week","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ApplyWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"depositor","type":"address"},{"indexed":true,"internalType":"uint256","name":"week","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"TransferOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"SGOV","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"applyWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"week","type":"uint256"}],"name":"balanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"base","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"bonus","outputs":[{"internalType":"uint256","name":"_bonus","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"farm","outputs":[{"internalType":"contract IFarm","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextRewardRate","outputs":[{"internalType":"uint256","name":"newRewardRate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pendingWithdrawal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolId","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_weight","type":"uint256"},{"internalType":"uint256","name":"_base","type":"uint256"},{"internalType":"uint256","name":"_slope","type":"uint256"}],"name":"setParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slope","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thisWeek","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tick","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"week","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"weekToWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
0x6101006040523480156200001257600080fd5b506040516200158938038062001589833981016040819052620000359162000118565b6001600160a01b038516620000905760405162461bcd60e51b815260206004820152601360248201527f73676f762063616e6e6f74206265207a65726f00000000000000000000000000604482015260640160405180910390fd5b600580546001600160a01b031916331790556001600160a01b0386811660805285811660a052841660c052600083905560028290556003819055620000d962093a80426200017e565b600455620000eb62093a80426200017e565b60e05250620001a1945050505050565b80516001600160a01b03811681146200011357600080fd5b919050565b60008060008060008060c087890312156200013257600080fd5b6200013d87620000fb565b95506200014d60208801620000fb565b94506200015d60408801620000fb565b9350606087015192506080870151915060a087015190509295509295509295565b6000826200019c57634e487b7160e01b600052601260045260246000fd5b500490565b60805160a05160c05160e05161138b620001fe60003960006103490152600081816102300152610da80152600081816101b901528181610450015281816107ad0152610acf0152600081816102010152610d79015261138b6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636fcfff45116100de578063981b24d011610097578063a7f0b3de11610071578063a7f0b3de14610344578063b2118a8d1461036b578063d8cb4aa31461037e578063f2fde38b1461039157600080fd5b8063981b24d0146103085780639bdb78811461031b578063a1aab33f1461033b57600080fd5b80636fcfff451461029e57806370a08231146102be578063715fda7b146102d157806383caf275146102d95780638da5cb5b146102e25780639056206e146102f557600080fd5b80633e0dc34e116101305780633e0dc34e1461022b5780633eaf5d9f146102525780634ee2cd7e1461025c5780635001f3b51461026f5780635a0ce676146102785780636e553f651461028b57600080fd5b80630964c95b1461017857806318160ddd146101ab5780631b9e899f146101b4578063218d30b0146101f357806336e9332d146101fc5780633ccfd60b14610223575b600080fd5b610198610186366004611140565b60096020526000908152604090205481565b6040519081526020015b60405180910390f35b61019860015481565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101a2565b61019860045481565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b6101986103a4565b6101db7f000000000000000000000000000000000000000000000000000000000000000081565b61025a6104b7565b005b61019861026a36600461115b565b610511565b61019860025481565b61025a610286366004611185565b610725565b61025a6102993660046111b1565b61075d565b6101986102ac366004611140565b60066020526000908152604090205481565b6101986102cc366004611140565b61085e565b6101986108c1565b61019860035481565b6005546101db906001600160a01b031681565b61025a6103033660046111dd565b6108f8565b6101986103163660046111dd565b610a4d565b610198610329366004611140565b600a6020526000908152604090205481565b61019860005481565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b61025a6103793660046111f6565b610aa3565b61019861038c366004611140565b610b24565b61025a61039f366004611140565b610b91565b336000908152600a60205260408120546103c162093a8042611248565b10156103e85760405162461bcd60e51b81526004016103df9061126a565b60405180910390fd5b50336000908152600960205260409020548061043a5760405162461bcd60e51b8152602060048201526011602482015270063616e6e6f74207769746864726177203607c1b60448201526064016103df565b3360008181526009602052604081205561047f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169083610c5c565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a290565b60006104c662093a8042611248565b905060045481111561050e576004545b81811015610500576001546000828152600860205260409020556104f98161128b565b90506104d6565b50600481905561050e610d77565b50565b600061052062093a8042611248565b821061053e5760405162461bcd60e51b81526004016103df9061126a565b6004548211156105605760405162461bcd60e51b81526004016103df9061126a565b6001600160a01b0383166000908152600660205260408120549081900361058b57600091505061071f565b6001600160a01b038416600090815260076020526040812084916105b06001856112a4565b81526020019081526020016000206000015411610605576001600160a01b0384166000908152600760205260408120906105eb6001846112a4565b81526020019081526020016000206001015491505061071f565b6001600160a01b038416600090815260076020908152604080832083805290915290205483101561063a57600091505061071f565b6000806106486001846112a4565b90505b818111156106f4576000600261066184846112a4565b61066b9190611248565b61067590836112a4565b6001600160a01b03881660009081526007602090815260408083208484528252918290208251808401909352805480845260019091015491830191909152919250908790036106ce5760200151945061071f9350505050565b80518711156106df578193506106ed565b6106ea6001836112a4565b92505b505061064b565b506001600160a01b038516600090815260076020908152604080832093835292905220600101549150505b92915050565b6005546001600160a01b0316331461074f5760405162461bcd60e51b81526004016103df906112b7565b600092909255600255600355565b600082116107a05760405162461bcd60e51b815260206004820152601060248201526f063616e6e6f74206465706f73697420360841b60448201526064016103df565b6107d56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085610e30565b6107f281836107e38461085e565b6107ed91906112da565b610f60565b6108088260015461080391906112da565b611074565b61081562093a8042611248565b60408051338152602081018590526001600160a01b038416917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a35050565b6001600160a01b038116600090815260066020526040812054806108835760006108ba565b6001600160a01b0383166000908152600760205260408120906108a76001846112a4565b8152602001908152602001600020600101545b9392505050565b6000600254670de0b6b3a76400006003546001546108df91906112ed565b6108e99190611248565b6108f391906112da565b905090565b6000811161093c5760405162461bcd60e51b8152602060048201526011602482015270063616e6e6f74207769746864726177203607c1b60448201526064016103df565b6109453361085e565b81111561099e5760405162461bcd60e51b815260206004820152602160248201527f63616e6e6f74207769746864726177206d6f7265207468616e2062616c616e636044820152606560f81b60648201526084016103df565b60006109ad62093a8042611248565b90506109c733836109bd3361085e565b6107ed91906112a4565b6109d88260015461080391906112a4565b33600090815260096020526040812080548492906109f79084906112da565b90915550610a0890508160016112da565b336000818152600a6020908152604091829020939093555184815283927f14f34b061b1da2da9b0c6e20f8b8407e1377641bc2999c22f40d60e632e44bf39101610852565b6000610a5c62093a8042611248565b8210610a7a5760405162461bcd60e51b81526004016103df9061126a565b6004548210610a8b57505060015490565b5060009081526008602052604090205490565b919050565b6005546001600160a01b03163314610acd5760405162461bcd60e51b81526004016103df906112b7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610b0b57600080fd5b610b1f6001600160a01b0384168383610c5c565b505050565b600080610b308361085e565b90508015610b8b57600154610b6890610b596f10ed57a5e12b1f6842257ae800000000846112ed565b610b639190611248565b611081565b91506714d1120d7b1600008211610b7f57816108ba565b6714d1120d7b16000091505b50919050565b6005546001600160a01b03163314610bbb5760405162461bcd60e51b81526004016103df906112b7565b6001600160a01b038116610c085760405162461bcd60e51b81526020600482015260146024820152736f776e65722063616e6e6f74206265207a65726f60601b60448201526064016103df565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a49060200160405180910390a150565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610cb89190611304565b6000604051808303816000865af19150503d8060008114610cf5576040519150601f19603f3d011682016040523d82523d6000602084013e610cfa565b606091505b5091509150818015610d24575080511580610d24575080806020019051810190610d249190611333565b610d705760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657248656c7065723a207472616e73666572206661696c65640060448201526064016103df565b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f531c1fa7f0000000000000000000000000000000000000000000000000000000000000000610dcf6108c1565b6000546040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401600060405180830381600087803b158015610e2057600080fd5b505af192505050801561050e5750565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610e949190611304565b6000604051808303816000865af19150503d8060008114610ed1576040519150601f19603f3d011682016040523d82523d6000602084013e610ed6565b606091505b5091509150818015610f00575080511580610f00575080806020019051810190610f009190611333565b610f585760405162461bcd60e51b815260206004820152602360248201527f7472616e7366657248656c7065723a207472616e7366657246726f6d206661696044820152621b195960ea1b60648201526084016103df565b505050505050565b6000610f6f62093a8042611248565b6001600160a01b0384166000908152600660205260409020549091508015801590610fce57506001600160a01b03841660009081526007602052604081208391610fba6001856112a4565b815260200190815260200160002060000154145b15611011576001600160a01b03841660009081526007602052604081208491610ff86001856112a4565b815260208101919091526040016000206001015561106e565b60408051808201825283815260208082018681526001600160a01b0388166000818152600784528581208782528452858120945185559151600190940193909355918252600690529081208054916110688361128b565b91905055505b50505050565b61107c6104b7565b600155565b60b581600160881b811061109a5760409190911b9060801c5b690100000000000000000081106110b65760209190911b9060401c5b6501000000000081106110ce5760109190911b9060201c5b630100000081106110e45760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c808204811115610a9e57900490565b80356001600160a01b0381168114610a9e57600080fd5b60006020828403121561115257600080fd5b6108ba82611129565b6000806040838503121561116e57600080fd5b61117783611129565b946020939093013593505050565b60008060006060848603121561119a57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156111c457600080fd5b823591506111d460208401611129565b90509250929050565b6000602082840312156111ef57600080fd5b5035919050565b60008060006060848603121561120b57600080fd5b61121484611129565b925061122260208501611129565b9150604084013590509250925092565b634e487b7160e01b600052601160045260246000fd5b60008261126557634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600790820152661b9bdd081e595d60ca1b604082015260600190565b60006001820161129d5761129d611232565b5060010190565b8181038181111561071f5761071f611232565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b8082018082111561071f5761071f611232565b808202811582820484141761071f5761071f611232565b6000825160005b81811015611325576020818601810151858301520161130b565b506000920191825250919050565b60006020828403121561134557600080fd5b815180151581146108ba57600080fdfea26469706673582212206c6984da575ed1495b33d58d55314a6f10ac0ad68de2b00151c5390ade4e69f564736f6c634300081100330000000000000000000000004c5770abf8897e487671348cd59a2abf9f20d81b000000000000000000000000e3a39d3668c929421d3bef4f00e0cdbf42afd57d000000000000000000000000cec911f803d984ae2e5a134b2d1521846699386900000000000000000000000000000000000000000000000000000086f8ec84e200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80636fcfff45116100de578063981b24d011610097578063a7f0b3de11610071578063a7f0b3de14610344578063b2118a8d1461036b578063d8cb4aa31461037e578063f2fde38b1461039157600080fd5b8063981b24d0146103085780639bdb78811461031b578063a1aab33f1461033b57600080fd5b80636fcfff451461029e57806370a08231146102be578063715fda7b146102d157806383caf275146102d95780638da5cb5b146102e25780639056206e146102f557600080fd5b80633e0dc34e116101305780633e0dc34e1461022b5780633eaf5d9f146102525780634ee2cd7e1461025c5780635001f3b51461026f5780635a0ce676146102785780636e553f651461028b57600080fd5b80630964c95b1461017857806318160ddd146101ab5780631b9e899f146101b4578063218d30b0146101f357806336e9332d146101fc5780633ccfd60b14610223575b600080fd5b610198610186366004611140565b60096020526000908152604090205481565b6040519081526020015b60405180910390f35b61019860015481565b6101db7f000000000000000000000000e3a39d3668c929421d3bef4f00e0cdbf42afd57d81565b6040516001600160a01b0390911681526020016101a2565b61019860045481565b6101db7f0000000000000000000000004c5770abf8897e487671348cd59a2abf9f20d81b81565b6101986103a4565b6101db7f000000000000000000000000cec911f803d984ae2e5a134b2d1521846699386981565b61025a6104b7565b005b61019861026a36600461115b565b610511565b61019860025481565b61025a610286366004611185565b610725565b61025a6102993660046111b1565b61075d565b6101986102ac366004611140565b60066020526000908152604090205481565b6101986102cc366004611140565b61085e565b6101986108c1565b61019860035481565b6005546101db906001600160a01b031681565b61025a6103033660046111dd565b6108f8565b6101986103163660046111dd565b610a4d565b610198610329366004611140565b600a6020526000908152604090205481565b61019860005481565b6101987f0000000000000000000000000000000000000000000000000000000000000b1981565b61025a6103793660046111f6565b610aa3565b61019861038c366004611140565b610b24565b61025a61039f366004611140565b610b91565b336000908152600a60205260408120546103c162093a8042611248565b10156103e85760405162461bcd60e51b81526004016103df9061126a565b60405180910390fd5b50336000908152600960205260409020548061043a5760405162461bcd60e51b8152602060048201526011602482015270063616e6e6f74207769746864726177203607c1b60448201526064016103df565b3360008181526009602052604081205561047f907f000000000000000000000000e3a39d3668c929421d3bef4f00e0cdbf42afd57d6001600160a01b03169083610c5c565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a290565b60006104c662093a8042611248565b905060045481111561050e576004545b81811015610500576001546000828152600860205260409020556104f98161128b565b90506104d6565b50600481905561050e610d77565b50565b600061052062093a8042611248565b821061053e5760405162461bcd60e51b81526004016103df9061126a565b6004548211156105605760405162461bcd60e51b81526004016103df9061126a565b6001600160a01b0383166000908152600660205260408120549081900361058b57600091505061071f565b6001600160a01b038416600090815260076020526040812084916105b06001856112a4565b81526020019081526020016000206000015411610605576001600160a01b0384166000908152600760205260408120906105eb6001846112a4565b81526020019081526020016000206001015491505061071f565b6001600160a01b038416600090815260076020908152604080832083805290915290205483101561063a57600091505061071f565b6000806106486001846112a4565b90505b818111156106f4576000600261066184846112a4565b61066b9190611248565b61067590836112a4565b6001600160a01b03881660009081526007602090815260408083208484528252918290208251808401909352805480845260019091015491830191909152919250908790036106ce5760200151945061071f9350505050565b80518711156106df578193506106ed565b6106ea6001836112a4565b92505b505061064b565b506001600160a01b038516600090815260076020908152604080832093835292905220600101549150505b92915050565b6005546001600160a01b0316331461074f5760405162461bcd60e51b81526004016103df906112b7565b600092909255600255600355565b600082116107a05760405162461bcd60e51b815260206004820152601060248201526f063616e6e6f74206465706f73697420360841b60448201526064016103df565b6107d56001600160a01b037f000000000000000000000000e3a39d3668c929421d3bef4f00e0cdbf42afd57d16333085610e30565b6107f281836107e38461085e565b6107ed91906112da565b610f60565b6108088260015461080391906112da565b611074565b61081562093a8042611248565b60408051338152602081018590526001600160a01b038416917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a35050565b6001600160a01b038116600090815260066020526040812054806108835760006108ba565b6001600160a01b0383166000908152600760205260408120906108a76001846112a4565b8152602001908152602001600020600101545b9392505050565b6000600254670de0b6b3a76400006003546001546108df91906112ed565b6108e99190611248565b6108f391906112da565b905090565b6000811161093c5760405162461bcd60e51b8152602060048201526011602482015270063616e6e6f74207769746864726177203607c1b60448201526064016103df565b6109453361085e565b81111561099e5760405162461bcd60e51b815260206004820152602160248201527f63616e6e6f74207769746864726177206d6f7265207468616e2062616c616e636044820152606560f81b60648201526084016103df565b60006109ad62093a8042611248565b90506109c733836109bd3361085e565b6107ed91906112a4565b6109d88260015461080391906112a4565b33600090815260096020526040812080548492906109f79084906112da565b90915550610a0890508160016112da565b336000818152600a6020908152604091829020939093555184815283927f14f34b061b1da2da9b0c6e20f8b8407e1377641bc2999c22f40d60e632e44bf39101610852565b6000610a5c62093a8042611248565b8210610a7a5760405162461bcd60e51b81526004016103df9061126a565b6004548210610a8b57505060015490565b5060009081526008602052604090205490565b919050565b6005546001600160a01b03163314610acd5760405162461bcd60e51b81526004016103df906112b7565b7f000000000000000000000000e3a39d3668c929421d3bef4f00e0cdbf42afd57d6001600160a01b0316836001600160a01b031603610b0b57600080fd5b610b1f6001600160a01b0384168383610c5c565b505050565b600080610b308361085e565b90508015610b8b57600154610b6890610b596f10ed57a5e12b1f6842257ae800000000846112ed565b610b639190611248565b611081565b91506714d1120d7b1600008211610b7f57816108ba565b6714d1120d7b16000091505b50919050565b6005546001600160a01b03163314610bbb5760405162461bcd60e51b81526004016103df906112b7565b6001600160a01b038116610c085760405162461bcd60e51b81526020600482015260146024820152736f776e65722063616e6e6f74206265207a65726f60601b60448201526064016103df565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a49060200160405180910390a150565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610cb89190611304565b6000604051808303816000865af19150503d8060008114610cf5576040519150601f19603f3d011682016040523d82523d6000602084013e610cfa565b606091505b5091509150818015610d24575080511580610d24575080806020019051810190610d249190611333565b610d705760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657248656c7065723a207472616e73666572206661696c65640060448201526064016103df565b5050505050565b7f0000000000000000000000004c5770abf8897e487671348cd59a2abf9f20d81b6001600160a01b031663f531c1fa7f000000000000000000000000cec911f803d984ae2e5a134b2d15218466993869610dcf6108c1565b6000546040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401600060405180830381600087803b158015610e2057600080fd5b505af192505050801561050e5750565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610e949190611304565b6000604051808303816000865af19150503d8060008114610ed1576040519150601f19603f3d011682016040523d82523d6000602084013e610ed6565b606091505b5091509150818015610f00575080511580610f00575080806020019051810190610f009190611333565b610f585760405162461bcd60e51b815260206004820152602360248201527f7472616e7366657248656c7065723a207472616e7366657246726f6d206661696044820152621b195960ea1b60648201526084016103df565b505050505050565b6000610f6f62093a8042611248565b6001600160a01b0384166000908152600660205260409020549091508015801590610fce57506001600160a01b03841660009081526007602052604081208391610fba6001856112a4565b815260200190815260200160002060000154145b15611011576001600160a01b03841660009081526007602052604081208491610ff86001856112a4565b815260208101919091526040016000206001015561106e565b60408051808201825283815260208082018681526001600160a01b0388166000818152600784528581208782528452858120945185559151600190940193909355918252600690529081208054916110688361128b565b91905055505b50505050565b61107c6104b7565b600155565b60b581600160881b811061109a5760409190911b9060801c5b690100000000000000000081106110b65760209190911b9060401c5b6501000000000081106110ce5760109190911b9060201c5b630100000081106110e45760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c808204811115610a9e57900490565b80356001600160a01b0381168114610a9e57600080fd5b60006020828403121561115257600080fd5b6108ba82611129565b6000806040838503121561116e57600080fd5b61117783611129565b946020939093013593505050565b60008060006060848603121561119a57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156111c457600080fd5b823591506111d460208401611129565b90509250929050565b6000602082840312156111ef57600080fd5b5035919050565b60008060006060848603121561120b57600080fd5b61121484611129565b925061122260208501611129565b9150604084013590509250925092565b634e487b7160e01b600052601160045260246000fd5b60008261126557634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600790820152661b9bdd081e595d60ca1b604082015260600190565b60006001820161129d5761129d611232565b5060010190565b8181038181111561071f5761071f611232565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b8082018082111561071f5761071f611232565b808202811582820484141761071f5761071f611232565b6000825160005b81811015611325576020818601810151858301520161130b565b506000920191825250919050565b60006020828403121561134557600080fd5b815180151581146108ba57600080fdfea26469706673582212206c6984da575ed1495b33d58d55314a6f10ac0ad68de2b00151c5390ade4e69f564736f6c63430008110033
Loading...
Loading
Loading...
Loading
OVERVIEW
WETH-USDC Gauge is a instance of the Gauge contract, which is a voting contract associated with a specific liquidity pair, and each liquidity pair has its own dedicated Gauge contract. The Farm utilizes these Gauges to determine how Dyson Points are distributed to liquidity providers.Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.