Skip to content

Commit

Permalink
Merge branch 'main' into gregor/tx-send-status
Browse files Browse the repository at this point in the history
  • Loading branch information
devbugging authored May 28, 2024
2 parents c82528c + 9d1196a commit 7147b50
Show file tree
Hide file tree
Showing 4 changed files with 207 additions and 158 deletions.
46 changes: 14 additions & 32 deletions api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,12 +158,12 @@ func (b *BlockChainAPI) GetBalance(
address common.Address,
blockNumberOrHash *rpc.BlockNumberOrHash,
) (*hexutil.Big, error) {
cadenceHeight, err := b.getCadenceHeight(blockNumberOrHash)
evmHeight, err := b.getBlockNumber(blockNumberOrHash)
if err != nil {
return handleError[*hexutil.Big](b.logger, err)
}

balance, err := b.evm.GetBalance(ctx, address, cadenceHeight)
balance, err := b.evm.GetBalance(ctx, address, evmHeight)
if err != nil {
return handleError[*hexutil.Big](b.logger, err)
}
Expand Down Expand Up @@ -407,7 +407,7 @@ func (b *BlockChainAPI) Call(
overrides *StateOverride,
blockOverrides *BlockOverrides,
) (hexutil.Bytes, error) {
cadenceHeight, err := b.getCadenceHeight(blockNumberOrHash)
evmHeight, err := b.getBlockNumber(blockNumberOrHash)
if err != nil {
return handleError[hexutil.Bytes](b.logger, err)
}
Expand All @@ -424,7 +424,7 @@ func (b *BlockChainAPI) Call(
from = *args.From
}

res, err := b.evm.Call(ctx, tx, from, cadenceHeight)
res, err := b.evm.Call(ctx, tx, from, evmHeight)
if err != nil {
// we debug output this error because the execution error is related to user input
b.logger.Debug().Err(err).Msg("failed to execute call")
Expand Down Expand Up @@ -492,12 +492,12 @@ func (b *BlockChainAPI) GetTransactionCount(
address common.Address,
blockNumberOrHash *rpc.BlockNumberOrHash,
) (*hexutil.Uint64, error) {
cadenceHeight, err := b.getCadenceHeight(blockNumberOrHash)
evmHeight, err := b.getBlockNumber(blockNumberOrHash)
if err != nil {
return handleError[*hexutil.Uint64](b.logger, err)
}

networkNonce, err := b.evm.GetNonce(ctx, address, cadenceHeight)
networkNonce, err := b.evm.GetNonce(ctx, address, evmHeight)
if err != nil {
b.logger.Error().Err(err).Msg("get nonce on network failed")
return handleError[*hexutil.Uint64](b.logger, err)
Expand Down Expand Up @@ -560,18 +560,18 @@ func (b *BlockChainAPI) GetCode(
address common.Address,
blockNumberOrHash *rpc.BlockNumberOrHash,
) (hexutil.Bytes, error) {
cadenceHeight, err := b.getCadenceHeight(blockNumberOrHash)
evmHeight, err := b.getBlockNumber(blockNumberOrHash)
if err != nil {
return handleError[hexutil.Bytes](b.logger, err)
}

code, err := b.evm.GetCode(ctx, address, cadenceHeight)
code, err := b.evm.GetCode(ctx, address, evmHeight)
if err != nil {
b.logger.Error().Err(err).Msg("failed to retrieve account code")
return handleError[hexutil.Bytes](b.logger, err)
}

return hexutil.Bytes(code), nil
return code, nil
}

// handleError takes in an error and in case the error is of type ErrNotFound
Expand Down Expand Up @@ -675,36 +675,18 @@ func (b *BlockChainAPI) prepareBlockResponse(
return blockResponse, nil
}

func (b *BlockChainAPI) getCadenceHeight(
blockNumberOrHash *rpc.BlockNumberOrHash,
) (uint64, error) {
height := requester.LatestBlockHeight
func (b *BlockChainAPI) getBlockNumber(blockNumberOrHash *rpc.BlockNumberOrHash) (int64, error) {
if number, ok := blockNumberOrHash.Number(); ok {
if number < 0 {
// negative values are special values and we only support latest height
return height, nil
}

height, err := b.blocks.GetCadenceHeight(uint64(number.Int64()))
if err != nil {
b.logger.Error().Err(err).Msg("failed to get cadence height")
return 0, err
}
return number.Int64(), nil
}

return height, nil
} else if hash, ok := blockNumberOrHash.Hash(); ok {
if hash, ok := blockNumberOrHash.Hash(); ok {
evmHeight, err := b.blocks.GetHeightByID(hash)
if err != nil {
b.logger.Error().Err(err).Msg("failed to get block by hash")
return 0, err
}
height, err = b.blocks.GetCadenceHeight(evmHeight)
if err != nil {
b.logger.Error().Err(err).Msg("failed to get cadence height")
return 0, err
}

return height, nil
return int64(evmHeight), nil
}

return 0, fmt.Errorf("invalid arguments; neither block nor hash specified")
Expand Down
1 change: 1 addition & 0 deletions bootstrap/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ func startServer(
cfg,
signer,
logger,
blocks,
)
if err != nil {
return fmt.Errorf("failed to create EVM requester: %w", err)
Expand Down
Loading

0 comments on commit 7147b50

Please sign in to comment.