sequenceDiagram
		actor u as User
		participant c as Contract
		actor r as Relay
		
		u->>c : agigit pull(modelHash,relayPubkeyList) [$DOWN≈0,$COST,$TIP]
		c->>r : agigit pull(modelHash)
		loop deposit payment to attract relay
			u->>c : depositPayment()[$∆DOWN≈0,$∆COST,$∆TIP]
		end
		r->>c : takeOrder(x=prime1*prime2)
		c->>r : takeOrder()[$DOWN]
		c->>u : takenOrder(true)
		u->>r : handshake
		r->>u : fileTransfer(  e=authorSignaturePreservingEncryption(model,prime1+prime2)  )
		activate r
		activate u
		loop fileTransfer(e@progress%) for progress=0%..100%
				r->>u : fileTransfer(e@progress%)
				u->>c : confirmFileTransfer(e@progress%)
				c->>r : confirmFileTransfer()[∆progress%*$COST]
		end		
		u->>c : confirmReceived(true)
		deactivate r
		deactivate u
		
		alt Contract checks prime1 * prime2== x
				r->>c : completeOrder(prime1,prime2)
        c->>r : completeOrder()[$TIP]
        c->>u : completeOrder(prime1,prime2)
        u->>u : model = decrypt(e,prime1+prime2)
	  else  Contract timeout OR Contract checks prime1 * prime2 != x
			  opt not timeout
			  r->>c : completeOrder(prime1,prime2)
			  end 
        c->>u : completeOrder()[$TIP]        
    end