"Everything on the blockchain is public": Can this be further explained?

I’m pretty new to Flow and also blochains in general so I am trying to understand everything on a conceptual level.

I like Flow/Cadence and how it separates “resources” from the contract. I am following the “Access Control” lesson from Emerald Academy (see link below) and read the following from there:

After looking at our access modifiers, we must make an extremely important distinction: Even though some access modifiers like priv make fields unreadable in your Cadence code, this does not mean people cannot read this info by looking at the blockchain. Everything on the blockchain is public, regardless of its read scope. Access modifiers simply let you determine what is readable/writeable in the context of your Cadence code. Never store private information on the blockchain!

Can anyone enlighten me on this, how everything is “public” on the blockchain? I understand I miss some blockchain concepts here so that’s why I’m asking.

In cadence I can create a resource by passing in som data using e.g. FCL from a dApp and store this resource somewhere on the accounts “/storage” path, only accessible to the account (need to use capabilities to access it, right?). How is the data in the this resource public on the blockchain? Is it in the transaction when the resource creation is is signed? Is it possible to read all data passed in to a transaction? Would really appreciate to have this explained in more detail for me, or show me a discussion elsewhere to inform me more on this.

Thanks in advance! :slight_smile: