The great point about your contact list is that it is decentralised, and it exists already (so you don't have to exchange an ID with all your friends manually).
The great point about your contact list is that it is decentralised, and it exists already (so you don't have to exchange an ID with all your friends manually).
Solution? Store your contacts list on your device. Back it up with your offline chat backups (android does external chat backups now, IOS should be enabled plus give em icloud backups to boot).
with a new signal app on a new phone, you restore your chat backups and poof your contacts list gets loaded back. your new signal instance reconnects with the other clients and poof, Signal's excuse for using phone numbers and storing your contacts list on their servers is demolished.
It seems so simple to me, but I feel like I'm failing to understand something about why this is so hard.
Then your backup idea works, but kind of sucks in terms of UX (at least in Signal's point of view), and therefore they decided to go with phone number first, and work on going towards usernames later.
Don't worry, you haven't invented anything. It's just that your idea is not at the level of UX provided by WhatsApp/Signal, and the solution is more complex than you think.