Según tengo entendido, es posible que un contrato llame a otro contrato usando
othercontractaddress.call(gas_amount).value(eth amount)(tx data).
O en este caso remitente -> contrato A -> contrato B.
¿Es posible ir un nivel más profundo?
remitente -> contrato A -> contrato B -> contrato C?
¿Algo como el siguiente pseudocódigo?:
othercontractaddress.call(gas_amount).value(eth amount)(thatothercontract.call(gas_amount).value(eth amount)(2ndtxdata))
Sí, aunque obviamente cada contrato tiene que ejecutar la llamada en sí. Puedes hacer esto 1024 veces hasta llegar a la profundidad máxima. A esa profundidad, todas las llamadas nuevas fallarán. Esto incluso condujo a vulnerabilidades en el pasado.
Dicho esto, EIP-150 aumentó tanto el costo del gas de las llamadas que ya no se puede alcanzar la profundidad máxima.
Bobo Amitheson
mafrasi2
b_addr.call(gas_amount)
, luego en el contrato B tienesc_addr.call(gas_amount)
y así sucesivamente. No puede "condensar" las llamadas en un solo contrato como en su código.Puerto Teo
mafrasi2
mafrasi2
msg.depth + 1
para unaCALL
instrucción.Ferit
mafrasi2