Ich möchte eine Adresse zwei Salden zuordnen, weil wir im Vertrag zwei Arten von Token haben, nämlich Energie und Strom. Ist der folgende Code im Solidity-Programm korrekt?
mapping(address => uint256) Enbalances;
mapping(address => uint256) Pwbalances;
Hier ist die Funktion, um das Energiegleichgewicht zu erhalten:
function balanceOfEn(address _owner) constant returns (uint256 Enbalance) {
return Enbalances[_owner];
}
und ich rufe diese Funktion wie folgt auf:
contractInstance.methods.balanceOfEn('0x1c3bcab2050Fbe3A0c4958dd5776558EE9720460').call({ from: '0x1c3bcab2050Fbe3A0c4958dd5776558EE9720460' }, function(error, result) {
console.log(error);
console.log(result)
});
PS Wenn ich ein Guthaben erhalten möchte, erhalte ich die folgende Fehlermeldung:
> 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)
Ist der folgende alternative Code für die Zuordnung der Adresse zu zwei Waagen korrekt?
mapping (address => uint256) Enbalances;
mapping (address => mapping (address => uint256)) Pwbalances;
Bauen Sie Ihre Artefakte wieder auf ( truffle compile
z. B. mit)
Sie können vereinfachencontractInstance.methods.balanceOfEn('...').call({ from: '...' })
ZucontractInstance.balanceOfEn('...', { from: '...' })
Und tatsächlich, da Enbalances
deklariert ist public
, können Sie die Funktion in Ihrem Vertrag entfernen balanceOfEn
und dann verwendencontractInstance.Enbalances('...', { from: '...' })
Elisa Drion
Elisa Drion
Badr Bellaj
Jaime
Fragesteller
Elisa Drion
Fragesteller
Fragesteller
Elisa Drion