Si estoy en lo correcto, el nonce es responsable de la orden en que se ejecutan las transacciones. Supongamos que tiene dos transacciones T1 y T2. T1 depende de T2. Entonces quiero tener una orden T1 y luego T2. Esto se hace dando T1 el nonce y T2 nonce + 1. (corríjame si eso es falso)
Ahora bien, en algún caso, podría darse la situación de que T2 dependa también del estado de un contrato. Entonces quiero asegurarme de que T1 se ejecute solo entonces T2 se puede ejecutar. ¿Hay alguna forma de hacer esto?
Entonces, en realidad, para asegurarse de que T1 y T2 estén incluidos en el mismo bloque. Creo que eso podría hacerse mediante un contrato de vestuario, pero no estoy seguro de si hay una solución mejor o estándar.
¡Muchas gracias por cualquier consejo!
PD: Ejemplo: Quiero comprar algo. T1 depositar dinero (o dar aprobación) a un contrato. T2 compra algo usando el contrato.
Ejemplo Real: Quiero comprar un token en Ether Delta. T1: depósito. T2: Comprar token. No tiene sentido depositar si alguien fue más rápido y ya compró ese token por el precio dado.
Entonces quiero tener una orden T1 y luego T2. Esto se hace dando T1 el nonce y T2 nonce + 1. (corríjame si eso es falso)
Si tanto T1 como T2 se envían desde la misma cuenta, entonces se cumplirá la orden de nonce, sí.
T2 depende también del estado de un contrato. Entonces quiero asegurarme de que T1 se ejecute solo entonces T2 se puede ejecutar. ¿Hay alguna forma de hacer esto?
Escenario 1: si T1 y T2 son de la misma cuenta, entonces este pedido ya está garantizado por los nonces.
Escenario 2: si son de cuentas diferentes, T2 solo tendrá éxito si realiza un cambio válido en el estado. Si no realiza un cambio válido en el estado, fallará y no se incluirá en un bloque.
Si se requiere que T1 haga que el estado sea "válido" antes de que llegue T2, entonces puede asegurarse de que si T2 falla (porque T1 aún no ha sucedido), entonces se vuelve a enviar.
Si no se requiere T1 para que el estado sea "válido", y T2 podría funcionar sin que T1 haya ocurrido, entonces deberá tener cuidado para garantizar el pedido.
Entonces, en realidad, para asegurarse de que T1 y T2 estén incluidos en el mismo bloque.
No está claro por qué desea que se incluyan en el mismo bloque. Siempre que T1 sea anterior a T2, incluso en un bloque anterior, los cambios de estado funcionarán.
Además, no puede garantizar su inclusión en el mismo bloque. Depende de los mineros. Podría intentar que esto suceda con los precios de la gasolina, pero nuevamente, no hay garantía.
deposit()
y buy()
en una sola función combinada (tomar una sola llamada) para poder hacer lo que está pidiendo. (Lo que parece que no es el caso).
greg
miguelrazum
greg
ismael