Почему gastimate становится «бесконечным», когда я пытаюсь вернуть динамический массив в прочности?

Я понимаю, что по мере роста списка это будет стоить бесконечного газа. Я делаю временный массив в памяти размером с наш динамический массив в текущем размере, а затем возвращаю этот массив. Но делает ли это нецелесообразным давать функцию «getlist» в качестве карты Adhar в списке Индии? PS: функция работает на ремикс на данный момент, с ограниченным количеством записей, но не работает на трюфеле / ​​когда я пытаюсь вызвать его из моего приложения через js

Ответы (1)

Не видя ваш код, его трудно полностью понять.

Однако, с одной стороны, может потребоваться несколько циклов for без определенного максимума (это зависит от размера массива!), Чтобы выполнить итерацию, и это переключиться на цитируемое предупреждение; с другой стороны, примите во внимание, что в remix простая строка, возвращаемая или часто даже передаваемая в качестве аргумента в вызове функции, может включать предупреждение для бесконечного газа, поскольку строки в Solidity рассматриваются как динамический массив, как вы, возможно, знаете.

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

Очень часто вы не найдете там никакой реальной проблемы.