Contract Addresses
All TAG IT smart contracts are verified and open source. Find the official addresses below.
Base Sepolia Testnet Contracts
TAG IT Network's smart contracts are live on Base Sepolia (chainId 84532). The addresses below are the upgradeable proxies that consumers should interact with. All contracts are verified on BaseScan.
| Contract Name | Address | Description |
|---|---|---|
| TAGITCore | 0x3aDc7EFDb58Ae85483eFf5D4966D916185f31d1D |
Core Digital Twin NFT — manages the asset lifecycle, NFC binding, and verification |
| TAGITAccess | 0xb56A1D91995C212342FaA843468F03521340A1D6 |
BIDGES access control — identity badges and per-capability permissions |
| IdentityBadge | 0xebdAC9A0663c02a7297681b078aaD893EF345030 |
Soulbound identity badges (KYC, manufacturer, gov/mil) |
| CapabilityBadge | 0xb05d22706B08A3F6409601de520cf7A6dbCB573d |
Per-capability permission badges |
| TAGITToken | 0x5f98B83cD7Aef769cc51D2FB739BA49D561170DE |
TAGIT utility token (ERC-20 + ERC20Votes) for fees and governance |
| TAGITStaking | 0xB22F5688559D07e3a12DBB89f0481b967407F267 |
Token staking for enterprise features and network security |
| TAGITGovernor | 0xCF67DF870EccBB7838c3ab7876467c89d84dce89 |
DAO governance for protocol upgrades and proposals |
| TAGITTreasury | 0xa4a3720d705334f409DD24836CC75d642125f759 |
Protocol treasury |
| TimelockController | 0xfdA2478dB73064eF770f4e5E5b97BC83801126e1 |
Owner of upgradeable proxies — enforces a governance delay on upgrades |
| TAGITRecovery | 0x6BC3C69367E586810A3B317fA9F0406504e95866 |
Asset Identity Recovery Protocol (flag, quarantine, resolve) |
| TAGITPaymaster | 0x6fFFa92efb419E812d5c9C9D0c1B1a0f5c6fFd1C |
ERC-4337 paymaster for gasless transactions |
To interact with the testnet contracts, you'll need Base Sepolia ETH for gas. Get free tokens from the Base Sepolia Faucet.
Base Mainnet
Base Mainnet (chainId 8453) deployment is planned for after the DAO launch and is not yet live. Production addresses will be published here once deployed and audited.
Contract Verification
All TAG IT contracts are verified on BaseScan. You can view the source code, read contract state, and interact with contracts directly:
Archived Deployments
TAG IT previously deployed to OP Sepolia and Arbitrum Sepolia. Those deployments were deprecated on 2026-06-27 when Base Sepolia became the canonical home. The historical addresses are retained in the tagit-contracts repository for reference; do not use them for new integrations.
If you are still pointing at the deprecated OP Sepolia or Arbitrum Sepolia deployments, migrate to the Base Sepolia addresses above. The OP/Arbitrum contracts are no longer maintained.
Integrating with Contracts
Here's how to connect to TAG IT contracts on Base Sepolia using ethers.js:
// Import ethers.js
import { ethers } from 'ethers';
// Import contract ABIs (see ABI Reference for full ABIs)
import TAGITCoreABI from './abis/TAGITCore.json';
import TAGITAccessABI from './abis/TAGITAccess.json';
// Contract addresses (Base Sepolia, chainId 84532)
const CONTRACTS = {
tagitCore: '0x3aDc7EFDb58Ae85483eFf5D4966D916185f31d1D',
tagitAccess: '0xb56A1D91995C212342FaA843468F03521340A1D6',
tagitToken: '0x5f98B83cD7Aef769cc51D2FB739BA49D561170DE',
tagitGovernor: '0xCF67DF870EccBB7838c3ab7876467c89d84dce89'
};
// Connect to Base Sepolia
const provider = new ethers.JsonRpcProvider('https://sepolia.base.org');
// For read-only operations
const tagitCore = new ethers.Contract(
CONTRACTS.tagitCore,
TAGITCoreABI,
provider
);
// Example: read an asset's owner, timestamp and lifecycle state.
// getAsset returns a 5-field tuple; state is the lifecycle enum 0-6.
async function readAsset(tokenId) {
const [assetOwner, timestamp, state, flags, reserved] =
await tagitCore.getAsset(tokenId);
return { assetOwner, timestamp, state, flags, reserved };
}
// Example: resolve a physical tag to its token.
// tagHash is keccak256 of the chip's raw 7-byte UID.
async function tokenForTag(tagHash) {
return await tagitCore.getTokenByTag(tagHash);
}
Every call above is a free view read over any public Base Sepolia RPC — no key, no wallet, no signup. State-changing functions (mint, bindTag, activate, claim, flag, resolve, recycle) are gated on a BIDGES capability badge and are not callable by arbitrary addresses; transferAsset is owner-gated instead. See the ABI Reference for the full surface.
For a simpler integration experience, consider using our JavaScript SDK which handles contract interactions, error handling, and event subscriptions automatically.