Skip to content

Instantly share code, notes, and snippets.

@melardev
Created May 12, 2024 09:56
Show Gist options
  • Select an option

  • Save melardev/57b4d325a74c969355c0a0cbb5b013e1 to your computer and use it in GitHub Desktop.

Select an option

Save melardev/57b4d325a74c969355c0a0cbb5b013e1 to your computer and use it in GitHub Desktop.
import {clusterApiUrl, Connection, LAMPORTS_PER_SOL, PublicKey} from "@solana/web3.js";
// const connection = new Connection("https://api.mainnet-beta.solana.com", 'confirmed');
const connection = new Connection(clusterApiUrl("mainnet-beta"));
async function getAccountBalance(publicKey: PublicKey) {
const balanceInLamports = await connection.getBalance(publicKey);
const balanceInSOL = balanceInLamports / LAMPORTS_PER_SOL;
return balanceInSOL;
}
function sleep(ms: number) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function permute(elements: string[]) {
var length = elements.length,
result = [elements.slice()],
c = new Array(length).fill(0),
i = 1, k, p;
while (i < length) {
if (c[i] < i) {
k = i % 2 && c[i];
p = elements[i];
elements[i] = elements[k];
elements[k] = p;
++c[i];
i = 1;
result.push(elements.slice());
} else {
c[i] = 0;
++i;
}
}
return result;
}
async function run() {
const elements = ["sH9hT1sM", "JepXyrCGAeH", "hfEba2nV", "FitBcgbcM", "GdTyCmK"];
const allCombinations = permute(elements);
console.log(`We have ${allCombinations.length} combinations`)
let wallet = null;
for (let i = 0; i < allCombinations.length; i++) {
const combo = allCombinations[i];
const address = combo.join('')
const publicKey = new PublicKey(address);
const balance = await getAccountBalance(publicKey);
console.log(`[*] ${i} Checking ${address}`)
if (balance > 0) {
console.log(`Wallet ${publicKey.toString()} has a balance of ${balance} SOL`);
wallet = address;
break
}
await sleep(500)
}
if (wallet != null) {
console.log('\n\n')
console.log('\x1b[32m%s\x1b[0m', `[+] Address is ${wallet}`)
}
}
run();
@melardev
Copy link
Author

Another solution, using Python to create the permutations, then SQL to run it in Dune:

import itertools

# Given parts
parts = ["sH9hT1sM", "JepXyrCGAeH", "hfEba2nV", "FitBcgbcM", "GdTyCmK"]

# Generate all combinations (permutations of the parts)
combinations = list(itertools.permutations(parts))

# Build SQL query
sql_query = "SELECT *\nFROM solana_utils.latest_balances\nWHERE sol_balance > 0\nAND address IN (\n"

# Append each combination as a string
for combo in combinations:
    # Concatenate the parts into a single address
    address = ''.join(combo)
    sql_query += f"    '{address}',\n"

# Remove the last comma and add the closing parenthesis
sql_query = sql_query.rstrip(',\n') + "\n);"

# Output the SQL query
print(sql_query)

Dune query output:

SELECT *
FROM solana_utils.latest_balances
WHERE sol_balance > 0
AND address IN (
    'sH9hT1sMJepXyrCGAeHhfEba2nVFitBcgbcMGdTyCmK',
    'sH9hT1sMJepXyrCGAeHhfEba2nVGdTyCmKFitBcgbcM',
    'sH9hT1sMJepXyrCGAeHFitBcgbcMhfEba2nVGdTyCmK',
    'sH9hT1sMJepXyrCGAeHFitBcgbcMGdTyCmKhfEba2nV',
    'sH9hT1sMJepXyrCGAeHGdTyCmKhfEba2nVFitBcgbcM',
    'sH9hT1sMJepXyrCGAeHGdTyCmKFitBcgbcMhfEba2nV',
    'sH9hT1sMhfEba2nVJepXyrCGAeHFitBcgbcMGdTyCmK',
    'sH9hT1sMhfEba2nVJepXyrCGAeHGdTyCmKFitBcgbcM',
    'sH9hT1sMhfEba2nVFitBcgbcMJepXyrCGAeHGdTyCmK',
    'sH9hT1sMhfEba2nVFitBcgbcMGdTyCmKJepXyrCGAeH',
    'sH9hT1sMhfEba2nVGdTyCmKJepXyrCGAeHFitBcgbcM',
    'sH9hT1sMhfEba2nVGdTyCmKFitBcgbcMJepXyrCGAeH',
    'sH9hT1sMFitBcgbcMJepXyrCGAeHhfEba2nVGdTyCmK',
    'sH9hT1sMFitBcgbcMJepXyrCGAeHGdTyCmKhfEba2nV',
    'sH9hT1sMFitBcgbcMhfEba2nVJepXyrCGAeHGdTyCmK',
    'sH9hT1sMFitBcgbcMhfEba2nVGdTyCmKJepXyrCGAeH',
    'sH9hT1sMFitBcgbcMGdTyCmKJepXyrCGAeHhfEba2nV',
    'sH9hT1sMFitBcgbcMGdTyCmKhfEba2nVJepXyrCGAeH',
    'sH9hT1sMGdTyCmKJepXyrCGAeHhfEba2nVFitBcgbcM',
    'sH9hT1sMGdTyCmKJepXyrCGAeHFitBcgbcMhfEba2nV',
    'sH9hT1sMGdTyCmKhfEba2nVJepXyrCGAeHFitBcgbcM',
    'sH9hT1sMGdTyCmKhfEba2nVFitBcgbcMJepXyrCGAeH',
    'sH9hT1sMGdTyCmKFitBcgbcMJepXyrCGAeHhfEba2nV',
    'sH9hT1sMGdTyCmKFitBcgbcMhfEba2nVJepXyrCGAeH',
    'JepXyrCGAeHsH9hT1sMhfEba2nVFitBcgbcMGdTyCmK',
    'JepXyrCGAeHsH9hT1sMhfEba2nVGdTyCmKFitBcgbcM',
    'JepXyrCGAeHsH9hT1sMFitBcgbcMhfEba2nVGdTyCmK',
    'JepXyrCGAeHsH9hT1sMFitBcgbcMGdTyCmKhfEba2nV',
    'JepXyrCGAeHsH9hT1sMGdTyCmKhfEba2nVFitBcgbcM',
    'JepXyrCGAeHsH9hT1sMGdTyCmKFitBcgbcMhfEba2nV',
    'JepXyrCGAeHhfEba2nVsH9hT1sMFitBcgbcMGdTyCmK',
    'JepXyrCGAeHhfEba2nVsH9hT1sMGdTyCmKFitBcgbcM',
    'JepXyrCGAeHhfEba2nVFitBcgbcMsH9hT1sMGdTyCmK',
    'JepXyrCGAeHhfEba2nVFitBcgbcMGdTyCmKsH9hT1sM',
    'JepXyrCGAeHhfEba2nVGdTyCmKsH9hT1sMFitBcgbcM',
    'JepXyrCGAeHhfEba2nVGdTyCmKFitBcgbcMsH9hT1sM',
    'JepXyrCGAeHFitBcgbcMsH9hT1sMhfEba2nVGdTyCmK',
    'JepXyrCGAeHFitBcgbcMsH9hT1sMGdTyCmKhfEba2nV',
    'JepXyrCGAeHFitBcgbcMhfEba2nVsH9hT1sMGdTyCmK',
    'JepXyrCGAeHFitBcgbcMhfEba2nVGdTyCmKsH9hT1sM',
    'JepXyrCGAeHFitBcgbcMGdTyCmKsH9hT1sMhfEba2nV',
    'JepXyrCGAeHFitBcgbcMGdTyCmKhfEba2nVsH9hT1sM',
    'JepXyrCGAeHGdTyCmKsH9hT1sMhfEba2nVFitBcgbcM',
    'JepXyrCGAeHGdTyCmKsH9hT1sMFitBcgbcMhfEba2nV',
    'JepXyrCGAeHGdTyCmKhfEba2nVsH9hT1sMFitBcgbcM',
    'JepXyrCGAeHGdTyCmKhfEba2nVFitBcgbcMsH9hT1sM',
    'JepXyrCGAeHGdTyCmKFitBcgbcMsH9hT1sMhfEba2nV',
    'JepXyrCGAeHGdTyCmKFitBcgbcMhfEba2nVsH9hT1sM',
    'hfEba2nVsH9hT1sMJepXyrCGAeHFitBcgbcMGdTyCmK',
    'hfEba2nVsH9hT1sMJepXyrCGAeHGdTyCmKFitBcgbcM',
    'hfEba2nVsH9hT1sMFitBcgbcMJepXyrCGAeHGdTyCmK',
    'hfEba2nVsH9hT1sMFitBcgbcMGdTyCmKJepXyrCGAeH',
    'hfEba2nVsH9hT1sMGdTyCmKJepXyrCGAeHFitBcgbcM',
    'hfEba2nVsH9hT1sMGdTyCmKFitBcgbcMJepXyrCGAeH',
    'hfEba2nVJepXyrCGAeHsH9hT1sMFitBcgbcMGdTyCmK',
    'hfEba2nVJepXyrCGAeHsH9hT1sMGdTyCmKFitBcgbcM',
    'hfEba2nVJepXyrCGAeHFitBcgbcMsH9hT1sMGdTyCmK',
    'hfEba2nVJepXyrCGAeHFitBcgbcMGdTyCmKsH9hT1sM',
    'hfEba2nVJepXyrCGAeHGdTyCmKsH9hT1sMFitBcgbcM',
    'hfEba2nVJepXyrCGAeHGdTyCmKFitBcgbcMsH9hT1sM',
    'hfEba2nVFitBcgbcMsH9hT1sMJepXyrCGAeHGdTyCmK',
    'hfEba2nVFitBcgbcMsH9hT1sMGdTyCmKJepXyrCGAeH',
    'hfEba2nVFitBcgbcMJepXyrCGAeHsH9hT1sMGdTyCmK',
    'hfEba2nVFitBcgbcMJepXyrCGAeHGdTyCmKsH9hT1sM',
    'hfEba2nVFitBcgbcMGdTyCmKsH9hT1sMJepXyrCGAeH',
    'hfEba2nVFitBcgbcMGdTyCmKJepXyrCGAeHsH9hT1sM',
    'hfEba2nVGdTyCmKsH9hT1sMJepXyrCGAeHFitBcgbcM',
    'hfEba2nVGdTyCmKsH9hT1sMFitBcgbcMJepXyrCGAeH',
    'hfEba2nVGdTyCmKJepXyrCGAeHsH9hT1sMFitBcgbcM',
    'hfEba2nVGdTyCmKJepXyrCGAeHFitBcgbcMsH9hT1sM',
    'hfEba2nVGdTyCmKFitBcgbcMsH9hT1sMJepXyrCGAeH',
    'hfEba2nVGdTyCmKFitBcgbcMJepXyrCGAeHsH9hT1sM',
    'FitBcgbcMsH9hT1sMJepXyrCGAeHhfEba2nVGdTyCmK',
    'FitBcgbcMsH9hT1sMJepXyrCGAeHGdTyCmKhfEba2nV',
    'FitBcgbcMsH9hT1sMhfEba2nVJepXyrCGAeHGdTyCmK',
    'FitBcgbcMsH9hT1sMhfEba2nVGdTyCmKJepXyrCGAeH',
    'FitBcgbcMsH9hT1sMGdTyCmKJepXyrCGAeHhfEba2nV',
    'FitBcgbcMsH9hT1sMGdTyCmKhfEba2nVJepXyrCGAeH',
    'FitBcgbcMJepXyrCGAeHsH9hT1sMhfEba2nVGdTyCmK',
    'FitBcgbcMJepXyrCGAeHsH9hT1sMGdTyCmKhfEba2nV',
    'FitBcgbcMJepXyrCGAeHhfEba2nVsH9hT1sMGdTyCmK',
    'FitBcgbcMJepXyrCGAeHhfEba2nVGdTyCmKsH9hT1sM',
    'FitBcgbcMJepXyrCGAeHGdTyCmKsH9hT1sMhfEba2nV',
    'FitBcgbcMJepXyrCGAeHGdTyCmKhfEba2nVsH9hT1sM',
    'FitBcgbcMhfEba2nVsH9hT1sMJepXyrCGAeHGdTyCmK',
    'FitBcgbcMhfEba2nVsH9hT1sMGdTyCmKJepXyrCGAeH',
    'FitBcgbcMhfEba2nVJepXyrCGAeHsH9hT1sMGdTyCmK',
    'FitBcgbcMhfEba2nVJepXyrCGAeHGdTyCmKsH9hT1sM',
    'FitBcgbcMhfEba2nVGdTyCmKsH9hT1sMJepXyrCGAeH',
    'FitBcgbcMhfEba2nVGdTyCmKJepXyrCGAeHsH9hT1sM',
    'FitBcgbcMGdTyCmKsH9hT1sMJepXyrCGAeHhfEba2nV',
    'FitBcgbcMGdTyCmKsH9hT1sMhfEba2nVJepXyrCGAeH',
    'FitBcgbcMGdTyCmKJepXyrCGAeHsH9hT1sMhfEba2nV',
    'FitBcgbcMGdTyCmKJepXyrCGAeHhfEba2nVsH9hT1sM',
    'FitBcgbcMGdTyCmKhfEba2nVsH9hT1sMJepXyrCGAeH',
    'FitBcgbcMGdTyCmKhfEba2nVJepXyrCGAeHsH9hT1sM',
    'GdTyCmKsH9hT1sMJepXyrCGAeHhfEba2nVFitBcgbcM',
    'GdTyCmKsH9hT1sMJepXyrCGAeHFitBcgbcMhfEba2nV',
    'GdTyCmKsH9hT1sMhfEba2nVJepXyrCGAeHFitBcgbcM',
    'GdTyCmKsH9hT1sMhfEba2nVFitBcgbcMJepXyrCGAeH',
    'GdTyCmKsH9hT1sMFitBcgbcMJepXyrCGAeHhfEba2nV',
    'GdTyCmKsH9hT1sMFitBcgbcMhfEba2nVJepXyrCGAeH',
    'GdTyCmKJepXyrCGAeHsH9hT1sMhfEba2nVFitBcgbcM',
    'GdTyCmKJepXyrCGAeHsH9hT1sMFitBcgbcMhfEba2nV',
    'GdTyCmKJepXyrCGAeHhfEba2nVsH9hT1sMFitBcgbcM',
    'GdTyCmKJepXyrCGAeHhfEba2nVFitBcgbcMsH9hT1sM',
    'GdTyCmKJepXyrCGAeHFitBcgbcMsH9hT1sMhfEba2nV',
    'GdTyCmKJepXyrCGAeHFitBcgbcMhfEba2nVsH9hT1sM',
    'GdTyCmKhfEba2nVsH9hT1sMJepXyrCGAeHFitBcgbcM',
    'GdTyCmKhfEba2nVsH9hT1sMFitBcgbcMJepXyrCGAeH',
    'GdTyCmKhfEba2nVJepXyrCGAeHsH9hT1sMFitBcgbcM',
    'GdTyCmKhfEba2nVJepXyrCGAeHFitBcgbcMsH9hT1sM',
    'GdTyCmKhfEba2nVFitBcgbcMsH9hT1sMJepXyrCGAeH',
    'GdTyCmKhfEba2nVFitBcgbcMJepXyrCGAeHsH9hT1sM',
    'GdTyCmKFitBcgbcMsH9hT1sMJepXyrCGAeHhfEba2nV',
    'GdTyCmKFitBcgbcMsH9hT1sMhfEba2nVJepXyrCGAeH',
    'GdTyCmKFitBcgbcMJepXyrCGAeHsH9hT1sMhfEba2nV',
    'GdTyCmKFitBcgbcMJepXyrCGAeHhfEba2nVsH9hT1sM',
    'GdTyCmKFitBcgbcMhfEba2nVsH9hT1sMJepXyrCGAeH',
    'GdTyCmKFitBcgbcMhfEba2nVJepXyrCGAeHsH9hT1sM'
);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment