Fardels grant update

Kia ora,

This is an update on how development is going for the Fardels grant. I’ve made a lot of progress this week and implemented the deliverables that were listed under the first milestone, including:

  • updating the fardel data structure to be more generic,
  • allowing people to block other accounts,
  • optional sales approval (and pending status),
  • rating and comments logic improved,
  • ability to seal fardels,
  • exporting tx information,
  • changing the fardel id scheme, and ability to download public data in batch for indexing
  • additional admin functionality, such as banning, optional fee commission, etc.

In addition to the changes to the basic fardel that I mentioned in the grant application, I also created a way for people to create countable fardels. By default a fardel only contains one package and it can be unpacked an unlimited number of times. Countable fardels are different. They have n packages and each unpacker gets one and only one of the packages. Once all packages are unpacked then the fardel is automatically sealed. This feature was inspired by a tweet from @scrtshadow (https://twitter.com/scrtshadow/status/1385291632791142404) suggesting that fardels could be used by companies to post access codes that are only available for a limited time period.

Now I will turn my focus to the UI and interfacing it with the contract. Undoubtedly, I will continue to tweak the contract as I do UI dev, but I anticipate most of my time now will be spent on the client side. The latest version of the contract code is available at the same place as the hackathon code GitHub - darwinzer0/fardels: Fardels is a social network for sharing items of small value built on Secret Network.. I’ve pulled the UI code out to develop in a different repo.

5 Likes

Hello my friend Hello

We all understand Fardel is a working name and or the actual name atm, either way, can you give us a little history on where the name Fardel originated.

For me personally the name is creating Larry David dialogue between my skull.

Me just writing about the name has now made me feel even more LD foolish, really doesn’t
matter what the name is in reality but , why Fardel?

1 Like

Lol, I didn’t really give it much thought initially. I just came across it and the meaning seemed to fit as a nice metaphor for what I was trying to build. Plus, given that it is kind of an outdated word, I assumed it was not being used elsewhere. But then a number of people have told me they liked it, so I’ve stuck with it!

Hi everyone,

For our end of June update, I’ve made a lot of progress on the development of a functional UI for the Fardels contract. As I’ve been building it, I have also made some updates to the contract as I go. Once I have the contract in what I think is a reasonably stable version, then I will put it up on the holodeck testnet and create a public alpha version of the site so that people can start providing feedback. I anticipate that will be in the next couple of weeks. From that point UI development will continue, as well as beginning the implementation of the off-chain index of public content to enable search functionality.

In addition to basic functionality described in the grant to create user profiles, adding content, browsing other users’ content, unpacking content (from other users), commenting and rating content, I am pleased to say I’ve already implemented functionality that integrates IPFS. With access to an IPFS node (e.g. running on the local machine), a user can now create a fardel where a file is automatically encrypted using AES-256 (utilizing OpenPGP.js) and pinned to IPFS. The passphrase is stored with the fardel on secret network, so when it is unpacked we can automatically decrypt the file from IPFS. Currently it simply allows for the file to be downloaded, but over time the plan is to integrate different interfaces based on the file format, e.g. a media file can be played directly after being decrypted.

Cheers,
Ben

6 Likes

Great to read this progress report! Looking forward to seeing this on testnet!

Here’s a video update. There’s still a lot more work to be done to improve the design and UX, but this shows the key functionalities implemented. I’ll post again once I’ve got a public version running on Holodeck, so people can try it out for themselves.

4 Likes

This is looking great, it’s really exciting to see these features slowly becoming a reality :smiley:

Got too excited - https://twitter.com/GuyZys/status/1412698886213341186

3 Likes

This is amazing! Thanks for sharing this update video!

I think we should start thinking about a go-to-market strategy, as in who’s going to be creating fardels, what kind of content (like blog post etc.) and who’s going to be buying these fardels? One good idea can be to emulate something like decentralized substack, which is the go to platform for monetizing subscription content in crypto (like Defiant etc.) We can have a secret network related blog / insight post start on Fardels (cc @Carter-Woetzel and @tor)

We should also think about incentives to vote, as crypto revolves around incentives. Voting helps content discovery and as a content producer I may be incentivized to share so of my revenue with people who help me get discovered. This also creates an incentives for users who are voting. One idea is to think of a structure like:

  • if I’m voting yes, I am buying (long position) that post, if I’m voting down, I am selling (shorting) that post
  • each time there’s a up (buy) / down (short) vote, the price of the fardel changes, like in an exchange (demand / supply dynamics). Content creator always gets the same price for the content but the voters can close their position at any given time to realize profits.

This dynamic can allow me to up vote a fardel and get a share. If a ton of people upvotes it, then the price goes up. At a later day, I can choose to sell that share to someone else. This is somewhat similar to Uniswap socks in practice

I have a couple of questions:

  1. Where is the (thumbnail) image stored?
  2. Would there be a way to automate viewing key generation when a profile is created (like triggering both TXs in the same user interaction) cc @baedrik is looking at this for secretNFTs
  3. I wonder whether it would be easier for ppl to understand the following terminology:
  • fardel → my posts
  • carry → post

What we are doing with SecretNFTs is creating a strong viewing key and setting it for the contract instantiator during the snip721 init, and returning the created key in the logs

@can about your idea of incentives - I gave this some thought and i believe that the specific structure you described creates the wrong incentives, especially in a system where people can set up bots to manipulate things. The system you describe incentivizes bots to just blindly upvote things, while potentially harming real users (and anyway, “dislike == short” is a really strong disincentive to dislike things, and how do you charge people losses if they don’t lock funds in the first place?). Especially for something that is supposed to be a social network, you shouldn’t force people to start micro-managing their profits/losses on content that they just wanted to enjoy. It’ll eventually mean most won’t use likes/dislikes, and bots would have the potential to drain the profits of the original poster.

I think a better system for a consumer-oriented product like this would be would be one that doesn’t disincentivize honest behavior and user feedback. I’d do this:

  1. Upvoting and downvoting are currently disincentivized by the tx fee. So whenever a user upvotes or downvotes, the tx fee (maaaybe +5% of the tx fee for good measure) could be refunded to the user from the OPs profits, but only if they already purchased the Fardel, and only once (so if they like, unlike, like again, etc, they don’t get more refunds and don’t drain the OPs profits). The OP loses 1-5% of profits in exchange for promotion.
  2. Comments aren’t refunded, but likes on comments (by users who bought the fardel) would refund the tx fees of the liker plus reimburse the commenter 0.1% of the fardel’s original cost, maybe up to some limit based on how much revenue the fardel has brought in up to the point in time the comment rewards are redeemed, so that users can’t drain profits from the OP. Dislikes on comments would only reimburse the disliker. This would incentivize seful or entertaining comments.

This system wouldn’t force users to get involved in unnecessary complexity, and would incentivize honest behavior. Importantly the OP always keeps the majority of their profits, and users don’t pay just for expressing themselves in a way that you’d expect to be free on other platforms.

Afterthought: IDK you could have more complex economic systems around an on-chain ad platform or something like that, but idk if that’s even appropriate on a platform where people already pay for content… maybe allow authors to pay the service itself for artificial promotion, not based on engagement?

Thanks everyone for the feedback! I tend to agree with @reuven that we don’t want to artificially influence how people are liking or disliking posts, but rather we should look to remove the disincentives to participating. If there’s a transaction fee on all trades that gives a pool of money to support that. But actually I think the bigger challenge to tackle is incentivising content creators to post things on there in the first place. The biggest barrier to that, in my opinion, is not having an easy fiat on and off ramp. I know there might be some content creators who are also familiar with crypto but I’m much more interested in tapping into the much larger number of people who are not.

In addition, tailoring the UI for the content is also very important. For people who want to use it like substack then it needs nice editing functionality etc. People creating media, like short videos and music, is another target, and it should play the media embedded in the system. Design is key here. I’ve got some plans for that. But simpler is probably better to start off with-- I don’t want to make the site too busy or have too many options to begin with.

@can to answer your 3 questions:

  1. The thumbnail is stored as a Base64 image on secret network, which is why the gas price goes up. It is limited to 60x60 pixels.
  2. We can definitely automated the viewing key generation. I separated the register functionality only because that is used every time the user changes the handle and description, and we’d only want to create the viewing key the first time. The user could also set their own password if they want. Right now it is stored in local storage. If they are signed into Keplr then it tries to log them in automatically when the page is loaded.
  3. I’m open to suggestions on this end. Though I have to say that I like the idea of using new terminology as a way to make it unique. When Twitter started I remember Stephen Colbert making jokes about the word “tweet” etc. but now it is integral to how people talk about it. Same with “googling” things.

Thanks again everyone!

There’s now a version up on the Holodeck testnet here: https://testnet.fardels.network/

To start go to the Profile tab and create a handle. Then click the Settings menu in the upper right and Generate a Viewing Key. At this point you should be ready to carry your own fardels to the network.

I have created one account so far darwinzero. You can search for it on the Explore page and see one fardel that I have created that has a sound file I uploaded to IPFS.

In order to upload your own fardels to IPFS you’ll need an IPFS node running on your machine and you need to add https://testnet.fardels.network to Access-Control-Allow-Origin section of the IPFS config file like so:

{
    "API": {
         "HTTPHeaders": {
            ...,
            "Access-Control-Allow-Origin": [
                ...,
                "https://testnet.fardels.network"
            ],
            ...
        }
    }, ...

One note is that I’ve already noticed that the https://chainofsecrets.secrettestnet.io endpoint I am using sometimes returns a 502 error even though the contract execution appears to be successful. You can post comments/bugs here or email me at fardels@protonmail.com.

1 Like