Create app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from solana.rpc.async_api import AsyncClient
|
| 2 |
+
from solana.publickey import PublicKey
|
| 3 |
+
import asyncio
|
| 4 |
+
import requests
|
| 5 |
+
|
| 6 |
+
# The token's mint address for the desired token you want to verify
|
| 7 |
+
token_mint_address = "YourTokenMintAddressHere"
|
| 8 |
+
|
| 9 |
+
# Function to get all SPL token accounts for a given wallet
|
| 10 |
+
async def get_token_accounts(wallet_address):
|
| 11 |
+
async with AsyncClient("https://api.mainnet-beta.solana.com") as client:
|
| 12 |
+
response = await client.get_token_accounts_by_owner(PublicKey(wallet_address),
|
| 13 |
+
program_id=PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"))
|
| 14 |
+
return response['result']['value']
|
| 15 |
+
|
| 16 |
+
# Function to check if the wallet holds a specific token and amount
|
| 17 |
+
def verify_token_holding(token_accounts, token_mint_address, required_amount):
|
| 18 |
+
for account in token_accounts:
|
| 19 |
+
account_data = account['account']['data']['parsed']['info']
|
| 20 |
+
if account_data['mint'] == token_mint_address:
|
| 21 |
+
amount = float(account_data['tokenAmount']['uiAmount'])
|
| 22 |
+
if amount >= required_amount:
|
| 23 |
+
return True, amount
|
| 24 |
+
return False, 0
|
| 25 |
+
|
| 26 |
+
# Main function
|
| 27 |
+
async def check_wallet(wallet_address, token_mint_address, required_amount):
|
| 28 |
+
token_accounts = await get_token_accounts(wallet_address)
|
| 29 |
+
is_holding, amount = verify_token_holding(token_accounts, token_mint_address, required_amount)
|
| 30 |
+
if is_holding:
|
| 31 |
+
print(f"The wallet {wallet_address} holds at least {required_amount} of the token {token_mint_address}. It holds: {amount}")
|
| 32 |
+
else:
|
| 33 |
+
print(f"The wallet {wallet_address} does not hold the required amount of the token.")
|
| 34 |
+
|
| 35 |
+
# Prompt the user to enter their wallet address
|
| 36 |
+
wallet_address = input("Please enter your wallet address: ")
|
| 37 |
+
required_amount = float(input("Please enter the required amount: "))
|
| 38 |
+
|
| 39 |
+
# Run the check
|
| 40 |
+
token_mint_address = "ReplaceWithYourTokenMintAddress"
|
| 41 |
+
asyncio.run(check_wallet(wallet_address, token_mint_address, required_amount))
|
| 42 |
+
|
| 43 |
+
# Install required dependencies:
|
| 44 |
+
# pip install solana requests
|
| 45 |
+
|
| 46 |
+
"""
|
| 47 |
+
This script is designed to check if a given Solana wallet holds a certain token and the required amount.
|
| 48 |
+
To use this script:
|
| 49 |
+
1. Replace "ReplaceWithYourTokenMintAddress" with the actual token mint address.
|
| 50 |
+
2. The script will prompt the user to paste their wallet address and required token amount.
|
| 51 |
+
"""
|