Quiero asignar una dirección a dos saldos, porque en el contrato tenemos dos tipos de fichas, es decir, energía y potencia. ¿El siguiente código es correcto en el programa Solidity?
mapping(address => uint256) Enbalances;
mapping(address => uint256) Pwbalances;
Aquí está la función para obtener el equilibrio de energía:
function balanceOfEn(address _owner) constant returns (uint256 Enbalance) {
return Enbalances[_owner];
}
y llamo a esta función de la siguiente manera:
contractInstance.methods.balanceOfEn('0x1c3bcab2050Fbe3A0c4958dd5776558EE9720460').call({ from: '0x1c3bcab2050Fbe3A0c4958dd5776558EE9720460' }, function(error, result) {
console.log(error);
console.log(result)
});
PD: cuando quiero obtener un saldo, recibo el siguiente error:
> Error: Couldn't decode uint256 from ABI: 0x
at SolidityTypeUInt.formatOutputUInt (/home/ubuntu/parityewf/node_modules/we b3-eth-abi/src/formatters.js:174:15)
at SolidityTypeUInt.SolidityType.decode (/home/ubuntu/parityewf/node_modules /web3-eth-abi/src/type.js:252:17)
at /home/ubuntu/parityewf/node_modules/web3-eth-abi/src/index.js:327:49
at Array.forEach (native)
at ABICoder.decodeParameters (/home/ubuntu/parityewf/node_modules/web3-eth-a bi/src/index.js:326:13)
at Contract._decodeMethodReturn (/home/ubuntu/parityewf/node_modules/web3-et h-contract/src/index.js:459:22)
at Method.outputFormatter (/home/ubuntu/parityewf/node_modules/web3-eth-cont ract/src/index.js:812:46)
at Method.formatOutput (/home/ubuntu/parityewf/node_modules/web3-core-method /src/index.js:163:54)
at sendTxCallback (/home/ubuntu/parityewf/node_modules/web3-core-method/src/ index.js:467:33)
at /home/ubuntu/parityewf/node_modules/web3-core-requestmanager/src/index.js :147:9
at XMLHttpRequest.request.onreadystatechange (/home/ubuntu/parityewf/node_mo dules/web3-providers-http/src/index.js:77:13)
at XMLHttpRequestEventTarget.dispatchEvent (/home/ubuntu/parityewf/node_modu les/xhr2/lib/xhr2.js:64:18)
at XMLHttpRequest._setReadyState (/home/ubuntu/parityewf/node_modules/xhr2/l ib/xhr2.js:354:12)
at XMLHttpRequest._onHttpResponseEnd (/home/ubuntu/parityewf/node_modules/xh r2/lib/xhr2.js:509:12)
at IncomingMessage.<anonymous> (/home/ubuntu/parityewf/node_modules/xhr2/lib /xhr2.js:469:24)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickDomainCallback (internal/process/next_tick.js:128:9)
¿Es correcto seguir el código alternativo para asignar la dirección a dos saldos?
mapping (address => uint256) Enbalances;
mapping (address => mapping (address => uint256)) Pwbalances;
Reconstruye tus artefactos (usando truffle compile
por ejemplo)
puedes simplificarcontractInstance.methods.balanceOfEn('...').call({ from: '...' })
AcontractInstance.balanceOfEn('...', { from: '...' })
Y, de hecho, dado que Enbalances
se declara public
, puede deshacerse de la función balanceOfEn
en su contrato y luego usarcontractInstance.Enbalances('...', { from: '...' })
Eliseo Drión
Eliseo Drión
Badr Bellaj
Jaime
Preguntador
Eliseo Drión
Preguntador
Preguntador
Eliseo Drión