Адресов может быть любое количество. Рекомендуют, в целях безопасности, использовать для каждого платежа разные адреса.
Синхронизироваться (это тоже не правильное слово) можно только передав с устройства на устройство закрытый ключ адреса.
На самом деле, работает все, в упрощенном варианте, так:
У тебя есть адрес и только адрес кошелька. Для приема денег используется открытая часть адреса - то, что ты передаешь другим людям. Её можно показывать кому угодно в любых количествах, денег с твоего кошелька никто не снимет. Выглядит как-то так:
TDaWbmVV1q6SuxFqjtUDTswmCjJhdR99Zr. А вот чтобы отправить деньги кому-либо с кошелька твоего адреса нужен закрытый ключ. Этот уже храниться в программе в зашифрованном виде. И доступ к его значению имеет только держатель кошелька. Закрытый ключ никому показывать нельзя, т.к. это доступ к твоим криптоденьгам.
Далее после того как происходит передача денег, такая операция записывается в блокчейн. Записанные данные содержат только открытые ключи. По таким записям из блокчейна можно по любому открытому адресу проследить все операции и посчитать остаток суммы, что, собственно, и делает программа-кошелек. Можно просто переписать файл wallet.dat. В нем информация о всех ключах.
Таким образом, чтобы ты мог с разных устройств платить с одного адреса, то на обоих должен быть закрытый ключ для нужного тебе адреса. Его нужно в одном устройстве экспортировать, в другом импортировать. А чтобы принимать на адрес нужно показать открытый ключ.
Однако, держать одни и те же адреса на разных устройствах немного привычка, которая осталась у нас от работы с обычными деньгами
Вкратце, как-то так.