¿Debería una llamada API estar en el backend de Solidity o en el frontend de Javascript?

Soy bastante nuevo en el desarrollo de blockchain. Quiero llamar a una función en mi contrato cuando una condición en la API es verdadera. ¿Debo hacer esta llamada a la API en mi contrato o en mi interfaz?

¿Puedes dar más detalles? Los contratos inteligentes no tienen acceso directo a recursos fuera de la cadena de bloques, necesita usar un oráculo para tales cosas.
@Ismael Quiero completar una transacción cuando cierto parámetro en la API RESTful a la que quiero acceder es verdadero. ¿Es mejor usar un orcale o simplemente usar métodos normales en javascript?

Respuestas (2)

Si su condición ocurre dentro de su contrato inteligente, por ejemplo, ha alcanzado una cierta cantidad de suscriptores de crowdfunding, puede rastrear las actividades de sus contratos inteligentes usando EVENTSun monitor externo (por ejemplo, usando un demonio node.js). Cuando el evento se activa dentro de su contrato, el daemon lo detectará y, a su vez, activará la ejecución de su código/script preprogramado . Ethers.io tiene una gran biblioteca de contratos inteligentes que puede usar para construir su daemon.

Si necesita llamar a uno methodde su contrato inteligente cuando ocurre un evento externo (por ejemplo, un usuario inicia sesión en su sitio web), es tan simple como usar los métodos de contrato de la biblioteca Web3.js.


Aquí hay un fragmento de cómo llamar a un método en un contrato de Ethereum (desde un servidor API basado en JS):

const Web3 = require('web3')
const web3 = new Web3('https://mainnet.infura.io')

function myFunction(myParam) {
    var contractAddress = '<ENTER-YOUR-CONTRACT-ADDRESS-HERE>'
    var contractABI = [<ENTER-YOUR-ABI-HERE>]
    var contract = new web3.eth.Contract(contractABI, contractAddress)
    var callData = contract.methods.<CONTRACT-FUNCTION>(myParam).call()
    callData.then(function(result) {
        console.log(result)
    })
}

myFunction(<MY-PARAM>)
Mira, quiero completar una transacción cuando cierto parámetro en la API RESTful a la que quiero acceder es verdadero. ¿Debería usar un oráculo para acceder a estos datos desde mi contrato inteligente, o simplemente usar métodos normales en javascript?
Agregué un ejemplo a mi respuesta. una vez que su condición de API se vuelve verdadera, puede llamar a ese fragmento para ejecutar su contrato.
Entonces, ¿qué dices? ¿Puedo hacer un seguimiento usando eventos y demás, y hacer mis llamadas a la API en la interfaz? En lugar de usar un oráculo.
Otros pueden no estar de acuerdo, pero encuentro que el enfoque del oráculo es demasiado complicado. He utilizado el enfoque descrito anteriormente y funciona bastante bien. De todos modos, planeo seguir explorando el método oráculo de las interacciones del mundo real.

Simplemente llame a un método en el contrato para verificar la condición (esto no cuesta gasolina) si es cierto, llame a la API; de lo contrario, no lo haga. Si desea verificar continuamente el valor de la variable, puede usar sockets web.