abstract-solana 0.0.0.1__tar.gz → 0.0.0.4__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.

Files changed (20) hide show
  1. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/PKG-INFO +1 -1
  2. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/setup.py +1 -1
  3. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana/pubkey_utils.py +9 -0
  4. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana/signature_data_parse.py +1 -1
  5. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana.egg-info/PKG-INFO +1 -1
  6. abstract_solana-0.0.0.4/test/test_abstract_solana.py +32 -0
  7. abstract_solana-0.0.0.1/test/test_abstract_solana.py +0 -111
  8. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/README.md +0 -0
  9. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/setup.cfg +0 -0
  10. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana/__init__.py +0 -0
  11. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana/account_key_utils.py +0 -0
  12. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana/genesis_functions.py +0 -0
  13. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana/index_utils.py +0 -0
  14. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana/log_message_functions.py +0 -0
  15. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana/price_utils.py +0 -0
  16. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana/utils.py +0 -0
  17. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana.egg-info/SOURCES.txt +0 -0
  18. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana.egg-info/dependency_links.txt +0 -0
  19. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana.egg-info/requires.txt +0 -0
  20. {abstract_solana-0.0.0.1 → abstract_solana-0.0.0.4}/src/abstract_solana.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: abstract_solana
3
- Version: 0.0.0.1
3
+ Version: 0.0.0.4
4
4
  Home-page: https://github.com/AbstractEndeavors/abstract_solana
5
5
  Author: putkoff
6
6
  Author-email: partners@abstractendeavors.com
@@ -4,7 +4,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
4
4
  long_description = fh.read()
5
5
  setuptools.setup(
6
6
  name='abstract_solana',
7
- version='0.0.0.01',
7
+ version='0.0.0.04',
8
8
  author='putkoff',
9
9
  author_email='partners@abstractendeavors.com',
10
10
  description="",
@@ -1,5 +1,6 @@
1
1
  from solders.pubkey import Pubkey
2
2
  from solders.signature import Signature
3
+
3
4
  def get_pubString(obj):
4
5
  return Pubkey.from_string(str(obj))
5
6
 
@@ -57,3 +58,11 @@ def get_sigkey(obj):
57
58
  if is_sigkey(sigKey):
58
59
  return sigKey
59
60
  return obj
61
+
62
+ def derive_associated_bonding_curve(mint,programId=None):
63
+ return get_associated_token_address(derive_bonding_curve(mint,programId)[0], get_pubkey(mint))
64
+ PUMP_FUN_PROGRAM = get_pubkey("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P")
65
+
66
+ def derive_bonding_curve(mint,programId=None):
67
+ programId = programId or PUMP_FUN_PROGRAM
68
+ return Pubkey.find_program_address(["bonding-curve".encode(), bytes(get_pubkey(mint))],programId)
@@ -6,7 +6,7 @@ def get_meta_from_txn(txnData):
6
6
  return txnData.get('meta',{})
7
7
 
8
8
  def get_transaction_from_txn(txnData):
9
- return txnData.get('transaction', {})
9
+ return get_meta_from_txn(txnData).get('transaction', {})
10
10
 
11
11
  def get_message_from_txn(txnData):
12
12
  return get_transaction_from_txn(txnData).get('message', {})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: abstract_solana
3
- Version: 0.0.0.1
3
+ Version: 0.0.0.4
4
4
  Home-page: https://github.com/AbstractEndeavors/abstract_solana
5
5
  Author: putkoff
6
6
  Author-email: partners@abstractendeavors.com
@@ -0,0 +1,32 @@
1
+ from abstract_solana import *
2
+ from spl.token.instructions import create_associated_token_account, get_associated_token_address
3
+ from price_functions import *
4
+ PUMP_FUN_PROGRAM = get_pubkey("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P")
5
+ TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
6
+ PUMP_FUN_PROGRAM = get_pubkey("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P")
7
+
8
+ PUMP_FUN_ASSOC_TOKEN_ACC_PROG = get_pubkey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL")
9
+ from abstract_solcatcher import *
10
+ def get_solcatcher_api(endpoint,*args,**kwargs):
11
+ return get_async_response(get_solcatcher_endpoint,endpoint=endpoint,*args,**kwargs)
12
+ def get_balance_info(balanceInfo, programId, authority):
13
+ return next((bal for bal in balanceInfo if programId == bal.get("programId") and authority == bal.get("owner")), {})
14
+
15
+ def get_transfer_info(transfer_instructions, txnData):
16
+ for transfer_instruction in transfer_instructions:
17
+ updated_instruction = get_balance_from_instruction(transfer_instruction, txnData)
18
+ transfer_instruction.update(updated_instruction)
19
+ return transfer_instructions
20
+
21
+ def get_transfer_instructions(txnData,programId=None):
22
+ programId = programId or PUMP_FUN_ASSOC_TOKEN_ACC_PROG
23
+ return get_transfer_info(find_in_catalog('transfer',txnData,programId=programId),txnData)
24
+
25
+ mint = "911eA3wRZ85ZiSTpmCH1hksPGLGgzyVpfMXtJ4zSzVJ5"
26
+ bondingCurve = str(derive_bonding_curve(mint))
27
+ #input(getsignaturesforaddress(str(derive_bonding_curve(mint)[0])))
28
+ signature = get_solcatcher_api("getGenesisSignature",account=str(derive_bonding_curve(mint)[0]))
29
+ txnData = get_solcatcher_api("getTransaction",tx_sig=str(signature))
30
+ parsed_txnData=find_in_catalog('transfer',txnData,TOKEN_PROGRAM_ID)
31
+ input(get_transfer_info(find_in_catalog('transfer',parsed_txnData,programId=PUMP_FUN_PROGRAM),txnData))
32
+ input(get_transfer_instructions(txnData))
@@ -1,111 +0,0 @@
1
- from abstract_solana import *
2
- from spl.token.instructions import create_associated_token_account, get_associated_token_address
3
- from solders_rpc import *
4
- PUMP_FUN_PROGRAM = get_pubkey("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P")
5
-
6
- PUMP_FUN_ASSOC_TOKEN_ACC_PROG = get_pubkey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL")
7
- from abstract_solcatcher import *
8
- def get_solcatcher_api(endpoint,*args,**kwargs):
9
- return get_async_response(get_solcatcher_endpoint,endpoint=endpoint,*args,**kwargs)
10
- def derive_associated_bonding_curve(mint):
11
- return get_associated_token_address(derive_bonding_curve(mint)[0], get_pubkey(mint))
12
- def derive_bonding_curve(mint):
13
- return Pubkey.find_program_address(["bonding-curve".encode(), bytes(get_pubkey(mint))],PUMP_FUN_PROGRAM)
14
-
15
- def get_balance_info(balanceInfo, programId, authority):
16
- return next((bal for bal in balanceInfo if programId == bal.get("programId") and authority == bal.get("owner")), {})
17
- def get_balance_from_instruction(transfer_instruction, txnData):
18
- preBalance = txnData["meta"].get("preTokenBalances", [])
19
- postBalance = txnData["meta"].get("postTokenBalances", [])
20
-
21
- # Update transfer_instruction with source, destination, and authority
22
- accounts = transfer_instruction.get("accounts", [])
23
- transfer_instruction.update({
24
- key: accounts[i] for i, key in enumerate(["source", "destination", "authority"])
25
- })
26
-
27
- preBalanceInfo = get_balance_info(preBalance, transfer_instruction['programId'], transfer_instruction['authority'])
28
- postBalanceInfo = get_balance_info(postBalance, transfer_instruction['programId'], transfer_instruction['authority'])
29
-
30
- amount = preBalanceInfo.get('uiTokenAmount', {}).get('amount', 0) - postBalanceInfo.get('uiTokenAmount', {}).get('amount', 0)
31
- transfer_instruction['amount'] = amount
32
-
33
- return transfer_instruction
34
- def get_transfer_info(transfer_instructions, txnData):
35
- for transfer_instruction in transfer_instructions:
36
- updated_instruction = get_balance_from_instruction(transfer_instruction, txnData)
37
- transfer_instruction.update(updated_instruction)
38
-
39
- return transfer_instructions
40
- async def async_getSignaturesForAddress(account: Pubkey,
41
- before: Optional[Signature] = None,
42
- until: Optional[Signature] = None,
43
- limit: Optional[int] = None,
44
- commitment: Optional[Commitment] = None,
45
- errorProof=False):
46
- """Returns confirmed signatures for transactions involving an address.
47
-
48
- Signatures are returned backwards in time from the provided signature or
49
- most recent confirmed block.
50
-
51
- Args:
52
- account: Account to be queried.
53
- before: (optional) Start searching backwards from this transaction signature.
54
- If not provided the search starts from the top of the highest max confirmed block.
55
- until: (optional) Search until this transaction signature, if found before limit reached.
56
- limit: (optional) Maximum transaction signatures to return (between 1 and 1,000, default: 1,000).
57
- commitment: (optional) Bank state to query. It can be either "finalized", "confirmed" or "processed".
58
-
59
- Example:
60
- >>> solana_client = Client("http://localhost:8899")
61
- >>> from solders.pubkey import Pubkey
62
- >>> pubkey = Pubkey.from_string("Vote111111111111111111111111111111111111111")
63
- >>> solana_client.get_signatures_for_address(pubkey, limit=1).value[0].signature # doctest: +SKIP
64
- Signature(
65
- 1111111111111111111111111111111111111111111111111111111111111111,
66
- )
67
- """
68
- account=get_pubkey(account)
69
- before=get_sigkey(before)
70
- until=until
71
- limit=limit or 1000
72
- commitment=commitment
73
- response = json.loads(str(Client().get_signatures_for_address(account=account,before=before,until=until,limit=limit,commitment=commitment)))
74
- signatureArray= await makeLimitedCall(response.get('method'),response.get('params'))
75
- if errorProof:
76
- signatureArray = [signatureData for signatureData in signatureArray if signatureData.get('err') == None]
77
- return signatureArray
78
- def getsignaturesforaddress(account,before=None,until=None,limit=None,commitment=None,errorProof=None):
79
- return get_async_response(async_getSignaturesForAddress,account=account,before=before,until=until,limit=limit,commitment=commitment,errorProof=errorProof)
80
-
81
- def get_transfer_instructions(txnData,programId=None):
82
- programId = programId or PUMP_FUN_ASSOC_TOKEN_ACC_PROG
83
- return get_transfer_info(find_in_catalog('transfer',txnData,programId=programId),txnData)
84
- async def async_getGenesisSignature(account,before=None,limit=1000,commitment=None):
85
- method = "getGenesisSignature"
86
- limit=1000
87
-
88
- genesisSignature=None
89
- if genesisSignature == None:
90
- before = before or None
91
- genesisSignature = None # This will store the last seen valid signature
92
- while True:
93
- signatureArray = await getsignaturesforaddress(account=account,before=before,limit=limit,commitment=commitment)
94
- signatureArrayInfo = return_oldest_last_and_original_length_from_signature_array(signatureArray)
95
- genesisSignature = signatureArrayInfo.get("oldestValid") or genesisSignature
96
-
97
- if before == signatureArrayInfo.get("oldest") or signatureArrayInfo.get("length") < limit:
98
- #insert_Db(method.lower(), str(account), (str(account), str(genesisSignature)))
99
- return genesisSignature
100
- before = signatureArrayInfo.get("oldest")
101
- return genesisSignature
102
-
103
- def getgenesissignature(account,before=None,limit=None,commitment=None):
104
- return get_async_response(async_getGenesisSignature,account=account,before=before,limit=limit,commitment=commitment)
105
-
106
- mint = "911eA3wRZ85ZiSTpmCH1hksPGLGgzyVpfMXtJ4zSzVJ5"
107
- bondingCurve = str(derive_bonding_curve(mint))
108
- #input(getsignaturesforaddress(str(derive_bonding_curve(mint)[0])))
109
- input(getgenesissignature(str(derive_bonding_curve(mint)[0])))
110
- parsed_txn = get_solcatcher_api("getParsedTransaction",signature="2pQRuCawe8it1X4bvKZnmSZZfcLUXd3q1ki8z1kMBCKm52eU2obQxGSkpRR1tX88nquy5iNiycebit3BFsQaDPcx")
111
- input(get_transfer_instructions(parsed_txn,programId=PUMP_FUN_ASSOC_TOKEN_ACC_PROG))