├── README.md ├── Readme.md ├── bot.py ├── requirements.txt └── token.py /README.md: -------------------------------------------------------------------------------- 1 | # Panduan Instalasi Nexus pada VPS 2 | 3 | Berikut adalah langkah-langkah manual untuk menginstal Nexus pada VPS. 4 | 5 | ## 1. Hapus Folder .nexus (Jika Ada) 6 | 7 | Jika kamu ingin membersihkan instalasi sebelumnya, hapus folder `.nexus` dengan perintah berikut: 8 | 9 | ```bash 10 | rm -rf ~/.nexus 11 | ``` 12 | ## 2. Perbarui Paket Sistem 13 | Untuk memastikan bahwa sistem kamu sudah terbarui, jalankan perintah berikut: 14 | ```bash 15 | sudo apt update && sudo apt upgrade -y 16 | ``` 17 | Setelah itu, instal beberapa dependensi yang diperlukan untuk kompilasi dan instalasi Nexus CLI: 18 | ```bash 19 | sudo apt install build-essential pkg-config libssl-dev git-all -y 20 | ``` 21 | ```bash 22 | sudo apt update 23 | sudo apt install -y protobuf-compiler 24 | ``` 25 | ```bash 26 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 27 | ``` 28 | ```bash 29 | source $HOME/.cargo/env 30 | export PATH="$HOME/.cargo/bin:$PATH" 31 | ``` 32 | ```bash 33 | curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v25.2/protoc-25.2-linux-x86_64.zip 34 | unzip protoc-25.2-linux-x86_64.zip -d $HOME/.local 35 | export PATH="$HOME/.local/bin:$PATH" 36 | ``` 37 | 38 | ## 3. Jalankan Nexus di Sesi Screen 39 | Untuk menjalankan Nexus di latar belakang agar tetap berjalan meskipun kamu keluar dari terminal, gunakan screen: 40 | 41 | Buat sesi screen baru: 42 | ```bash 43 | screen -S nexus 44 | ``` 45 | Jalankan ulang Nexus CLI dengan perintah berikut: 46 | ```bash 47 | curl https://cli.nexus.xyz/ | sh 48 | ``` 49 | Masukkan Node ID 50 | 51 | Untuk menemukan node-id, buka https://app.nexus.xyz/nodes 52 | Klik Add Node, klik Add CLI Nodedan salin node-id dan tempel di terminal 53 | 54 | ## Done 55 | 56 | ## Join Telegram Airdrop Node: 57 | 58 | [Telegram Airdrop Node] 59 | (https://t.me/airdrop_node) 60 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # Panduan Instalasi Nexus pada VPS 2 | 3 | Berikut adalah langkah-langkah manual untuk menginstal Nexus pada VPS. 4 | 5 | ## 1. Hapus Folder .nexus (Jika Ada) 6 | 7 | Jika kamu ingin membersihkan instalasi sebelumnya, hapus folder `.nexus` dengan perintah berikut: 8 | 9 | ```bash 10 | rm -rf ~/.nexus 11 | ``` 12 | ## 2. Perbarui Paket Sistem 13 | Untuk memastikan bahwa sistem kamu sudah terbarui, jalankan perintah berikut: 14 | ```bash 15 | sudo apt update && sudo apt upgrade -y 16 | ``` 17 | Setelah itu, instal beberapa dependensi yang diperlukan untuk kompilasi dan instalasi Nexus CLI: 18 | ```bash 19 | sudo apt install build-essential pkg-config libssl-dev git-all -y 20 | ``` 21 | ```bash 22 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 23 | ``` 24 | ```bash 25 | source $HOME/.cargo/env 26 | export PATH="$HOME/.cargo/bin:$PATH" 27 | ``` 28 | 29 | ## 3. Jalankan Nexus di Sesi Screen 30 | Untuk menjalankan Nexus di latar belakang agar tetap berjalan meskipun kamu keluar dari terminal, gunakan screen: 31 | 32 | Buat sesi screen baru: 33 | ```bash 34 | screen -S nexus 35 | ``` 36 | Jalankan ulang Nexus CLI dengan perintah berikut: 37 | ```bash 38 | curl https://cli.nexus.xyz/ | sh 39 | ``` 40 | Masukkan Node ID 41 | 42 | Untuk menemukan node-id, buka https://app.nexus.xyz/nodes 43 | Klik Add Node, klik Add CLI Nodedan salin node-id dan tempel di terminal 44 | 45 | ## Done 46 | 47 | ## Join Telegram Airdrop Node: 48 | 49 | [Telegram Airdrop Node] 50 | (https://t.me/airdrop_node) 51 | -------------------------------------------------------------------------------- /bot.py: -------------------------------------------------------------------------------- 1 | import secrets 2 | import time 3 | from web3 import Web3 4 | from colorama import Fore, Style, init 5 | 6 | # Initialize colorama 7 | init(autoreset=True) 8 | 9 | # Nexus Network Configuration 10 | RPC_URL = "rpc.nexus.xyz/http" 11 | CHAIN_ID = 392 12 | DECIMALS = 18 # Set to the token's decimals (commonly 18 for most tokens) 13 | 14 | # List of recipient addresses 15 | RECIPIENTS = [ 16 | "0x175dB51A58F12cfa1BD5A1096c8D6E7F31faAdf0", 17 | "0x4a9B045e4395371066De4deD1b8EAFD9f2e621EE", 18 | "0xE73d3CA82b36662FC740f48341Ab4b0C6aCa7E93", 19 | "0xE73d3CA82b36662FC740f48341Ab4b0C6aCa7E93" 20 | ] 21 | 22 | # Function to send native Nexus tokens 23 | def send_native_nexus(sender, senderkey, recipient, web3, retries=3): 24 | amount = 1 # Sending exactly 1 NEX per transaction 25 | for attempt in range(retries): 26 | try: 27 | nonce = web3.eth.get_transaction_count(sender) 28 | base_gas_price = web3.eth.gas_price 29 | gas_price = int(base_gas_price * (1.2 + attempt * 0.1)) 30 | 31 | transaction = { 32 | 'chainId': CHAIN_ID, 33 | 'nonce': nonce, 34 | 'to': recipient, 35 | 'value': int(amount * (10 ** DECIMALS)), 36 | 'gas': 21000, 37 | 'gasPrice': gas_price, 38 | } 39 | 40 | signed_txn = web3.eth.account.sign_transaction(transaction, senderkey) 41 | print(Fore.CYAN + f'Memproses pengiriman {amount} NEX ke alamat: {recipient} ...') 42 | 43 | tx_hash = web3.eth.send_raw_transaction(signed_txn.rawTransaction) 44 | txid = web3.to_hex(tx_hash) 45 | web3.eth.wait_for_transaction_receipt(tx_hash) 46 | 47 | print(Fore.GREEN + f'Pengiriman {amount} NEX ke {recipient} berhasil!') 48 | print(Fore.GREEN + f'TX-ID : {txid}') 49 | break 50 | except Exception as e: 51 | print(Fore.RED + f"Error pada percobaan {attempt + 1}: {e}") 52 | if attempt < retries - 1: 53 | print(Fore.YELLOW + f"Mencoba lagi dalam 60 detik... ({attempt + 1}/{retries})") 54 | time.sleep(60) 55 | else: 56 | print(Fore.RED + f"Transaksi gagal setelah {retries} percobaan.") 57 | 58 | # Function to check RPC connection 59 | def check_rpc_url(rpc_url, retries=3): 60 | for attempt in range(retries): 61 | try: 62 | web3 = Web3(Web3.HTTPProvider(rpc_url)) 63 | if web3.is_connected(): 64 | print(Fore.GREEN + "Terhubung ke RPC dengan sukses!") 65 | print(Fore.CYAN + f"Chain ID: {web3.eth.chain_id}") 66 | return web3 67 | else: 68 | print(Fore.RED + "Gagal terhubung ke RPC. Periksa URL dan coba lagi.") 69 | if attempt < retries - 1: 70 | print(Fore.YELLOW + f"Mencoba ulang dalam 5 detik... ({attempt + 1}/{retries})") 71 | time.sleep(5) 72 | except Exception as e: 73 | print(Fore.RED + f"Error menghubungkan ke RPC pada percobaan {attempt + 1}: {e}") 74 | if attempt < retries - 1: 75 | print(Fore.YELLOW + f"Mencoba ulang dalam 5 detik... ({attempt + 1}/{retries})") 76 | time.sleep(5) 77 | print(Fore.RED + f"Gagal terhubung ke RPC setelah {retries} percobaan.") 78 | return None 79 | 80 | # Main execution 81 | web3 = check_rpc_url(RPC_URL) 82 | private_key = input("Masukkan private key Anda: ") 83 | sender = web3.eth.account.from_key(private_key) 84 | 85 | for recipient in RECIPIENTS: 86 | print(Fore.CYAN + f"\nMemproses pengiriman ke {recipient}") 87 | send_native_nexus(sender.address, private_key, recipient, web3) 88 | time.sleep(60) 89 | 90 | print(Fore.GREEN + "\nSemua transaksi selesai.") 91 | 92 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | web3==6.20.1 2 | 3 | colorama 4 | -------------------------------------------------------------------------------- /token.py: -------------------------------------------------------------------------------- 1 | import random 2 | import secrets 3 | from web3 import Web3 4 | from colorama import Fore, Style, init 5 | import time 6 | 7 | # Initialize colorama 8 | init(autoreset=True) 9 | 10 | # Nexus Token Configuration 11 | RPC_URL = "rpc.nexus.xyz/http" 12 | CHAIN_ID = 392 13 | DECIMALS = 18 # Set to the token's decimals (commonly 18 for most tokens) 14 | 15 | # ABI for the ERC-20 token contract (Standard ERC-20 ABI for transfers) 16 | ERC20_ABI = [ 17 | { 18 | "constant": False, 19 | "inputs": [ 20 | {"name": "to", "type": "address"}, 21 | {"name": "value", "type": "uint256"}, 22 | ], 23 | "name": "transfer", 24 | "outputs": [{"name": "", "type": "bool"}], 25 | "payable": False, 26 | "stateMutability": "nonpayable", 27 | "type": "function", 28 | }, 29 | { 30 | "constant": True, 31 | "inputs": [], 32 | "name": "symbol", 33 | "outputs": [{"name": "", "type": "string"}], 34 | "payable": False, 35 | "stateMutability": "view", 36 | "type": "function", 37 | } 38 | ] 39 | 40 | def print_header(): 41 | print(Fore.MAGENTA + Style.BRIGHT + "=" * 50) 42 | print(Fore.MAGENTA + Style.BRIGHT + "Auto Send Tokens".center(50)) 43 | print(Fore.YELLOW + "Telegram: @airdrop_node".center(50)) 44 | print(Fore.CYAN + "Bot created by: https://t.me/airdrop_node".center(50)) 45 | print(Fore.MAGENTA + Style.BRIGHT + "=" * 50) 46 | 47 | # Fetch token symbol dynamically 48 | def get_token_symbol(web3, token_address): 49 | try: 50 | token_contract = web3.eth.contract(address=token_address, abi=ERC20_ABI) 51 | return token_contract.functions.symbol().call() 52 | except Exception as e: 53 | print(Fore.RED + f"Gagal mengambil simbol token: {e}") 54 | return "NEX" 55 | 56 | # Transfer ERC-20 tokens function 57 | def transfer_token(sender, senderkey, recipient, amount, web3, token_address, token_symbol, retries=3): 58 | for attempt in range(retries): 59 | try: 60 | token_contract = web3.eth.contract(address=token_address, abi=ERC20_ABI) 61 | token_amount = int(amount * (10 ** DECIMALS)) 62 | 63 | nonce = web3.eth.get_transaction_count(sender) 64 | base_gas_price = web3.eth.gas_price 65 | gas_price = int(base_gas_price * (1.2 + attempt * 0.1)) 66 | 67 | transaction = { 68 | 'chainId': CHAIN_ID, 69 | 'from': sender, 70 | 'gas': 200000, 71 | 'gasPrice': gas_price, 72 | 'nonce': nonce, 73 | 'to': token_address, 74 | 'data': token_contract.encodeABI(fn_name='transfer', args=[recipient, token_amount]), 75 | } 76 | 77 | signed_txn = web3.eth.account.sign_transaction(transaction, senderkey) 78 | print(Fore.CYAN + f'Memproses pengiriman {amount} {token_symbol} ke alamat: {recipient} ...') 79 | 80 | tx_hash = web3.eth.send_raw_transaction(signed_txn.rawTransaction) 81 | txid = web3.to_hex(tx_hash) 82 | web3.eth.wait_for_transaction_receipt(tx_hash) 83 | 84 | print(Fore.GREEN + f'Pengiriman {amount} {token_symbol} ke {recipient} berhasil!') 85 | print(Fore.GREEN + f'TX-ID : {txid}') 86 | break 87 | except Exception as e: 88 | print(Fore.RED + f"Error pada percobaan {attempt + 1}: {e}") 89 | if 'replacement transaction underpriced' in str(e): 90 | print(Fore.YELLOW + "Gas price terlalu rendah. Meningkatkan gas price untuk percobaan berikutnya...") 91 | if attempt < retries - 1: 92 | print(Fore.YELLOW + f"Mencoba lagi dalam 60 detik... ({attempt + 1}/{retries})") 93 | time.sleep(60) 94 | else: 95 | print(Fore.RED + f"Transaksi gagal setelah {retries} percobaan.") 96 | 97 | # Check if the RPC URL is valid 98 | def check_rpc_url(rpc_url, retries=3): 99 | for attempt in range(retries): 100 | try: 101 | web3 = Web3(Web3.HTTPProvider(rpc_url)) 102 | if web3.is_connected(): 103 | print(Fore.GREEN + "Terhubung ke RPC dengan sukses!") 104 | chain_id = web3.eth.chain_id 105 | print(Fore.CYAN + f"Chain ID: {chain_id}") 106 | return web3 107 | else: 108 | print(Fore.RED + "Gagal terhubung ke RPC. Periksa URL dan coba lagi.") 109 | if attempt < retries - 1: 110 | print(Fore.YELLOW + f"Mencoba ulang dalam 5 detik... ({attempt + 1}/{retries})") 111 | time.sleep(5) 112 | except Exception as e: 113 | print(Fore.RED + f"Error menghubungkan ke RPC pada percobaan {attempt + 1}: {e}") 114 | if attempt < retries - 1: 115 | print(Fore.YELLOW + f"Mencoba ulang dalam 5 detik... ({attempt + 1}/{retries})") 116 | time.sleep(5) 117 | if attempt == retries - 1: 118 | print(Fore.RED + f"Gagal terhubung ke RPC setelah {retries} percobaan.") 119 | return None 120 | 121 | # Main execution 122 | print_header() 123 | 124 | # Ask the user for the token address 125 | TOKEN_ADDRESS = input("Masukkan alamat kontrak ERC-20 token: ").strip() 126 | 127 | # Use Nexus Token RPC URL 128 | web3 = check_rpc_url(RPC_URL) 129 | 130 | # Fetch token symbol dynamically 131 | CURRENCY_SYMBOL = get_token_symbol(web3, TOKEN_ADDRESS) 132 | 133 | # Ask the user for their private key 134 | private_key = input("Masukkan private key Anda: ") 135 | sender = web3.eth.account.from_key(private_key) 136 | 137 | # Ask the user how many transactions to process 138 | loop = int(input("Berapa banyak transaksi yang ingin diproses?: ")) 139 | 140 | # Ask the user how much to send per transaction 141 | amount = float(input(f"Berapa banyak {CURRENCY_SYMBOL} yang akan dikirim per transaksi (contoh: 0.001)?: ")) 142 | 143 | # Ask the user for recipient addresses 144 | recipients = [] 145 | for i in range(loop): 146 | recipient = input(f"Masukkan alamat penerima untuk transaksi {i + 1}: ").strip() 147 | recipients.append(recipient) 148 | 149 | for i, recipient in enumerate(recipients): 150 | print(Fore.CYAN + f"\nMemproses Transaksi {i + 1}/{loop}") 151 | transfer_token(sender.address, private_key, recipient, amount, web3, TOKEN_ADDRESS, CURRENCY_SYMBOL) 152 | time.sleep(60) 153 | 154 | print(Fore.GREEN + "\nSemua transaksi selesai.") 155 | --------------------------------------------------------------------------------