То есть, после выполненного задания начисление токенов на адрес происходит только в контракте? А когда токены попадают именно в кошелек?
А они в кошелёк, можно сказать, и не попадают. Физически они находятся в контракте. Вы просто указываете этот контракт в своём кошельке, и если в контракте содержится запись, что ваш кошелёк владеет определённым количеством этих токенов, то кошелёк их покажет. Вы можете их передать другому участнику. Для этого контракту от имени вашего кошелька посылается команда "переведи с моего счёта на другой счёт". И в контракте обновляется инфа - с вашего баланса списывается, на другой зачисляется. Если создатель контракта предусмотрел для себя функцию "списать чужие токены" - то вы не сможете ничего с этим поделать.

Впрочем, где физически токены находятся - не так важно. Считайте, что контракт - это банк, и у вас есть счёт в нём. И ключ для доступа к этому счёту - адрес вашего кошелька, который вы контроллируете своим паролем (закрытым ключом). Все трансферы производятся между счетами банка - физически на кошельки ничего не пересылается. В этом есть логика - так токены сложнее подделать. Но есть и минусы - если создатель контракта хитрожоп, то просто как в биткоине перевести монеты себе на кошелёк, чтобы никто до них не достучался - не получится. Создатель контракта имеет возможность написать этот контракт как угодно, тут только читать код на предмет таких приколов.