Skip to content

Commit

Permalink
unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
codchen committed Jan 31, 2025
1 parent 7c81916 commit a0d5a6c
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 36 deletions.
55 changes: 19 additions & 36 deletions evmrpc/block.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ func (a *BlockAPI) getBlockByHash(ctx context.Context, blockHash common.Hash, fu
return nil, err
}
blockBloom := a.keeper.GetBlockBloom(a.ctxProvider(block.Block.Height))
return EncodeTmBlock(a.ctxProvider(block.Block.Height), block, blockRes, blockBloom, a.keeper, a.txConfig.TxDecoder(), fullTx, a.includeBankTransfers, a.includeShellReceipts, isPanicTx)
return EncodeTmBlock(a.ctxProvider(block.Block.Height), block, blockRes, blockBloom, a.keeper, a.txConfig.TxDecoder(), fullTx, a.includeBankTransfers, includeSyntheticTxs, isPanicTx)
}

func (a *BlockAPI) GetBlockByNumber(ctx context.Context, number rpc.BlockNumber, fullTx bool) (result map[string]interface{}, returnErr error) {
Expand Down Expand Up @@ -370,42 +370,25 @@ func EncodeTmBlock(
if !fullTx {
transactions = append(transactions, "0x"+hex.EncodeToString(th[:]))
} else {
OUTER:
for _, event := range txRes.Events {
if event.Type == "transfer" {
rpcTx := &ethapi.RPCTransaction{
BlockHash: &blockhash,
BlockNumber: (*hexutil.Big)(number),
Hash: th,
}
for _, attribute := range event.Attributes {
switch string(attribute.Key) {
case "sender":
senderSeiAddr, err := sdk.AccAddressFromBech32(string(attribute.Value))
if err != nil {
continue OUTER
}
rpcTx.From = k.GetEVMAddressOrDefault(ctx, senderSeiAddr)
case "recipient":
recipientSeiAddr, err := sdk.AccAddressFromBech32(string(attribute.Value))
if err != nil {
continue OUTER
}
recipientEvmAddr := k.GetEVMAddressOrDefault(ctx, recipientSeiAddr)
rpcTx.To = &recipientEvmAddr
case "amount":
amt, err := sdk.ParseCoinNormalized(string(attribute.Value))
if err != nil || amt.Denom != "usei" {
continue OUTER
}
amtInWei := amt.Amount.Mul(state.SdkUseiToSweiMultiplier)
rpcTx.Input = amtInWei.BigInt().Bytes()
}
}
transactions = append(transactions, rpcTx)
break
}
rpcTx := &ethapi.RPCTransaction{
BlockHash: &blockhash,
BlockNumber: (*hexutil.Big)(number),
Hash: th,
}
senderSeiAddr, err := sdk.AccAddressFromBech32(m.FromAddress)
if err != nil {
continue
}
rpcTx.From = k.GetEVMAddressOrDefault(ctx, senderSeiAddr)
recipientSeiAddr, err := sdk.AccAddressFromBech32(string(m.ToAddress))

Check failure on line 383 in evmrpc/block.go

View workflow job for this annotation

GitHub Actions / lint

unnecessary conversion (unconvert)
if err != nil {
continue
}
recipientEvmAddr := k.GetEVMAddressOrDefault(ctx, recipientSeiAddr)
rpcTx.To = &recipientEvmAddr
amt := m.Amount.AmountOf("usei").Mul(state.SdkUseiToSweiMultiplier)
rpcTx.Input = amt.BigInt().Bytes()
transactions = append(transactions, rpcTx)
}
}
}
Expand Down
58 changes: 58 additions & 0 deletions evmrpc/block_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -319,3 +319,61 @@ func TestEncodeWasmExecuteMsg(t *testing.T) {
S: nil,
}, txs[0].(*ethapi.RPCTransaction))
}

func TestEncodeBankTransferMsg(t *testing.T) {
k := &testkeeper.EVMTestApp.EvmKeeper
ctx := testkeeper.EVMTestApp.GetContextForDeliverTx(nil)
fromSeiAddr, fromEvmAddr := testkeeper.MockAddressPair()
k.SetAddressMapping(ctx, fromSeiAddr, fromEvmAddr)
toSeiAddr, _ := testkeeper.MockAddressPair()
b := TxConfig.NewTxBuilder()
b.SetMsgs(&banktypes.MsgSend{
FromAddress: fromSeiAddr.String(),
ToAddress: toSeiAddr.String(),
Amount: sdk.NewCoins(sdk.NewCoin("usei", sdk.OneInt())),
})
tx := b.GetTx()
bz, _ := Encoder(tx)
resBlock := coretypes.ResultBlock{
BlockID: MockBlockID,
Block: &tmtypes.Block{
Header: mockBlockHeader(MockHeight8),
Data: tmtypes.Data{
Txs: []tmtypes.Tx{bz},
},
LastCommit: &tmtypes.Commit{
Height: MockHeight8 - 1,
},
},
}
resBlockRes := coretypes.ResultBlockResults{
TxsResults: []*abci.ExecTxResult{
{
Data: bz,
},
},
ConsensusParamUpdates: &types2.ConsensusParams{
Block: &types2.BlockParams{
MaxBytes: 100000000,
MaxGas: 200000000,
},
},
}
res, err := evmrpc.EncodeTmBlock(ctx, &resBlock, &resBlockRes, ethtypes.Bloom{}, k, Decoder, true, true, false, nil)
require.Nil(t, err)
txs := res["transactions"].([]interface{})
require.Equal(t, 1, len(txs))
bh := common.HexToHash(MockBlockID.Hash.String())
to := common.Address(toSeiAddr)
require.Equal(t, &ethapi.RPCTransaction{
BlockHash: &bh,
BlockNumber: (*hexutil.Big)(big.NewInt(MockHeight8)),
From: fromEvmAddr,
To: &to,
Input: big.NewInt(1_000_000_000_000).Bytes(),
Hash: common.Hash(sha256.Sum256(bz)),
V: nil,
R: nil,
S: nil,
}, txs[0].(*ethapi.RPCTransaction))
}

0 comments on commit a0d5a6c

Please sign in to comment.