This commit is contained in:
2026-05-30 01:14:30 +02:00
parent ffa4acbccb
commit 7bd6593015
20 changed files with 4359 additions and 456 deletions

View File

@@ -64,30 +64,86 @@
</select>
</div>
<div class="col-6">
<label for="demo3SourceAddressInput" class="form-label">Source address</label>
<input id="demo3SourceAddressInput" type="text" class="form-control font-monospace" spellcheck="false" placeholder="pool / vault / position / config / mint address" />
<label for="demo3SourceAddressInput" class="form-label">Source addresses</label>
<textarea id="demo3SourceAddressInput" class="form-control font-monospace" rows="3" spellcheck="false" placeholder="pool / vault / position / config / mint addresses, one per line"></textarea>
</div>
<div class="col-12 form-text">Use address source to discover signatures around a pool, vault, position, config or mint while keeping the program id filter.</div>
<div class="col-12 form-text">Use address source to discover signatures around one or several pools, vaults, positions, configs or mints while keeping the program id filter.</div>
<div class="col-6">
<label for="demo3BeforeSignatureInput" class="form-label">Before signature</label>
<input id="demo3BeforeSignatureInput" type="text" class="form-control font-monospace" spellcheck="false" placeholder="optional pagination cursor" />
</div>
<div class="col-6">
<label for="demo3UntilSignatureInput" class="form-label">Until signature</label>
<input id="demo3UntilSignatureInput" type="text" class="form-control font-monospace" spellcheck="false" placeholder="optional stop cursor" />
</div>
<div class="col-6">
<label for="demo3MaxPagesInput" class="form-label">Max pages / address</label>
<input id="demo3MaxPagesInput" type="number" min="1" max="25" class="form-control" value="1" />
</div>
<div class="col-6">
<label for="demo3ScanOrderSelect" class="form-label">Scan order</label>
<select id="demo3ScanOrderSelect" class="form-select">
<option value="newest_first">newest_first</option>
<option value="oldest_first">oldest_first</option>
</select>
</div>
<div class="col-12 form-text">For pool creation analysis, scan a pool address with enough pages and use oldest_first to process the oldest fetched signatures first.</div>
</div>
<div class="row g-2">
<div class="col-12">
<label for="demo3TargetEventSelect" class="form-label">Target event</label>
<select id="demo3TargetEventSelect" class="form-select">
<option value="">Any / generic pair-pool discovery</option>
<option value="swap">swap</option>
<option value="add_liquidity">add_liquidity</option>
<option value="remove_liquidity">remove_liquidity</option>
<option value="claim_fee">claim_fee / collect_fee</option>
<option value="claim_reward">claim_reward</option>
<option value="position_open">position_open</option>
<option value="position_close">position_close</option>
<option value="pool_create">pool_create / initialize_pool</option>
<option value="pool_admin">pool_admin / config / authority</option>
<option value="unknown_non_swap">unknown_non_swap</option>
<option value="audit_non_swap_like">audit_non_swap_like</option>
<option value="unclassified_instruction">unclassified_instruction</option>
</select>
<label class="form-label">Target events</label>
<div id="demo3TargetEventCheckboxGroup" class="border rounded p-2 bg-body" style="max-height: 220px; overflow-y: auto;">
<div class="form-check form-check-inline">
<input id="demo3TargetSwapInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="swap" />
<label for="demo3TargetSwapInput" class="form-check-label">swap</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetAddLiquidityInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="add_liquidity" />
<label for="demo3TargetAddLiquidityInput" class="form-check-label">add_liquidity</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetRemoveLiquidityInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="remove_liquidity" />
<label for="demo3TargetRemoveLiquidityInput" class="form-check-label">remove_liquidity</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetClaimFeeInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="claim_fee" />
<label for="demo3TargetClaimFeeInput" class="form-check-label">claim_fee</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetClaimRewardInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="claim_reward" />
<label for="demo3TargetClaimRewardInput" class="form-check-label">claim_reward</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetCreateLockEscrowInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="create_lock_escrow" />
<label for="demo3TargetCreateLockEscrowInput" class="form-check-label">create_lock_escrow</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetLockLiquidityInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="lock_liquidity" />
<label for="demo3TargetLockLiquidityInput" class="form-check-label">lock_liquidity</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetPositionOpenInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="position_open" />
<label for="demo3TargetPositionOpenInput" class="form-check-label">position_open</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetPositionCloseInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="position_close" />
<label for="demo3TargetPositionCloseInput" class="form-check-label">position_close</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetPoolCreateInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="pool_create" />
<label for="demo3TargetPoolCreateInput" class="form-check-label">pool_create</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetPoolAdminInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="pool_admin" />
<label for="demo3TargetPoolAdminInput" class="form-check-label">pool_admin</label>
</div>
<div class="form-check form-check-inline">
<input id="demo3TargetUnknownNonSwapInput" class="form-check-input" type="checkbox" name="demo3TargetEventInput" value="unknown_non_swap" />
<label for="demo3TargetUnknownNonSwapInput" class="form-check-label">unknown_non_swap</label>
</div>
</div>
<div class="form-text">Leave all unchecked for generic discovery. Check several surfaces to scan once and keep candidates matching any selected target.</div>
<div class="form-text">Use this to find corpus signatures for non-swap decoders without promoting unverified events.</div>
</div>
<div class="col-6">
@@ -156,6 +212,8 @@
<h2 class="h5 mb-3">Résumé</h2>
<div class="row g-2 small">
<div class="col-6"><strong>Signatures:</strong> <span id="demo3SummarySignatureCount">0</span></div>
<div class="col-6"><strong>Unique fetched:</strong> <span id="demo3SummaryUniqueFetchedSignatureCount">0</span></div>
<div class="col-6"><strong>Pages:</strong> <span id="demo3SummaryFetchedPageCount">0</span></div>
<div class="col-6"><strong>Unique candidates:</strong> <span id="demo3SummaryUniqueSignatureCount">0</span></div>
<div class="col-6"><strong>Tx fetched:</strong> <span id="demo3SummaryFetchedTxCount">0</span></div>
<div class="col-6"><strong>Missing tx:</strong> <span id="demo3SummaryMissingTxCount">0</span></div>
@@ -176,6 +234,10 @@
<strong>Backfill signatures:</strong>
<span id="demo3UniqueSignatureText" class="font-monospace">-</span>
</div>
<div class="small text-body-secondary mt-2">
<strong>Next before cursors:</strong>
<span id="demo3NextBeforeText" class="font-monospace">-</span>
</div>
</div>
</div>