Open source project idea

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.

  1. 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.

  2. 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.

  3. 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).

  4. 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 :stuck_out_tongue:) and thank you for reading this post. Got something to contribute? Let me know! Together we will find a way to make this work!

2 Likes

Sounds like you are proposing multiple projects.

  1. SDK for 3rd party negotiating of transactions that integrates with wallet API
  2. Centralized open source order book for an auction house or trading hub (:thinking: cBay?)
  3. Layer 2 protocol for the cBay project idea to scale and become decentralized?
  4. Smart contract? Most of the existing marketplaces and NFT projects are still using CLI directly or via blockfrost so not sure which projects you are referring to?

The most interesting NFT project I have seen on Cardano so far is Stellar Hood where he base64 encoded a webpage into meta data. Apart from the ingenuity of the idea he also used data that actually has long-term merit worth preserving on a blockchain.

Hi @DinoDude,

I think that your assessment is correct. But note that both idea 2 and 3 are build upon and use the SDK. The formulation of the idea is just proposted in such a way to avoid complexity.

2/3: What do you mean with cBay? I never heard of this project?

4: Some nft projects created their own market place exlusivly for the trade of their NFT project (like spacebuds or pxlz). The made a smart contract that facilatates trade and enforces fee’s/royalties. I think there should be another option on the market that does asks fee’s.

Looking forward to your reaction.

I was thinking eBay for Cardano … I am bad at naming things :wink:

Thanks for clearing this up. Ebay does ring a bell :grin:

The project is something like that indeed. But note that the concept of a market place for assets is not new, the proposed implementation on how bids and trades are made is new. With this method users fees are cut down and the blockchain is relieved until settlement is made. The method is like a hydra state, only settlement induces a state transition on the SL of cardano. The idea originated from the idea written in the hydra papers (state is updated off chain and consensus is derived in a fork desired by the application).

But it’s a big project, I alone cannot complete it. So I call on others to help. This project needs a Java developer for the web based stuff, a senior devops developer that knows how to build scalable applications, a network expert for the p2p network, a marketing team to brand the project, a communication team and much more. Not all those people are needed in the beginning, but for a full secure and secure implementation they do need to be in place.

I am willing to set this up and guide this, but gathering a team before acquiring funds is mandatory. If another team is willing to take up this challenge that’s okay too. The goal is clear, the journey not yet.

Java Spring is definitely an option for back-end but it’s not necessarily required. You could be equally successful using C# .NET Core, Python Django, or something more bleeding edge like golang if you expect to need more concurrency and performance. It is even possible to have Haskell bindings in C/C++ but I suspect the younger generations are more into RUST, Go, and JavaScript/TypeScript mostly. While technically you can also use NodeJS for web API I always recommend against this whenever I get the chance. In fact, I prefer web assembly even for front-end despite knowing frameworks like React, Angular, etc.