Actualmente tengo el siguiente bucle (algunas cosas quedan fuera)
mapping (address => uint) pendingWithdrawals;
function example () private{
address[] tempList = List;
for(uint k = 0; k < tempList.length; k++){
Struct storage val = mapping[tempList[k]];
pendingWithdrawals[tempList[k]] = (val.value);
}
}
En esta situación, estoy recorriendo una lista que creé localmente para ahorrar gasolina y llamando a la asignación de retiros pendientes dentro del ciclo. Pero, ¿cómo puedo lograr el mismo objetivo con el mapeo? Como no puede asignar asignaciones, no puedo crear una asignación local, escribir en la asignación local y actualizar la nueva asignación global una vez que haya terminado. Lo que hace que este ciclo for sea muy costoso en términos de tener que llamar al almacenamiento en cada iteración dentro del ciclo.
En mi opinión, incluso si pudiera crear un mapeo local, ponerle 10 valores y luego actualizar la variable de estado una vez, tendría que pagar por 10 ranuras de almacenamiento, porque el mapeo contiene 10 valores.
Mohamed Altabba