This repository has been archived by the owner on Nov 30, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 160
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
store logs in keeper after transition (#210)
* add some comments * begin log handler test * update TransitionCSDB to return ReturnData * use rlp for result data encode/decode * update tests * implement SetBlockLogs * implement GetBlockLogs * test log set/get * update keeper get/set logs to use hash as key * fix test * move logsKey to csdb * attempt to fix test * attempt to fix test * attempt to fix test * lint * lint * lint * save logs after handling msg * update k.Logs * cleanup * remove unused * fix issues * comment out handler test * address comments * lint * fix handler test * address comments * use amino * lint * address comments * merge
- Loading branch information
Showing
15 changed files
with
320 additions
and
151 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
package evm_test | ||
|
||
import ( | ||
"math/big" | ||
"testing" | ||
"time" | ||
|
||
"github.com/stretchr/testify/suite" | ||
|
||
sdk "github.com/cosmos/cosmos-sdk/types" | ||
|
||
"github.com/ethereum/go-ethereum/common" | ||
"github.com/ethereum/go-ethereum/crypto" | ||
|
||
"github.com/cosmos/ethermint/app" | ||
"github.com/cosmos/ethermint/x/evm" | ||
"github.com/cosmos/ethermint/x/evm/types" | ||
|
||
abci "github.com/tendermint/tendermint/abci/types" | ||
) | ||
|
||
type EvmTestSuite struct { | ||
suite.Suite | ||
|
||
ctx sdk.Context | ||
handler sdk.Handler | ||
app *app.EthermintApp | ||
} | ||
|
||
func (suite *EvmTestSuite) SetupTest() { | ||
checkTx := false | ||
|
||
suite.app = app.Setup(checkTx) | ||
suite.ctx = suite.app.BaseApp.NewContext(checkTx, abci.Header{Height: 1, ChainID: "3", Time: time.Now().UTC()}) | ||
suite.handler = evm.NewHandler(suite.app.EvmKeeper) | ||
} | ||
|
||
func TestEvmTestSuite(t *testing.T) { | ||
suite.Run(t, new(EvmTestSuite)) | ||
} | ||
|
||
func (suite *EvmTestSuite) TestHandler_Logs() { | ||
// Test contract: | ||
|
||
// pragma solidity ^0.5.1; | ||
|
||
// contract Test { | ||
// event Hello(uint256 indexed world); | ||
|
||
// constructor() public { | ||
// emit Hello(17); | ||
// } | ||
// } | ||
|
||
// { | ||
// "linkReferences": {}, | ||
// "object": "6080604052348015600f57600080fd5b5060117f775a94827b8fd9b519d36cd827093c664f93347070a554f65e4a6f56cd73889860405160405180910390a2603580604b6000396000f3fe6080604052600080fdfea165627a7a723058206cab665f0f557620554bb45adf266708d2bd349b8a4314bdff205ee8440e3c240029", | ||
// "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x11 PUSH32 0x775A94827B8FD9B519D36CD827093C664F93347070A554F65E4A6F56CD738898 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x35 DUP1 PUSH1 0x4B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH13 0xAB665F0F557620554BB45ADF26 PUSH8 0x8D2BD349B8A4314 0xbd SELFDESTRUCT KECCAK256 0x5e 0xe8 DIFFICULTY 0xe EXTCODECOPY 0x24 STOP 0x29 ", | ||
// "sourceMap": "25:119:0:-;;;90:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;90:52:0;132:2;126:9;;;;;;;;;;25:119;;;;;;" | ||
// } | ||
|
||
gasLimit := uint64(100000) | ||
gasPrice := big.NewInt(1000000) | ||
|
||
priv, err := crypto.GenerateKey() | ||
suite.Require().NoError(err, "failed to create key") | ||
|
||
bytecode := common.FromHex("0x6080604052348015600f57600080fd5b5060117f775a94827b8fd9b519d36cd827093c664f93347070a554f65e4a6f56cd73889860405160405180910390a2603580604b6000396000f3fe6080604052600080fdfea165627a7a723058206cab665f0f557620554bb45adf266708d2bd349b8a4314bdff205ee8440e3c240029") | ||
tx := types.NewMsgEthereumTx(1, nil, big.NewInt(0), gasLimit, gasPrice, bytecode) | ||
tx.Sign(big.NewInt(3), priv) | ||
|
||
result, err := evm.HandleEthTxMsg(suite.ctx, suite.app.EvmKeeper, *tx) | ||
suite.Require().NoError(err, "failed to handle eth tx msg") | ||
|
||
resultData, err := types.DecodeResultData(result.Data) | ||
suite.Require().NoError(err, "failed to decode result data") | ||
|
||
suite.Require().Equal(len(resultData.Logs), 1) | ||
suite.Require().Equal(len(resultData.Logs[0].Topics), 2) | ||
|
||
hash := []byte{1} | ||
err = suite.app.EvmKeeper.SetTransactionLogs(suite.ctx, resultData.Logs, hash) | ||
suite.Require().NoError(err, "failed to set logs") | ||
|
||
logs, err := suite.app.EvmKeeper.GetTransactionLogs(suite.ctx, hash) | ||
suite.Require().NoError(err, "failed to get logs") | ||
|
||
suite.Require().Equal(logs, resultData.Logs) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.