¿Distribuir el saldo de un contrato entre tokens de propietarios en función de porcentajes?

Tengo un contrato y tengo ether en él. ¿Cómo puedo distribuir el saldo del contrato entre los tokens del propietario en base a porcentajes?

¿Cuál es el problema real? Conoces el número total de fichas, sabes cuántas fichas tiene cada propietario. Entonces tienes los porcentajes. Cree una withdrawfunción que envíe un porcentaje calculado anteriormente a la cuenta del titular del token.
Necesito enviar a todos los titulares. Y no entiendo cómo obtener sus direcciones y tokens de valor en una sola función. Cómo interate los saldos.
Eso no es posible. Las asignaciones no se pueden iterar en Solidity. Tendría que mantener una matriz adicional de direcciones de titulares de tokens que tendrá que iterar si desea distribuir a todos los titulares de tokens.
Tal vez sea posible, porque en la documentación hay un enlace en el mapeo interable solidity.readthedocs.io/en/develop/types.html#mappings

Respuestas (2)

Si aún necesita una respuesta, pruebe este excelente enfoque https://medium.com/@weka/dividend-bearing-tokens-on-ethereum-42d01c710657 .

El punto clave aquí es que no eres tú quien distribuye el éter entre los titulares, sino que los titulares deben retirar su parte ellos mismos.

El contrato con ether debe vigilar las transferencias de tokens y ajustar las sumas de ether que se pagarán a esas direcciones.

El artículo describe 2 casos: uno para el suministro de fichas fijas y otro para el suministro de fichas variables.

Muchas gracias. En la actualidad he resuelto este problema: github.com/poperechnyi1/iterable-Mapping-ERC20

Actualmente tengo la solución para esta tarea: https://github.com/poperechnyi1/iterable-Mapping-ERC20 Utilicé el mapeo iterable: https://github.com/szerintedmi/solidity-itMapsLib