struct userData{
uint val;
bool isvalue;
string name;
}
mapping(uint => address) internal users;
mapping(address => userData) internal bidirectionalUsers;
function addMember(address newMember, string memberName) public{
if (msg.sender != owner) return;
if (bidirectionalUsers[newMember].isvalue) return;
users[memberCount] = newMember;
bidirectionalUsers[newMember] = userData(memberCount,true,memberName);
}
El código anterior arroja una advertencia en addMember(), gas limit is high:infinite and it can not be executed
.
Comenté todas las líneas dentro de la función, pero aún arroja esta advertencia. ¿Qué estoy haciendo mal aquí? ¿Puede alguien ayudarme en esto? Gracias.
Puede ignorar esta advertencia con seguridad. El problema es su variable de cadena en los parámetros string memberName
. Debido a que una cadena no tiene un tamaño fijo, en teoría es posible requerir una cantidad infinita de gas para llenarla con una cantidad infinita de caracteres.
Su código aún se compilará y funcionará si no se muestran otros errores.
Recibo la misma advertencia incluso con una función pura que usa argumentos de longitud fija. Aquí está el código:
function sumar(int a, int b) public pure returns (int) {
return a+b;
}
¿Algunas ideas?
(Usando la versión actual de Remix, versión del compilador 0.8.13)
eek
Fabián Iwanecki
require(memberName.length <= 10);