From the beginning we designed Denota Protocol to be as web3 aligned as possible. Our goals were to maximize onchain-ness, flexibility, optionality, interoperability, composability, while minimizing complexity and governance. Using NFTs to represent escrows is fairly new, but never have they been generalized and combined with hooks like this before.
Existing Escrows Suck
Bad UX: wallets don’t show escrowed funds with their other assets which is both confusing to users and keeps them in the dark about it's status.
Illiquidity: companies have no access to their money when they need it. Businesses can’t run on escrowed money.
Feature lock-in: they are often too opinionated to be useful to for most use-cases. Often you can't choose other arbitrators, different settlement periods, dispute mechanisms (appeals, game theory, etc), data attachment, privacy settings, KYC/AML, oracles, etc and etc. Even if both parties agree to a set of rules it then requires custom dev work that makes one-off contracts not worth it.
Interoperable: Escrows show up in wallets and marketplaces since they are represented as NFTs
Liquid: Nota NFTs represent underlying collateral so are transferrable and purchasable
Extensible: Hooks are used for custom payment terms which are easier to understand and build
Compatible: Any standard ERC20 tokens can be used for escrow
Transparent: fully onchain data and verified smart contracts
Simple: The singleton + hook architecture allows quicker understanding and iteration
Permissionless: Anyone can deploy a hooks given (for now) that it's bytecode has been whitelisted
Incentivized: Hooks can generate revenue if the hook's deployer chooses to set them
Composable: Other existing or new protocols/dApps can use these escrows however they wish
Unstoppable: Immutable, non-upgradable, and with limited governance
Adoption: especially in the beginning, accepting Notas as a form of payment will not be common place but we believe will grow and make requesting them standard in the future.
Gas: since minting a Nota requires sending payment tokens, minting an NFT, and calling the Nota's hook, the gas used is non-trivial. It's roughly the cost of adding liquidity to a Uniswap pool (350k gas) which comes out to roughly ~$50 on mainnet. However since price sensitive users are beginning to migrate to layer 2 solutions- costs there are at or below a dollar.
Aren't NFTs just jpegs? Why would someone want to get paid with one?
NFT stands for Non-Fungible Token which is just a fancy way of saying that each token is unique. The reason NFTs are associated with jpegs is because their value comes from the image part of the token. Since some of these have become quite famous and valuable, the fact that they can and do store other data is forgotten. Examples of NFTs that are valuable not because of their picture is a Uniswap LP position, a Polygon Decentralized Identifer, a Sablier money stream, and more.
These NFTs are valuable since their value derives from underlying collateral, identity, and payment (respectively) and therefore aren't purely speculative in the same way. Denota NFTs represent escrowed tokens (like USDT) so getting paid with a Nota is closer to getting paid normally with some extra benefits.
Why not be a standard or standard extension?
This is something we attempted but given the design space it's near impossible to create a single standard that is useful and applicable to most situations. This is why the hook architecture is so important since payments share many commonalities like who is entitled to funds and when they can access them. There is also a minor benefit of a single contract managing and moving funds since token approval can be reduced.
This solution is not web3, you are adding centralized parties to arbitrate
Escrows are implicit oracles and centralized parties ON TOP of the blockchain has been here since the beginning. Denota aims to give users more options when it comes to disputation and payments in general, not take them away.