.circleci | ||
.github | ||
admin | ||
aqua | ||
builtin-package | ||
example | ||
keypair | ||
local-network | ||
service | ||
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
README.md | ||
rust-toolchain.toml |
Trust Graph
Trust Graph is network-wide peer relationship layer. It's designed to be used to prioritize resources and control permissions in open networks. Being a decentralized graph of relationships, basically a Web of Trust, Trust Graph is distributed among all network peers.
Specifically, Trust Graph is used to prioritize connections from known peers to counteract Sybil attacks while still keeping network open by reserving resources for unknown peers.
At the same time, Trust Graph can be used at the application level in various ways such as prioritization of service execution on authorized peers or to define an interconnected subnetwork among peers of a single protocol.
How to Use it in TypeScript
See example:
- How to call
trust-graph
functions in TS/JS - Step-by-step description
README
API
High-level API is defined in the trust-graph-api.aqua module.
Directory structure
-
src
is the main project with all trust graph logic -
keypair
directory is an abstracted cryptographical layer (key pairs, public keys, signatures, etc.) -
service
is a package that providesmarine
API and could be compiled to a Wasm file. It is usesSQLite
as storage -
example
is ajs
script that shows how to use Trust Graph to label peers -
builtin-package
contains blueprint, configs and scripts for generation builtin package locally or via CI -
admin
is ajs
script used to generatebuiltin-package/on_start.json
which contains certificates for Fluence Labs nodes
Learn Aqua
How to use in Aqua
import "@fluencelabs/trust-graph/trust-graph-api.aqua"
import "@fluencelabs/trust-graph/trust-graph.aqua"
func my_function(peer_id: string) -> u32:
on HOST_PEER_ID:
result <- get_weight(peer_id)
<- result
How to use is js
-
Add the following to your dependencies
@fluencelabs/trust-graph
@fluencelabs/aqua
@fluencelabs/aqua-lib
@fluencelabs/fluence
@fluencelabs/fluence-network-environment
-
Import dependencies
import * as tg from "./generated/export"; import { Fluence, KeyPair } from "@fluencelabs/fluence"; import { krasnodar, Node } from "@fluencelabs/fluence-network-environment";
-
Add root and issue root trust.
-
For now, trusts/revocations can only be signed by client's private key.