Antes de conocer el método balanceOf opté por crear un mapping para registrar los logros obtenidos y asà usarlo para validar antes de entregar los token ERC20.
// variables
mapping (address => uint) logrosObtenidos;
Luego registro los logros cada vez que se emiten los token ERC721:
// Give achievement ERC721
partidasGanadas[partidas[idPartida].ganador]++;
if (partidasGanadas[partidas[idPartida].ganador] == 5) {
achievement.emitir(partidas[idPartida].ganador);
logrosObtenidos[partidas[idPartida].ganador]++;
}
Finalmente entrego los token ERC20 si se cumple la condición indicada:
// Give extra ERC20 token because has achievement
if (logrosObtenidos[partidas[idPartida].ganador] > 0) {
moneda.emitir(partidas[idPartida].ganador, 2);
}
Definitivamente usar balanceOf es más óptimo 😃
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?