Hi there all great community members,
I have a proposition for an opensource project (for and by the community) which I want to discuss with you all and initiate. The idea is not fully formed yet and a formal proposal for a catalyst funding is thus not applicable as of yet. What I ask of you today is your expertise in any way you seem fit to contribute to this idea. As this idea evolves I am prepared to take the burden of writing a catalyst fund proposal, but I alone can not make this project a success, I need your help. Be it in programming, design or any other way you want to contribute.
My idea came forth from the need of market making on blockchains. A brief history of trade on different networks. As Charles mentioned in some of his AMA’s, in the beginning of Bitcoin trade was done via spreadsheets. Then Ethereum came with decentralized markets via smart contract. Now it is worth mentioning that there is a fundamental difference between how these trades came about. On Ethereum one can write a smart contract that acts as a decentralized middle man where assets resides during trade. Now on bitcoin, since is an UTxO model and supports multiple witness, one can just build a transaction that consumes the desired UTxO’s and redistributes the assets in a way two or more parties agreed upon (all sign for settlement to happen). Now note that the latter is more powerfull in the sense that computation is done off chain and settlement is still non custodial. The reason Ethereum can only transact in such a way as described above is due to the accounting model and their smart contract structure [1]. On Ethereum it is impossible to create a non custodial trade without the need of a smart contract.
I have the idea that a lot of emerging market places on Cardano are forgetting the above power of the UTxO model. Almost all trade that I see of NFT’s is done in an Ethereum style manner. Some projects even use discord channels where a middel man is assigned (a custodial). I think that the current implementation of CNFT does the same thing (they are moving towards an smart contract implementation). Nowt ake the awesome NFT project of SpaceBudz for an example. The legend Alessandro made a smart contract that facilitated trade and enforces royalties when trades happen. Now since the only way to implement these royalties and or trading fee’s is with such smart contracts. But a true open versatile non custodial market place does not need such contract. It is time to go back
to the roots and apply new insights to the old ways, lets combine these splintered market places in one.
What I propose are 4 things.
-
a light weight transaction builder/interpreter sdk that can be utilized on the frontend for websites and the backend for more complex dApps. This transaction builder can search UTxO’s that contain certain asset and assign outputs as the user(s) desires. This querying of the chain can be done either via a local node or an external API like Blockfrost (whatever suits your needs). The output of such a build is an unsigned transaction that proposes a swap of value. Now it is up to the user of this SDK to bring bid and ask together to sign for such a transaction. This can be done via a browser based wallet or any other canonical way.
-
a proof of concept centralized non custodial market place (a website) where bid and ask post proposals of trade in the form of half signed transactions. What I mean by this is the following. Say that I want to bid on an NFT that I like. I construct a transaction that consumes the UTxO of the NFT and an UTxO of my own. The outputs that I create are my bid. Then I automatically sign this transaction (I commit to my bid). In the case of 2 parties only one signature is left for the transaction to be valid. Next I post this transaction body to a exchange for the other party to view the proposal and sign/send it to the chain. Note that this exhange is indeed central and can be censored. Note that some dApp developers might want to chose to keep things centralized for speed and other reasons.
-
What I also propose is a layer 2 p2p network that creates a decentralized censorshipless way of posting and looking up bids given a wallet (this is the holy grail in my opinion). This can be incentivized by aggregating transaction fee’s to network participants that post bids for others (see them as brokers on an exchange). I am not certain of how these costs would compare to an onchain solution but I think that it will be cheaper and results in not bloating the layer 1 chain. What I like about this model is that fee’s are only paid when settlement is made. So if i make a bid and it is not accepted I pay nothing, it is still very deterministic. While with onchain marketplaces you pay the transactions costs of posting offers. Now canceling an bid is as easy as consuming any of the UTxO’s that you consume in your bid, this renders the transaction body invalid since UTxO are unique and spendable only once. Note that this induces costs (0.17 ada) but makes sure a bidder commits to its proposal. Also, with hydra on its way this leads the way of a proper exhange as described in the Maladex paper (where bid and ask reach each other via a normal market maker).
-
A smart contract like the other market places that does not enforce any fee’s or royalties. In my opinion trade should not be centralized in any way. Note that this will only work when the PAB is working on the wallet backend since interaction with the blockhain is not trivial. In some sense, the fees that you pay for these services are for the connection between chain and wallet.
To further prove my point of the UTxO non custodial trading power I want to trade with someone. The following address contains one UTxO with an symbolic amount of 3.141592 ada (addr1vyt3mp9cyhlvpm00qe0csc4gyvr26v7daxeqpwrr5lhdh3qnmahvx). Someone want to trade that? Make a proposition as described above and we can both settle by signing a transaction body that we construct. The construction of such a transaction body can easily be done via the cardano-cli. Note that interpretation of an transaction body is not a trivial task, but that is my task as I need to accept the bid. I would appriciate that any bid (probably in cbor) is combined with a human readable text format of input/outputs.
I see forward to any bids (some hosky tokens or spacebuds maybe ) and thank you for reading this post. Got something to contribute? Let me know! Together we will find a way to make this work!