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?
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 EVENTS
un 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 method
de 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>)
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.
ismael
ACluelessProgramador