TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.48K subscribers
Post #1031 964
Foundry: организация адресов для тестов

Интересный способ для организации и создания пользовательских адресов для тестов были реализованы в контрактах от Sablier. Давайте посмотрим на нее внимательнее.

Для начала у нас есть структура с адресами необходимых нам пользователей, в которую позже будет удобно добавлять новые адреса:

 
struct Users {
// Default admin for all Sablier V2 contracts.
address payable admin;
// Impartial user.
address payable alice;
// Default stream broker.
address payable broker;
// Malicious user.
address payable eve;
// Default NFT operator.
address payable operator;
// Default stream recipient.
address payable recipient;
// Default stream sender.
}


В самих тестах мы определяем эту структуру в переменную:

Users internal users;

И уже в setUp() мы инициализируем эти адреса:

 
function setUp() public virtual {

users = Users({
admin: createUser("Admin"),
alice: createUser("Alice"),
broker: createUser("Broker"),
eve: createUser("Eve"),
operator: createUser("Operator"),
recipient: createUser("Recipient"),
sender: createUser("Sender")
});

}



Сама функция createUser() тоже не совсем проста, там сразу начисляются токены:

 
function createUser(string memory name) internal returns (address payable) {
address payable user = payable(makeAddr(name));
vm.deal({ account: user, newBalance: 100 ether });
deal({ token: address(dai), to: user, give: 1_000_000e18 });
deal({ token: address(usdt), to: user, give: 1_000_000e18 });
return user;
}


Таким образом, мы можем обращаться в тестах к нужному пользователю через users., например, users.admin.

Достаточно простая и удобная система, как вы думаете?

Полный код теста можно посмотреть в репо Sablier.

#foundry #users #setup
  • 👍 9
More from @solidityset
  1. Oct 2, 2026Вторая сложность — как доказать, что установилось именно опубликованное. В первом варианте…
  2. Oct 2, 2026Задача с полуоткрытым кодом На днях, в процессе создания одного приложения, столкнулся с и…
  3. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  4. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  5. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  6. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
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 →