# Спецификация A7A5

### **Техническая спецификация A7A5**

* #### Язык программирования: Solidity
* #### Стандарты токена: ERC-20 (Ethereum), TRC-20 (Tron)
* #### Список функций:
  * Issue: Выпуск токенов A7A5. Новые токены A7A5 выпускаются только после поступления фиатных депозитов;
  * distributeInterest: A7A5 распределяет процентный доход от фиатных овернайт-депозитов между держателями токенов, обновляя TotalLiquidity (разница между новой и старой общей ликвидностью);
  * Burn: Сжигание токенов A7A5;
  * Approve: Стандартная функция для предоставления разрешения на расходование токенов A7A5;
  * Transfer: Стандартная функция для перевода токенов A7A5.
  * transferScaled: То же, что и transfer, но в терминах долей (специальное значение, используемое в расчётах, равное количеству токенов при условии, что ребейзы никогда не происходили);
  * TransferFrom: Стандартная функция, позволяющая кошелькам с разрешением выводить токены A7A5;
  * transferScaledFrom: То же, что и transferFrom, но с логикой расчёта, как в transferScaled.
  * Pause – Временная приостановка всех переводов токена A7A5;
  * Unpause – Возобновление переводов токена A7A5 после паузы;
  * addBlacklist: Заморозить токены A7A5 на конкретном адресе кошелька;
  * RemoveBlacklist: Разморозка токенов A7A5 на определённом кошельке;
  * destroyBlackFunds: Сжечь замороженные токены A7A5 на конкретном адресе кошелька;
  * updateBasisPointsRate: Установить комиссии за переводы токенов A7A5.
* Роли и доступ к функциям
  * Owner (кворум 3 из 5) имеет доступ к функциям: Issue, Burn, Pause, Unpause, updateBasisPointsRate;
  * Accountant (кворум 3 из 5) имеет доступ к функции distributeInterest;
  * Compliance (кворум 5 из 5) имеет доступ к функциям addBlacklist, removeBlacklist, destroyBlackFunds.

{% hint style="info" %}
Единственное функциональное отличие токена A7A5 в сети Tron от токена в сети Ethereum заключается в том, что для корректного отображения общего количества токенов в обороте на сканере (Etherscan) функция `totalSupply` в Ethereum возвращает значение переменной `_totalLiquidity`, тогда как в сети Tron она возвращает значение переменной `_totalSupply`.\
Чтобы узнать значение переменной `_totalSupply` в Ethereum, создана функция `totalShares`.
{% endhint %}

### **Можно ли назвать A7A5 ребейз (эластичным) токеном?**&#x20;

A7A5 — это ребейз (rebasing, elastic supply) токен, реализованный через механизм конвертации внутренних «акций» в видимые балансы посредством глобального коэффициента. Балансы пользователей не хранятся напрямую, а вычисляются по формуле:&#x20;

balance = (\_shares\[user] \* \_totalLiquidity) / \_totalSupply&#x20;

При начислении процентов вызывается функция distributeInterest, которая изменяет только \_totalLiquidity (увеличивая или уменьшая его на заданную величину), а \_totalSupply (количество акций) остаётся неизменным. Это приводит к автоматическому ребейзу — пропорциональному изменению балансов всех держателей. Дополнительно в контракте реализованы механизмы комиссии при переводах, чёрный список и возможность паузы работы.&#x20;

Простыми словами, A7A5 — это токен, который автоматически корректирует балансы всех пользователей при начислении процентов. Вместо того чтобы напрямую менять балансы, система хранит внутреннее значение (назовем его «акции») для каждого пользователя, а реальный баланс вычисляется по специальной формуле с использованием общего коэффициента. Когда начисляются проценты, этот коэффициент меняется, и все балансы увеличиваются пропорционально. Такой механизм схож с понятием «ребейз токен».

### **Спецификация мульти-сиг (мульти-подписных) смарт-контрактов**

Смарт-контракт A7A5 управляется с помощью мульти подписи. Для совершения какого-то действия смарт-контрактом нужно подтверждение кворума из 3 или 5 уникальных адресов в блокчейне в зависимости от типа вызываемой функции. Всего 5 адресов - участников кворума, которые являются членами команды A7A5.

Owner, Accountant -  для вызова функций этих ролей, приведенных в спецификации токена A7A5, нужен кворум из минимум 3 подписей на блокчейне из 5.

Compliance - для вызова этих функций нужен кворум 5 из 5 подписей.

### **Экосистема смарт-контрактов A7A5**

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc6vgGJAlEFJzEDI37a_yPiGT9V9_v5X4cQPJaQnTAGC95m2BoeRelHx6hgnP8GSJgLnRHzJ2387XgQuv1ipfGOayhjQbVj2Jq12xckrXcqEnNTtX8qthSt-XYNTj0gtvnr1hGlXw?key=wsFKbu_X-vYms8YTreBEBP8o" alt="" width="563"><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.a7a5.kg/token-a7a5/specifikaciya-a7a5.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
