¿Es posible consultar contratos inteligentes dentro de un contrato inteligente?

Quiero saber si es posible consultar (descubrir) contratos inteligentes dentro de mi contrato inteligente. Por ejemplo, quiero encontrar un contrato inteligente con algún nombre y/o parámetros y luego llamarlo. ¿Es eso posible?

Respuestas (1)

Es posible que un contrato llame a otro contrato arbitrario, conociendo su dirección y la firma de la función que desea llamar.

También es posible hacer un contrato que actúe como una base de datos de otros contratos y devuelva una dirección de contrato y una firma de función cuando se envíe algún tipo de parámetro de búsqueda.

Esas dos cosas juntas cumplirían los requisitos establecidos. Sin embargo, no conozco a nadie que haga esto último, y no puedo imaginar cómo sería útil.

Un patrón común para contratos no especificados que toman parámetros conocidos, que pueden o no resolver cualquier problema que esté tratando de resolver, es:

  • Defina una interfaz (una firma de función) y haga que su contrato pueda llamar eso para alguna tarea en particular
  • Permita que el usuario especifique la dirección y la pase a su contrato como un parámetro, y haga que su contrato llame al otro contrato en la dirección especificada usando la interfaz esperada.

Por ejemplo, un contrato podría permitirle vender canciones por cualquier token ERC20. (Un token ERC es un contrato, con una interfaz que coincide con el estándar de token ERC20 ). El vendedor buscaría la dirección del contrato para el token que deseaba vender su canción para usar el sitio web de su elección y lo pasaría a el contrato del vendedor, junto con el ID de la canción y el precio en ese token. Más tarde, cuando apareciera un comprador, el contrato del vendedor llamaría a su interfaz esperada, en este caso transferFrom(), el método, para completar el pago de la venta.

Este patrón funciona porque el usuario puede navegar por Internet y usar el sentido común para decidir cuál sería un buen contrato para usar (en este caso como token), por lo que no necesita un contrato inteligente para poder hacerlo. para ellos.