Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Compact Python library for interacting with Ankr's Advanced APIs.
pip install ankr-sdk
Note: to use Advanced API for free starting from May 29th, 2023 you have to register on the platform.
Get your individual endpoint here https://www.ankr.com/rpc/advanced-api and provide it to the AnkrWeb3
class.
from ankr import AnkrWeb3
ankr_w3 = AnkrWeb3("YOUR-TOKEN")
from ankr import AnkrWeb3
ankr_w3 = AnkrWeb3("YOUR-TOKEN")
eth_block = ankr_w3.eth.get_block("latest")
bsc_block = ankr_w3.bsc.get_block("latest")
polygon_block = ankr_w3.polygon.get_block("latest")
from ankr import AnkrWeb3
from ankr.types import Blockchain, GetNFTsByOwnerRequest
ankr_w3 = AnkrWeb3("YOUR-TOKEN")
nfts = ankr_w3.nft.get_nfts(
request=GetNFTsByOwnerRequest(
blockchain=Blockchain.Eth,
walletAddress="0x0E11A192d574b342C51be9e306694C41547185DD"
)
)
from ankr import AnkrWeb3
from ankr.types import GetAccountBalanceRequest
ankr_w3 = AnkrWeb3("YOUR-TOKEN")
assets = ankr_w3.token.get_account_balance(
request=GetAccountBalanceRequest(
walletAddress="0x77A859A53D4de24bBC0CC80dD93Fbe391Df45527"
)
)
from ankr import AnkrWeb3
from ankr.types import Blockchain, GetLogsRequest
ankr_w3 = AnkrWeb3("YOUR-TOKEN")
logs = ankr_w3.query.get_logs(
request=GetLogsRequest(
blockchain=[Blockchain.Eth],
fromBlock=1181739,
toBlock=1181739,
address=["0x3589d05a1ec4af9f65b0e5554e645707775ee43c"],
topics=[
[],
["0x000000000000000000000000feb92d30bf01ff9a1901666c5573532bfa07eeec"],
],
decodeLogs=True,
),
limit=10
)
ankr-sdk
supports the following chains at this time:
Mainnet
"eth"
"bsc"
"polygon"
"fantom"
"arbitrum"
"avalanche"
"syscoin"
"optimism"
"polygon_zkevm"
"rollux"
"base"
"flare"
"gnosis"
"scroll"
"linea"
"xai"
"xlayer"
"telos"
Testnet
"eth_sepolia"
"eth_holesky"
"avalanche_fuji"
"polygon_amoy"
"optimism_testnet"
"base_sepolia"
Appchain
"bas_metaapes"
Appchain Testnet
"bas_metaapes_testnet"
"neura_devnet"
"neura_testnet_v1"
"incentiv_devnet"
When passing blockchain, you can use one available from types.py
(preferred) or just a string value.
ankr-sdk
supports the following methods:
Early Access
get_token_price_history
get_account_balance_historical
get_internal_transactions_by_block_number
get_internal_transactions_by_parent_hash
Token API
explain_token_price
get_account_balance
get_currencies
get_token_holders
get_token_holders_count_history
get_token_holders_count
get_token_price
get_token_transfers
NFT API
Query API
Note: some methods are available in *_raw format, allowing to get full reply with syncStatus and control pagination by hands.
pageSize
and pageToken
pageSize
and pageToken
fields to these methodsget_token_price_history
/ get_token_price_history_raw
Get a list of history of the price for given contract to given timestamp.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTokenPriceHistoryRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_token_price_history(
request=GetTokenPriceHistoryRequest(
blockchain=Blockchain.Eth,
contractAddress='0x50327c6c5a14dcade707abad2e27eb517df87ab5',
toTimestamp=1696970653,
interval=100,
limit=10
)
)
print(result)
get_account_balance_historical
/ get_account_balance_historical_raw
Get the coin and token balances of the wallet at specified block.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetAccountBalanceHistoricalRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_account_balance_historical(
request=GetAccountBalanceHistoricalRequest(
blockchain=Blockchain.Eth,
walletAddress='vitalik.eth',
onlyWhitelisted=False,
blockHeight=17967813,
)
)
print(result)
get_internal_transactions_by_block_number
/ get_internal_transactions_by_block_number_raw
Get a list of internal transactions in the block.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetInternalTransactionsByBlockNumberRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_internal_transactions_by_block_number(
request=GetInternalTransactionsByBlockNumberRequest(
blockchain=Blockchain.Eth,
blockNumber=10000000,
onlyWithValue=True,
)
)
for transaction in result:
print(transaction)
get_internal_transactions_by_parent_hash
/ get_internal_transactions_by_parent_hash_raw
Get a list of internal transactions in the transaction.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetInternalTransactionsByParentHashRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_internal_transactions_by_parent_hash(
request=GetInternalTransactionsByParentHashRequest(
blockchain=Blockchain.Eth,
parentTransactionHash='0xa50f8744e65cb76f66f9d54499d5401866a75d93db2e784952f55205afc3acc5',
onlyWithValue=True,
)
)
for transaction in result:
print(transaction)
explain_token_price
/ explain_token_price_raw
Get a list of tokens and pool how price for calculated.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, ExplainTokenPriceRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
pairs, estimates = advancedAPI.explain_token_price(
request=ExplainTokenPriceRequest(
blockchain=Blockchain.Eth,
tokenAddress='0x8290333cef9e6d528dd5618fb97a76f268f3edd4',
blockHeight=17463534,
)
)
print(pairs)
print(estimates)
get_account_balance
/ get_account_balance_raw
Get the coin and token balances of a wallet.
from ankr import AnkrAdvancedAPI
from ankr.types import GetAccountBalanceRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_account_balance(
request=GetAccountBalanceRequest(
walletAddress="0x77A859A53D4de24bBC0CC80dD93Fbe391Df45527"
)
)
for balance in result:
print(balance)
get_currencies
/ get_currencies_raw
Get a list of supported currencies for a given blockchain.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetCurrenciesRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_currencies(
request=GetCurrenciesRequest(
blockchain=Blockchain.Fantom,
)
)
for currency in result:
print(currency)
get_token_holders
/ get_token_holders_raw
Get the list of token holders for a given contract address.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTokenHoldersRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_token_holders(
request=GetTokenHoldersRequest(
blockchain=Blockchain.Eth,
contractAddress='0xdac17f958d2ee523a2206206994597c13d831ec7',
)
)
for balance in result:
print(balance)
get_token_holders_count_history
/ get_token_holders_count_history_raw
Get historical data about the number of token holders for a given contract address.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTokenHoldersCountRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_token_holders_count_history(
request=GetTokenHoldersCountRequest(
blockchain=Blockchain.Eth,
contractAddress='0xdAC17F958D2ee523a2206206994597C13D831ec7',
)
)
for balance in result:
print(balance)
get_token_holders_count
/ get_token_holders_count_raw
Get current data about the number of token holders for a given contract address.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTokenHoldersCountRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_token_holders_count_history_raw(
request=GetTokenHoldersCountRequest(
blockchain=Blockchain.Eth,
contractAddress='0xdAC17F958D2ee523a2206206994597C13D831ec7',
)
)
print(result)
get_token_price
/ get_token_price_raw
Get token price by contract.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTokenPriceRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_token_price(
request=GetTokenPriceRequest(
blockchain=Blockchain.Eth,
contractAddress='',
)
)
print(result)
get_token_transfers
/ get_token_transfers_raw
Get token transfers of specified address.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTransfersRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_token_transfers(
request=GetTransfersRequest(
blockchain=Blockchain.Eth,
address=['0xf16e9b0d03470827a95cdfd0cb8a8a3b46969b91'],
fromTimestamp=1674441035,
toTimestamp=1674441035,
descOrder=True,
)
)
for transfer in result:
print(transfer)
get_nfts
/ get_nfts_raw
Get data about all the NFTs (collectibles) owned by a wallet.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetNFTsByOwnerRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_nfts(
request=GetNFTsByOwnerRequest(
blockchain=Blockchain.Eth,
walletAddress='0x0E11A192d574b342C51be9e306694C41547185DD',
)
)
for nft in result:
print(nft)
get_nft_metadata
/ get_nft_metadata_raw
Get NFT's contract metadata.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetNFTMetadataRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
reply = advancedAPI.get_nft_metadata(
request=GetNFTMetadataRequest(
blockchain=Blockchain.Eth,
contractAddress='0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d',
tokenId='1500',
forceFetch=False,
)
)
print(reply.metadata)
print(reply.attributes)
get_nft_holders
/ get_nft_holders_raw
Get NFT's holders.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetNFTHoldersRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_nft_holders(
request=GetNFTHoldersRequest(
blockchain=Blockchain.Arbitrum,
contractAddress='0xc36442b4a4522e871399cd717abdd847ab11fe88',
),
limit=1000
)
for holder in result:
print(holder)
get_nft_transfers
/ get_nft_transfers_raw
Get NFT Transfers of specified address.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTransfersRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_nft_transfers(
request=GetTransfersRequest(
blockchain=[Blockchain.Eth, Blockchain.Bsc],
address=['0xd8da6bf26964af9d7eed9e03e53415d37aa96045'],
fromTimestamp=1672553107,
toTimestamp=1672683207,
)
)
for transfer in result:
print(transfer)
get_logs
/ get_logs_raw
Get logs matching the filter.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetLogsRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_logs(
request=GetLogsRequest(
blockchain=[Blockchain.Eth],
fromBlock=1181739,
toBlock=1181739,
address=["0x3589d05a1ec4af9f65b0e5554e645707775ee43c"],
topics=[
[],
["0x000000000000000000000000feb92d30bf01ff9a1901666c5573532bfa07eeec"],
],
decodeLogs=True,
),
limit=10
)
for log in result:
print(log)
get_blocks
/ get_blocks_raw
Query data about blocks within a specified range.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetBlocksRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_blocks(
request=GetBlocksRequest(
blockchain=Blockchain.Eth,
fromBlock=14500001,
toBlock=14500004,
descOrder=True,
includeLogs=True,
includeTxs=True,
decodeLogs=True,
)
)
for block in result:
print(block)
get_transaction
/ get_transaction_raw
Query data about transaction by the transaction hash.
from ankr import AnkrAdvancedAPI
from ankr.types import GetTransactionsByHashRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_transaction(
request=GetTransactionsByHashRequest(
transactionHash='0x82c13aaac6f0b6471afb94a3a64ae89d45baa3608ad397621dbb0d847f51196f',
decodeTxData=True
)
)
print(result)
get_transactions_by_address
/ get_transactions_by_address_raw
Query data about transactions of specified address.
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTransactionsByAddressRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_transactions_by_address(
request=GetTransactionsByAddressRequest(
blockchain=Blockchain.Bsc,
fromBlock=23593283,
toBlock=23593283,
address=[
"0x97242e3315c7ece760dc7f83a7dd8af6659f8c4c"
],
descOrder=True,
)
)
for transaction in result:
print(transaction)
get_blockchain_stats
/ get_blockchain_stats_raw
Returns blockchain stats (num of txs, etc.).
from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetBlockchainStatsRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_blockchain_stats(
request=GetBlockchainStatsRequest(
blockchain=Blockchain.Bsc,
)
)
for stat in result:
print(stat)
get_interactions
/ get_interactions_raw
Returns on which chain address was interacting.
from ankr import AnkrAdvancedAPI
from ankr.types import GetInteractionsRequest
advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")
result = advancedAPI.get_interactions(
request=GetInteractionsRequest(
address='0xF977814e90dA44bFA03b6295A0616a897441aceC',
)
)
for blockchain in result:
print(blockchain)
Ankr is offering free access to Advanced API, however you have to register on Ankr platform to access it.
Get your individual API Key here https://www.ankr.com/rpc/advanced-api.
FAQs
Compact Python library for interacting with Ankr's Advanced APIs.
We found that ankr-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.