') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); fix(explorer): count only active operators for weight by uri-99 · Pull Request #934 · yetanotherco/aligned_layer · GitHub
Skip to content

fix(explorer): count only active operators for weight - #934

Merged
uri-99 merged 13 commits into
stagingfrom
933-fixexplorer-inactive-operators-should-not-count-their-stake
Sep 16, 2024
Merged

fix(explorer): count only active operators for weight#934
uri-99 merged 13 commits into
stagingfrom
933-fixexplorer-inactive-operators-should-not-count-their-stake

Conversation

@uri-99

@uri-99uri-99 commented Sep 6, 2024

Copy link
Copy Markdown
Contributor

Changes

  • Feat: Conditionally add weight to DB only if the operator is active
  • Fix: Update operator.total_stake after restaking changes
  • Fix: correctly manage operator unregistration

Test

Follow the usual steps to get aligned up and running. These are:

Each command with a number is meant to be run on a separate terminal instance/tab.

  1. Starts anvil
make anvil_start_with_block_time
  1. On another Starts the aggregator
make aggregator_start
  1. Registers and starts the operator:
make operator_register_and_start
  1. Start Explorer
    For better test experience, you should change the following code line:
    In explorer/lib/explorer/periodically.ex
    Line 20, change from:
    :timer.send_interval(one_second * seconds_in_an_hour, :restakings) # every 1 hour
    to
    :timer.send_interval(one_second * 30, :restakings) # every 30 seconds
    Now, you can run_explorer
make run_explorer
  1. (On Another Tab) Fetch old operator changes in explorer
make explorer_fetch_old_operators_strategies_restakes

You will know this script is done when you are handed control over the iex (interactive elixir console). You will get control with the classic > symbol.
You can close this interactive console by pressing ctrl + c twice.

After this script, you should be able to see the new, updated, Total Active Operators value in the Explorer.

To disable an operator, you must eject it.
For this, you can must run the following command:

cast send \
0x851356ae760d987E095750cCeb3bC6014560891C \
--rpc-url localhost:8545 \
"ejectOperator(address, bytes)" 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 0x00 \
--private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

After ejecting an Operator, his status should change to disabled, and his stake go down to 0, as well as the total Stake should decrement accordingly.

You can also run more than 1 operator, and eject only 1, to see values change accordingly.
To run more than 1 operator, you can change line 5 of Makefile to the following:

CONFIG_FILE?=config-files/config-operator-2.yaml

And then on another terminal:

make operator_register_and_start

@uri-99uri-99 self-assigned this Sep 6, 2024
@uri-99uri-99 linked an issue Sep 6, 2024 that may be closed by this pull request
@MauroToscano

Copy link
Copy Markdown
Contributor

May need extra testing

@MauroToscanoMauroToscano left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add steps to test

Comment threadexplorer/lib/explorer/models/operators.ex Outdated
@uri-99
uri-99 marked this pull request as draft September 9, 2024 20:13
@uri-99
uri-99 marked this pull request as ready for review September 10, 2024 15:38

@glpecileglpecile left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

need re-review

@uri-99uri-99 changed the title fix: count only active operators for weightfix(explorer): count only active operators for weightSep 10, 2024
Comment threadexplorer/lib/explorer/periodically.ex Outdated
Comment threadMakefile
Comment threadMakefile
Comment threadexplorer/lib/explorer/models/restakings.ex
Comment threadexplorer/lib/explorer/models/strategies.ex Outdated
@uri-99
uri-99 merged commit 4fe73da into stagingSep 16, 2024
@uri-99
uri-99 deleted the 933-fixexplorer-inactive-operators-should-not-count-their-stake branch September 16, 2024 21:29
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(explorer): inactive operators should not count their stake

5 participants

@uri-99@MauroToscano@glpecile@NicolasRampoldi@entropidelic