TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.49K subscribers
Post #1395 905
Стандарт ERC-6909 Minimal Multi-Token Standard. Часть 2

Продолжаем знакомится с данным стандартом.

Модель оператора в ERC-6909

В функции ERC-6909 setOperator, показанной ниже, переменная spender устанавливается в качестве оператора и получает глобальные разрешения на передачу всех идентификаторов токенов, принадлежащих счету, без ограничений по разрешению.

function setOperator(address spender, bool approved) public returns (bool) {
isOperator[msg.sender][spender] = approved;
emit OperatorSet(msg.sender, spender, approved);
return true;
}


Модель разрешений в ERC-6909

Модель разрешений (allowance model) представляет собой систему управления по конкретным токенам и суммам, в которой учетная запись может установить ограниченное количество разрешений для конкретного ID токена.

Например, Алиса может разрешить Бобу перевести 100 единиц токена с ID 42, не предоставляя доступа к другим токенам или неограниченным суммам, используя функцию одобрения в ERC-6909, показанную далее.

function approve(address spender, uint256 id, uint256 amount) public returns (bool) {
allowance[msg.sender][spender][id] = amount;
emit Approval(msg.sender, spender, id, amount);
return true;
}


Переменная spender в approve - это учетная запись, уполномоченная переводить определенные суммы определенного id токена от имени владельца.

Например, владелец может разрешить spender переводить <= 100 единиц определенного ID токена. Кроме того, он может дать бесконечное разрешение на перевод определенного id токена, установив разрешение на type(uint256).max.

В ERC-6909 не указано, должны ли вычитаться надбавки, установленные в type(uint256).max, или нет. Это поведение оставлено на усмотрение исполнителя, аналогично ERC-20.

Основные структуры данных

Реализации ERC-6909 используют три маппинга для обновления состояния остатков на счетах и разрешений.

1. balanceOf: Баланс владельца id

Маппинг balanceOf отслеживает баланс определенного ID токена, принадлежащего определенному адресу (владельцу). Структура owner => (id => amount) в связке указывает на то, что один владелец может владеть несколькими токенами и отслеживать их баланс по соответствующим ID.

mapping(address owner => mapping(uint256 id => uint256 amount)) public balanceOf;


2. allowance: Разрешение на передачу токена

Маппинг allowance определяет, какое количество конкретного токена (ID) может передать spender от имени владельца. Это облегчает тонкий контроль над расходованием токенов.

mapping(address owner => mapping(address spender => mapping(uint256 id => uint256 amount))) public allowance;


3. isOperator: Статус утверждения оператора

mapping(address owner => mapping(address operator => bool isOperator)) public isOperator;


Этот маппинг отслеживает, был ли spender утвержден в качестве оператора для всех токенов, принадлежащих адресу. Например, isOperator[0x123...][0xABC...] возвращает true, если адресу 0xABC... разрешено тратить токены, принадлежащие адресу 0x123...; в противном случае возвращается false.

Далее разберем функции.

#eip6909
  • 👍 5
  • ❤ 2
More from @solidityset
  1. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  2. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  3. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  4. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
  5. Sep 9, 2026Работа с чистой энергией Дисклеймер Сегодня ава и название канала, наконец, поменялись. Я…
  6. Sep 9, 2026Channel name was changed to «Из Solidity в AI и дальше»
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →