Ich verwende MetaMask, um eine Verbindung zu Rinkeby herzustellen, und ich stelle die Verträge über Remix bereit. Wenn ich die Funktion returnsenderbalance aufrufe, kehrt sie zurück
115792089237316195423570985008687907853269984665640564039456084007913129639935
eher als mein Guthaben in Wei. Der Code ist unten:
pragma solidity ^0.4.11;
contract returnbalance{
function returnsenderbalance() constant returns (uint){
return msg.sender.balance;
}
}
Dies hängt zusammen mit:
eth/api_backend.go
func (b *EthAPIBackend) GetEVM(ctx context.Context, msg core.Message, state *state.StateDB, header *types.Header, vmCfg vm.Config) (*vm.EVM, func() error, error) {
===> state.SetBalance(msg.From(), math.MaxBig256)
vmError := func() error { return nil }
context := core.NewEVMContext(msg, header, b.eth.BlockChain(), nil)
return vm.NewEVM(context, state, b.eth.chainConfig, vmCfg), vmError, nil
}
math.MaxBig256 == 115792089237316195423570985008687907853269984665640564039455084007913129639935
Ist eine Konstante in Geth (common/math/big.go)
Dieser Code funktioniert gut, versuchen Sie Folgendes:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract returnbalance{
function returnsenderbalance() view public returns(uint){
return msg.sender.balance;
}
}
o0ragman0o
o0ragman0o
function eventSenderBalance() {SenderBalance(msg.sender, msg.sender.balance); }
protokolliert den korrekten Saldo.Rob Hitchens