2019-10-22 16:40:34 +00:00
|
|
|
package types
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2021-04-18 15:54:18 +00:00
|
|
|
"github.com/cosmos/ethermint/crypto/ethsecp256k1"
|
|
|
|
|
2020-07-02 15:19:48 +00:00
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
2019-10-22 16:40:34 +00:00
|
|
|
ethcmn "github.com/ethereum/go-ethereum/common"
|
|
|
|
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
2021-04-18 15:54:18 +00:00
|
|
|
ethcrypto "github.com/ethereum/go-ethereum/crypto"
|
2019-10-22 16:40:34 +00:00
|
|
|
)
|
|
|
|
|
2021-04-18 15:54:18 +00:00
|
|
|
// GenerateEthAddress generates an Ethereum address.
|
|
|
|
func GenerateEthAddress() ethcmn.Address {
|
|
|
|
priv, err := ethsecp256k1.GenerateKey()
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
return ethcrypto.PubkeyToAddress(priv.ToECDSA().PublicKey)
|
|
|
|
}
|
|
|
|
|
2019-10-22 16:40:34 +00:00
|
|
|
func TestEvmDataEncoding(t *testing.T) {
|
2021-04-17 10:00:07 +00:00
|
|
|
addr := "0x5dE8a020088a2D6d0a23c204FFbeD02790466B49"
|
2019-10-22 16:40:34 +00:00
|
|
|
bloom := ethtypes.BytesToBloom([]byte{0x1, 0x3})
|
|
|
|
ret := []byte{0x5, 0x8}
|
|
|
|
|
2021-04-17 10:00:07 +00:00
|
|
|
data := &MsgEthereumTxResponse{
|
2020-05-03 01:56:18 +00:00
|
|
|
ContractAddress: addr,
|
2021-04-17 10:00:07 +00:00
|
|
|
Bloom: bloom.Bytes(),
|
|
|
|
TxLogs: TransactionLogs{
|
|
|
|
Hash: ethcmn.BytesToHash([]byte{1, 2, 3, 4}).String(),
|
|
|
|
Logs: []*Log{{
|
|
|
|
Data: []byte{1, 2, 3, 4},
|
|
|
|
BlockNumber: 17,
|
|
|
|
}},
|
|
|
|
},
|
2020-04-01 18:49:21 +00:00
|
|
|
Ret: ret,
|
|
|
|
}
|
2019-10-22 16:40:34 +00:00
|
|
|
|
2021-04-17 10:00:07 +00:00
|
|
|
enc, err := EncodeTxResponse(data)
|
2020-04-01 18:49:21 +00:00
|
|
|
require.NoError(t, err)
|
2019-10-22 16:40:34 +00:00
|
|
|
|
2021-04-17 10:00:07 +00:00
|
|
|
res, err := DecodeTxResponse(enc)
|
2019-10-22 16:40:34 +00:00
|
|
|
require.NoError(t, err)
|
2021-04-17 10:00:07 +00:00
|
|
|
require.NotNil(t, res)
|
2020-05-03 01:56:18 +00:00
|
|
|
require.Equal(t, addr, res.ContractAddress)
|
2021-04-17 10:00:07 +00:00
|
|
|
require.Equal(t, bloom.Bytes(), res.Bloom)
|
|
|
|
require.Equal(t, data.TxLogs, res.TxLogs)
|
2020-04-01 18:49:21 +00:00
|
|
|
require.Equal(t, ret, res.Ret)
|
2019-10-22 16:40:34 +00:00
|
|
|
}
|