PlanetHelper

PlanetHelper

Contract to allow user interaction on confirmed nodes in Star Sailors, skinetics.tech

Planets

Confirmed Planets Contract

Documentation: https://skinetics.notion.site/Sample-Planets-Contract-4c3bdcbca4b9450382f9cc4e72e081f7

  • User mints an anomaly that has appeared in their UI (for now, the webapp, later it will be the game as well)
  • API searches for a token that has already been lazy minted with the TIC id of the anomaly (or the identifier of the candidate)
    • If there is a token id that has the TIC Id, then claim a copy of that to the msg.sender (player’s address) so they can manipulate it in-game
    • If the TIC ID has never been minted before, lazy mint a new one with parameters fetched from the data source and send it to msg.sender
    • Return the IPFS metadata
  • Add some buttons that allow manipulations for the NFT (e.g. viewing (reading) metadata (e.g. image/video files, graphs).
    • Graphs should be generated in a Jupyter notebook and returned in the Next app.
  • User creates post (proposal Proposal Board → Migration from Vite) with the NFT ID for their anomaly and some extra metadata for their discoveries and proposal, and then users can vote

Planet/Node candidates

(Where node refers to any type/class/collection of object that is part of the classification process. E.g. the TESS planets collection, mining/seismic data collection, etc) Simple flow: Contract for unconfirmed planet → created via Deepnote flask Once confirmed → lazy mint on existing goerli contract Mining multitool helper

PlanetContractAddress

Address for the collection of planets/node candidates that have been confirmed and lazy-minted. The process for this in the Star Sailors wrapper is as follows:

  1. Player mints an anomaly, which is an ERC1155 drop that is lazy-minted. The player requests a new planet, a random TIC id is assigned, our Flask API on Deepnote searches for an NFT in the first drop with that TIC ID. If none is found, a new NFT is lazy minted on that collection with data from the Lightkurve python module.
  2. User/Player then has a candidate (unconfirmed node object) in their wallet and on the web application frontend, they're redirected to a special planet {...id} page where they can interact with and view the candidate.
  3. Once the user has made a decision as to the status of the node candidate, they then create a Proposal (first on the threaded comments via Supabase and then on Lens). The contents of this proposal are outlined here.
  4. An NFT of this proposal is minted and then a new NFT is lazy minted from this collection (**note -> this is a demo. Will be updated). This new lazy-minted NFT will contain a link to the candidate node the proposal was created from, the proposal, and all the traits the user has filled in for the node once they have been cross-referenced with the proposal, voters and the python module that has the dataset (in this case, Lightkurve on Deepnote). This collection is the one referenced to in this contract (planetNftCollectionAddress). This planet can then have actions performed on it and rewards/items generated via the minerals contract.

calculateRewards

view

Inputs

NameType
_playeraddress