Такой вопрос: все биткоины находятся в блоках и когда человек заходит на свой кошелёк у него отображается его баланс, но как программа узнаёт его? После каждой авторизации берет все существующие блоки и перебирает их в поисках транзакции которая содержит в себе адрес данного кошелька?
Да, примерно так. Ищет соответствие количества монет приватным ключам в блоках. Блоки индексированы, проверяются при запуске.