Companies, who provide the unique code per product, make more sense.
There are two type of Codes usually provided:
A. Open (visible to everyone even before purchasing the product)
If the codes are open (not protected by some scratchable layer), then
it is of not much use, anyone can copy them and pass the counterfeit
check, no matter what company claims about the crypto tech, block-chain or advanced technology they use in the
backend (although with the help of geo-location tech and AI, red flags can be raised for some cases).
Truth is, if you have the same code as the original, which you can
see without buying the product, then you can copy it, put it on counterfeited product and pass the
Also, in the market, many say putting the supply-chain data on block-chain prevents counterfeiting - it is definitely not-true.
Printing the code on the item means you are making the key to access the data on block-chain public,
now any one can copy and replicate this code and pass the check.
Block-chains are meant for totally different purpose and have different use-cases, and preventing the counterfeit of general goods is not really one of them.
Please note - by block-chain, we mean the block-chain in terms of technology, we have encountered many non-technology and business development people who confuse block-chain technology to something totally different depending on the context.
To learn what really is a block-chain and how it can be made fast and cost effective, to be utilized for business-cases, you can check our whitepaper fast private blockchain
B. Hidden or protected code
These are the physically protected QR or Barcode or Alphanumeric
codes and you must buy the item before you can see the code, for
example, scratchable card, and then verify with the backend server.
This does protect the item and if the backend technology is
implemented properly, i.e. non-guessable codes are generated, then
this will prevent the counterfeit.
But problem is, user has no idea before buying the item if it will
be genuine or not, not only this company who has not implemented the
backend properly may pass some items which may be fake, or may pass
already scratched code again and again.
Secondly, if their DB is hacked then it will be very simple for the
hackers to sell the codes to Counterfeiters.
The development and more importantly maintenance and security of
such system is not simple and usually costs good maintenance cost.
And the authenticating servers will have to be always online.