Contract detail
TickLens
TickLens is a verified Robinhood Chain smart contract at 0x7dfd4f31…6eac1468 with 0 indexed transactions.
- Address type
- Smart contract
- Transactions
- 0
- History coverage
- No indexed activity found
- Verification
- Verified
- Compiler
- v0.7.6+commit.7338295f
- Verification match
- partial
- Creation transaction
- 0xac803b65…931408f5
- Created at block
- #9065
- Language
- solidity
- EVM version
- istanbul
- License
- none
- Compiler optimization
- Enabled · 1000000 runs
Verified contract
Contract source code
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;
pragma abicoder v2;
import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';
import '../interfaces/ITickLens.sol';
/// @title Tick Lens contract
contract TickLens is ITickLens {
/// @inheritdoc ITickLens
function getPopulatedTicksInWord(address pool, int16 tickBitmapIndex)
public
view
override
returns (PopulatedTick[] memory populatedTicks)
{
// fetch bitmap
uint256 bitmap = IUniswapV3Pool(pool).tickBitmap(tickBitmapIndex);
// calculate the number of populated ticks
uint256 numberOfPopulatedTicks;
for (uint256 i = 0; i < 256; i++) {
if (bitmap & (1 << i) > 0) numberOfPopulatedTicks++;
}
// fetch populated tick data
int24 tickSpacing = IUniswapV3Pool(pool).tickSpacing();
populatedTicks = new PopulatedTick[](numberOfPopulatedTicks);
for (uint256 i = 0; i < 256; i++) {
if (bitmap & (1 << i) > 0) {
int24 populatedTick = ((int24(tickBitmapIndex) << 8) + int24(i)) * tickSpacing;
(uint128 liquidityGross, int128 liquidityNet, , , , , , ) = IUniswapV3Pool(pool).ticks(populatedTick);
populatedTicks[--numberOfPopulatedTicks] = PopulatedTick({
tick: populatedTick,
liquidityNet: liquidityNet,
liquidityGross: liquidityGross
});
}
}
}
}