package eth import ( "context" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/woop-chain/woop/eth/rpc" "github.com/woop-chain/woop/wiki" internal_common "github.com/woop-chain/woop/internal/common" ) // PublicEthService provides an API to access to the Eth endpoints for the Woop blockchain. type PublicEthService struct { wiki *wiki.Woop } // NewPublicEthService creates a new API for the RPC interface func NewPublicEthService(wiki *wiki.Woop, namespace string) rpc.API { if namespace == "" { namespace = "eth" } return rpc.API{ Namespace: namespace, Version: "1.0", Service: &PublicEthService{wiki}, Public: true, } } // GetBalance returns the amount of Atto for the given address in the state of the // given block number. The rpc.LatestBlockNumber and rpc.PendingBlockNumber meta // block numbers are also allowed. func (s *PublicEthService) GetBalance( ctx context.Context, address string, blockNrOrHash rpc.BlockNumberOrHash, ) (*hexutil.Big, error) { addr, err := internal_common.ParseAddr(address) if err != nil { return nil, err } balance, err := s.wiki.GetBalance(ctx, addr, blockNrOrHash) if err != nil { return nil, err } return (*hexutil.Big)(balance), nil }