Bucket contract is an auxiliary contract that is responsible for storing TEZ tokens from TOK/TEZ liquidity pools (pairs). This contract is deployed for every TOK/TEZ pair and can't be changed. In time of exchange launch or liquidity investment TEZ tokens from DexCore contract is transferred to this contract. In time of liquidity divestment TEZ tokens returns to DexCore contract.
Bucket contract supports voting for bakers. In time of voting all TEZ tokens will be delegated to the best baker with a majority of votes. Also this baker can be changed during another vote operation.
The selected baker starts giving out baker's rewards that each user can claim (withdraw) at any time according to the number of votes that were given to the baker.