Uninstall Virtual App Protocol
This is the Uninstall Virtual App Protocol.
Roles
Three users run the protocol. They are designated as initiator
, responder
, and intermediary
. It is required that initiator
and responder
have run the install-virtual-app
protocol previously with the same intermediary
; however it is allowed to swap the roles of initiator
and responder
.
The UninstallVirtualAppParams
type
Field |
type |
description |
initiatorXpub |
xpub |
xpub of initiator |
responderXpub |
xpub |
xpub of responder |
intermediaryXpub |
xpub |
xpub of intermediary |
targetAppIdentityHash |
bytes32 |
app identity hash of app instance to uninstall |
initiatorBalanceIncrement |
uint256 |
initiator 's resulting share of the installed application |
responderBalanceIncrement |
uint256 |
responder 's resulting share of the installed application |
At the end of this protocol the commitments {left,right}ETHVirtualAppAgreement
defined in the install-virtual-app
protocol are cancelled, and the free balances are updated.
Commitments
lockCommitment
The protocol produces a commitment to call setState
with the final state of the TimeLockedPassThrough
AppInstance in the defaultOutcome
parameter and the switchesOutcomeAt
value at 0
. This specific commitment is what guarantees that the “final outcome” of the virtual app is what is set inside of the defaultOutcome
field; thereby “locking” it at this outcome.
uninstallLeft
A commitment to cancel the leftETHVirtualAppAgreement
commitment produced by install-virtual-app
and simultaneously update the free balance in the initiator
-intermediary
free balance.
uninstallRight
A commitment to cancel the rightETHVirtualAppAgreement
commitment produced by install-virtual-app
and simultaneously update the free balance in the intermediary
-responder
free balance.
Signatures
Signature |
Commitment |
Signed By |
s1 |
lockCommitment |
initiator |
s2 |
lockCommitment |
intermediary |
s3 |
lockCommitment |
responder |
s4 |
uninstallLeft |
initiator |
s5 |
uninstallLeft |
intermediary |
s6 |
uninstallright |
intermediary |
s7 |
uninstallright |
responder |
Messages
sequenceDiagram
participant Initiating
participant Intermediary
participant Responding
Initiating->>Intermediary: M1
Intermediary->>Responding: M2
Responding->>Intermediary: M3
Intermediary->>Initiating: M4
Initiating->>Intermediary: M5
Intermediary->>Responding: M6
Responding->>Intermediary: M7
Intermediary->>Initiating: M8
Message |
Signatures |
m1 |
s1 |
m2 |
s1, s2 |
m3 |
s3 |
m4 |
s3, s2 |
m5 |
s4 |
m6 |
s5 |
m7 |
s6 |
m8 |
s7 |
M1
Field |
Type |
Description |
protocol |
string |
"uninstall-virtual-app" |
params |
UninstallVirtualAppParams |
|
toXpub |
address |
intermediaryAddress |
seq |
number |
1 |
customData.signature |
signature |
The S1 signature |
M2
Field |
Type |
Description |
protocol |
string |
"uninstall-virtual-app" |
params |
UninstallVirtualAppParams |
|
toXpub |
address |
responderAddress |
seq |
number |
2 |
customData.signature |
signature |
The S1 signature |
customData.signature2 |
signature |
The S2 signature |
M3
Field |
Type |
Description |
protocol |
string |
"uninstall-virtual-app" |
params |
UninstallVirtualAppParams |
|
toXpub |
address |
intermediaryAddress |
seq |
number |
-1 |
customData.signature |
signature |
The S3 signature |
M4
Field |
Type |
Description |
protocol |
string |
"uninstall-virtual-app" |
params |
UninstallVirtualAppParams |
|
toXpub |
address |
initiatorAddress |
seq |
number |
-1 |
customData.signature |
signature |
The S3 signature |
customData.signature2 |
signature |
The S2 signature |
M5
Field |
Type |
Description |
protocol |
string |
"uninstall-virtual-app" |
params |
UninstallVirtualAppParams |
|
toXpub |
address |
intermediaryAddress |
seq |
number |
-1 |
customData.signature |
signature |
The S4 signature |
M6
Field |
Type |
Description |
protocol |
string |
"uninstall-virtual-app" |
params |
UninstallVirtualAppParams |
|
toXpub |
address |
initiatorAddress |
seq |
number |
-1 |
customData.signature |
signature |
The S5 signature |
M7
Field |
Type |
Description |
protocol |
string |
"uninstall-virtual-app" |
params |
UninstallVirtualAppParams |
|
toXpub |
address |
responderAddress |
seq |
number |
-1 |
customData.signature |
signature |
The S6 signature |
M8
Field |
Type |
Description |
protocol |
string |
"uninstall-virtual-app" |
params |
UninstallVirtualAppParams |
|
toXpub |
address |
intermediaryAddress |
seq |
number |
-1 |
customData.signature |
signature |
The S7 signature |