hashgraph / hashgraph/asset-tokenization-studio
DX: two v8 factory/KYC footguns worth documenting (empty ISIN, onlyValidIssuer)
- Dominant language
- TypeScript
- Stars
- 33
- Forks
- 28
- Avg merge
- 15h 36m
- Merged PRs (30d)
- 8
Description
Building on the pre-deployed v8 testnet factory (`0.0.9213391`) we hit two undocumented reverts that cost real debugging time:
1. **`deployBond` with an empty ISIN reverts `WrongISIN`** — the factory enforces full ISO 6166 including the Luhn check digit. A documented example (or a derived-default recommendation) would help: most integrators won't have real ISINs on testnet. We ended up deriving a deterministic checksum-valid ISIN from our invoice ids.
2. **`grantKyc` reverts `AccountIsNotIssuer`** unless the KYC `issuer` argument is on the bond's SSI issuer list — the required sequence for a fresh bond (grant `ROLE_SSI_MANAGER` → `addIssuer` → then `grantKyc` with that issuer) isn't spelled out anywhere we found, and the zero-address "default" many integrators will try fails only at the on-chain revert.
Both were discovered live while shipping an invoice-financing platform on ATS for ETHOnline 2026 (KYC'd bonds, USDC settlement, secondary market). We solved both downstream (Luhn-valid ISIN derivation + a self-setup compliance batch that encodes the proven order) and are happy to upstream a docs PR — or a small SDK helper — if that's welcome.
Contributor guide
Research direction
Start from the v8 testnet factory entry points named in the report, then locate the existing deployBond and grantKyc documentation. Document the ISO 6166/Luhn-valid ISIN requirement and the fresh-bond issuer setup sequence, including why the zero address fails. Done when both reverts and the required order are clear to integrators.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- blockchain, documentation
- Issue type
- Documentation
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100