forked from cerc-io/laconicd-deprecated
		
	
							parent
							
								
									3b3daa4b48
								
							
						
					
					
						commit
						036ffb7a39
					
				| @ -1,16 +1,14 @@ | ||||
| package keeper | ||||
| 
 | ||||
| import ( | ||||
| 	"math/big" | ||||
| 	"time" | ||||
| 
 | ||||
| 	ethtypes "github.com/ethereum/go-ethereum/core/types" | ||||
| 
 | ||||
| 	abci "github.com/tendermint/tendermint/abci/types" | ||||
| 
 | ||||
| 	"github.com/cosmos/cosmos-sdk/telemetry" | ||||
| 	sdk "github.com/cosmos/cosmos-sdk/types" | ||||
| 
 | ||||
| 	ethtypes "github.com/ethereum/go-ethereum/core/types" | ||||
| 	"github.com/tharsis/ethermint/x/evm/types" | ||||
| ) | ||||
| 
 | ||||
| @ -33,14 +31,7 @@ func (k *Keeper) EndBlock(ctx sdk.Context, req abci.RequestEndBlock) []abci.Vali | ||||
| 	infCtx := ctx.WithGasMeter(sdk.NewInfiniteGasMeter()) | ||||
| 	k.WithContext(ctx) | ||||
| 
 | ||||
| 	// get the block bloom bytes from the transient store and set it to the persistent storage
 | ||||
| 	bloomBig, found := k.GetBlockBloomTransient() | ||||
| 	if !found { | ||||
| 		bloomBig = big.NewInt(0) | ||||
| 	} | ||||
| 
 | ||||
| 	bloom := ethtypes.BytesToBloom(bloomBig.Bytes()) | ||||
| 	k.SetBlockBloom(infCtx, req.Height, bloom) | ||||
| 	k.SetBlockBloom(infCtx, req.Height, ethtypes.BytesToBloom(k.GetBlockBloomTransient().Bytes())) | ||||
| 	k.WithContext(ctx) | ||||
| 
 | ||||
| 	return []abci.ValidatorUpdate{} | ||||
|  | ||||
| @ -131,14 +131,14 @@ func (k Keeper) SetBlockBloom(ctx sdk.Context, height int64, bloom ethtypes.Bloo | ||||
| } | ||||
| 
 | ||||
| // GetBlockBloomTransient returns bloom bytes for the current block height
 | ||||
| func (k Keeper) GetBlockBloomTransient() (*big.Int, bool) { | ||||
| func (k Keeper) GetBlockBloomTransient() *big.Int { | ||||
| 	store := k.ctx.TransientStore(k.transientKey) | ||||
| 	bz := store.Get(types.KeyPrefixTransientBloom) | ||||
| 	if len(bz) == 0 { | ||||
| 		return nil, false | ||||
| 		return big.NewInt(0) | ||||
| 	} | ||||
| 
 | ||||
| 	return new(big.Int).SetBytes(bz), true | ||||
| 	return new(big.Int).SetBytes(bz) | ||||
| } | ||||
| 
 | ||||
| // SetBlockBloomTransient sets the given bloom bytes to the transient store. This value is reset on
 | ||||
|  | ||||
| @ -144,11 +144,18 @@ func (k *Keeper) ApplyTransaction(tx *ethtypes.Transaction) (*types.MsgEthereumT | ||||
| 		return nil, stacktrace.Propagate(err, "failed to apply ethereum core message") | ||||
| 	} | ||||
| 
 | ||||
| 	// set the ethereum-formatted hash to the tx result as the tendermint hash is different
 | ||||
| 	// NOTE: see https://github.com/tendermint/tendermint/issues/6539 for reference.
 | ||||
| 	txHash := tx.Hash() | ||||
| 	// NOTE: we set up the transaction hash from tendermint as it is the format expected by the application:
 | ||||
| 	// Remove once hashing is fixed on Tendermint. See https://github.com/tendermint/tendermint/issues/6539
 | ||||
| 	txHash := common.BytesToHash(tmtypes.Tx(k.ctx.TxBytes()).Hash()) | ||||
| 	res.Hash = txHash.Hex() | ||||
| 	res.Logs = types.NewLogsFromEth(k.GetTxLogs(txHash)) | ||||
| 
 | ||||
| 	logs := k.GetTxLogs(txHash) | ||||
| 	res.Logs = types.NewLogsFromEth(logs) | ||||
| 
 | ||||
| 	// update block bloom filter
 | ||||
| 	bloom := k.GetBlockBloomTransient() | ||||
| 	bloom.Or(bloom, big.NewInt(0).SetBytes(ethtypes.LogsBloom(logs))) | ||||
| 	k.SetBlockBloomTransient(bloom) | ||||
| 
 | ||||
| 	return res, nil | ||||
| } | ||||
|  | ||||
| @ -607,7 +607,7 @@ func (k *Keeper) AddLog(log *ethtypes.Log) { | ||||
| 	log.BlockHash = common.BytesToHash(k.ctx.HeaderHash()) | ||||
| 	log.TxIndex = uint(k.GetTxIndexTransient()) | ||||
| 
 | ||||
| 	logs := k.GetTxLogs(log.TxHash) | ||||
| 	logs := k.GetTxLogs(key) | ||||
| 
 | ||||
| 	log.Index = uint(len(logs)) | ||||
| 	logs = append(logs, log) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user