So these are just some random thoughts. From the past months, we were trying to build as many demos as possible using plain and dead-simple typescript/javascript. We ended up like 7 or 8 ones, most of them are collected in this repo. By doing these, we reliazed quickly that some of them feel nature and some of them does not. The reason is that some apps are UTXO style and some are Account style. I will provide two examples:
- UTXO style: GitHub - joii2020/crowdfunding
- Account style: GitHub - RetricSu/simple-bonding-curve
the first one is my favorite. it is a crowdfunding platform and it follows a simple and fully decentralized principle: donation is just a simple cell. 1000 people can give their donations(create the cells) at the same time and manage their money(their donation cells) on their own. There is no a center entry(like a ethereum smart-contract or a registry cell) to record the global donation information with authority. To check if the donations meet the goal, you can pack all the small donations cells in a transaction and submit it to the blockchain or you can merge them into a big cell first and submit later. it doesn’t matter.
The second one is just a copy-cat. it is a bonding curve pool. mostly a defi thing copied from ethereum. we use a single registry cell to represent a defi pool. everything is recored in this cell. the money is also controled by this cell. It has a big problem compared to ethereum defi products: only one user can interact with the pool at one block time.
The biggest difference between these two demos is the share-state / hot-cell problem. That defines if your apps are utxo style or account style. And finally it leads to my curious wondering:
- Since CKB lacks a share-state layer, is it ok that we only persuit the UTXO style applications? is that enough?
- How can we find more interesting use cases suitable for UTXO style? Channel network is obviously the biggest one and Fiber is chasing this but what else? especially at application level? I find crowdfunding a lovely dessert case since donating first or later doesn’t really matter so share state is not needed here.
P.S. I know merkle root solves some of the share state problem but I hate it. I feel like it is a trick that’s not pure and traps us into a place where it doesn’t have neither UTXO advantage nor Account advantage.