This script is useful for monitoring the creation of contracts on the Polygon network and promptly notifying users through Discord when a new contract is detected.
from web3 import Web3
from web3.middleware import geth_poa_middleware
import time
import discord
# Set the URL of the Polygon (or Matic) network node
polygon_node_url = "" # INSERT_YOUR_RPC_HERE
# Set the ERC20 contract address for token creation
erc20_contract_address = "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0"
# Set the Discord bot token
discord_bot_token = "" # INSERT_YOUR_WEBHOOK_HERE
# Set the channel ID where notifications will be sent
discord_channel_id = "" # INSERT_YOUR_CHANNEL_ID_HERE
# Initialize the Web3 object
web3 = Web3(Web3.HTTPProvider(polygon_node_url))
web3.middleware_onion.inject(geth_poa_middleware, layer=0)
def get_contract_creation_events(contract_address):
event_signature = web3.keccak(text="Transfer(address,address,uint256)").hex()
checksum_address = Web3.toChecksumAddress(contract_address)
filter_params = {
"address": checksum_address,
"topics": [event_signature, None, None],
}
contract_creation_events = web3.eth.get_logs(filter_params)
return contract_creation_events
def bytes_to_hex_string(byte_array):
return byte_array.hex()
def get_latest_block_number():
# Get the latest block number
latest_block_number = web3.eth.blockNumber
return latest_block_number
def send_discord_notification(message):
# Initialize the Discord
client = discord.Client()
@client.event
async def on_ready():
channel = client.get_channel(discord_channel_id)
await channel.send(message)
await client.close()
client.run(discord_bot_token)
def main():
try:
# Check the connection to the Polygon network node
if not web3.isConnected():
print("Error: Could not connect to the Polygon network node.")
return
while True:
contract_creation_events = get_contract_creation_events(erc20_contract_address)
if contract_creation_events:
transaction_hashes_bytes = [event["transactionHash"] for event in contract_creation_events]
transaction_hashes_strings = [bytes_to_hex_string(txn_hash) for txn_hash in transaction_hashes_bytes]
# Send Discord notification
for txn_hash_string in transaction_hashes_strings:
message = f"Contract created in transaction: {txn_hash_string}"
print(message)
send_discord_notification(message)
# interval
time.sleep(1)
except Exception as e:
print(f"Error: {str(e)}")
if __name__ == "__main__":
main()
Python and Requests Installation:
Make sure you have Python installed on your system. Open the terminal or command prompt. Execute the following command to install the requests library:
pip install requests
Script Execution:
Save the Python script (Your_script.py) in the directory of your choice. Place a file named "addresses.txt" in the same directory as the script, containing the addresses of the validators.
Run the Script:
In the terminal or command prompt, navigate to the directory where the script is located. Execute the script using the following command:
python3 your_script.py
Results:
The script will begin monitoring the creation of contracts and send notifications to the configured Discord channel whenever a new contract is detected.