ℹ️info🤔
Below is an explanation how forging works at the current moment,
Every block has two fields - BlockSignature and GenerationSignature.
The former is filled by signing the block data with the private key of an account that generated a block and has almost nothing to do with forging process.
The latter is filled by computing SHA256(GenerationSignatureOfPreviousBlock+PublicKeyOfAccount).
The first 8 bytes of the hash give an unsigned 64-bit number in little-endian format, this number is called "hit".
Every account has a so-called EffectiveBalance which is usually (but not always) higher if the account holds more coins. EffectiveBalance is multiplied by some value that is the same for all the accounts - BaseTarget (it's adjusted every block trying to keep block generation rate at 1 minute) - and by number of seconds that have passed since the previous block. The resulting value is called "target".
If "hit" is less than "target" then peers accept a block and attach it to the blockchain.
This is the essential part of forging.