What happens after updating expired participant key?

Hi everyone, I’m currently studying how the chain works and one question bothers me. After generating a block and finishing the voting, what happens if a participant key expired? In my opinion, I think the chain will update this info but I don’t know the effect of this update. I suppose the block header might change, but what happens to field 'previous_block_hash` in the next block, would it change? Since the blockhash is generated by the block header, and which gets affected by the participant key update.

I’m also not sure about transactions in the finished block. I assume they will not get affected if the algorand chain works like cosmos chain. But what happens to transaction _root and other fields, which might lated be used as verfication?

I understand my question is kinda blurry but any suggestions and explanations is welcome, thank you.

Blocks never changed once added to the blockchain.
When a participation key is expired, it just cannot vote for the following rounds.

Side note: It is very important to mark your account offline in that case by an explicit de-registration (or by sending any Algo transaction to/from the account).

Thank you for the reply! I’m just curious about the field ParticipationUpdates. go-algorand/block.go at 1c7cb7395f9a6abb191c5705f2ff09a638421587 · algorand/go-algorand · GitHub

The field ParticipationUpdates of block n, it contains the Expired Participation Accounts after block n generation, or the expired accounts after block n-1 generation? Also, the block n shouldn’t know which account would expire before its generation, so will block n+1 carry those information to fulfill related fields?

This field is optional and may or may not filled in by the participation node.
The specs (specs/ledger.md at master · algorandfoundation/specs · GitHub) do not specify the rule for filling it in beyond the fact that:
to be a valid block, the participation keys of the accounts in this field must have already expired.

If an account is in this field, it will automatically be marked offline after this block.
(So it would no longer have an expired participation key)

For details see the specs above.

A valid implementation of a node may just never fill in this field.
Currently, the node is configured so that it checks expiration of participation keys of all accounts that have an associated Algo-transaction in the block (with some limits for performances).
We could imagine other implementations actually searching for all the expired accounts and putting them in this field.

Thank you so much for your patience and the detailed reply, Fabrice!
[specs/ledger.md at master · algorandfoundation/specs · GitHub]
I still have one more question. From here, it states that The previous hash is a cryptographic hash of the previous block header in the sequence of blocks. So the hash here contains the field ParticipationUpdates, even though it’s optional, right?

Yes.
(Note that when a field is empty, it is actually omitted from the msgpack result - to make the msgpack canonical; but this is just a technical detail.)