0.0.3 • Published 5 years ago
@fluencelabs/aquamarine-stepper-new_it_types v0.0.3
Aquamarine
- composability medium
- allows developers to express network choreography in a script
- moves script & data from peer to peer in a single-use logical network with checking merkle proofs and signatures.
Fluence stack
Fluence nodes use aquamarine to coordinate requests between different services run by FCE:
Aquamarine Intermediate Representation
AIR: What is it?
- S-expression-based low-level language
- Controls Fluence network and its peers
- Inspired by WAT (WebAssembly Text Format)
- Meant to be a compile target
- Development meant to happen in a higher-level language
- Syntax is in flux, will change
Scripts written in AIR look like this:
- Gather chat members by calling chat.members
- Iterate through elements in members array, m = element
- Each m is an object, represented as array; 0 is the first field
- (next m)triggers next iteration
AIR: Instructions
call: execution
- callcommands the execution
- moves execution to a peer, specified by location
- peer is expected to have specified WASM service
- the servicemust have specifiedfunctionavailable to be called
- argument listis given to the- function
- result of the functionis saved and available underoutput name
- example call could be thought of as data.result = dht.put(key, value)
seq: sequential
- seqtakes two instructions
- executes them sequentially
par: parallel
- partakes two instructions
- executes them in parallel
fold: iteration
- foldtakes an array, a variable and an instruction
- iterates through the array, assigning each element to the variable
- on each iteration instruction is executed
- instruction can read the variable
- nexttriggers next iteration
xor: branching & error handling
- xortakes two instructions
- iff first instruction fails, second one is executed
null
- nulltakes no arguments
- does nothing, useful for code generation