# Скрипт для клейма токена Арбитрум с контракта **Published by:** [soulllvision](https://paragraph.com/@s1vsn/) **Published on:** 2023-03-21 **URL:** https://paragraph.com/@s1vsn/zPs9bkERLIkV1FS1rlX4 ## Content Код написан на Python. Перед ег озапуском нужно выполнить следубщие шаги: Установите Python на свой компьютер, если он еще не установлен. Вы можете скачать и установить Python с официального сайта: https://www.python.org/downloads/ Откройте текстовый редактор, такой как Notepad, Sublime Text или PyCharm. Скопируйте код скрипта и вставьте его в текстовый редактор. Сохраните файл со скриптом с расширением ".py" (например, "script.py") в удобном для вас месте на вашем компьютере. Откройте командную строку в Windows или терминал в macOS/Linux. Перейдите в директорию, где вы сохранили файл со скриптом, с помощью команды "cd" (например, "cd C:\Users\Username\Documents"). Запустите скрипт, введя в терминале команду "python script.py" (замените "script.py" на имя вашего файла со скриптом, если оно отличается). Нажмите Enter и дождитесь, пока скрипт выполнится. Если вы используете PyCharm, то запустить скрипт можно просто нажав кнопку "Run" в редакторе. Ниже предстафлен сам код скрипта. import os from web3 import Web3 from dotenv import load_dotenv load_dotenv() подключаемся к сети Arbitrum w3 = Web3(Web3.HTTPProvider(os.getenv('WEB3_PROVIDER_URL'))) адрес контракта contract_address = Web3.toChecksumAddress( '0x67a24ce4321ab3af51c2d0a4801c3e111d88c9d9') аби-интерфейс контракта contract_abi = [ { "inputs": [], "name": "claimTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "tokenBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ] создаем экземпляр контракта contract = w3.eth.contract(address=contract_address, abi=contract_abi) адрес биржи, на который будут отправлены токены после клейма exchange_address = Web3.toChecksumAddress( '0x0000000000000000000000000000000000000000') адрес кошелька, с которого будет производиться клейминг токенов wallet_address = Web3.toChecksumAddress(os.getenv('WALLET_ADDRESS')) приватный ключ кошелька, с которого будет производиться клейминг токенов wallet_private_key = os.getenv('WALLET_PRIVATE_KEY') газ-лимит для транзакции gas_limit = 300000 функция для автоматического определения цены за газ def get_gas_price(): # получаем текущую цену за газ с помощью API провайдера gas_price = w3.eth.gas_price # устанавливаем цену за газ в 1.5 раза выше текущей средней цены return int(gas_price * 1.5) клеймим токены и отправляем их на адрес биржи def claim_and_send_tokens(): # получаем баланс токенов на контракте token_balance = contract.functions.tokenBalance().call() # если баланс равен 0, то выводим сообщение и завершаем выполнение функции if token_balance == 0: print('Token balance is 0, nothing to claim.') return # создаем транзакцию для клейма токенов tx = contract.functions.claimTokens().buildTransaction({ 'from': wallet_address, 'nonce': w3.eth.getTransactionCount(wallet_address), 'gas': gas_limit, 'gasPrice': get_gas_price() }) # подписываем транзакцию с помощью приватного ключа signed_tx = w3.eth.account.sign_transaction(tx, private_key=wallet_private_key) # отправляем транзакцию на сеть tx_hash = ## Publication Information - [soulllvision](https://paragraph.com/@s1vsn/): Publication homepage - [All Posts](https://paragraph.com/@s1vsn/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@s1vsn): Subscribe to updates - [Twitter](https://twitter.com/soulllvision): Follow on Twitter