Build peer-to-peer apps with Fluence and Aqua

Fluence development stack helps to build Web 3 apps faster, with higher security and composability
Start building

INTRODUCTION TO AQUA CONCEPTS

Aqua: p2p programming language

Aqua is a declarative language based on process algebras (pi-calculus) and the distributed runtime for execution. It is perfect for creating p2p applications, protocols, and network algorithms.

Declarative topology

Just say what and where has to be executed, and the Aqua runtime does the rest

Deadlock-free

π-calculus semantics is used to avoid deadlocks and optimize computation routing

Zero-trust security

Execution is cryptographically signed and traces are verifiable

Learn more about Aqua

Less code for greater result

Less code required to create reliable distributed systems
      import "@fluencelabs/aqua-dht/pubsub.aqua"
      func become_online(relay: PeerId, serviceName: string):
          services <- findSubscribers(relay, "status_service")
          for srv <- services par:
              on srv.peer_id:
                  StatusService srv.service_id
                  StatusService.set_status("online")



                
                          
      func collect_timestamps(node: string) -> []u64:
        res: *u64
        on node:
          k <- Op.string_to_b58(node)
          nodes <- Kademlia.neighborhood(k, nil, nil)
          for n <- nodes par:
            on n:
              res <- Peer.timestamp_ms()
          MyOp.identity(res!14)
        MyOp.identity(res!10)
        <- res
                      
      func share_image(peerA: Peer, peerB: Peer, fileName: string, ipfs: Multiaddr):
          on peerA.peerId via peerA.relay:
              cid <- Ipfs.upload(file_name, ipfs)
          on peerB.peerId via peerB.relay:
              Ipfs.download(cid, ipfs)
              Chat.renderImage(cid)




      
                      
      
      };
                      

Common distributed routine is now commoditized as Aqua libraries

  • Service discovery
  • Replication
  • Deploy
  • Overlay networks
  • Load balancing
  • Failovers
  • Orchestration
  • Backups
  • Consensus engines

Composability and resilience with redistributable services

Marine is a Webassembly runtime of lightweight and portable services that provide computations and proxy to external data or binaries. Aqua operates over Marine services in the Fluence network.