Решение Skill Badges для хакатона основано на имплементациях и объединении следующих стандартов:
ERC-6220(Equippable NFT) + ERC-7401 (Nestable NFT) + ERC-6454 (SBT NFT) + ERC-5773 (Multiasset NFT) + ERC-7508 (attributes storage)
npm install -g pnpm
pnpm i
pnpm hardhat compile
Для тестирования использовалась base sepolia, поддерживается dev версией для разработки от rmrk, необходимо задать в .env
BASE_SEPOLIA_URL=<RPC url, можно получить, например на https://app.infura.io/>
BASESCAN_API_KEY=<API key для верификации можно получить на https://sepolia.basescan.org/>
PRIVATE_KEY=<ключ от кошелька с небольшим количеством тестовых base sepolia/>
USER1_ADDRESS=<адрес кошелька первого пользователя для тестового минта>
USER2_ADDRESS=<адрес кошелька второго пользователя для тестового минта>
pnpm hardhat run ./scripts/run-deploy.ts
Для работы с сетью потребуется небольшое количество тестовых монет Можно получить тут Достаточно < 0.1 ETH sepolia testnet
pnpm hardhat run ./scripts/run-deploy.ts --network baseSepolia
Для ответа на вопросы организаторов был написан test/skill-badges.test.ts
-
ERC-7401 (Nestable NFT) - неизвестный издатель не сможет отправить экипируемый бейдж, поскольку для каждого слота указаны адреса коллекции (контракты слотов), минтить в которые могут только конкретные адреса с ролью
-
Механики взаимодействия с Verifiable Credentials для повышения доверия к сертификатам и достижениям ERC-7508 (attributes storage) позволяет менять атрибуты заднным ролям, на роли можно назначать конкретных издателей
pnpm test
Minting NFTs by Publishers
✔ Publisher1 can mint Slot NFTs and nest them into SkillBadges
✔ User without contributor role cannot mint Slot NFTs
Modifying Attributes by Publishers
✔ Publisher1 can set string attribute of SkillBadges NFT
✔ User without collaborator role cannot set string attribute
Setting Valid Parents by Contributors
✔ Publisher1 can set valid parent for equippable group
✔ User without contributor role cannot set valid parent for equippable group