-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generate mnemonic internally in entropy-tss
#1128
Conversation
…- generate it internally
Im pretty sure failing CI is unrelated to this PR - its the good ol' reshare test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also tagging @vitropy cuz will have an effect on devops flow
@JesseAbram, please tag teams, not individuals: @entropyxyz/system-reliability-engineers, not me. Thanks! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I understand correctly, this will not just "have an impact on devops flow," it will break the possibility of deterministically bringing up a specific TSS server with a prior knowledge of a given private key. This is not really feasible from a devops perpsective at all because we will not be able to replace a broken/failed/otherwise unusable TSS instance without replacing the TSS instance with a new key. If that key or account needs to be communicated to any other part of the system, we can not make use of this change, period.
If this understand is correct, then this will simply break automation, full stop. Please either correct my understanding or do not merge this.
yes it will but also using TDX would break this flow anyways, as well we can automate around this, by having the last step of a spin up process run a script to fund the TSS and inform the chain what the TSS is. Giving access to the kvdb or the TSS accounts outside of TDX removes the security of running TDX |
Okay, but that then sounds like it has nothing to do with devops because it's something the TSS will do for itself by itself and speak to the chain on its own behalf, in which case I have no objections. |
mmmm will probably have to run a script and need access to a secure funded account but other than that ya |
So maybe this is not useful without the other part where the TSS informs the chain of its public keys. With things as they currently are this would need to happen before the The obvious place to do this would be the attestation pallet's So my proposal would be that the TS server has a GET route which returns its account ID and x25519 public keys as JSON. Not sure if we could just put this in the existing @entropyxyz/system-reliability-engineers - i feel like it is tricky to design TS launch/attestation process accommodating for both TSS nodes which are hard-coded at genesis as well as dynamically joining ones. Ideally i would like that we remove TS server details from the testnet chainspec and have them all join after launching the chain. |
I have added a GET route for retrieving the account ID and x25519 public key. |
@vitropy i am re-requesting a review as this is currently blocked by requested changes. I know this is going to break deployment scripts, but if the plan is to have the next release run on TDX hardware, then the deployment scripts are anyway going to need some changes. |
This has been open for a while, we should really try and resolve it soon. At the moment, having deterministic accounts makes the following easier:
For (1), I'm thinking that we can work around this by exploring free transactions again. There's only three extrinsics I found that are called by the TSS ( For (2), as Peg suggested we can move away from doing this in the chainspec and instead The flow would be:
Before commenting on (3) I'd need to know a bit more about how the infrastructure is cc @entropyxyz/core-developers @entropyxyz/system-reliability-engineers |
@vitropy i can't merge this until you approve 🙏 |
Related to this PR: #1203 |
Currently, the chain spec file is generated entirely locally first, before literally anything happens on any remote machine. This means the TSS server's secrets are stored in our secrets management system. Next, the TSS servers are coming online independently of any other piece of the network infrastructure. It happens after its associated Substrate node on the same host machine is launched, but that isn't strictly required.
If I understand correctly, this route is simply providing the same information that the TSS server spits out in its
I confess I do not actually understand what this means, mechanically speaking. What command do I run for this, or what HTTP endpoint do I need to request to make this happen? |
When
In production, the network is going to start small and grow. When a new validator joins, they need to submit an extrinsic (a transaction to the chain), which contains the details (account ID, http endpoint, etc) of their TSS server. |
* master: Add TDX test network chainspec (#1204) Test CLI command to retrieve quote and change endpoint / TSS account in one command (#1198) Bump the patch-dependencies group with 2 updates (#1212) Bump thiserror from 2.0.4 to 2.0.6 in the patch-dependencies group (#1206) Downgrade parity-scale-codec as version we currently use has been yanked (#1205) Bump clap from 4.5.22 to 4.5.23 in the patch-dependencies group (#1202)
We discussed the DevOps implications and can work around them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Danke
Addresses #1015 by not allowing mnemonics to be passed in (except in development / testing) via the command line or an environment variable. Instead they are always randomly generated internally.
However i think this does not completely resolve the issue - see #1127