mirror of
https://github.com/fluencelabs/aqua-lib
synced 2024-12-04 15:20:23 +00:00
183 lines
5.8 KiB
Plaintext
183 lines
5.8 KiB
Plaintext
-- Default public interface of Fluence nodes
|
||
|
||
alias Field : []string
|
||
alias Argument : []string
|
||
alias Bytes : []u8
|
||
alias PeerId : string
|
||
|
||
data Service:
|
||
id: string
|
||
blueprint_id: string
|
||
owner_id: string
|
||
|
||
data FunctionSignature:
|
||
arguments: []Argument
|
||
name: string
|
||
output_types: []string
|
||
|
||
data RecordType:
|
||
fields: []Field
|
||
id: u64
|
||
name: string
|
||
|
||
data Interface:
|
||
function_signatures: []FunctionSignature
|
||
record_types: []RecordType
|
||
|
||
data ServiceInfo:
|
||
blueprint_id: string
|
||
service_id: string
|
||
interface: Interface
|
||
|
||
data Info:
|
||
external_addresses: []string
|
||
|
||
data ModuleConfig:
|
||
name: string
|
||
|
||
data Module:
|
||
name: string
|
||
hash: string
|
||
config: ModuleConfig
|
||
|
||
data AddBlueprint:
|
||
name: string
|
||
dependencies: []string
|
||
|
||
data Blueprint:
|
||
id: string
|
||
name: string
|
||
dependencies: []string
|
||
|
||
data ScriptInfo:
|
||
id: string
|
||
src: string
|
||
failures: u32
|
||
interval: string
|
||
owner: string
|
||
|
||
data Contact:
|
||
peer_id: string
|
||
addresses: []string
|
||
|
||
service Op("op"):
|
||
-- does nothing
|
||
noop()
|
||
-- takes any number of arguments and wraps them into a single array
|
||
array(a: string, b: string, c: string) -> []string
|
||
-- takes any number of arrays and flattens them by concatenating
|
||
concat(a: []string, b: []string, c: []string) -> []string
|
||
-- takes a single argument and returns it back
|
||
identity(s: ?string) -> ?string
|
||
string_to_b58(s: string) -> string
|
||
string_from_b58(b: string) -> string
|
||
bytes_to_b58(bs: []u8) -> string
|
||
bytes_from_b58(b: string) -> []u8
|
||
-- Applies SHA256 to the given string
|
||
-- Argument: s - string to apply sha256 to
|
||
-- Returns: returns sha256 multihash encoded as base58
|
||
sha256_string(s: string) -> string
|
||
|
||
service Peer("peer"):
|
||
-- Checks if there is a direct connection to the peer identified by a given PeerId
|
||
-- Argument: PeerId – id of the peer to check if there's a connection with
|
||
-- Returns: bool - true if connected to the peer, false otherwise
|
||
is_connected(peer: PeerId) -> bool
|
||
|
||
-- Initiates a connection to the specified peer
|
||
-- Arguments:
|
||
-- PeerId – id of the target peer
|
||
-- [Multiaddr] – an array of target peer's addresses
|
||
-- Returns: bool - true if connection was successful
|
||
connect(id: PeerId, multiaddrs: []string) -> bool
|
||
-- Resolves the contact of a peer via Kademlia
|
||
-- Argument: PeerId – id of the target peer
|
||
-- Returns: Contact - true if connection was successful
|
||
get_contact(peer: PeerId) -> Contact
|
||
|
||
-- Get information about the peer
|
||
identify() -> Info
|
||
|
||
-- Get Unix timestamp in milliseconds
|
||
timestamp_ms() -> u64
|
||
|
||
-- Get Unix timestamp in seconds
|
||
timestamp_sec() -> u64
|
||
|
||
service Kademlia("kad"):
|
||
-- Instructs node to return the locally-known nodes
|
||
-- in the Kademlia neighborhood for a given key
|
||
neighborhood(key: PeerId, already_hashed: bool) -> []PeerId
|
||
-- Merges given lists and sorts them by distance to target
|
||
-- Arguments:
|
||
-- target – base58 string; result is sorted by XOR distance to target
|
||
-- left – list of base58 strings
|
||
-- right – list of base58 strings
|
||
-- count – how many items to return
|
||
-- Returns: list of base58 strings sorted by distance to target; list will contain at most count elements
|
||
merge(target: string, left: []string, right: []string, count: u32) -> []string
|
||
|
||
service Srv("srv"):
|
||
-- Used to create a service on a certain node
|
||
-- Arguments:
|
||
-- blueprint_id – ID of the blueprint that has been added to the node specified in the service call by the dist add_blueprint service.
|
||
-- Returns: service_id – the service ID of the created service.
|
||
create(blueprint_id: string) -> string
|
||
|
||
-- Used to remove a service from a certain node
|
||
-- Arguments:
|
||
-- service_id – ID of the service to remove
|
||
remove(service_id: string)
|
||
|
||
-- Returns a list of services running on a peer
|
||
list() -> []Service
|
||
|
||
-- Adds an alias on service, so, service could be called
|
||
-- not only by service_id but by alias as well.
|
||
-- Argument:
|
||
-- alias - settable service name
|
||
-- service_id – ID of the service whose interface you want to name.
|
||
add_alias(alias: string, service_id: string)
|
||
|
||
-- Resolves given alias to a service id
|
||
-- If there's no such alias, throws an error
|
||
-- Returns: service id associated with the given alias
|
||
resolve_alias(alias: string) -> string
|
||
|
||
-- Retrieves the functional interface of a service running
|
||
-- on the node specified in the service call
|
||
-- Argument: service_id – ID of the service whose interface you want to retrieve.
|
||
get_interface(service_id: string) -> ServiceInfo
|
||
|
||
service Dist("dist"):
|
||
-- Used to add modules to the node specified in the service call
|
||
-- Arguments:
|
||
-- bytes – a base64 string containing the .wasm module to add.
|
||
-- config – module info
|
||
-- Returns: blake3 hash of the module
|
||
add_module(wasm_b56_content: Bytes, conf: ModuleConfig) -> string
|
||
|
||
-- Get a list of modules available on the node
|
||
list_modules() -> []Module
|
||
|
||
-- Get the interface of a module
|
||
get_interface(module_id: string) -> Interface
|
||
|
||
-- Used to add a blueprint to the node specified in the service call
|
||
add_blueprint(blueprint: AddBlueprint) -> string
|
||
|
||
-- Used to get the blueprints available on the node specified in the service call.
|
||
-- A blueprint is an object of the following structure
|
||
list_blueprints() -> []Blueprint
|
||
|
||
service Script("script"):
|
||
-- Adds the given script to a node
|
||
add(air_content: string, run_every: string) -> string
|
||
|
||
-- Removes recurring script from a node. Only a creator of the script can delete it
|
||
remove(script_id: string) -> bool
|
||
|
||
-- Returns a list of existing scripts on the node.
|
||
-- Each object in the list is of the following structure
|
||
list() -> ScriptInfo
|