Me gustaría una matriz de asignaciones, ¿es posible?
mapping (address >= value) sentValue;
sentValue[] public sentValues;
Quiero registrar los montos enviados por dirección, y quiero que cada evento de envío sea único con la capacidad de que una dirección envíe múltiples montos diferentes y que cada uno sea rastreado en la matriz individualmente. El resultado final sería la capacidad de iterar a través de esta matriz y mostrar en orden las cantidades enviadas por el usuario.
¿Cómo defino una nueva asignación cada vez que un usuario envía cierta cantidad y cuál es el código para enviar esa nueva asignación al final de la matriz?
Lo que estás buscando es un mapeo de mapeo. Creé el siguiente contrato inteligente que creo que logra lo que describiste.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.5.0 <0.8.0;
contract myContract {
mapping (address => mapping (uint => uint)) public payments;
mapping (address => uint) public lastPayment;
function sendMoney() public payable {
require(msg.value > 0);
payments[msg.sender][lastPayment[msg.sender]] = msg.value;
lastPayment[msg.sender]++;
}
}
Tenga en cuenta que el uso public
de variables payments
y lastPayment
for le dice al compilador que cree dos funciones de contrato inteligente para leer esos valores.
Aquí la esencia , y aquí el enlace para probar por ti mismo con el remix .
cielotemplo
cielotemplo
hrkrshnn