>> (p.1)
    Author Topic: Смарт контракт, нужен совет  (Read 213 times)
    deh222 (OP)
    Copper Member
    Jr. Member
    *
    Offline

    Activity: 76
    Merit: 1


    View Profile
    July 10, 2018, 08:58:43 AM
     #1

    Добрый день.  Готовим смарт контракт ICO,при компиляции контракта на вкладке Analyse в ремиксе есть сообщения о том, что какие-то функции требуют бесконечного газа, а где то  потенциальная уязвимость.


    1) У нас три этапа ICO, Мы решили написать функцию с простановкой паузы при завершении любого этапа и финализации.

    Мы идем по списку дольщиков, у нас там массив и мы его в цикле перебираем, чтобы всем отправить  токены. А так же начисляем
    бонус за этап. 1 этап +20% токенов, 2 этап +15% токенов и т.д.
    Вот:

    for (uint i = 0; i < parts.length; i++) {      / Идем по списку всех дольщиков
                totalPercent += parts.percent;          / Складываем общий процент каждого дольщика
            }

    for - это и есть цикл

    Но главное это массовая рассылка токенов, в конце ICO  инвесторам,  тут идет запись данных в блокчейн, очень по итогу дорогая операция:



    Сейчас вот это

    function finalize() onlyOwner NotFinalized public {
            uint totalPercent = 0;                          // Итоговый процент всех дольщиков
            for (uint i = 0; i < parts.length; i++) {      / Идем по списку всех дольщиков
                totalPercent += parts.percent;          / Складываем общий процент каждого дольщика
            }

            uint256 totalSupply = token.totalSupply();
            totalSupply = totalSupply +    // Добавляем сумму токенов дольщиков к общей сумме выпущенных токенов
                // Рассчитываем включенный процент в итоговую сумму
                (totalSupply - (totalSupply (1 - (1 * totalPercent 100))));  // Сумму рассчитаных доп токенов

            for ( i = 0; i < parts.length; i++) {      / Идем по списку всех дольщиков
                token.publicAsyncSend(parts.addr, (totalSupply * parts.percent) 100);// Перечисляем всем токены
            }

            for ( i = 0; i < bounty.length; i++) {      / Идем по списку всех баунти
                token.publicAsyncSend(bounty.addr, (totalSupply * bounty.percent) 100);// Перечисляем всем токены
            }

            emit Finalize();    // Дергаем логгирование закрытия ICO
            isFinalized = true;/ Ставим флаг закрытия ICO
        }



    Есть  конечно примеры уже опробованные которые можно использовать, конечно можно подергать с гетхаба, но хотелось бы услышать мнение тех кто знаком с данным вопросом, кто сталкивался, как наиболее разумно это реализовать .Спасибо.
Page 1
Viewing Page: 1