Federation setup
The ideal federation setup workflow would look as follows:
- Configure federation server with two bind addresses
p2pandweband one datadir pathdatadir - Start federation server
- If
datadirisn't populated: 3.1 Start web server binding toweb3.2 Let user set an admin password 3.3 Let user enter IP addresses and TLS certificates of other guardians 3.4 Run distributed key generation protocols to generate config 3.5 Write config todatadir - If
datadiris populated (is the case after 3.) 4.1 Load config, open database/create it if not present 4.2 Start federation consensus
Would (1) just be arguments passed to fedimintd or whatever we call it? I imagine we could have defaults for the bind addresses at least, and perhaps the datadir too.
Do you imagine web will be the same server as with the server_endpoints()? Because those will need a bind address in any case ...
Would (1) just be arguments passed to
fedimintdor whatever we call it? I imagine we could have defaults for the bind addresses at least, and perhaps the datadir too.
Either that or yet another config file. But I'm slightly in favor of just making them command line arguments.
Do you imagine
webwill be the same server as with the server_endpoints()? Because those will need a bind address in any case ...
That might be tricky now that we migrated to web sockets. Could we also reply to normal HTTP requests on the same port with our current setup @Maan2003? There's also an argument to be made that guardians would not want to expose the admin interface to the public (even though protected by auth) but they have to expose the client API.
Could we also reply to normal HTTP requests on the same port with our current setup @Maan2003?
It is not possible with current setup. But migration should be easy because server stuff is in a single file.
3.4 Run distributed key generation protocols to generate config
Is there an existing protocol for this?
For HBBFT we got an implementation in the crate that I just need to understand again, for TBS I'd go with GJKR (I think there's a more recent version from 2006 that I cited in a paper but can't find it right now). For Bitcoin we just exchange pub keys :laughing:
Tasks to complete:
- [ ] Implement DKG
- [ ] Configs for DKG
- Change configs to only require addresses, TLS certs, optional ports, denominations
- Persist configs on first run
- [ ] Handling errors (identify faulty peer)
Think we can close this in favor of more up-to-date issues.