SIH26125Bharat Electronics Limited · Ministry of Defence
The asset refuses to move without a valid credential.
Identity, access control and custody of controlled equipment, held as one record on a private permissioned chain — where the transfer itself reverts if the receiver’s credential is missing, expired or revoked.
Refused
Signal Analyser SN-8823
Token #1 · requires Secret
presented byA. DeshpandeRadar Systems · contractor
checkRole() → InvalidReason.RevokedWithdrawn 2 Sep 2026, 11:04. The card still prints; the credential behind it does not.
Asset not released. Custody unchanged.
Released
Signal Analyser SN-8823
Token #1 · requires Secret
presented byPriya MenonDivisional Manager, Radar Systems
checkRole() → InvalidReason.ValidSecret clearance issued 7 Mar 2026, valid for another 29 days.
Asset released. Custody logged on chain.
Refused
Oscilloscope OS-2140
Token #4 · requires Secret
presented byS. RaoInstrumentation, Bay 4
checkRole() → InvalidReason.ExpiredNothing was revoked. The grant reached 14 Aug 2026 and lapsed on its own.
Asset not released. Custody unchanged.
Refused
Signal Analyser SN-8823
Token #1 · requires Secret
presented byRahul NairTechnician, Radar Systems
checkRole() → InvalidReason.NeverGrantedNo Secret clearance was ever issued to this holder.
Asset not released. Custody unchanged.
One record, three registries.
- Identity
IdentityRegistryA DID and a public key per person. Names and photographs never reach the chain. - Access control
RoleRegistryGrants with an expiry and a revocation flag. checkRole() returns one of four answers. - Asset custody
AssetTokenEach item is a token bound to its holder's DID, carrying its own custody history.
Every issue, revocation and transfer lands as a chain event, and the audit trail is replayed from those events — so there is no second version to reconcile.
Identity platforms stop at the credential. Token standards stop at the transfer.
This joins them. Every movement of an asset calls into the role registry and reverts if the receiver’s credential is missing, expired or revoked.
Because the check sits in the contract rather than in an interface, it holds for this console, for a script, and for any client anyone writes later. That is the difference between a permission and a rule.
function _update(address to, uint256 tokenId, address auth) internal override returns (address from) { from = super._update(to, tokenId, auth); bool isMint = from == address(0); bool isBurn = to == address(0); if (!isMint && !isBurn) { RoleRegistry.Role requiredRole = assets[tokenId].requiredRole; (bool valid, RoleRegistry.InvalidReason reason, uint64 expiry) = roleRegistry.checkRole(to, requiredRole); if (!valid) { if (reason == RoleRegistry.InvalidReason.Revoked) { revert TransferBlockedRoleRevoked(to, requiredRole); } else if (reason == RoleRegistry.InvalidReason.Expired) { revert TransferBlockedRoleExpired(to, requiredRole, expiry); } else { revert TransferBlockedRoleNeverGranted(to, requiredRole); } } }}Five minutes, in five moves
1Issue
An identity nobody has to vouch for
A DID is created for a person and a role credential issued against it. The chain carries the identifier, a public key and a status flag — never a name, a photo or an employee number.
2Register
The asset becomes the record
A controlled item is minted as a token bound to its holder's DID, carrying its own custody history instead of appearing as a row in somebody's spreadsheet.
3Refuse
The transfer that cannot happen
Moving the asset to someone without a valid credential reverts inside the contract. Not a disabled button, not a validation message — the transaction fails, and it fails the same way from a script.
4Revoke
Offboarding in one transaction
Withdrawing a credential is a single on-chain write. Every verifier sees it on its next check, including the ones that were offline when it happened.
5Replay
A record that cannot disagree with itself
The audit trail is not a log about the transactions. It is the transactions, reconstructed from chain events with no database consulted — so there is no second version to reconcile.
Four surfaces, one record underneath.
An issuing authority, a gate post, an auditor and a printed card. Each sees exactly what its job needs, and none of them can disagree about what is true — because none of them keeps its own copy.
Dashboard
Read from contract state, not a cache.
People
4
3 credentialled
Assets
2
bound to a DID
Revoked
1
still in the trail
Events
39
replayable
BHARAT ELECTRONICS LIMITED
Asset & Access Credential
Priya Menon
Divisional Manager, Radar Systems
MANAGERScan to verify — the QR is the source of truth, not this print
Gate check
Priya Menon
Secret · validCredential valid until 6 Oct 2026. Holds asset #1.
Rahul Nair
RoleNeverGrantedNo Secret clearance. Not permitted to carry asset #1 out.
39 events recorded · page 1 of 2
- 00:56AssetTokenAsset #1 minted to Priya Menon
- 00:55RoleRegistrySecret clearance issued to Priya Menon
- 00:54AssetTokenTransfer refused — no Secret clearance
- 00:52RoleRegistryAuditor credential issued to K. Iyer
- 00:51IdentityRegistryIdentity registered for Rahul Nair
3 of 4 — select an entry to bring it forward
Two jobs that share nothing
| Property | The issuing authority | The gate |
|---|---|---|
| Provisioned as | A person, whose console role is read from the chain. | A post rather than a person — staffed by whoever is on shift. |
| Can | Onboard identities, issue and revoke credentials, register assets, replay the whole history. | Ask one question: is this credential valid right now. |
| Cannot | Move an asset to someone without a valid credential. The contract refuses the console like anything else. | Write. It reads, and holds no credential of its own. |
| Loses access when | Their own credential is revoked — one write closes the console with it. | The post is stood down. Nothing personal was ever issued to it. |
| Reads from | Contract state — at request time in the console, at scan time at the gate. Neither of them keeps a copy, which is the only reason they can never disagree. | |
Signing in decides which screens open. It never decides what the chain permits: a compromised session still cannot move an asset to someone without a valid credential, because that check is not in the session.
Ownership, permission and history become one cryptographic object that no administrator can rewrite.
Three sign-ins — issuing authority, gate security, internal audit — reading one chain. Take any of them and try to move an asset you are not credentialled for.