Как переносить токены на несколько адресов в одной транзакции

Я пытаюсь провести воздушный забег, но посылка жетонов индивидуально для тысяч людей будет навсегда. Есть ли способ сделать это в одной транзакции с несколькими получателями.

Если да, не могли бы вы предоставить мне код.

Спасибо

5 голосов | спросил Dylan 10 +03002017-10-10T08:26:00+03:00312017bEurope/MoscowTue, 10 Oct 2017 08:26:00 +0300 2017, 08:26:00

3 ответа


4

Вам не рекомендуется использовать шаблон отправки , особенно если вы хотите отправить /перевести средства (эфир /токены и т. д.) тысячам людей, как вы упомянули. Таким образом, вы можете легко получить самозахват, например, при испарении газа. Посмотрите это (и следующий слайд). Другая проблема с шаблоном отправки заключается в том, что вы должны иметь в виду, что нет гарантии, что .send() (или .transfer()). Вы всегда должны быть готовы к таким крайним случаям в своем умном коде контракта, то есть выручать, работать вокруг и т. Д. Прекрасным примером этого является KingOfTheEtherThrone «взломать».

Поэтому вы должны использовать шаблон отзыва, когда ваши пользователи /партнеры будут изымать свои средства, вы не должны участвовать в отправке средств. Образ вывода сильно объясняется здесь здесь .

ответил István András Seres 10 +03002017-10-10T10:07:23+03:00312017bEurope/MoscowTue, 10 Oct 2017 10:07:23 +0300 2017, 10:07:23
0

В цепочке вам придется использовать контракт с чем-то вроде функции sendToMany:

function sendToMany(address[] recipients) {
for(uint i = 0; i< recipients.length; i++){
     i.send(msg.value/recipients.length);
     }
}
ответил CBobRobison 10 +03002017-10-10T08:49:35+03:00312017bEurope/MoscowTue, 10 Oct 2017 08:49:35 +0300 2017, 08:49:35
0

Эта статья дает хорошее решение.

  • У вас есть все ваши добавления в CSV-файле (сначала удалите пробелы или ошибочные адреса).
  • Сделайте в коде токена airdropTokens(address[] addresses, value), который передает value для каждого адреса с помощью цикла for.
  • Введите scipt для вызова функции записи вашего CSV-файла. Статья рекомендует разрезать ваши данные, вызывая функцию партиями из 80 (в его примере). Вызов функции с очень большим массивом может оказаться неэффективным.

В статье приводится более подробная информация, но в основном это все, что вам нужно.

ответил Teleporting Goat 16 PMpMon, 16 Apr 2018 15:33:32 +030033Monday 2018, 15:33:32

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132