вначале создается закрытый ключ, а из него уже адрес. алгоритм простой и есть куча реализаций на всех языках.
вот здесь есть забавный генератор
https://brainwalletx.github.io
закрытого ключ хранится у тебя, а не на сервере.
ты можешь "сгенерировать" адрес и без ключа, и принять на него битки, но потом с ними ты ничего не сделаешь