You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.6 KiB
45 lines
1.6 KiB
@startuml
|
|
|
|
actor "Buyer \n[frontend]" as User
|
|
participant "Buyer \n[daemon]" as UserApp
|
|
participant "Seller \n[daemon]" as SellerApp
|
|
actor "Seller \n[frontend]" as Seller
|
|
participant Oracle as Oracle
|
|
participant Bitcoin as Bitcoin
|
|
|
|
Seller -> SellerApp: publish sell order
|
|
SellerApp -> Oracle: Attestation for sell order
|
|
Oracle --> SellerApp: Attestation pubkey
|
|
User -> UserApp: Start daemon & UI
|
|
UserApp -> SellerApp: fetch current sell order
|
|
SellerApp -->UserApp: current sell order
|
|
UserApp -> User: Show sell order (1)
|
|
User -> UserApp: Take order
|
|
UserApp -> SellerApp: Take request (incl. protocol params?)
|
|
SellerApp -> Seller: Notfiy seller about take request
|
|
Seller -> SellerApp: Accept
|
|
SellerApp --> UserApp: Take response (incl. protocol params?)
|
|
group DLC setup
|
|
UserApp -> SellerApp: protocol setup step 1..n
|
|
SellerApp --> UserApp: protocol setup step 1..n
|
|
note over UserApp : CETs generated
|
|
note over SellerApp : CETs generated
|
|
SellerApp -> Bitcoin: Publish DLC
|
|
SellerApp -> SellerApp: Update CFD state: open
|
|
SellerApp -> Seller: Sell position open
|
|
note over SellerApp : Assumption: \nSeller publishes DLC \nBuyer CET upon closing position
|
|
UserApp -> Bitcoin: Witness DLC
|
|
UserApp -> UserApp: Update CFD state: open
|
|
UserApp -> User: Buy position open
|
|
end group
|
|
Seller -> SellerApp: Republish new sell-order
|
|
group DLC settlement
|
|
User -> UserApp: Close long position
|
|
UserApp -> Oracle: request attestation
|
|
Oracle --> UserApp: attested price
|
|
UserApp -> Bitcoin: CET according to price
|
|
SellerApp -> SellerApp: Update position state to closed
|
|
SellerApp -> Seller: Position was closed
|
|
end group
|
|
|
|
@enduml
|
|
|