Giter Club home page Giter Club logo

eth-solo-validator-addresses's Introduction

Ethereum addresses belonging to Solo Stakers

This repository is intended to identify addresses under the control of Solo Stakers and for projects that wish to target Solo Stakers for incentives or onboard actors capable of supporting decentralized node operations.

Latest Snapshot: Dencun network upgrade 2024/03/13


What is a Solo Staker

Independent operators Staking for themselves who are not part of an entity staking on behalf of others. Independent operators can run their own infrastructure (e.g. stake from home) or use cloud (VPS) for hosting but are in complete control of the setup, maintenance and keys.

‘Liquid’, ‘managed’ or ‘custodial’ staking where entities stake on behalf of users are centralizing to the network as stake is concentrated to a few entities, also in other factors such as hardware/geographic distribution/client diversity.

For more detail see this article from Nixo Ethstaker

Intent

To identify Solo Stakers (independent node operators) and promote decentralization.

Incentivize decentralization with external incentives (such as airdrops to Solo Stakers) leading to more potential stakers opting to solo stake over using alternatives such as liquid staking. Increase the number of node operators independent of each other thus strengthening network integrity.

Provide value for projects that wish to onboard the type of actors capable of supporting node operations. 99% of normal users do not run nodes, solo stakers take on the responsibilities of node operations without delegating this work to third parties.

What is included as a Solo Staker:

  • Solo Stakers who run from home
  • Solo Stakers who run from the cloud
  • Rocket Pool home operators
  • EigenPod Solo Stakers

Other types of independent node operators:

  • Gnosischain home stakers
  • Other types of independent node operators: such as home DVT node operators to be included in time.

List Exclusions

All Contract address deposits: deposits via contract address are indicative of entity behavior and excluded by default, see “Exceptions for Contracts”.

Managed staking services: such as ‘Allnodes’/’Bloxstaking’ are excluded, not only is the deposit via contract they act as an entity that manage/setup and run the validator on behalf of their users, who cannot be considered Solo Stakers or independent node operators.

Temporary Coinbase Deposit Addresses: Addresses with no other history but Coinbase withdrawal and beacon deposit, are identified as Coinbase. This set will likely contain some number of privacy focused Solo Stakers but is significantly large that cannot reasonably be included as potential Solo Staker.

Exceptions for Contracts:
Rocketpool node operators: deposits for “minipools” are via smart contract, Rocketpool node operators make up a significant portion of the solo staking landscape and are included by looking at Rocketpool contracts.

Abyss Finance users: work is being done to identify Solo Stakers from the Entities that use the contract to make multiple deposits in one transaction. Issue #10

How to Use Solo Stakers

List A or List B

Unlike identifying Entities with much more resources/disclosures and behavior to track (including openness from entities themselves to self-identify), identification of Solo stakers is much more difficult (like proving a negative).

Solo-Staker-A: Potential Solo Stakers

Ethereum addresses that deposited a valid 32 ETH transaction to the beacon chain and have at least 1 active validator, with identified entity addresses removed. Solo-Staker-A will include all Solo-Staker-B addresses.

More inclusive is a 'ceiling' on the total Solo Staker profile; it is likely to contain unidentified entities, but all solo stakers should reside in. This simply takes all normal beacon chain depositors and removes positively identified entities.

15,580 addresses in Solo Staker A at “Dencun” network upgrade 2024/03/13 epoch: 26958.

Solo-Staker-B: High confidence Solo Stakers

Ethereum addresses that deposited a valid 32 ETH transaction to the beacon chain and have at least 1 active validator, with a history of smart contract/token interactions, identified entity addresses removed. All Solo-Staker-B addresses will be present in Solo-Staker-A.

More restrictive conditions for a more targeted curated set, by looking for additional contract/token interactions which is indicative of Ethereum network users with proven on-chain history.

from Rated: “Solo stakers fund all (or some if in Rocketpool) of the stake through their own means. This is usually via a generic wallet that is used for multiple purposes.”

7,509 addresses in Solo Staker B at “Dencun” network upgrade 2024/03/13 epoch: 26958.

Rocketpool node operators

Rocketpool node operator owned Ethereum withdrawal addresses associated with a node account that operated at least one active validator.

Rocketpool accounts for a large portion of independent node operators on the network and should be included alongside Solo Stakers. Rocketpool is a decentralized staking pool with permissionless node operators.

Rocketpool node accounts are normal Ethereum addresses, which can be used for token interactions however act as a sudo cold wallet intended only for staking/unstaking interactions with the Rocketpool CLI, it is advised that withdrawal addresses be used.

34,668 Minipools (rocketpool validators) deployed with 2,642 node operator withdrawal addresses belonging to Solo Stakers using Rocketpool, at “Dencun” network upgrade 2024/03/13 epoch: 26958.

Eigenpod Solo Stakers

Identified in /Metadata, Eigenpod (Native Restakers) solo stakers will be included in Solo-Stakers-A + B via deposit address by default.

Associated withdrawal addresses are eigenpod contracts and tokens sent to this contract are unrecoverable, therefore deposit addresses are advised to be used.

Metadata

/Solo-Stakers-Metadata/ takes deposit addresses and expands to include additional data which can be used to gather associated withdrawal addresses, validator count, time staked. Etc.

Snapshots

/Solo-Stakers-Snapshots/ various snapshots at earlier dates can be found here, such as Ethereum network upgrades eg: Merge

Sybil identification:

The list makes no attempt to connect addresses, it is likely that some individual users are counted multiple times with access to multiple deposit addresses, thus an individual node operator might appear on the network as many. This is a much deeper topic but worth briefly going into.

Built in sybil: excluding temporary deposit addresses, projects may wish to use B list to filter potential sybil accounts.

Time: sybil behavior is not a significant problem as of now, this may become more relevant in future as Solo Staker inclusion catches on. Example: pre-merge, airdrops to solo stakers were non-existent meaning this behavior was not incentivized.

High Cost: Solo staking is anti-sybil due to high capital requirement, where DeFi users can create virtually x1000s of wallets at no cost and wash to generate large volume on each appearing as many separate users, this is not possible with validator deposits.

Methodology

Step 1: Beacon chain data

Data source: etherscan.io, Ethereum blockchain Beacon Chain deposit contract: 0x00000000219ab540356cBB839Cbe05303d7705Fa

Extract all ‘Normal Ethereum Transactions’ to the beacon chain contract address, from contract creation to the latest snapshot (Dencun network upgrade) to make the foundation data Beacon-Chain-Data.

Filter invalid or failed transactions: If the “Status” column displays any transaction that either ‘execution reverted’, ‘out of gas’, or ‘reverted’ with an 'Error(0)' code, it is an invalid transaction and the deposit failed, therefore entries with ‘Error(0)’ in the status column are removed.

Get unique deposit addresses: remove duplicate entries under the 'From' column, resulting in a dataset consisting of all unique deposit addresses that made a valid deposit to the beacon chain.

Step 2: Entity list

Data source: Hildoby: Entity tags from https://github.com/hildobby/spellbook/tree/main Etherscan/beaconcha.in entity tags

Entity-List compiles a comprehensive list of identified entities from various sources, such as etherscan.io/beaconcha.in & Hildoby dune dashboards.

Contains positively Identified addresses belonging to Staking as a Service/ Liquid Staking provider addresses (such as Lido and Stakewise) and Exchange CEX addresses (such as Kraken and Binance).

Smart contract depositors: Deposits via smart contract address are indicative of entity behavior, entities with assets under management will typically use multi-sig with multiple signers to move funds, or smart contract to handle multiple deposits in one transaction.

Example Lido: Batched transactions to deposit multiple validators via smart contract So, by extracting only normal Ethereum transactions to the beacon contract many entities are already excluded, then exceptions can be made for select depositors such as Rocketpool users.

Coinbase: 135,084 addresses (2024/04/10) represent a significant portion of unique deposit addresses, using a fresh temporary address per deposit and can be identified with the following pattern, with change returned to Coinbase: Miscellaneous

Another pattern with change being left in the temporary deposit address, this set is over 10k addresses, does not positively identify as Coinbase owned with potential of belonging to Solo Stakers using a temporary address, but is simply too large a set with no way to differentiate Solo Stakers from Coinbase.

To get Coinbase from dune:

SELECT
  depositor_address
FROM staking_ethereum.entities
WHERE
  entity = 'Coinbase'

Step 3: Filter Entities - Solo Staker A

All unique deposit addresses from beacon-chain-data with all identified entity addresses from entity-list removed. This leaves unidentified potential Solo Staker addresses.

Step 4: Solo Staker B

Data source: Dune Analytics (https://dune.com/)

High Confidence Solo Staker Owned Addresses

Find addresses that have made a valid Beacon Chain deposit and have also interacted with smart contracts/tokens, with identified entities from Entity-List removed.

Using Dune analytics, the following query looks for (ethereum."transactions") to the beacon contract 0x00000000219ab540356cBB839Cbe05303d7705Fa and joins with ContractInteractions from senders who have interacted with contracts other than the beacon chain contract in past transactions.

Query for Dune analytics:

WITH ContractInteractions AS (  
    SELECT DISTINCT "from" as address  
    FROM ethereum."transactions"  
    WHERE LENGTH(data) > 2 -- Excluding '0x' and empty inputs  
    AND "to" != 0x00000000219ab540356cBB839Cbe05303d7705Fa -- Excluding the beacon chain contract  
)  
  
SELECT  
  t."from" as address,  
  SUM(t.value / 1e18) as deposited_eth,  
  COUNT(t."from") as transaction_count  
FROM  
  ethereum."transactions" t  
JOIN ContractInteractions ci ON t."from" = ci.address  
WHERE  
  t."to" = 0x00000000219ab540356cBB839Cbe05303d7705Fa  
GROUP BY  
  t."from"  
HAVING  
  COUNT(t."from") >= 1  
ORDER BY  
  deposited_eth DESC;  

Step 5: Rocketpool

Data source: Rocketscan API (https://rocketscan.io/)

All unique “withdrawal addresses” associated with RocketPool "node accounts"; data can be queried from Rocketscan API

curl -Ss --compressed "https://rocketscan.io/api/mainnet/nodes/list" | jq -r '.[] | "\(.address) \(.withdrawalAddress)"' > output-add-with-wid-add.txt  

Step 6: Metadata

Data source: beaconcha.in API or beacon node

Using Deposit addresses from Solo-Staker-A generate all associated validator public-keys with the following query

Using public-keysmetadata such as: .block_number, .block_ts, .tx_hash, .withdrawal_credentials, .status, .exitepoch can be obtained with the following queries < link to query reference>

This data in then placed into the Metadata sheet, which is arranged in the following format: (Deposit address, validator public key, deposit tx, date, status, exit date, withdrawal address.)

To see full list of api’s see beaconcha.in docs

The same is done for Rocketpool but using Rocketpool Node Account addresses from <query link rpl-accounts+minipool>

eth-solo-validator-addresses's People

Contributors

glcni avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

eth-solo-validator-addresses's Issues

Allnodes solo staking addresses are not on your intial lists

Many of us are huge fans of solo staking but don't have stable enough internet connections in our locations. Many of us in similar situations (rural areas, etc) were fully committed to make sure we were early solo stakers since it was the best way to support the network. Please work with Allnodes to make sure our individual solo staking addresses are included in your lists. Thank you.

Some potential errors

Hey! I couldn't find any socials linked to your gh account so just going to post this here.

Some of the Dune queries here look like they might be missing some data, mainly because of using ethereum.transactions over ethereum.traces.

I made some dune tables you can use to query for staking data without needing to write the whole code, staking_ethereum.flows should contain all the info you need (including tags), this is the main table I use for my staking dashboard: https://dune.com/hildobby/eth2-staking. You can also dig through the code for it here: https://github.com/duneanalytics/spellbook/tree/main/models/staking/ethereum (see staking_ethereum_deposits.sql & staking_ethereum_flows.sql for in/outflows and other tables for entity tagging).

Also, Rated's 6.5% estimation is for home stakers which isn't the same as solo stakers. Solo stakers can use aws and thus not be home stakers while tagged entities could stake with their own infra and thus be considered home stakers.

Feel free to DM me on Twitter (@hildobby_) or Telegram (@hildobby) if you need help here :)

Missing solo staker address

Pls check and add this solo staker address, nearly one year online till today.

deposit address: 0xbF61f0a9e0EE373Ed413967a28C1fDd4a95C2EDc
withdrawal address: 0x2fbD9145E639D647242D43De7939867948614eF1

Missing address

Could you check it out?
0x7c712ec9f87b9b7298979bbe4681919e6a7173fc

Adding address as a solo staker

hi team - can you please add my address as a solo staker?

Validator 1353912
0xfE3dF0076520a392c175CE453d03456b72669A88

Thanks

Include Abyss Finance deposits to solo stakers.

0xfa5f9eaa65ffb2a75de092eb7f3fc84fc86b5b18 is labeled as Abyss Finance in Entity-list.csv.
This smart contract is used by users to deposit multiple validators, with just one transaction.

Quoting from https://abyss.finance/ :

Ethereum Depositor
Abyss Ethereum Depositor is a convenient tool that will help you to make multiple deposits to Ethereum Deposit Contract in one batch.

Deposits from Abyss Finance should also be classified, as multiple deposits are solo stakers that use this smart contract for convenience.

Missing solo stakers

Hi!

My validators are missing from the list(s)

validator 1282781
0x95ae881d995b43615997dcd51f2ac0714f70b90612e045651b82f4cbc6f0216f4d62b8f781e8ffd4f8f98a736e889439

withdrawal credential
0x1Fe587f0C50b4B9A82795cFF8233328866cf00EE

&

validator 1282884
0xa46fe39846eb7024c659e5296d4b0c429da6fa0610c5830d32fce742dfbec4b825c53e30349f29709befdf948f9cdd2b

withdrawal credential
0xf975ffaC57d7b72D22E99c717e0ee6C7C9EE10C5

Validator Address is missing

Thanks for the efforts.

Yet I am not able to see my validator addresses of my validators nr 289465 and nr 289464.
Their addresses are
0x84ac84a97e29931a05b092deda247b9bb8be67a26d155a48b4ecb0abfb5f50fd6c96c12b43033be8e2eebb97e5cc8fae
and
0xaa23c48e497b3469fa17ff39f5ebfc636567b50e76ee71749e3e29d327f4ac136ef9b462f7d031c2c43aa35e49bae439

Solo staker missing

Hi!
My validator is missing from the list(s)

0x86511810efa0411a6b1095c457ffed546282f1150e854831071e49b3bf035428b2e48f8f1d720eb230d01455acef1ab6

Staking since a month or two after genesis!
TIA

Missing and duplicate Addresses

Missing entries
multiple reports of missing addresses, this was investigated, and the problem found.
missing entries from block number 14703839- 14739161, 15519174- 15537393. Due to the way data was pulled from Etherscan it was missed.

Duplicates
There are duplicate addresses which were unique depositors in the beacon chain and also withdrawal addresses for Rocketpool, and counted twice

Maybe some addresses are missing

Just checked the list to see if my deposit address appeared and wasn't able to find it.

Just to be sure, I checked the blacklist and it wasn't there as well.

Hope this helps to keep an up to date list.

missing from gnosis

Run ETH & Gnosis locally here but I'm only included on the ETH list and not Gnosis? Thanks

0x1F27af0bAd8A2c7C38E68f548716E4ac003A2F17

IMG_4486

Missing

Neither my deposit nor withdrawal are on any list... how can I provide non-publicly?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.