NFT membership soulbound (LSP8) con tier Bronze/Silver/Gold aggiornabile. Pensata per essere letta da qualunque altro progetto ChainIntegrate (MyCarBook, Birra20Venti, ecc.) per sbloccare funzionalità in base al livello posseduto — sostituisce liste di indirizzi gestite a mano con un badge reale, visibile nella Collectibles della UP del membro.
chainintegrate-membership/
├── contracts/
│ └── ChainIntegrateMembership.sol
├── scripts/
│ └── deploy.js
├── backend/
│ ├── server.js — proxy Pinata (mai JWT nel browser)
│ ├── package.json
│ └── .env.example
├── frontend/
│ ├── admin.html — mint + aggiornamento tier (solo owner contratto)
│ └── config.js — indirizzi contratto per rete + ABI
├── hardhat.config.js
└── .env.example
- Un token per indirizzo, soulbound (non trasferibile) — legato alla persona che ha acquistato il livello, diverso da MyCarBook dove il trasferimento in rivendita è invece voluto.
- Tier aggiornabile sullo stesso token (Bronze→Silver→Gold), non serve mintare un secondo NFT per l'upgrade — cambia anche l'icona mostrata.
- Mint e upgrade solo owner del contratto (ChainIntegrate) — per ora gestione manuale (chi paga cosa via LYX si decide fuori dal contratto), il contratto registra solo il risultato.
tierOf(address): funzione pensata per essere chiamata da ALTRI contratti/frontend ChainIntegrate per sapere il livello di un membro senza risolvere IPFS — un'unica read on-chain.
- Confermare gli indirizzi owner in
scripts/deploy.js(COLLECTION_OWNER_BY_CHAIN) — riusati per ora quelli di MyCarBook, assumendo la stessa UP ChainIntegrate; verificare che sia corretto. - Decidere il sottodominio (proposto:
membership.chainintegrate.it) e aggiornareALLOWED_ORIGINinbackend/.env.exampledi conseguenza. npx hardhat compile— non verificato in sandbox (nessun accesso a binaries.soliditylang.org), solo revisione manuale finora.- Deploy su testnet 4201 prima, verifica mint+upgrade, poi mainnet 42.
- Collegare il JWT Pinata (stesso account già in uso per MyCarBook, o uno dedicato — a scelta).
- Mint a pagamento in LYX con prezzo per fascia — oggi
mintMembershipèonlyOwner, nessuna logica di pagamento. Da aggiungere quando serve davvero il flusso self-service. - Nessuna integrazione ancora con MyCarBook o altri progetti per leggere
tierOf()— prossimo passo naturale una volta deployato.