Estamos implementando un pago de ethereum para nuestros clientes y necesitamos decidir entre depósitos a un contrato inteligente o direcciones de clientes individuales. ¿Cuáles son los pros y los contras? ¿Es posible ocultar el saldo de nuestro contrato inteligente si lo usamos para todos los pagos? ¿Por qué algunos intercambios no aceptan pagos de contratos inteligentes? ¿Se debe a que falta información de seguimiento del cliente?
Es diferente, pero solo un poco más complicado. Las transacciones de EOA (cuentas de propiedad externa, por ejemplo, la clave privada firma una transacción) tienen un destino y una cantidad. El intercambio o servicio puede monitorear el mempool y ver que la transacción es a su dirección y hacerle saber "hey, vemos su transacción, estamos esperando que se extraiga y x confirmaciones para confirmarla".
Sin embargo, las transacciones de los contratos son diferentes. Las transacciones de los contratos ni siquiera son transacciones, son "llamadas de mensajes". Dado que todas las transacciones de los contratos se inician desde las cuentas EOA, las llamadas de mensajes de los contratos no se muestran en el mempool y ni siquiera se incluyen en los bloques, solo la transacción inicial que provocó la transacción del contrato está en el bloque. Así es como funcionarían en la práctica los pagos de los contratos:
Envío un tx a mi contrato Multisig diciendo "envía 1 ETH a esta dirección"
El Multisig, en la misma transacción, envía una llamada de mensaje a la dirección que le dije con la cantidad de ETH que le dije que enviara.
Dado que la transacción que hace que el ETH vaya al servicio no es realmente al servicio, es al Multisig, el servicio/intercambio no puede simplemente monitorear las transacciones a su dirección. Tendrían que ejecutar cada transacción que ven y ver si se envía a su dirección. Además, es posible que el resultado de las transacciones cambie en un bloque futuro. Digamos que mi Multisig dice "si el número de bloque actual es impar, nunca envíe el ETH", pero el intercambio probó la transacción en un bloque par, estarían equivocados al obtener el ETH si se extrajo en un bloque impar.
Al final del día, el servicio/intercambio puede hacer ping para detectar cambios en el saldo de sus billeteras en lugar de tratar de escuchar las transacciones en su dirección, pero muchos simplemente no quieren hacer esto.
jeff
natewelch_
jeff
natewelch_
jeff