abstract-solana 0.0.0.59__tar.gz → 0.0.0.61__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of abstract-solana might be problematic. Click here for more details.
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/PKG-INFO +1 -1
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/setup.py +1 -1
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/pumpFun/buy_sell_pump.py +15 -16
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/pumpFun/pump_fun_keys.py +3 -3
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/pumpFun/token_utils.py +15 -2
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana.egg-info/PKG-INFO +1 -1
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/test/test_abstract_solana.py +3 -2
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/README.md +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/setup.cfg +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/__init__.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/account_key_utils.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/constants.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/genesis_functions.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/index_utils.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/keypair_utils.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/log_message_functions.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/price_utils.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/pubkey_utils.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/pumpFun/__init__.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/signature_data_parse.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/utils.py +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana.egg-info/SOURCES.txt +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana.egg-info/dependency_links.txt +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana.egg-info/requires.txt +0 -0
- {abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana.egg-info/top_level.txt +0 -0
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/pumpFun/buy_sell_pump.py
RENAMED
|
@@ -65,9 +65,9 @@ def confirm_txn(txn_sig, max_retries=20, retry_interval=3):
|
|
|
65
65
|
time.sleep(retry_interval)
|
|
66
66
|
print("Max retries reached. Transaction confirmation failed.")
|
|
67
67
|
return None
|
|
68
|
-
def buildTxn(mint,payer_pubkey, amount, slippage,
|
|
68
|
+
def buildTxn(mint,payer_pubkey, amount, slippage, token_account,sol_in=0,token_price=0,token_balance=0,token_account_instructions=None,close_token_account=False,buy=True):
|
|
69
69
|
# Get keys for the transaction, pass the token account's pubkey instead of the AccountMeta object
|
|
70
|
-
keys = getKeys(mint,
|
|
70
|
+
keys = getKeys(mint, token_account=token_account, payer_pubkey=payer_pubkey,buy=buy)
|
|
71
71
|
slippage_adjustment = 1 - (slippage / 100)
|
|
72
72
|
sol_change = sol_in if buy else float(token_balance) * float(token_price)
|
|
73
73
|
sol_change_with_slippage = sol_change * slippage_adjustment
|
|
@@ -93,8 +93,8 @@ def buildTxn(mint,payer_pubkey, amount, slippage, token_account_pubkey,sol_in=0,
|
|
|
93
93
|
txn.add(close_account_instructions)
|
|
94
94
|
return txn
|
|
95
95
|
|
|
96
|
-
def get_all_buy_sell_info(mint,payer_pubkey,token_balance=None,sol_in=0):
|
|
97
|
-
|
|
96
|
+
def get_all_buy_sell_info(mint,payer_pubkey,token_balance=None,sol_in=0,buy=True):
|
|
97
|
+
|
|
98
98
|
print("Owner Public Key:", payer_pubkey)
|
|
99
99
|
mint_str = str(mint)
|
|
100
100
|
if not get_pubkey(mint_str).is_on_curve():
|
|
@@ -116,17 +116,16 @@ def get_all_buy_sell_info(mint,payer_pubkey,token_balance=None,sol_in=0):
|
|
|
116
116
|
print(f"Token Price: {token_price:.20f} SOL")
|
|
117
117
|
amount = int(LAMPORTS_PER_SOL * token_price)
|
|
118
118
|
print("Calculated Amount:", amount)
|
|
119
|
-
if
|
|
120
|
-
token_balance
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
if buy == False:
|
|
120
|
+
if token_balance == None:
|
|
121
|
+
token_balance = get_token_balance(token_account,mint_str)
|
|
122
|
+
print("Token Balance:", token_balance)
|
|
123
|
+
if token_balance == 0:
|
|
124
|
+
return False
|
|
124
125
|
return mint,amount,token_balance,token_price,token_account_pubkey,token_account_instructions
|
|
125
|
-
|
|
126
|
-
print(e)
|
|
127
|
-
|
|
126
|
+
|
|
128
127
|
def pump_fun_sell(mint: str,payer_pubkey:Pubkey, token_balance: Optional[Union[int, float]] = None, slippage: int = 25, close_token_account: bool = True) -> bool:
|
|
129
|
-
mint,amount,token_balance,token_price,
|
|
128
|
+
mint,amount,token_balance,token_price,token_account,token_account_instructions = get_all_buy_sell_info(mint,payer_pubkey,token_balance=token_balance,buy=False)
|
|
130
129
|
return buildTxn(mint=mint,
|
|
131
130
|
payer_pubkey=payer_pubkey,
|
|
132
131
|
amount=amount,
|
|
@@ -134,12 +133,12 @@ def pump_fun_sell(mint: str,payer_pubkey:Pubkey, token_balance: Optional[Union[i
|
|
|
134
133
|
sol_in=0,
|
|
135
134
|
token_balance=token_balance,
|
|
136
135
|
token_price=token_price,
|
|
137
|
-
|
|
136
|
+
token_account=token_account,
|
|
138
137
|
token_account_instructions=token_account_instructions,
|
|
139
138
|
buy=False)
|
|
140
139
|
|
|
141
140
|
def pump_fun_buy(mint: str,payer_pubkey:Pubkey, sol_in: float = 0.001, slippage: int = 25) -> bool:
|
|
142
|
-
mint,amount,token_balance,token_price,
|
|
141
|
+
mint,amount,token_balance,token_price,token_account,token_account_instructions = get_all_buy_sell_info(mint,payer_pubkey,sol_in=sol_in,buy=True,)
|
|
143
142
|
# Build the transaction
|
|
144
143
|
return buildTxn(mint=mint,
|
|
145
144
|
payer_pubkey=payer_pubkey,
|
|
@@ -148,7 +147,7 @@ def pump_fun_buy(mint: str,payer_pubkey:Pubkey, sol_in: float = 0.001, slippage:
|
|
|
148
147
|
sol_in=sol_in,
|
|
149
148
|
token_balance=0,
|
|
150
149
|
token_price=0,
|
|
151
|
-
|
|
150
|
+
token_account=token_account,
|
|
152
151
|
token_account_instructions=token_account_instructions,
|
|
153
152
|
buy=True)
|
|
154
153
|
return True
|
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/pumpFun/pump_fun_keys.py
RENAMED
|
@@ -103,13 +103,13 @@ def get_pump_fun_data(mint_str: str):
|
|
|
103
103
|
|
|
104
104
|
return txn_types
|
|
105
105
|
|
|
106
|
-
def getKeys(mint_str,
|
|
106
|
+
def getKeys(mint_str,token_account,payer_pubkey,buy=True):
|
|
107
107
|
coin_data = get_pump_fun_data(str(mint_str))
|
|
108
108
|
MINT = get_pubkey(str(mint_str))
|
|
109
109
|
BONDING_CURVE = get_pubkey(coin_data['bonding_curve'])
|
|
110
110
|
ASSOCIATED_BONDING_CURVE = get_pubkey(coin_data['associated_bonding_curve'])
|
|
111
|
-
ASSOCIATED_USER =
|
|
112
|
-
USER =
|
|
111
|
+
ASSOCIATED_USER = Pubkey.from_string(str(token_account))
|
|
112
|
+
USER = Pubkey.from_string(str(payer_pubkey))
|
|
113
113
|
PUMP_FUN_TOKEN_PROGRAM_SWITCH = TOKEN_PROGRAM_ID_PUBKEY if buy else PUMP_FUN_ASSOC_TOKEN_ACC_PROG_PUBKEY
|
|
114
114
|
PUMP_FUN_RENT_PROGRAM_SWITCH = RENT_PUBKEY if buy else TOKEN_PROGRAM_ID_PUBKEY
|
|
115
115
|
# Build account key list
|
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/pumpFun/token_utils.py
RENAMED
|
@@ -4,6 +4,7 @@ from .pump_fun_keys import get_pump_fun_data
|
|
|
4
4
|
from abstract_solcatcher import getTokenAccountBalance,getTokenAccountsByOwner
|
|
5
5
|
from spl.token.instructions import create_associated_token_account, get_associated_token_address
|
|
6
6
|
from abstract_utilities import get_any_value
|
|
7
|
+
import requests
|
|
7
8
|
def get_token_balance(payer,mint: str):
|
|
8
9
|
response = getTokenAccountBalance(str(payer),str(mint))
|
|
9
10
|
response=response.get('value',response)
|
|
@@ -24,8 +25,20 @@ def get_token_price(mint: str) -> float:
|
|
|
24
25
|
except Exception as e:
|
|
25
26
|
print(f"Error calculating token price: {e}")
|
|
26
27
|
return None
|
|
27
|
-
def get_account_by_owner(payer,
|
|
28
|
-
|
|
28
|
+
def get_account_by_owner(payer, mint_str: str) -> dict:
|
|
29
|
+
payload = {
|
|
30
|
+
"jsonrpc": "2.0",
|
|
31
|
+
"id": 1,
|
|
32
|
+
"method": "getTokenAccountsByOwner",
|
|
33
|
+
"params": [payer, {"mint": mint_str}, {"encoding": "jsonParsed"}]
|
|
34
|
+
}
|
|
35
|
+
response = requests.post(
|
|
36
|
+
url="https://rpc.ankr.com/solana/c3b7fd92e298d5682b6ef095eaa4e92160989a713f5ee9ac2693b4da8ff5a370",
|
|
37
|
+
json=payload
|
|
38
|
+
)
|
|
39
|
+
response_json = response.json()
|
|
40
|
+
|
|
41
|
+
result = response_json.get('result')
|
|
29
42
|
if not result or 'value' not in result:
|
|
30
43
|
return None
|
|
31
44
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
from spl.token.instructions import CloseAccountParams
|
|
2
|
-
from abstract_solana import pump_fun_sell,load_from_private_key,sendTransaction,load_from_private_key
|
|
2
|
+
from src.abstract_solana import get_pubkey,confirm_txn,pump_fun_sell,pump_fun_buy,load_from_private_key,sendTransaction,load_from_private_key
|
|
3
3
|
from solana.rpc.types import TxOpts
|
|
4
4
|
payer_keypair = load_from_private_key()
|
|
5
|
-
payer_pubkey = payer_keypair.pubkey()
|
|
5
|
+
payer_pubkey = get_pubkey(payer_keypair.pubkey())
|
|
6
6
|
mint_str = "3bb6QmvustnZ627Kg2QvwTSi8gmxp7Y6orwXUokEwUyV"
|
|
7
7
|
txn = pump_fun_sell(mint=mint_str,payer_pubkey=payer_pubkey, token_balance=None, slippage=25)
|
|
8
|
+
#txn = pump_fun_buy(mint=mint_str,payer_pubkey=payer_pubkey)
|
|
8
9
|
txn.sign(payer_keypair)
|
|
9
10
|
txn_sig = sendTransaction(txn, payer_keypair, TxOpts(skip_preflight=True))
|
|
10
11
|
print("Transaction Signature", txn_sig)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/account_key_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/genesis_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/log_message_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/pumpFun/__init__.py
RENAMED
|
File without changes
|
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana/signature_data_parse.py
RENAMED
|
File without changes
|
|
File without changes
|
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana.egg-info/requires.txt
RENAMED
|
File without changes
|
{abstract_solana-0.0.0.59 → abstract_solana-0.0.0.61}/src/abstract_solana.egg-info/top_level.txt
RENAMED
|
File without changes
|