ManaToken.abi.json

Обзор

Файл ManaToken.abi.json содержит ABI (Application Binary Interface) для смарт-контракта ERC-20 токена с расширенными возможностями управления ролями и функционалом паузы. Данный контракт реализует стандартные функции ERC-20 (балансы, переводы, утверждения), а также расширяет их с помощью ролей доступа (администратор, менеджер игры, паузер, менеджер стейкинга) и механизмов паузы и разморозки токена. Кроме того, контракт поддерживает функции сжигания (burn) и выпуска новых токенов (mint), с контролем доступа и проверками ошибок.

Контракт предназначен для использования в игровой или финансовой экосистеме, где требуется гибкое управление токенами, их эмиссия и уничтожение, а также контроль за правами на выполнение определенных действий.


Подробное описание функций и методов

Конструктор


Публичные константы и геттеры ролей


Стандартные функции ERC-20


Управление ролями (AccessControl)


Функции паузы и безопасности


Эмиссия и сжигание токенов


Поддержка интерфейсов


События


Ошибки (Errors)

Контракт определяет набор ошибок для обработки различных исключений и ошибок доступа:


Взаимодействие с другими частями системы


Примеры использования

// Получение баланса пользователя
const balance = await manaToken.methods.balanceOf(userAddress).call();

// Передача токенов другому пользователю
const tx = await manaToken.methods.transfer(recipientAddress, amount).send({from: senderAddress});

// Назначение роли менеджера игры новому аккаунту (только для администратора)
await manaToken.methods.grantRole(manaToken.methods.GAME_MANAGER_ROLE().call(), newManager).send({from: adminAddress});

// Приостановка работы токена (только для паузера)
await manaToken.methods.pause().send({from: pauserAddress});

Визуальное представление структуры (Mermaid диаграмма)

classDiagram
    class ManaToken {
        <<contract>>
        +constructor(initialOwner: address)
        +DEFAULT_ADMIN_ROLE(): bytes32
        +GAME_MANAGER_ROLE(): bytes32
        +PAUSER_ROLE(): bytes32
        +STAKING_MANAGER_ROLE(): bytes32
        +INITIAL_SUPPLY(): uint256
        +name(): string
        +symbol(): string
        +decimals(): uint8
        +totalSupply(): uint256
        +balanceOf(account: address): uint256
        +allowance(owner: address, spender: address): uint256
        +approve(spender: address, value: uint256): bool
        +transfer(to: address, value: uint256): bool
        +transferFrom(from: address, to: address, value: uint256): bool
        +mint(to: address, amount: uint256)
        +burn(from: address, amount: uint256)
        +burnSelf(amount: uint256)
        +pause()
        +unpause()
        +paused(): bool
        +getRoleAdmin(role: bytes32): bytes32
        +grantRole(role: bytes32, account: address)
        +revokeRole(role: bytes32, account: address)
        +renounceRole(role: bytes32, callerConfirmation: address)
        +hasRole(role: bytes32, account: address): bool
        +supportsInterface(interfaceId: bytes4): bool
    }

Заключение

Файл ManaToken.abi.json описывает полнофункциональный смарт-контракт ERC-20 токена с расширенными возможностями управления ролями, контроля доступа, паузы и управления эмиссией токенов. Данный контракт подходит для использования в игровых и финансовых приложениях, требующих гибкой и безопасной работы с токенами на блокчейне.