Repository navigation
Object Digital Passport — Release notes · v0.4 #4
Closed
andrei-chernikov
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
This document describes the v0.4 line on branch
main: on-chain generation 4 (optionalODPCounterfeitConcernsatellite), static web (WalletConnect, session restore), SPEC / docs, and localization. Normative protocol rules remain inSPEC.md.Deployment: Default Polygon addresses in
README.mdanddeploy/deployments/polygon.jsontarget generation 4 (CONTRACT_VERSIONpacked byte 4) used by the pages'NET.*. For a self-hosted registry, setNET.contract,NET.docAnchor,NET.counterfeitConcern, andpreviousContracts(Verify) to match chain + address + ABI.Highlights
CONTRACT_VERSION= 4; optionalODPCounterfeitConcern(P/M); UTC calendar enforcement forODP-…/PRF-…prefixes (see Registry correction below).README.mdcover banners (docs/readme/); Shields.io License / Stars badges; SPEC and release pointers updated with the stack.Registry correction — UTC month in
ODP-…/PRF-…(why the line stays v0.4)What was wrong: In the first reference build,
yearandmonthpassed tomintDigital/mintPhysical(and tosubmitProof) were only range-checked. A caller could supply an arbitrary calendar pair (e.g. 2000-01) and receiveODP-2000-01-…even when the block was in another month — a serious abuse of the human-readable prefix.What was fixed: The contract now requires those arguments to match the Gregorian UTC year and month of
block.timestamp(viaODPPassportLib.utcYearMonthFromTimestamp; mismatch →EC(68)). The same rule applies to extension mints and tosubmitProoffor thePRF-YYYY-MM-…prefix. The web mint path uses UTC (getUTCFullYear/getUTCMonth+1) so it aligns with chain validation. Normative text:SPEC.md(§2, §8, §9).Deployment story: A v0.4 registry was deployed first; the time / naming issue was spotted immediately. That early deployment was frozen (do not use for new mints), and the reference bytecode + SPEC were updated to enforce UTC alignment. Because the problem was caught before the line was treated as stable for production, the protocol stays on v0.4: packed
CONTRACT_VERSION= 4 is unchanged; there is no bump to 0.5 solely for this fix. Older generation-4 deployments without the check remain separate registries; pair address + ABI correctly.On-chain (EIP-170)
CONTRACT_VERSIONis4at mint and insubmitProof(same v0.3-shapedPassporttuple as generation 3 deploys; minor bump viaSPEC_MINOR). The main registry remains intended to deploy under the 24 KiB creation limit on Polygon.SPEC_MAJOR(),SPEC_MINOR(),MONTHLY_LIMIT_C(),MONTHLY_LIMIT_B(). UseCONTRACT_VERSION,getRemainingMints, and normative limits C = 1000, B = 100_000 from SPEC / source.ODPPassportLib: NFCnfcModelremainsNTAG424DNA_TTonly (TagTamper). IncludesutcYearMonthFromTimestampand UTC mint-month enforcement;EC(83)on unsupported timestamp paths;EC(68)when mint/proofyear/month≠ UTC calendar of the block.ODPCounterfeitConcern(new satellite):raiseCounterfeitConcern,clearCounterfeitConcern,getCounterfeitConcern— P and M profiles only; only the raising profile may clear. Constructor pins oneObjectDigitalPassportaddress. Integrators must use anIODPRegistryForCounterfeit-compatiblegetCreatorreturn (struct layout) when wiring another registry.Satellite custom errors (
ODPCounterfeitConcern)Deploy order:
ODPPassportLib→ObjectDigitalPassport→ optionalODPWalletDocumentAnchor/ODPCounterfeitConcern— seedeploy/README.md. Helper scripts in-repo includedeploy/deploy.shanddeploy/scripts/freeze-registry.js(operator workflows; see script headers).Web (
NET.*, WalletConnect, flows)NET.counterfeitConcern: optional satellite address; must be deployed against the sameNET.contractas the main registry. Helpers:odpCounterfeitReadContract/odpCounterfeitWriteContractinweb/odp-contract.js.@walletconnect/ethereum-provider) on Profile and Passport; configweb/odp-wc-config.js; bundleweb/odp-wallet-wc-loader.js→web/odp-wallet-wc.bundle.js(build:npm run build:wcinweb/).passport.htmlandcreator.html, the WalletConnect layer restores a persisted session when possible.NET.counterfeitConcernis set—institutional concern (structured hash; no free-text on-chain). UI strings inlocalization/en/passport.json/localization/ru/passport.json.getPAffiliationAudit. Tool menu + workspace use a subnav row (Back + current tool title); ghost Back is styled for white cards under the blue theme.odp://and resolver notes —SPEC.md,localization/ru/SPEC.md.docs/community/discussion-passport-ui-v0.4-EN.md; optionalscripts/gh-create-discussion-from-doc.sh.README / branding
docs/readme/odp_cover_en.png(EN README),docs/readme/odp_cover_ru.png(RU README).Tests & tooling
deploy/test/include registry behaviour andODPPassportLibUTC edge cases (seeObjectDigitalPassport.test.js,ODPPassportLib.test.js).Earlier lines & pointers
RELEASE_v0.3.mddocs/V0.4.mddocs/VERSIONING_AND_RELEASES.mdThis discussion was created from the release Object Digital Passport — Release notes · v0.4.
All reactions