Ограничения скорости публичных RPC SolanaPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ограничения скорости публичных RPC Solana

Сообщение Anonymous »

Я пытаюсь написать бота на solana, используя Python и библиотеку solathon. Когда я использую devnet rpc, я могу отправлять несколько запросов с транзакциями, например, я отправляю 1 sol из 30 кошельков в один или из одного кошелька в 30 кошельков. Но когда я использую публичный RPC solana mainnet-beta, я могу отправлять только 1 запрос за 10 секунд, как я вижу на solana.com, существуют одинаковые ограничения скорости для devnet и mainnet:
-Максимальное количество запросов за 10 секунд на один IP: 100
-Максимальное количество запросов за 10 секунд на один IP для одного RPC: 40
Так проблема в моем коде или в его поддельных ограничениях скорости?
Не знаю, нужна помощь, ребята, главный вопрос - как отправить несколько транзакций, например, с 30 кошельков к одному.
Я пытался отправить несколько транзакций, используя несколько инструкций, чтобы отправить только один запрос, проблема в том, что одна подписывающая сторона = 64 байта, лимит Solana на транзакцию = 2132 байта, мне удалось только отправлять солы с 10 кошельков по одному запросу.

Код: Выделить всё

from solathon.core.instructions import transfer
from solathon import Client, Transaction, PublicKey, Keypair

client = Client("https://api.devnet.solana.com")
def send_solana(sender_private_key, receiver_wallet_adress, amount_sol: int):
sender_private_key = Keypair.from_private_key(sender_private_key)
receiver_wallet_adress = PublicKey(
receiver_wallet_adress)

instruction = transfer(
from_public_key=sender_private_key.public_key,
to_public_key=receiver_wallet_adress,
lamports=amount_sol
)

transaction = Transaction(
instructions=[instruction], signers=[sender_private_key])

result = client.send_transaction(transaction)
print("Transaction response: ", result)

send_solana("MY-PRIVATE", "5Ge1rk9CRX3WZ2jvLPq3iWokP83XCLH2FNeh85KQetSs", 1000)
# IF I PUT HERE time.sleep(10) IT WORKS
send_solana("MY-PRIVATE", "EXAMPLE-SECOND-WALLET-PUBLIC-KEY", 1000)
Здесь я могу показать функцию, которая использует только один запрос

Код: Выделить всё

def send_all_to_one(sender_private_keys, receiver_public_key, amount):
senders = [Keypair.from_private_key(key) for key in sender_private_keys]
receiver = PublicKey(receiver_public_key)

instructions = []
for sender in senders:
instructions.append(transfer(
from_public_key=sender.public_key,
to_public_key=receiver,
lamports=amount
))

transaction = Transaction(instructions=instructions, signers=senders)

result = client.send_transaction(transaction)
print(result)
Но проблема в том, что я могу использовать только список из 10 sender_private_keys, потому что одна подписывающая сторона = 64 байта, лимит транзакции = 1232 байта. Может быть, мы сможем подписать транзакцию, не прописывая все секретные ключи в Singers=senders в транзакции?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ate-limits
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»