An escrow holds funds from a buyer until a delivery condition is confirmed, then releases to the seller (or refunds the buyer on failure/timeout).
buyer: public(address)
seller: public(address)
released: public(bool)
@deploy
@payable
def __init__(seller_: address):
self.buyer = msg.sender
self.seller = seller_
@external
def release():
assert msg.sender == self.buyer, "not buyer"
assert not self.released, "already released"
self.released = True
send(self.seller, self.balance)Real-world escrows usually add a neutral arbiter role and a timeout-based refund path so funds are never permanently stuck if the buyer goes silent.