¿Cómo rastrear las transacciones entrantes de contratos inteligentes usando web3js?

Tengo un contrato inteligente de Ethereum que llama a funciones del otro. ¿Cómo podría rastrear estas llamadas usando web3js o alguna otra herramienta si es posible? Lo necesito porque quiero ejecutar algún código de JavaScript (u otro lenguaje que no sea de solidez) después de recibir dicha llamada y luego llamar a otra función del primer contrato inteligente, por lo que la secuencia de llamadas debería ser la siguiente:

  1. El contrato inteligente N1 llama a la función de contrato inteligente N2.
  2. El código JavaScript (u otro lenguaje que no sea de solidez) capta esta llamada y ejecuta algún código.
  3. El contrato inteligente N2 devuelve la llamada a N1 utilizando los datos del paso anterior.

¿Alguien podría ayudar con eso?

Creo que puedes usar javascript como puente. Utiliza javascript para llamar a una función en el contrato N1 para llamar a N2, luego escucha la llamada. Cuando recibe la confirmación y ejecuta el código, javascript llama al contrato N2 para llamar a N1. Ambos contratos deben tener una función para llamar al otro contrato, de lo contrario, creo que no es posible.

Respuestas (1)

Lo que intenta archivar es contrario a los principios de diseño de Solidity y blockchain. La respuesta a la pregunta ¿Por qué los contratos no pueden hacer llamadas a la API? explicará bastante por qué.

En pocas palabras: si abriera Solidity para llamar a un código arbitrario que no es de Solidity, se volvería no determinista ya que ese código que no es de Solidity no existiría fuera de la cadena de bloques y podría modificarse de forma independiente.

Lo entiendo, pero existe una solución como oraclize.it y es exitosa. Necesito algo como esto.
Un oráculo y lo que pides no es exactamente lo mismo. Básicamente, lo que hace un Oracle para enviar ciertos datos del mundo exterior a la cadena de bloques, mientras que hacer una llamada a la API sería al revés. ¿Notas la diferencia? Tal vez tengas que repensar lo que estás tratando de lograr o al menos explicar un poco más los detalles.
También posiblemente verifique los ejemplos de código en docs.oraclize.it/#ethereum-quick-start . O debería hacer una pregunta diferente, probablemente, que sería: ¿Cómo escribir mi propio oráculo en la cadena de bloques?