Looks like a profound work, but still some question:
I guess the initiator/receiver that will trigger the release needs at least an already initialized wallet (with sequence number). This might turn out a major problem in real environment: The service won’t work out of the box, or at least will be limited to the small batch of current cosmos users.
I created a similiar concept using cosmwasm too, that allows usual webapps to hand out Tokens to users.
The webapp doesn’t need to run a local signing or broadcasting client in the backend, its just creating the message that will trigger the escrow contract to release the funds mentioned in the tx
Here is the schematics:
WebApp
Composes the voucher message and decides the Token amount that shall
be sent to the user
The ECDSA signature is derived from this execution message body and is being attached below
The WebApp holds the ECDSA private key in his .ENV Variable only, no backend client necessary
The contract holds the ECDSA public key only
-it checks if the attached signature matches the message body
-it checks if the nounce has been used already
-it checks if the expiry date has been exceeded
if all conditions are met, the message gets executed and funds are being transferred
from the contract treasury to the user
otherwise the message is being dropped
