Giter VIP home page Giter VIP logo

nftrout's Introduction

Escrin

     

Escrin is a Smart Worker runtime that gives smart contracts the ability to privately interact with private off-chain data, and push the results back on chain.

Developer Orientation

This is the Escrin monorepo where you can find everything related to Escrin.

If you are a developer who wants to get started building on Escrin, the dev docs are the best place to start.
If you are a developer who wants to get started building Escrin itself, this is the place to be!

The main points of interest in this repository are in the following directories:

  • evm - The source of the @escrin/contracts Solidity library that facilitates key management and task acceptance.
  • worker - The library and services powering the escrin-runner and its contained
  • ssss - The Simple Secret Sharing Server, the first-party decentralized secrets keeper
  • website - The source of https://escrin.org.

There is also the escrin/workerd repository which contains the JavaScript VM that hosts the escrin-runner service and Smart Workers.

Please feel encouraged to file issues or participate in the Discord community!

nftrout's People

Contributors

nhynes avatar ryscheng avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

nftrout's Issues

Aquarium mode

Fish float around passively to yield a pretty visualization. Curate your tanks with NFT items and share them with visitors. Sell entire tank collections as NFTs, too.

Possible directions:

Aquarium Mode: Foreign Trout

When I activate aquarium mode, I have foreign trout that appear and disappear when I exit full screen. I noticed the same behavior when I open the browser's dev tools.

I'm using Brave.

Video.sans.titre.Realisee.avec.Clipchamp.mp4

Thanks for Sapphire.

Initial index is slow

index_tokens appears not to be actually parallel and ipfs delays slow things down a lot

Trout racing

  • players asynchronously put their trout into a racing pool along with a stake. pool resets daily
  • players can synchronously race their trout against trout in the pool
    • winners get the stake from the other trout
    • each trout can only race another trout once per day to prevent wipeouts
  • races are visual
    • players who are active are invited to join a race in x minutes
    • in the meantime, the paths of each fish in the race are privately generated
    • the race gets sent to all clients who then watch
    • the visual can be of a kelp forest with patches of extremely dense kelp (fog of war)
      • caves are recolored kelp through which fish with bigger eyes swim more swiftly
  • speed depends on physical characteristics (genes) and environmental variation (luck)
  1. list a trout for racing along with an amount to stake per race
  2. request a race
  3. system picks trout to race (initially random, eventually ELO)
  4. system races the trout within confidential computing
  5. system stores the race and its results, updates trout stats
  6. system sends race to the participants
  7. system transfers tokens from losers to winner
  8. others can watch the race later

Future directions:

  • cheer on your trout to speed it up
  • staking on other peoples' trout (using $ROSE or $ROSY)
  • staking mode where extreme loser trout get eaten
  • fish go faster if fed better (related: #2)

Implementation notes:

  • likely would benefit from high-perf/cache (non-ipfs) storage subsystem to hold race paths

Fish grinder

A smart contract that accepts NFTrout and turns them into high quality food pellets

Indexer tasks trample each other

Currently it's possible for stale data coming from the large, slow batch-update task to arrive after data from the fast per-block task and overwrite the committed fresh data. So a trout race in some sense, but not the kind we want.

There are two reasonable fixes:

  1. Each indexer task needs to be pinned to a particular block and the database needs to store the more recent block so that updates are idempotent. This is the more complicated, general solution.
  2. Don't have the batch update task re-index the per-block task's data because it's wasteful anyway. This is a simpler solution that will split the code into additional paths.

Cheat death

When a trout is about to die and cannot be saved, it can play a game with Death for its life. If it wins (e.g., by coming in first place), the trout will have its age and afflictions reset.

Ideas:

  • skulled trout go into a separate pool to play against other skulled trout
  • single-player mode of a game instead

Breeding income box is flaky because web3 is flaky

This could be cached by the indexer with a bit of difficulty:

  1. detect spawn event and its (left, right) parents
  2. fetch owners of left and right
  3. fetch accumulated rewards of left and right
  4. update database
  5. return from api

Speciation/Organization

Simple, self-use only: folders

Advanced, possibly public: Use a visual AI model fine-tuned on fish to extract low-dimensional feature vectors which are then clustered using insert clustering algorithm here to "create" species for display in the UI.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.