Estoy tratando de crear una función de ayuda que me permita cambiar entre una .deployed()
llamada a mi contrato y una con una dirección fija usando .at()
. La segunda llamada (que se comenta en el código a continuación) es extremadamente lenta. Estoy haciendo alrededor de 1-2 llamadas por segundo (buscando un evento) contra una red de prueba local y mantiene Chrome vinculado al 100% usando el segundo método. El primer método es unas 20 veces más rápido. ¿Por qué es así y cómo lo soluciono?
getContractDeploy: function() {
contract_deploy = App.contracts.CONTRACTX.deployed();
//contract_deploy = App.contracts.CONTRACTX.at(contract_address);
return contract_deploy;
},
Si está usando truffle, entonces está usando truffle-contract para administrar contratos.
En cuanto a la implementación de at
, realiza una llamada adicional web3.eth.getCode
para garantizar que haya un contrato en la dirección proporcionada.
La implementación de deployed
es más simple y solo se basa en la información del artefacto del contrato.
No es una buena idea haber .at()
llamado a la ruta activa, o al menos almacenar en caché el resultado si la dirección no cambia con frecuencia.
Edmundo Edgar
deployed()
...