Inspiration

  • ETH PoW is the biggest inspiration. Despite its flaws, mining/participation was accessible to the general population and it was highly decentralized.
  • We're driven by the cypherpunk attitude of crypto pioneers and early adopters. We want to take away power from the tech monopolies. A lot of web3 products are either centralized, or deployed to centralized infrastructure. We want to take a hard turn in the other direction, to make a system that is both useful for and usable by everyone.

What it does

  • A much more simple, yet no less powerful, competitor to existing off chain solutions that can be used as a universal off-chain backend for web3
  • Unparalleled flexibility to run any type of job by allowing arbitrary code execution on a decentralized network of nodes
  • Enables the general population to participate into the network by giving them an easy to install client that can be run on most computers, including specialized devices like mining rigs and single board computers.
  • Provides another role for miners displaced by the merge by allowing GPU compute.
  • Gives even low power devices a role on the backend. Most types of compute are supported. The Pi Zero isn't optimal for machine learning, but it's 100Mbps interface can fetch data from an API as well as most

How we built it

  • All persistence is on NEAR. The contract maintains the state of the whole system, and assigns off chain clients to perform any requested work.
  • Lightweight and easy to install off chain client that can be run on most computers.
  • Robust frontend that feels like a Web2 app despite being driven by a web3 backend
  • Heavy focus on accessibility. It's very easy to both provide and consume compute on FAWS:
    • The one line installer can be used to both install and update the client
    • The client is deliberately lightweight to make it easy to setup and maintain. It does not rely on a database, reverse proxy, metrics server, or other complex infrastructure by design.
    • Low risk for nodes compared to other off chain products (no slashing), and there are only two functions that consume gas, and one of those is only called when you're guaranteed a reward.
    • Developers can run nearly anything on FAWS since it supports arbitrary code execution in any language (bounties are driven by Dockerfiles)
    • Bounties can be created automatically with task schedulers and scripts. The NEAR CLI provides an interface to the contract from the OS, and RPC calls and NEARs libraries can be used for everything else.

Challenges we ran into

  • Conveying all key points of the system in a 5 minute presentation was extremely challenging. It was especially difficult to find ways to champion it to investors since F.A.W.S. is pretty deep in the stack.
  • We couldn't get the indexer to run on anything but an enterprise server. We worked around it by creating a websocket relay for development.
  • The JS toolset didn't work for us on M1 Macs when we got started, so we had to learn Rust to write the contract

Accomplishments that we're proud of

  • We believe that our entire application is overall strong. Each piece of F.A.W.S. could be its own product, and we think each part of it is of overall good quality, especially for a 2 month project.
  • Our product is much more flexible than any other off chain client we're aware of, with the ability to run virtually anything, on demand, any time
  • We think we did a great job of shielding non and semi-technical users from the technical complexity with our simple installation process and lightweight client
  • Our client can run on a huge range of devices. The lowest power device we had it running on was a Gen1 Pi Zero ($10, 512mb, 1GHz single core CPU).
  • We leveraged a pretty good amount of NEAR's features with both the contract and the frontend. Our optimized contract and NEAR's performance let us render data in the frontend in real time, and to us, the frontend generally feels like a web2 app.

What we learned

  • Rust
  • Smart Contract programming
  • Presentations are hard
  • 2 months is not as long as it seems

What's next for F.A.W.S.

  • We're going to put significantly more effort into shielding nodes with sandboxing and snyk audits
  • There's some loose ends with concealing answers and retrying failed bounties that we want to touch on
  • Pitching to technical audiences
  • FAWS' client can be separated from its contract component to make it compatible with multiple chains, even if our NEAR based frontend is the interface for it

Built With

Share this project:

Updates