Trufa, contratos y despliegue

Estoy siguiendo este tutorial . Todo funcionó bien. Ahora quiero obtener tokens de BalanceOf en mi aplicación nodejs, pero sigo recibiendo este error:

tokenContract.methods.balanceOf is not a function.

Mi código es el siguiente:

var provider = new web3.providers.HttpProvider(node.url);
            var w3 = new web3(provider);

            var tokenContract = new w3.eth.Contract(abi, query.token_address);

            console.log(tokenContract);

            w3.eth.call({
                to: query.pub_address,
                data: tokenContract.methods.balanceOf(query.pub_address).encodeABI()
            }).then(function(balance) {
                console.log(balance);
            }).catch(function(error) {
                console.log(error)
                reject(error)
            })

Si reviso mis métodos tokenContract en la consola, al imprimir (tokenContract.methods) veo que no hay ningún método balanceOf expuesto.

¿Algunas ideas?

¿Ha intentado llamar a tokenContract.balanceOf() por separado?
@RomanFrolov sí, lo intenté y obtengo: tokenContract.balanceOf no es una función. Si imprimo en la consola: console.log(tokenContract.methods);. No veo el método balanceOf, si ese es el problema, ¿cómo lo agrego?
¿Usas el contrato correcto abi?
@RomanFrolov Acabo de encontrar el problema, en el tutorial, muestran los contratos: Coin y CrowdSale, estaba usando CrowdSale que no tiene el método getBalance ya que parece ser un tipo diferente de contrato. ¿Sabe usted la diferencia?
puedes ver la diferencia aquí
Como puede ver con el contrato de token, puede implementar algún tipo de moneda o acciones y jugar con él. Pero con el contrato de crowdsale puedes hacer una campaña de recaudación de fondos completa con una fecha límite y funcionalidad para retirar dinero en caso de fecha límite.
@RomanFrolov, ¿puedes agregar todo esto como respuesta? Entonces puedo seleccionarlo como la solución.

Respuestas (1)

Como se mencionó en la sección de comentarios debajo de la pregunta, el problema fue que se usó el contrato CrowdSale en lugar del contrato Token. El motivo del error fue que el contrato CrowdSaleno tiene el método balanceOf().

Obtenga más información sobre el contrato de Crowd Sale .

Lea más sobre el contrato de token .