forked from cerc-io/laconicd-deprecated
47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
|
package middleware_test
|
||
|
|
||
|
import (
|
||
|
"math/big"
|
||
|
|
||
|
"github.com/tharsis/ethermint/tests"
|
||
|
"github.com/tharsis/ethermint/x/evm/statedb"
|
||
|
evmtypes "github.com/tharsis/ethermint/x/evm/types"
|
||
|
)
|
||
|
|
||
|
func (suite MiddlewareTestSuite) TestSignatures() {
|
||
|
suite.enableFeemarket = false
|
||
|
suite.SetupTest() // reset
|
||
|
|
||
|
addr, privKey := tests.NewAddrKey()
|
||
|
to := tests.GenerateAddress()
|
||
|
|
||
|
acc := statedb.NewEmptyAccount()
|
||
|
acc.Nonce = 1
|
||
|
acc.Balance = big.NewInt(10000000000)
|
||
|
|
||
|
suite.app.EvmKeeper.SetAccount(suite.ctx, addr, *acc)
|
||
|
msgEthereumTx := evmtypes.NewTx(suite.app.EvmKeeper.ChainID(), 1, &to, big.NewInt(10), 100000, big.NewInt(1), nil, nil, nil, nil)
|
||
|
msgEthereumTx.From = addr.Hex()
|
||
|
|
||
|
// CreateTestTx will sign the msgEthereumTx but not sign the cosmos tx since we have signCosmosTx as false
|
||
|
tx := suite.CreateTestTx(msgEthereumTx, privKey, 1, false)
|
||
|
sigs, err := tx.GetSignaturesV2()
|
||
|
suite.Require().NoError(err)
|
||
|
|
||
|
// signatures of cosmos tx should be empty
|
||
|
suite.Require().Equal(len(sigs), 0)
|
||
|
|
||
|
txData, err := evmtypes.UnpackTxData(msgEthereumTx.Data)
|
||
|
suite.Require().NoError(err)
|
||
|
|
||
|
msgV, msgR, msgS := txData.GetRawSignatureValues()
|
||
|
|
||
|
ethTx := msgEthereumTx.AsTransaction()
|
||
|
ethV, ethR, ethS := ethTx.RawSignatureValues()
|
||
|
|
||
|
// The signatures of MsgehtereumTx should be the same with the corresponding eth tx
|
||
|
suite.Require().Equal(msgV, ethV)
|
||
|
suite.Require().Equal(msgR, ethR)
|
||
|
suite.Require().Equal(msgS, ethS)
|
||
|
}
|