From e2470b9d98138eafa9b35383051fa8e34d030786 Mon Sep 17 00:00:00 2001 From: jagdeep sidhu Date: Mon, 7 Oct 2024 11:21:09 -0700 Subject: [PATCH] Create nevm_address_mapping.go --- core/rawdb/nevm_address_mapping.go | 47 ++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 core/rawdb/nevm_address_mapping.go diff --git a/core/rawdb/nevm_address_mapping.go b/core/rawdb/nevm_address_mapping.go new file mode 100644 index 0000000000..ca44788c1c --- /dev/null +++ b/core/rawdb/nevm_address_mapping.go @@ -0,0 +1,47 @@ +package rawdb + +import ( + "github.com/ethereum/go-ethereum/common" + "encoding/binary" +) + +type NEVMAddressMapping struct { + AddressMappings map[common.Address]uint32 // Map from address to collateral height +} + +// NewNEVMAddressMapping creates a new NEVMAddressMapping instance +func NewNEVMAddressMapping() *NEVMAddressMapping { + return &NEVMAddressMapping{ + AddressMappings: make(map[common.Address]uint32), + } +} + +// AddNEVMAddress adds a new NEVM address to the mapping +func (m *NEVMAddressMapping) AddNEVMAddress(address common.Address, collateralHeight uint32) { + m.AddressMappings[address] = collateralHeight +} + +// UpdateNEVMAddress updates an existing NEVM address with a new address +func (m *NEVMAddressMapping) UpdateNEVMAddress(oldAddress common.Address, newAddress common.Address) { + if height, exists := m.AddressMappings[oldAddress]; exists { + m.AddressMappings[newAddress] = height + delete(m.AddressMappings, oldAddress) + } +} + +// RemoveNEVMAddress removes an NEVM address from the mapping +func (m *NEVMAddressMapping) RemoveNEVMAddress(address common.Address) { + delete(m.AddressMappings, address) +} + +// GetNEVMAddress returns the collateral height for a given NEVM address +func (m *NEVMAddressMapping) GetNEVMAddress(address common.Address) []byte { + collateralHeight, exists := m.AddressMappings[address] + if exists { + buf := make([]byte, 4) + binary.BigEndian.PutUint32(buf, collateralHeight) + return buf + } else { + return []byte{} + } +}