►
Description
This talk was given at IPFS Camp 2022 in Lisbon, Portugal.
A
So
I'm
Drew
with
satellite
IM
and
we
are
building
a
decentralized
chat
and
video
and
voice
application.
So
right
now,
satellite
is
a
decentralized
chat.
Group
chat,
voice,
video
screen,
sharing
it's
powered
by
ipfs
and
lib
P2P,
and
the
way
that
we
did,
that
is,
we
created
an
abstraction
layer
called
iridium.
It's
an
isomorphic,
JavaScript
library
that
you
can
find
on
GitHub
and
iridium,
basically
simplifies
the
process
of
bootstrapping
ipfs
and
loop
P2P,
it
bakes
in
dids
for
the
user
and
jwe
for
encryption.
A
So
the
way
we
do
that
is
we
allow
the
user
to
derive
a
application,
specific
private
key
using
signed
messages
from
their
wallet
or
web
crypto
private
key.
If
they
have
one.
We
simplify
Pub
sub
and
user-controlled
Storage
by
just
offering
a
really
simple
interface.
Basically,
just
kit
set
Pub
sub,
add
yeah,
so
we
provide
that
simple
Library.
We
can
use
it
in
a
client
or
run
it
on
the
server.
Our
servers
are
called
sync
nodes
and
sync
nodes
act
as
a
pinning
service,
a
Gateway
and
a
relay.
A
A
We
take
the
entropy
message
that
we
have
the
user
generate.
We
create
a
peer
ID
and
did
from
the
private
kiwi
derived
from
that,
and
then
we
initialize
jsipfs
and
we
have
a
bunch
of
configured
defaults
to
just
make
it
work.
A
So
on
the
server
you
configure,
your
listen
addresses
for
the
Swarm
API
Gateway.
If
those
listen
addresses
are
detected,
those
elements
start
up.
You
can
add
Pub
sub
message,
handlers
really
simply
that
the
users
can
interact
with.
You
can
use
the
client
API
within
the
sync
node
to
set
get
directly
dial
peers
You
by
default.
The
signal
will
keep
track
of
pure
data.
A
We
keep
track
of
offline
messages,
so
if
a
user
tries
to
message
another
user
and
that
user
isn't
connected
to
the
sync
node
or
can't
be
found
from
the
sync
notes
that
that
sync
node
is
connected
to
that
signal,
we'll
go
ahead
and
hold
on
to
that
encrypted
message
for
a
certain
amount
of
time
or
until
it
sees
that
user,
and
we
store
all
that
in
sqlite,
so
users
can
find
each
other
really
simply
they
can
sync
their
pens,
peers,
offline
messages
on
any
node
that
they
want.
A
So
they
can
connect
to
a
node
if
they
want
to
be
part
of
the
larger
Network.
That
node
needs
to
bootstrap
from
one
of
our
nodes,
but
that
is
optional.
So,
for
our
uses,
we're
building.
You
know
the
chat
application.
We
took
the
Iridium
elements
and
we
run
Federated
servers
all
across
the
globe,
and
then
we
have
the
browser
dial
into
those
discover
peers.
Get
connected
directly
and
then
we
initialize
webrtc,
where
it
makes
sense,
so
you
can
try
it
for
yourself.
You
can
check
out
the
GitHub
repos.
We
have
a
core
pwa.
A
Yeah,
so
concluding
by
using
the
Federated
nodes,
we
can
sync
and
store
encrypted
user
data,
we're
all
able
to
offer
a
theoretically
decentralized
Network,
which
will
take
participation
from
all
of
you
or
whoever
wants
to
use
it
and
offer
private
user
data
and
communication
without
the
need
to
go
on
chain.
We
have
the
option
we're
using
wallets
here.
We
will
definitely
be
exploring
on
chain,
but
it's
all
optional.
A
B
A
A
Yeah,
it's
different
every
time,
so
you
can
go
ahead
and
save
it
I,
don't
mind
so
I
went
ahead
and
saved
that
and
I'll
create
my
username
and
I'm
in
and
now
on
this
you
know
on
either
one
of
the
users
right.
You
could
just
click
on
your
username
you'll
copy,
the
friendly
ID,
which
is
like
I,
said
before
a
combination
of
your
username
or
Alias,
and
the
last
six
of
your
did
so
I'll
look
up
the
other
user.
Oh
there
they
are
add
them.
As
a
friend
on
the
other
side.
Here
you
can
see.
A
A
C
Hi,
can
you
give
a
brief
overview
of
how
you
implement
the
video
part
with
webrtc.
A
Yeah,
so
it's
it's
basically
just
signaling
over
the
P2P.
We,
you
know
when
you,
when
you
go
to
dial,
you
send
the
challenge
over
to
the
other
user.
They
send
back
acceptance
and
you're
you're
dropped
into
a
call,
and
we
initialize
the
streams
and
throw
them
on
the
UI.
C
A
So
we
derived
the
entropy
string,
typically
from
a
signature,
so
we'll
have
you
sign
your
passphrase
so
that
you
can
recreate
that
private
key?
We
don't.
We
want
you
to
be
able
to
use
your
crypto
wallet,
so
the
reason
that
we
generate
the
entropy
is
just
so
that
we
can
have
something
that
we
can
reuse
to
sign
messages
without
prompting
you
over
and
over
again.
C
C
B
Very
cool
project:
congratulations!
Yeah!
Thank
you.
I
wanted
to
know
some
information
about,
like
your
user
base
size
where
you
guys
are
at
and
release
where,
like
what
your
future
goals
are.
Those
sorts
of
things
yeah
so.
A
B
B
Okay,
all
right
private
donor.
Okay
and
then
you
said
that
I've
heard
this
phrase,
isomorphic
JavaScript
library,
a
number
of
times
recently
in
the
past
six
months
and
I,
don't
know
what
that
means.
Can
you
and
it's
out
of
scope
a
little
bit?
But
if
you
could.