Skip to content

fluencelabs/indexer_workshop

main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 

Workshop

Shining diagrams https://drive.google.com/file/d/1Sri578dBHUui5DJfht6RxcncX19MBybF/view?usp=sharing

Experimenting on IPFS with Aqua

What's the value?

  • Write, run and evolve distributed algorithms
  • Quick experimentation
  • Declarative-ish language, focus on algorithms, not nitty-gritty
  • Iterative development: start REALLY simple, go sophisticated gradually
  • Subnet-oriented thinking

What's this workshop isn't about

  • How to build production-ready decentralized IPFS indexer

What's the goal?

  • Seed ideas about a quite different approach to distributed systems
  • Request for comments, problems, ideas and approaches: what would YOU do with Aqua?
  • Have fun, melt brains a little bit

Scenario

Imagine we're building an app, and want to use IPFS as a data plane.

  • Take some peers from the p2p network, and command them to obey (they can't resist. yet.)
  • Use these peers as: IPFS-powered data plane, distributed index, orchestrators
    • These could be all separate peers, but won't bother for the workshop
  • Upload files, store location info to Distributed Index (tm), make nodes lose files, repair from index

Tooling, moving parts

  • aqua run - takes Aqua script, compiles it to AIR, sends to network. Acts as a short-lived JS peer.
  • rust peers - running on cloud, each has go-ipfs as a sidecar
  • aqua-ipfs - WASM service wraps IPFS cli and provides it as an API to Fluence network, hosted on all Fluence Rust Peers
  • ipfs_client.mjs - JS module that provides ipfs-js peer as an API to Fluence network, works on my laptop
  • indexer service written in rust, compiled to wasm, upload to ipfs and deployed to Fluence

SHOW: picture of topology layout

Let's run it: make subnet, upload, get index, loose files, repair

SHOW: pictures of what happened on each step

Let's review code: upload

Let's review code: repair

Let's review code: whos_absent

On your own

Where to start

Read the main.aqua

How to run

Create subnet

npm run subnet

Upload to subnet

FILE="$(pwd)/package-lock.json" npm run upload

Get index

Copy the CID from logs of upload, and paste it as CID=

CID=QmdQepGdyPro8GQsEUs4Ep8fZ1G1HsPNHAuFNRCEiC3ahY npm run get_index

Unpin file from some nodes

ipfs --api "/ip4/134.209.186.43/tcp/5002/p2p/12D3KooWNWW5rX9QWSfsHJZVhuKyUb7rPKDvBNqyCuK21JmjyGPt" pin rm QmdQepGdyPro8GQsEUs4Ep8fZ1G1HsPNHAuFNRCEiC3ahY

ipfs --api "/ip4/134.209.186.43/tcp/5005/p2p/12D3KooWHtjVS2LSKpQsFFbNxPaLTAV8Si2LiohkK2CrQsyJymMX" pin rm QmdQepGdyPro8GQsEUs4Ep8fZ1G1HsPNHAuFNRCEiC3ahY

Check absent

CID=QmdQepGdyPro8GQsEUs4Ep8fZ1G1HsPNHAuFNRCEiC3ahY npm run absent

Run repair

CID=QmdQepGdyPro8GQsEUs4Ep8fZ1G1HsPNHAuFNRCEiC3ahY npm run repair

Check absent again

CID=QmdQepGdyPro8GQsEUs4Ep8fZ1G1HsPNHAuFNRCEiC3ahY npm run absent

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published