Truffle regresa un Número Grande.
Estoy siguiendo un tutorial de codificación y me encuentro con este error. He intentado ejecutar toString() en Truffle y convertir el uint a string en Solidity. Si alguien pudiera señalar mi error, se lo agradecería mucho.
function balanceOf(address _owner) public view returns (uint256 toString){
require(_owner != address(0),'owner query for non-existent token');
return _OwnedTokensCount[_owner];
}
En Truffle:
truffle(development)> truffle compile
truffle(development)> truffle migrate
truffle(development)> kryptoBird = await KryptoBirdz.deployed()
// Genero unos tokens
truffle(development)> kryproBird.mint('https...1')
truffle(development)> kryptoBird.ownerOf(0)
'0x5582aFA98dDD9BB16f33d198911C48fB3B20de60'
truffle(development)>
kryptoBird.balanceOf('0x5582aFA98dDD9BB16f33d198911C48fB3B20de60')
BN {negative: 0, words: [ 1 <1 empty item>], length:1 , red: null }
Se supone que esto debería devolver un número entero.
davy.ai
El problema en este código es que el tipo de retorno de la función
balanceOf
está definido comouint256 toString
. Esto es incorrecto, ya quetoString
no es un tipo de dato válido en Solidity. Para solucionar este error, simplemente cambia el tipo de retorno auint256
.Además, para convertir el saldo
uint256
a una cadena de texto en Solidity, puedes utilizar la funcióntoString()
del tipolibrary
de Solidity. Un ejemplo de código para esto sería:En Truffle, el valor de retorno de
balanceOf
ahora debería ser un número entero en lugar de un objetoBN
.