# base: Primary filtering functionality ### *class* Sponge.base.Filter(cache, onodeID, todo, cryptographyInfo) Packet filtering orchestration [🔗 Source](https://git.utopic.work/PierMesh/piermesh/src/branch/main/Sponge/base.py) #### cache Reference to our Daisy Cache instance * **Type:** [Daisy.Cache.Cache](/PierMesh/piermesh/src/branch/main/docs/Daisy/Cache.md#Daisy.Cache.Cache) #### onodeID PierMesh node ID #### todo Reference to list of actions to do in the Node #### cryptographyInfo Cryptography instance for encrypting message * **Type:** [Cryptography.WhaleSong.Transport](/PierMesh/piermesh/src/branch/main/docs/Cryptography/WhaleSong.md#Cryptography.WhaleSong.Transport) #### messages Temporary storage for unfinished messages * **Type:** dict #### submessages Temporary storage for unfinished submessages * **Type:** dict #### completed List of finished message ids so we don’t reprocess messages * **Type:** list #### mCheck(payload: bytes) Check if payload bytes are msgpack encoded, otherwise skip #### *async* protoMap(protocolID: int, packetsID, packetCount, sourceNode, submessagesIDs=[], pAction=None) Get protocol from protocol ID using the mlookup table #### selfCheck(packet) Check if this is a self packet, if so skip #### *async* sieve(packet) Base filtering logic, takes a single MeshTastic packet