Skip to content

implementation for NFT track of MoreTech 2024 hackathon

License

Notifications You must be signed in to change notification settings

mmvds/skill-badges

Repository files navigation

Решение Skill Badges

Решение 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

Настройка env

Для тестирования использовалась 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 

Развертывание на сети baseSepolia

Для работы с сетью потребуется небольшое количество тестовых монет Можно получить тут Достаточно < 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

About

implementation for NFT track of MoreTech 2024 hackathon

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published