Berty go/
Please, read the main README.md
file first.
This folder contains most of the go code needed by the project.
Download
Main binary: go get -u berty.tech/berty/v2/go/cmd/berty
Fetch library to your go cache: go get -u berty.tech/berty/v2
Main components
./cmd/...
: binaries / entrypoints
go get -v berty.tech/berty/v2/go/cmd/berty
./pkg/...
: packages especially made to be imported by other projects
./internal/
: internal packages that can be useful to understand how things are working under the hood
- you won't be able to import them directly from your projects; if you think that an internal package should be made public, open an issue
./framework
: bridges used by mobile apps
Usage
Daemon
foo@bar:~$ berty daemon
...
Now you can interact with the daemon API.
Mini
TODO
Share Invite
foo@bar:~$ berty share-invite
█████████████████████████████████████████████████
█████████████████████████████████████████████████
████ ▄▄▄▄▄ ██████▄▀▀▀ ▀▀ ▀█▄ ▀ ▄▀▀█ ▄▄▄▄▄ ████
████ █ █ █▄ ▀ ▀█▀███ ▀▄█▀█▀███ █ █ █ ████
████ █▄▄▄█ ███ ▀▀▄▀ ▄▄ ▀ ▀█▀ █▀█ ██ █▄▄▄█ ████
████▄▄▄▄▄▄▄█ ▀ █▄▀▄▀▄▀ ▀ ▀▄▀ ▀▄▀ ▀ █▄█▄▄▄▄▄▄▄████
████ ▄▀ ▄▄▄ ██▀▄ █▀▀▄█▀ ██▀▀▀▀█ ▀▀█ ▀█▀▄█▀████
████▀ ▀▄▀█▄ █▄▀█▄▀ █▀ ▀▀ ▀▀ ██ ███▀██▄██ ████
████▄▀▀▄▀▄▄█▄▄ ▀ ▀▄▄ ▄▄ ███▀ ▄ █ ██▀████
████ █ ▄▄▄▄ ▀▄ ▄▄ ▀▀ ▀▀▀█▀█▀▀▀▄▀ ▄▀▀▄▄▄▄▄████
████▀█ ▀▀▀▄▄▀█ ▄ █▀▀ ██ ▄██ ▀ ▀ ████ ████
██████ ▄ ▄▄ ▀▄▄██▄▄██ ██▄▀▄▀▀ █▀▀█ █▄▄ ████
████ ▄ █▄▄▄▀██ █▀█▀███▄ ▄█▄ ▀█ ▄ █ ▀▀▀████
████▀▀▄▄ ▀▄▀▄▀█▀█▀ ▀█▀▄▀▀ ▀▀▄ ▀ ▀██▄█ ██▄▄ ████
████▄ ▄█ ▄█▀▄█▀▀ ███ █ █▀ ▀▀█ ▀ ███ ██▀ ▀▄████
████▄██ ▄██ █▀▀▀ █▀▀ █▀ █▀ ██▀ █▀█▀█▄▀ ▄▄▄████
█████▀▀ ▀█▄█ █▀ █ ▀ ▀ ▄█ █▀▀▄▄▀ ▄ ▀▄▄██ ▀▀▀████
████▄▀ ▀ █▄▄▀▀ ▄ ▀▄▄ ▄▀▀▀▀█▀▀███▀ ▀ █▀▀███▄▄████
████▄█▄██▄▄▄▀▀ ▄ ██▄█▄▀▀ ▀█▀▀███▀▀██ ▄▄▄ ▀ ▄ ████
████ ▄▄▄▄▄ █ ▄█▀▄██▀▄██▀▀ █▀▀▀█▄ ▄ █▄█ ▀█▄▄████
████ █ █ █▄█ ▀███▀████ ▄██ █▀▄█ ██▄▄▄ █▀▄ ████
████ █▄▄▄█ █ ▄▀█▀ ▀█▀▄▀▀▀▀█▀▀ ▀█ █ ▀██ █▄ ▄████
████▄▄▄▄▄▄▄█▄███▄▄███▄█▄▄██▄▄▄██▄██▄▄▄█▄███▄▄████
█████████████████████████████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
html url: https://berty.tech/id#key=CiAXtiFJwUkmdTcLIgTZmQlEoUMGONLMKgXbxw72OWPb1hIgmXEyKjqiJLbf08ChSdRlry6F63a3LeDsc8v-_gXadLk&name=demo
Info
foo@bar:~$ berty info
{
"protocol": {
"process": {
"rlimitCur": "1024",
"numGoroutine": "473",
"nofile": "41",
"startedAt": "1600443153",
"numCpu": "12",
"goVersion": "go1.15.2",
"operatingSystem": "linux",
"hostName": "REDACTED",
"arch": "amd64",
"version": "v2.149.0-3-g8b6591d7",
"vcsRef": "8b6591d7",
"selfRusage": "{\"Utime\":{\"Sec\":1,\"Usec\":268952},\"Stime\":{\"Sec\":0,\"Usec\":254625},\"Maxrss\":77740,\"Ixrss\":0,\"Idrss\":0,\"Isrss\":0,\"Minflt\":8498,\"Majflt\":0,\"Nswap\":0,\"Inblock\":0,\"Oublock\":0,\"Msgsnd\":0,\"Msgrcv\":0,\"Nsignals\":0,\"Nvcsw\":9241,\"Nivcsw\":65}",
"childrenRusage": "{\"Utime\":{\"Sec\":1,\"Usec\":610485},\"Stime\":{\"Sec\":0,\"Usec\":295980},\"Maxrss\":33524,\"Ixrss\":0,\"Idrss\":0,\"Isrss\":0,\"Minflt\":10260,\"Majflt\":0,\"Nswap\":0,\"Inblock\":0,\"Oublock\":0,\"Msgsnd\":0,\"Msgrcv\":0,\"Nsignals\":0,\"Nvcsw\":12825,\"Nivcsw\":597}",
"rlimitMax": "1048576",
"pid": "3730",
"ppid": "3729",
"priority": "20",
"uid": "1000",
"workingDir": "REDACTED"
},
"p2p": {
"connectedPeers": "10"
},
"orbitdb": {
"accountMetadata": {
"progress": "2",
"maximum": "2"
}
}
},
"messenger": {
"protocolInSameProcess": true,
"db": {
"accounts": "1"
}
}
}
--help
foo@bar:~$ berty -h
USAGE
berty [global flags] <subcommand> [flags] [args...]
SUBCOMMANDS
daemon start a full Berty instance (Berty Protocol + Berty Messenger)
mini start a terminal-based mini berty client (not fully compatible with the app)
banner print the Berty banner of the day
version print software version
info display system info
groupinit initialize a new multi-member group
share-invite share invite link on your terminal or in the dev channel on Discord
token-server token server, a basic token server issuer without auth or logging
repl-server replication server
FLAGS
-log.file ... if specified, will log everything in JSON into a file and nothing on stderr
-log.filters info+:bty*,-*.grpc error+:* zapfilter configuration
-log.format color can be: json, console, color, light-console, light-color
-log.tracer ... specify "stdout" to output tracing on stdout or <hostname:port> to trace on jaeger
foo@bar:~$ berty daemon -h
USAGE
berty [global flags] daemon [flags]
FLAGS
-node.display-name moul (cli) display name
-node.listeners /ip4/127.0.0.1/tcp/9091/grpc gRPC API listeners
-node.no-notif false disable desktop notifications
-node.rebuild-db false reconstruct messenger DB from OrbitDB logs
-p2p.ipfs-announce ... IPFS announce addrs
-p2p.ipfs-api-listeners ... IPFS API listeners
-p2p.ipfs-listeners /ip4/0.0.0.0/tcp/0,/ip4/0.0.0.0/udp/0/quic IPFS listeners
-p2p.ipfs-no-announce ... IPFS exclude announce addrs
-p2p.local-discovery true local discovery
-p2p.max-backoff 1m0s maximum p2p backoff duration
-p2p.min-backoff 1s minimum p2p backoff duration
-p2p.rdvp [] list of rendezvous point maddr, ":dev:" will add the default devs servers, ":none:" will disable rdvp
-p2p.webui-listener :3999 IPFS WebUI listener
-store.dir /home/moul/.config/berty-tech/berty root datastore directory
-store.inmem false disable datastore persistence
foo@bar:~$ berty mini -h
USAGE
berty [global flags] mini [flags]
FLAGS
-mini.group ... group to join, leave empty to create a new group
-node.display-name moul (cli) display name
-node.listeners ... gRPC API listeners
-node.no-notif false disable desktop notifications
-node.rebuild-db false reconstruct messenger DB from OrbitDB logs
-node.remote-addr ... remote Berty gRPC API address
-p2p.ipfs-announce ... IPFS announce addrs
-p2p.ipfs-api-listeners ... IPFS API listeners
-p2p.ipfs-listeners /ip4/0.0.0.0/tcp/0,/ip4/0.0.0.0/udp/0/quic IPFS listeners
-p2p.ipfs-no-announce ... IPFS exclude announce addrs
-p2p.local-discovery true local discovery
-p2p.max-backoff 1m0s maximum p2p backoff duration
-p2p.min-backoff 1s minimum p2p backoff duration
-p2p.rdvp [] list of rendezvous point maddr, ":dev:" will add the default devs servers, ":none:" will disable rdvp
-p2p.webui-listener ... IPFS WebUI listener
-store.dir /home/moul/.config/berty-tech/berty root datastore directory
-store.inmem false disable datastore persistence
foo@bar:~$ berty banner -h
USAGE
berty banner [flags]
FLAGS
-light false light mode
-random false pick a random quote
foo@bar:~$ berty version -h
USAGE
berty version
foo@bar:~$ berty info -h
USAGE
berty [global flags] info [flags]
FLAGS
-info.anonimize false anonimize output for sharing
-info.refresh 0s refresh every DURATION (0: no refresh)
-node.display-name moul (cli) display name
-node.no-notif false disable desktop notifications
-node.rebuild-db false reconstruct messenger DB from OrbitDB logs
-node.remote-addr ... remote Berty gRPC API address
-p2p.ipfs-announce ... IPFS announce addrs
-p2p.ipfs-api-listeners ... IPFS API listeners
-p2p.ipfs-listeners /ip4/0.0.0.0/tcp/0,/ip4/0.0.0.0/udp/0/quic IPFS listeners
-p2p.ipfs-no-announce ... IPFS exclude announce addrs
-p2p.local-discovery true local discovery
-p2p.max-backoff 1m0s maximum p2p backoff duration
-p2p.min-backoff 1s minimum p2p backoff duration
-p2p.rdvp [] list of rendezvous point maddr, ":dev:" will add the default devs servers, ":none:" will disable rdvp
-store.dir /home/moul/.config/berty-tech/berty root datastore directory
-store.inmem false disable datastore persistence
foo@bar:~$ berty groupinit -h
USAGE
berty groupinit
foo@bar:~$ berty share-invite -h
USAGE
berty [global flags] share-invite [flags]
FLAGS
-dev-channel false post qrcode on dev channel
-no-term false do not print the QR code in terminal
-node.display-name moul (cli) display name
-node.no-notif false disable desktop notifications
-node.rebuild-db false reconstruct messenger DB from OrbitDB logs
-node.remote-addr ... remote Berty gRPC API address
-p2p.ipfs-announce ... IPFS announce addrs
-p2p.ipfs-api-listeners ... IPFS API listeners
-p2p.ipfs-listeners /ip4/0.0.0.0/tcp/0,/ip4/0.0.0.0/udp/0/quic IPFS listeners
-p2p.ipfs-no-announce ... IPFS exclude announce addrs
-p2p.local-discovery true local discovery
-p2p.max-backoff 1m0s maximum p2p backoff duration
-p2p.min-backoff 1s minimum p2p backoff duration
-p2p.rdvp [] list of rendezvous point maddr, ":dev:" will add the default devs servers, ":none:" will disable rdvp
-store.dir /home/moul/.config/berty-tech/berty root datastore directory
-store.inmem false disable datastore persistence
foo@bar:~$ berty token-server -h
USAGE
berty [global flags] token-server [flags]
FLAGS
-l 8080 http listener
-s ... comma separated list of supported services as name@ip:port
-secret ... base64 encoded secret
-sk ... base64 encoded signature key
foo@bar:~$ berty repl-server -h
USAGE
berty [global flags] repl-server [flags]
FLAGS
-p2p.ipfs-announce ... IPFS announce addrs
-p2p.ipfs-api-listeners ... IPFS API listeners
-p2p.ipfs-listeners /ip4/0.0.0.0/tcp/0,/ip4/0.0.0.0/udp/0/quic IPFS listeners
-p2p.ipfs-no-announce ... IPFS exclude announce addrs
-p2p.local-discovery true local discovery
-p2p.max-backoff 1m0s maximum p2p backoff duration
-p2p.min-backoff 1s minimum p2p backoff duration
-p2p.rdvp [] list of rendezvous point maddr, ":dev:" will add the default devs servers, ":none:" will disable rdvp
-store.dir /home/moul/.config/berty-tech/berty root datastore directory
-store.inmem false disable datastore persistence
Other Binaries
rdvp
foo@bar:~$ rdvp -h
USAGE
rdvp [global flags] <subcommand>
SUBCOMMANDS
serve
genkey
FLAGS
-logfile stderr if specified, will log everything in JSON into a file and nothing on stderr
-logfilters info,warn:bty,bty.* error+:* logged namespaces
-logformat color if specified, will override default log format
foo@bar:~$ rdvp serve -h
USAGE
rdvp [global flags] serve [flags]
EXAMPLE
rdvp genkey > rdvp.key
rdvp serve -pk `cat rdvp.key` -db ./rdvp-store
FLAGS
-db :memory: rdvp sqlite URN
-l /ip4/0.0.0.0/tcp/4040,/ip4/0.0.0.0/udp/4141/quic lists of listeners of (m)addrs separate by a comma
-pk ... private key (generated by `rdvp genkey`)
foo@bar:~$ rdvp genkey -h
USAGE
genkey
FLAGS
-length 2048 The length (in bits) of the key generated.
-type Ed25519 Type of the private key generated, one of : Ed25519, ECDSA, Secp256k1, RSA
betabot
foo@bar:~$ betabot -h
Usage of betabot:
-addr string
remote 'berty daemon' address (default "127.0.0.1:9091")
-display-name string
bot's display name (default "moul (bot)")