Estoy usando MetaMask para conectarme a Rinkeby y estoy implementando los contratos a través de Remix. Cuando llamo a la función returnenderbalance, devuelve
115792089237316195423570985008687907853269984665640564039456084007913129639935
en lugar de mi saldo en Wei. El código está abajo:
pragma solidity ^0.4.11;
contract returnbalance{
function returnsenderbalance() constant returns (uint){
return msg.sender.balance;
}
}
Esto está relacionado con:
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
Es una constante en Geth( common/math/big.go)
este código funciona bien, prueba esto:
// 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); }
registra el saldo correcto.Rob Hitchens