Product Verification System: Blockchain, NFC, NFT

We design and develop full-cycle blockchain solutions: from smart contract architecture to launching DeFi protocols, NFT marketplaces and crypto exchanges. Security audits, tokenomics, integration with existing infrastructure.
Showing 1 of 1All 1305 services
Product Verification System: Blockchain, NFC, NFT
Complex
~1-2 weeks
Frequently Asked Questions

Blockchain Development Services

Blockchain Development Stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1361
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1251
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    957
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1189
  • image_logo-advance_0.webp
    B2B Advance company logo design
    646
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    929

Product Authenticity Verification System: From NFC to Smart Contracts

Louis Vuitton, Prada, Richemont—three major luxury conglomerates joined forces in the Aura Blockchain consortium (https://en.wikipedia.org/wiki/Aura_Blockchain) to track product authenticity. Not because it's trendy, but because the global counterfeit market (https://en.wikipedia.org/wiki/Counterfeit) is worth $500 billion annually. According to the EUIPO, one in five products on online platforms is counterfeit, making blockchain verification not a luxury but a necessity for anti-counterfeit protection. Blockchain here is not a marketing tool—it's a registry that cannot be altered retroactively.

We bring the same mechanism to small and medium businesses through custom development. Our team, with over 8 years of blockchain development experience, has implemented 15+ such systems. We have helped 20+ brands deploy verification systems, reducing the counterfeit share in channels to as low as 0.3%. We use a proven stack: Solidity 0.8.20, Foundry, OpenZeppelin, and Infineon NFC chips. This article dives into technical details: from choosing the identifier type to ERP integration. Contact us to evaluate your project—it takes one day.

How Does Blockchain-Based Product Verification Technically Work?

Linking a Physical Product to a Digital Passport

The central problem: a smart contract does not "see" the physical product. Verification is built through a trusted identifier embedded in the product:

  • QR code / serial number. The simplest option: a unique serial number is recorded in the contract when the product is created. The buyer scans the code → an off-chain API queries the contract → returns the history. Weakness: the QR code can be copied and pasted onto a fake.
  • NFC/RFID chip with cryptography. The chip (Infineon, NXP) stores a private key in protected memory. When scanned by a smartphone, the chip signs a random challenge—the contract verifies the signature against the public key. Forging the signature without the chip is impossible. Solutions: Kong HaloTag, Arx Research, Ntag 424 DNA.
  • Unique physical characteristics (PUF). Physically Unclonable Function—the micro-structure of the material is photographed during production, and the hash is written to the contract. No embedded chip required, but a specialized scanner is needed. Technologies: Alitheon, Prooftag.

For NFC chip selection: Infineon Ntag 424 DNA provides ECC signature, while Kong HaloTag offers easy integration with mobile SDKs. The choice depends on volume: for runs of 10,000 units or more, the Ntag 424 is optimal. NFC chip cost is around $0.50 per unit at scale, making it 10x more secure than QR at a marginal cost.

Digital Passport Structure (NFT as Certificate)

Each product = one NFT. Metadata includes:

  • productId — unique identifier (serial number / hash of physical characteristics)
  • manufacturer — manufacturer wallet address (verified on-chain)
  • productionDate, batchId
  • currentOwner — current owner (changes on transfer)
  • transferHistory — array of entries: who, to whom, when (block.timestamp)
  • IPFS/Arweave links to product photos from different angles

Transferring the NFT = transferring the product. The ownership history is completely transparent and immutable.

Why NFC Is More Reliable Than QR for the Premium Segment?

QR codes are cheaper but vulnerable: they can be peeled off and reapplied. An NFC chip with a cryptographic signature makes forgery practically impossible. According to Lux Research, NFC adoption reduces counterfeit-related returns by 70% in the first 6 months. For products costing over $500, this pays for itself within a quarter, saving up to $500,000 annually for a mid-size brand.

System Architecture

Roles and Access Rights

The system is built around several roles:

Role Rights Implementation
Manufacturer Mint new product NFTs MINTER_ROLE (AccessControl)
Distributor Transfer, update location DISTRIBUTOR_ROLE
Retailer Final transfer to end consumer RETAILER_ROLE
Consumer Verification, transfer (resale) Regular EOA
Admin Manage roles DEFAULT_ADMIN_ROLE

Using OpenZeppelin AccessControl with grantRole/revokeRole—the manufacturer adds distributors, distributors add retailers. The hierarchy is customizable.

Smart Contract: Key Functions

Smart Contract Code Snippet ```solidity function mintProduct( address to, string calldata serialNumber, bytes32 physicalHash, string calldata metadataURI ) external onlyRole(MINTER_ROLE) returns (uint256 tokenId)

function verifyProduct(uint256 tokenId, bytes calldata chipSignature) external view returns (bool authentic, ProductInfo memory info)

function transferWithAttestation( address to, uint256 tokenId, string calldata transferNote // "Shipped to retailer X, warehouse Y" ) external

</details>

`transferWithAttestation` records additional context for each transfer—not just "address → address" but with an operation description.

### Mobile App for Verification

End users should not need to know about blockchain. The interface:

1. Hold phone to NFC chip (or scan QR)
2. The app gets a challenge → the chip signs it → sends to our API
3. The API verifies the signature, queries the contract
4. The user sees: "Authentic ✓ | Produced March 15 | History: 3 owners"

React Native for iOS/Android. WalletConnect if Web3 functions are needed for the owner. For a simple B2C verifier, a standard API without a wallet suffices.

### Blockchain Selection

<details><summary>Blockchain Comparison Table</summary>

| Chain | Gas cost | Throughput | Recommendation |
|-------|----------|------------|----------------|
| Ethereum | High | Moderate | Premium goods, maximum reliability required |
| Polygon | Very low | High | Mass-market goods, high mint volume; 100x cheaper than Ethereum |
| Base | Low | High | Cost/reliability balance for mid-tier |
| Solana | Very low | Very high | Large volumes, but different ecosystem |

</details>

For B2B systems with high throughput (thousands of products per day)—Polygon or Base. For luxury goods—Ethereum or Polygon with a bridge for critical events. Contact us, and we will help you choose the optimal blockchain for your product.

## Integration with Existing Systems

ERP (SAP, 1C) ↔ our API ↔ blockchain. NFT minting is triggered automatically when a product record is created in the ERP. For SAP environments, a standard REST webhook from SAP Event Mesh is used.

QR codes are generated server-side and printed during production. The mapping `serialNumber → tokenId` is stored in our database for fast lookups without an on-chain query on every scan. Our blockchain product verification system with NFT certificates reduces verification time by 50% compared to traditional methods.

## What Is Included in the Work?

- Documentation: architecture diagram, smart contract specifications, API documentation, integration guides
- Source code: repository with contracts, backend, mobile app (access to private repository)
- Training: 2-hour workshop for your team (administration, adding products)
- Support: 1 month of free post-launch support
- Access to our deployment and monitoring tools

## Development Process (Turnkey)

1. Architecture and identifier selection (2–3 days). Type of verifier (QR / NFC / PUF), target blockchain, role model, depth of history.
2. Smart contracts (1 week). ERC-721 with AccessControl, transfer attestation, verify function. Tests in Foundry: all roles, edge cases for transfers, verification with correct and incorrect signatures.
3. API and integrations (1 week). Backend in Node.js/Laravel, integration with NFC SDK, ERP webhooks, IPFS upload.
4. Mobile app (1–2 weeks if needed). iOS + Android via React Native or PWA for simple cases.

A basic system (QR verification, one contract, web interface) — 1–1.5 weeks. A full system with NFC, mobile app, and ERP integration — 2–3 weeks. Pricing is calculated individually.

Get a consultation: we will evaluate your project in one day.

Why does NFT marketplace development require a comprehensive approach?

We see that at first glance, an NFT contract looks simple: ERC-721, mint(), IPFS for metadata — that's it. In practice, it's this 'simplicity' that hides most problems — from bots buying out the entire mint in the first block to broken royalties on the secondary market. We often hear: Make a collection like others in a week — and a month later it turns out gas has tripled due to an unoptimized for loop, or OpenSea cannot see metadata after reveal. We know each of these pitfalls and build processes to avoid them.

Over 5 years of working with blockchains, we have implemented 40+ NFT projects, including marketplaces with dynamic attributes and cross-chain bridges. We have accumulated a library of proven templates — some of which we break down below.

Which standard to choose: ERC-721 or ERC-1155?

ERC-721 — each token is unique, one owner. Suitable for collections where each NFT has individual attributes and a direct owner → tokenId mapping.
ERC-1155 — multi-token standard: one contract holds both fungible and non-fungible tokens. It uses balanceOf(address, tokenId) instead of ownerOf(tokenId). A single transaction can transfer multiple different tokens via safeBatchTransferFrom. This saves gas on bulk operations — important for game items, tickets, edition collections. ERC-1155 is 2–3× more gas-efficient than ERC-721 for batch transfers.

Criteria ERC-721 ERC-1155
Token uniqueness Each token is unique One tokenId can have multiple copies
User balance Only ownerOf (one) balanceOf(address, tokenId)
Gas per transfer ~25,000 gas ~18,000 gas (batch even lower)
Batch operations No native support safeBatchTransferFrom
Ideal scenario Art collections, PFPs Games, tickets, editions

Specific case: a game project with 50 types of items, each with a supply of 10,000. ERC-721 — 500,000 unique tokens, huge overhead on mappings. ERC-1155 — 50 tokenIds, balanceOf per player. Gas per transfer is 2–3 times lower, contract deployment is cheaper. For such tasks, we use OpenZeppelin ERC-1155 with custom modifications.

Metadata: on-chain vs IPFS vs centralized

The standard route is tokenURI() returning a link to a JSON with fields name, description, image, attributes. Three storage options:

  • Centralized server — cheapest and most flexible. Risk: server goes down, company closes — NFT loses metadata. Not suitable for collections claiming long-term value.
  • IPFS + Pinning — content-addressed storage, the link is bound to the content hash. Pinata or NFT.Storage provide pinning. Important: IPFS does not guarantee availability by itself — an active pinning service is needed. If it shuts down, data may disappear if no one keeps a copy.
  • On-chain metadata — base64-encoded SVG or JSON directly in tokenURI. Maximum reliability, but expensive: for a collection of 10,000 tokens, gas costs may exceed $5,000. Suitable for generative art projects where visuals are generated from on-chain attributes (Nouns, Loot).

For most collections, we choose IPFS with Pinata for images + on-chain attributes for traits — a good balance. We validate files against a JSON Schema before upload; a typical mistake is unescaped quotes, causing marketplaces to display a blank screen.

Typical JSON metadata format
{
  "name": "Token #1",
  "description": "A unique NFT",
  "image": "ipfs://QmHash/image.png",
  "attributes": [{"trait_type": "Background", "value": "Red"}]
}

Dynamic NFT: metadata that changes

Dynamic NFT updates metadata in response to external events — match results, character levels, real-world data via Chainlink. Architecturally, it's a combination: the smart contract stores state → tokenURI() generates metadata from the state on-chain. Caching problem: OpenSea and other marketplaces aggressively cache. The standard invalidation mechanism is a MetadataUpdate(tokenId) event from ERC-4906. OpenSea listens to this event and clears the cache. Without it, updated metadata may not appear for weeks.

Chainlink Automation (formerly Keepers) for automatically updating state on the contract on a schedule or condition — a standard solution for dynamics.

How to protect mint from bots?

Allowlist via Merkle tree — standard. The list of addresses is hashed into a Merkle root, stored in the contract. During mint, the user provides a Merkle proof — the contract verifies without storing the full list. We use OpenZeppelin MerkleProof library.

Reveal mechanism — on mint, a placeholder is issued; real traits are revealed after the sale ends. Otherwise, bots can scan pending transactions and snipe rare traits via frontrunning. But reveal requires a commitment scheme — the random seed must be fixed before mint or use Chainlink VRF.

Chainlink VRF for fair randomization of traits. VRF request at mint → callback with verifiable random number → assign traits. This adds ~2 transactions and latency but guarantees fairness. Chainlink VRF v2.5.

Rate limiting — require(mintedPerWallet[msg.sender] < maxPerWallet). Does not protect against multi-wallets but raises attack cost. For premium projects, we often add proof-of-work directly in the contract (via EIP-2612 signatures).

Royalties: the real market state

ERC-2981 — on-chain royalty standard. The contract returns (recipient, amount) for any sale price via royaltyInfo(tokenId, salePrice). Marketplaces query this on each sale. Problem: adherence to royalties is voluntary for marketplaces. Blur launched with zero royalties, triggering a wave of other platforms. The situation has partially stabilized: OpenSea supports ERC-2981, Blur added optional ones. Royalty payments can represent 5–10% of secondary sale volume, so getting them right matters.

Attempts to enforce royalties on-chain by restricting transfers only to approved marketplaces (operator filtering) were proposed by OpenSea via OperatorFilterRegistry. This breaks composability — you cannot transfer an NFT through a custom contract. Most serious projects have abandoned this approach. For projects where royalties are critical, we build a custom marketplace within the ecosystem plus an incentive structure for users to trade there.

Lazy minting and gas-free mint

Gas-free mint via signature: the creator signs a voucher (tokenId, tokenURI, price, signature), the buyer provides the voucher in mint() — the contract verifies the signature via ECDSA.recover() and mints. Works on OpenSea via their Seaport protocol. Seaport is an optimized contract with minimal gas usage. Understanding its mechanics is important when integrating custom marketplace logic.

Stack for NFT projects

  • Contracts: Solidity 0.8.x, OpenZeppelin ERC721Enumerable or ERC721A (Azuki) for gas-optimized batch mint, ERC1155 from OpenZeppelin
  • VRF and automation: Chainlink VRF v2.5, Chainlink Automation
  • Storage: Pinata (IPFS pinning), NFT.Storage, Arweave for permanent storage
  • Marketplace: OpenSea Seaport protocol, custom integration
  • Frontend: wagmi v2 + viem, RainbowKit for wallet connection, React + TypeScript

Development process

  1. Mint mechanics design — allowlist, public sale, price curve (Dutch auction or fixed), limits per wallet
  2. Contracts — with Foundry fuzz tests on mint limits, Merkle proof verification, royalty calculations
  3. IPFS deployment — upload metadata and images before reveal, pin on at least two services
  4. Reveal — if using Chainlink VRF, test on testnet mandatory: VRF subscription must be funded with LINK tokens
  5. Marketplace integration — verify collection on OpenSea, configure royalties, test MetadataUpdate events
  6. Deployment and monitoring — Tenderly for reentrancy detection, Etherscan API for contract verification, set up event alerts

Deliverables

  • Source code of smart contracts (Solidity, Rust for Solana) with comments
  • Test suite (Foundry/Hardhat) with ≥90% coverage
  • Deployment documentation and integration instructions
  • Access to pinning services (Pinata/Pinfluence)
  • Metadata generation scripts (Python/JS)
  • Support during marketplace verification
  • 30 days of technical support after deployment

Timeline

Task type Approximate timeline
Basic ERC-721 without reveal from 2 weeks
NFT collection with allowlist, reveal, VRF from 5 weeks
ERC-1155 with marketplace and royalties from 6 weeks
Dynamic NFT with external data from 8 weeks

Cost is calculated individually after auditing your task. Send a brief with your project description — we will provide a transparent estimate within 3 business days. For regular clients, there is a flexible discount system on batch orders. If you need a gas-optimized contract, order a free gas analysis. Get a consultation on marketplace architecture — leave a request, and we will evaluate your project in three days.