Full nodes are responsible for verifying that the transactions and blocks they receive are valid, along with relaying those which correctly abide by the Bitcoin rules to their network connections, or peers. Specifically, full nodes listen for blocks proposed by miners, verify whether or not these blocks have a valid Proof-of-Work and correct transactions, and relay those blocks that meet the protocol requirements.
In this way, nodes are responsible for enforcing the protocol rules and to ensure only valid blocks and transactions are shared throughout the network. In contrast to miners, running a full node on the Bitcoin network does not require advanced hardware and software. It requires only basic machinery and an internet connection. Limiting the costs in this way has been an intentional objective of the Bitcoin community, encouraging users to run full nodes independently and foster a distributed network.