This is from what I have understood so far with Ouroboros in general:
The protocol chooses the validator from the pool based on the amount
of stakes they have. Where this pool is located, who controls it ? Can
participants just run nodes locally and always vote for themself
instead of going to this pool ?
In Ouroboros Proof of Stake design, they have this thing called "slot leader" in every epoch. This slot leader means "The pool that have the right to create the next block". Slot leader is chosen prior the current epoch, chosen by the proportion amount of ADA to total ADA staked in the network [1]. One Stake Pool, given enough ADA they have, could create multiple block in one epoch. You can see this on https://adapools.org/, the number of expected blocks that they will produce vs the actual block they've made.
The Stake Pool Operator do not have control of those ADA in the pool. The delegators who delegate their wallet (which have some amount of ADA in it) to a Stake Pool only provide a certificate of the delegation. This certificate consists information about 'which Stake Pool does this wallet delegate to'.
That said, participants cannot run a node and have their node selected everytime, because the network have this slot leader system.
The Epoch is split into slots and each slot is 20 seconds which means every 20 seconds Cardano protocol takes some transactions from the pool and create a block.
In Cardano, -only true in current Shelley era-, the block will be on average created every 20-40 slot, which translates to 20-40 seconds because 1 slot = 1 second [2]. You can check this on https://cardanoscan.io/, and see the slot ticker running every second.
The question is , where those transactions are stored prior to creating a block ? What is the limit of transactions stored in one block and why ?
The transaction is stored in the 'Mempool' (Memory Pool), a list of already signed transaction but haven't made it into a block yet. The next slot leader will pull transactions from this mempool and then include it into a block. This mempool is located in every machine running the stake pool. The block have a capacity of max 80KB [3]. Every transaction will be varying from 600Bytes to 16KB, so each block will have different number of transactions stored in it. You can check Cardanoscan to check how many transactions happened in one block.
I hope this can answer your question
References:
- Ouroboros: Cardano’s Proof of stake blockchain protocol. – https://youtu.be/D4HegNgnuNo
- Design Specification for Delegation and Incentives in Cardano – https://hydra.iohk.io/build/3744897/download/1/delegation_design_spec.pdf
- [Article] Cardano Developers Propose Block Size Increase – https://www.coindesk.com/tech/2022/02/02/cardano-developers-proposes-block-size-increase/