In my current understanding, (1) smart contracts are code stored in the blockchain network, and access the data in the blockchain network. (When we deploy contracts, we'll get the storage address)
(2) Lightweight nodes are those that do not download all the chaindata from network.
Correct me if I'm getting it wrong, but I believe that lightweight node can interact with smart contracts (Metamask?) It simply doesn't have to ability to fully verify the data it downloaded.
My problems are as follow: (1) Since the lightweight node doesn't have all data, how does it interact with the smart contract? Is the chaindata downloaded upon each request?
(2) While the code of smart contract may remain the same, the data will change with each update. How does the node know where to look for the updated data?
(3) Are code or data downloaded with other data that are useless for the smart contract?
I figured this is possible since the code and data are stored in blocks with other transactions, and if downloads are in the unit of "blocks" then it will include other data
(4) Any suggestions on how can I monitor these network usages?