Skip to content
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

What to do if a multi-party computation fails? #18

Open
sbellem opened this issue Apr 5, 2021 · 0 comments
Open

What to do if a multi-party computation fails? #18

sbellem opened this issue Apr 5, 2021 · 0 comments

Comments

@sbellem
Copy link
Contributor

sbellem commented Apr 5, 2021

In the current system, each node listens to on-chain events, and for some events it launches a multi-party computation. To perform a multi-party computation, each node invokes an MP-SPDZ executable (malicious-shamir-party.x) with some arguments. This step is "blocking" in the sense that the program flow stops until malicious-shamir-party.x returns.

For instance (complete code link):

// ...

cmd = exec.Command(
	"./malicious-shamir-party.x",
	"-N", players,
	"-T", threshold,
	"-p", serverID,
	"-pn", mpcPort,
	"-P", blsPrime,
	"--hostname", leaderHostname,
	"hbswap_trade"
)
err := cmd.Run()
if err != nil {
    log.Fatalf("cmd.Run() failed with %s\n", err)
}

// ...

The call to log.Fatalf() will call os.exit(1) which will cause the program to terminate immediately:

Exit causes the current program to exit with the given status code. Conventionally, code zero indicates success, non-zero an error. The program terminates immediately; deferred functions are not run.

Could we improve this? Could the server let others know that: "Hey, had a problem with this computation ... we need to re-try ..."? Would it make sense to create an event on-chain, which could then used as a coordinating mechanism for the MPC nodes to react in a consistent/safe way with respect to this failed computation?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant