How to Get Contract Deployers on VeChainThor
This guide shows you how to identify which addresses have deployed smart contracts on VeChainThor.
This is important for tracking developer activity, analyzing ecosystem growth, and building developer dashboards.
Reading Data from VeChainThor
Before we continue with Contract Deployers, we first have to set up the VeChain SDK to read blockchain data.
Initiating ThorClient
The ThorClient is your entry point for interacting with VeChainThor's blockchain.
First, make sure you install the VeChain SDK:
Initialize the Thor client:
Select Network
Mainnet - Use mainnet for all production-related activity
Testnet - Use testnet for testing and development purposes
Filter Raw Events (Find Contract Creation Logs)
To identify who deployed a contract, filter event logs and extract the deployer from the transaction receipt:
How it works:
filterRawEventLogs()queries events emitted by the specified contract addressfilteredLogs[0].metacontains metadata about the event, includingtxOriginmeta.txOriginis the address that signed and submitted the transaction (the deployer)
The txOrigin field represents the EOA (Externally Owned Account) that initiated the transaction. This is different from gasPayer (used in fee delegation) and different from the contract address itself.
Getting Contract Address
Before tracking deployers, you need to identify which addresses are smart contracts. There are two methods:
1. Using Block Explorers
VeChainStats.com - Verified contracts with source code and protocol categories
Explore.vechain.org - Official VeChain explorer for addresses and transactions
2. Check Using hasCode
getAccount()-pulls the full state for the given address.hasCode: true-indicates the address holds deployed bytecode (i.e. a contract).hasCode: false-means it's an EOA (Externally Owned Account), controlled by a private key.
Getting Contract Addresses in Bulk
What if you don't know the contract address? You can discover contracts by scanning blocks:
Get transaction logs from each block using
getBlockCompressed()For each transaction in the block, verify if they originate from a contract or wallet using
hasCodeOnce you have the contracts, use
filterRawEventLogs()to fetch the deployer
You can learn more about the VeChain SDK in the Developer Fundamentals course.
Join our Telegram