►
Description
This talk was given at IPFS Camp 2022 in Lisbon, Portugal.
A
Yeah,
quick
introduction
to
myself
actually
Marco
should
be
standing
here
and
not
me
so
that
that's
very
sad
but
yeah
here
we
go.
You
have
to
listen
to
me.
Instead,
a
Max
software
engineer
at
protocolabs,
working
on
Liberty
in
general
and
then
working
a
bunch
on
Rust,
Liberty
yeah.
You
can
reach
me
either
here
at
the
venue
or
over
the
many
many
different
digital
ways
out
there
cool
okay.
What
is
Liberty
P
everyone
who's
here
is
familiar
with
Liberty
all
right.
A
Okay,
cool
who
here
has
used
Liberty,
okay
and
who
here
is
running
code
in
production
using
live
movie
one
two:
three:
okay:
cool:
okay,
all
right!
Wonderful!
So
what
is
Liberty
for
those?
Not
that
familiar
with
it.
Liberty
is
a
modular
peer-to-peer.
Networking
stack
and
the
big
slogan
here
is
Liberty-
is
all
you
need
to
build
peer-to-peer
applications.
A
Obviously
we
don't
fully
live
up
to
that
promise
and
peer-to-peer
is
still
very
difficult,
but
I'll
go
into
a
bunch
of
things
on
how
lipitupi
makes
your
peer-to-peer
life
easier.
Liberty
is
one
specification
which
is
implemented
many
different
languages.
You
have
many
of
the
language
maintainers
here,
like
you
have
Nim
over
there.
You
have
rust
over
there.
You
have
Js
over
there.
You
have
more
rest
over
there.
So
all
the
people,
a
lot
of
people
working
on
any
of
these
implementations,
are
actually
here
in
this
room.
Yeah.
A
Given
that
it
is
implemented
in
all
these
languages,
it
can
run
in
many
different
environments,
browsers
mobile,
embedded
Standalone,
like
servers,
laptops
and
so
on,
and
it
was
initially
part
of
ipfs.
It
was
the
networking
layer
of
ipfs
eventually
extracted
out
of
ipfs.
That
was
not
during
my
days,
but
I.
A
Think
Jacob,
for
example,
can
tell
a
big
story
around
that,
if
you're
more
interested
in
that
and
then
so
it's
today
powering
the
ipfs
network,
but
then
many
other
networks
out
there
like,
for
example,
ethereum
2
now
with
merge,
falcoin,
polka
dot
and
we'll
go
in
a
couple
of
other
projects
using
it
cool
and
then
to
give
you
a
sense
of
a
scale.
But
that's
always
a
very,
very
hard
to
appear
to
be.
A
Networking
I
would
estimate
around
more
than
a
hundred
thousand
nodes
to
be
online
at
any
given
point
in
time,
so
more
than
a
hundred
thousand
lipid
V
based
nodes
being
online
at
any
point
in
time
during
the
day
the
week
and
so
on.
A
Okay,
all
right,
I'm
think
rethinking
my
slides
a
little
bit
as
most
of
you
are
already
familiar
with
lipitupi,
but
we
can
go
through
a
bunch
of
these
anyways
and
I
think
we
can
still
make
this
interesting
for
those
that
already
know,
liquidity
well,
Liberty
has
a
bunch
of
building
blocks,
and
these
are
somewhat
abstract.
I
would
say,
if
you
don't
put
them
actually
into
real
use
cases.
A
A
We
want
to
build
a
decentralized
chat,
application,
let's
say
and
then
lipid
B
is
the
tool
to
go
obviously,
and
we
have
different
building
blocks
on
the
left
and
on
the
right.
The
the
building
blocks
on
the
left
allow
us
to
make
point-to-point
connectivity.
So
how
do
we
connect
from
A
to
B
and
then
the
building
blocks
on
the
right?
A
Allow
us
to
build,
on
top
of
this
abstraction
being
able
to
communicate
between
two
points
and
actually
build
peer-to-peer
applications
on
top,
so
large
scale
networks
over
multiple
connections,
cool,
let's
dive
into
this
first
thing
transports
they
well
allow
us
to
get
bytes
from
A
to
B,
that's
relevant
for
our
chat
application.
We
want
to
send
messages
from
A
to
B,
so
that's
really
something
we
want.
A
It
depends
which
transport
to
use
really
depends
on
your
environment
right.
If
you're
Standalone
is
like
a
server
or
a
laptop
or
like
you
have
full
access
to
your
operating
system,
then
you
can
do
TCP
and
quick.
If
you're
in
the
browser
world
and
you're
a
little
bit
more
restricted
on
that
platform,
you
would
use
websocket
web
transport
and
soon
webrtc
cool.
A
couple
of
things
I
want
to
highlight
here
is
we
have
a
talk
by
Martin
1045
on
browser
connectivity
in
general?
A
So
if
you
want
to
learn
more
on
how
to
connect
your
browser,
that's
your
talk
to
go
to
then
I
hope
I
pronounced
this
correctly
Gorka.
Where
are
you
yeah
over
here?
It's
going
to
give
a
talk
on
webrtc
on
how
to
connect
to
browsers
with
each
other,
with
the
help
of
QR
codes,
which
is
really
exciting,
and
then
Ryan
and
I
are
gonna.
Give
a
talk
on
the
recent
efforts
on
standardizing
webrtc
for
Liberty,
and
also
Ryan
is
going
to
give
a
demo
on
that
cool.
A
So
once
we
know
how
to
send
bytes
from
A
to
B
for
our
chat
application,
we
want
to
secure
those
bytes
and
what
the
Curious
channels
pretty
much
just
give
us
is
authentication
and
encryption
for
the
bytes
that
we
send
from
A
to
B.
The
number
one
rule
in
lipid
is
no
traffic
ever
touches
the
wire
unencrypted.
Everything
is
always
encrypted
along
the
way.
A
Some
transports
already
give
that
to
us,
basically
for
free
built
in
a
quick
web
transfer,
vertices,
but
then
other
transports.
We
have
to
bring
our
own
encryption
as
Liberty,
so
that
would,
for
example,
be
TCP
with
noise
and
TLS
cool
all
right.
We
can
send
bytes
from
A
to
B.
We
can
secure
those
bytes
on
The
Wire.
Now.
What
we
want
to
do
is
make
great
use
of
a
single
connection,
and,
given
that
lipido
p
has
many
many
protocols
running
on
top
those
were
the
one
I
showed
on
the
right
side.
A
We
want
to
give
each
of
that
those
protocols
a
virtual
connection,
so
we
want
to
give
them
like
the
perspective
of
being
the
only
ones
on
the
connection,
and
we
achieve
that
with
multiplexing.
So
we
can
basically
run
multiple
streams
of
bytes
over
a
single
connection
and
each
of
those
streams
of
bytes
seem
like
they're
their
own
connection.
Some
transports
already
give
that
to
us
quick
web
transferred
CC,
but
then
some
others.
We
need
to
upgrade
with
our
own
mixers
like
yamox
and
mplex,
and
that
would
be,
for
example,
TCP
and
websockets
cool.
A
A
Next
up
is
map
traversal
in
the
peer-to-peer
networks,
the
biggest
pain
Point,
probably
is
firewalls
and
Maps
every
laptop.
You
can
assume
pretty
much
every
laptop,
always
running
behind
nads
and
firewalls.
A
Every
browser
for
sure,
so
what
we
need
in
Liberty
B
is
Knight
and
firewall
traversal
lipid
B
has
different
mechanisms
for
that
one
is
UPnP,
basically
automatic
port
forwarding.
We
have
a
hole,
punching
mechanism,
we
also
have
relaying
and
so
on.
This
is
a
very
interesting
part.
I,
don't
think
we
can
dive
into
that
in
the
intro.
We
have
a
whole
talk
on
this
by
Dennis
over
here,
so
he'll
dive
us
walk
us
through
that
hole,
punching
and
I
think
also
shows
some
cool
data
on
the
net
hole
punching,
wonderful,
all
right.
A
So
we're
done
with
the
left
side.
We
now
can
send
bytes
from
A
to
B.
We
have
full
connectivity,
that's
wonderful!
And
now,
with
these
building
blocks
for
our
chat
application,
we
can
send
messages
from
A
to
B
want
to
build
larger
scale
things
right.
We
want
to
build
on
top
of
these
abstractions,
and
the
first
thing
we
need
to
do
is
we
need
to
discover
other
peers.
A
Liberty
B
has
different
protocols
for
that,
like,
for
example,
mdns
Rendezvous.
You
can
also
discover
other
PS4
gossips
up
yeah.
So
once
you
start
your
chat
application,
you
should
connect
to
the
network
and
this
way
discover
other
peers
in
the
network.
A
The
next
one,
a
hard
one,
is
routing.
Once
you
discover
the
random
peers
in
the
network,
you
probably
want
to
connect
to
specific
peers,
like
let's,
for
example,
say
Dennis
and
I
want
to
have
a
one-on-one
chat
in
our
chat
application.
Then
I
would
like
to
find
Dennis
somehow
in
this
network
and
our
routing
later,
mostly
implemented
via
Academia,
allows
us
allows
me
to
find
Dennis,
make
a
connection
and
then
exchange
messages
directly.
A
On
this
one
we
have
pitar
gave
a
talk
on
the
power
of
two
choices
which
Dives
deep
into
Academia
itself
and
the
routing
tree
that
we
have
with
cademlia
yeah
Peter
is
also
one
of
the
authors
of
the
cademia
paper.
I
highly
recommend
reading
the
paper
I
think
it's
a
really
cool,
read
and
then
also
obviously,
during
the
talk
later
on.
Unfortunately,
Peter
can't
make
it
here,
so
that
will
be
via
Zoom,
so
fingers
crossed
for
the
internet
connection
here
cool
then
next
up
we
have
a
messaging
layer.
A
Let's
say
in
our
chat
application
again
we
want
to
make
a
group
chat
now.
Obviously,
if
we're
all
in
the
lipid
track
group,
it
doesn't
make
sense
for
me
to
be
connected
to
everyone,
but
instead,
what
we're
doing
is
we
have
protocols
like
gossips
up
where
I'm
just
connected
to
a
subset
here
and
I
send
a
message
to
a
certain
topic.
Other
people
subscribe
to
that
topic
and
then
my
message
is
spread
through
the
network
by
being
forwarded
across
peers
for
those
in
the
client
server
model.
That's
basically
a
pub
sub
model.
A
Wonderful
on
this
one,
we
actually
have
Ankit
a
git
up
here,
giving
a
talk
on
forming
analysis
of
Gossip
stuff,
yeah.
Very,
very
happy
to
have
you
here,
wonderful,
okay,
so
we
can
discover
peers.
We
can
route
to
specific
peers.
I
can
send
messages
to
a
whole
group
and
last
obviously,
I
want
to
share
videos
in
group
chats.
So
we
need
a
data
exchange
mechanism
that
would
be
bit
swap.
In
our
case,
there
are
multiple
in
case
you
followed
the
other
tracks
at
the
conference.
There's
just
one
of
many
bits.
A
What
basically
gives
you
a
mechanism
if
I
have
a
video
file
and
I
want
to
share
it
with
all
of
you,
I
could
send
the
video
file
to
all
of
you
individually.
That
will
not
scale
given
the
amount
of
people
here
so
instead
bit
swap
basically
gives
us
a
smart
way
to
present
that
video
file
to
everyone
a
little
bit
similar
to
BitTorrent
for
those
familiar
cool
all
right.
A
As
you
can
see,
we
have
the
point
connectivity.
We
have
the
the
building
top
blocks
on
top
of
the
point-to-point
connectivity
and
as
I
said,
this
is
really
all
you
need
to
build
peer-to-peer
applications.
A
All
right,
a
couple
of
more
things
on
the
ecosystem
in
general
I
want
to
touch
yeah,
and
then
we
have
Steve
on
the
stage.
After
that
there
may
there's
one
specification
of
Liberty
and
then
many
many
implementations
so,
for
example,
go
libraries,
but
then
many
many
more
out
there
and
we'll
also
have
a
talk
with
hungry
up
here
on
Lim
Nim
Liberty,
which
is
very
exciting
and
projects
using
lipidopy.
Well,
ipfs
I
mentioned
that
Liberty
B
was
initially
the
actually
like
built
into
ipfs
as
the
networking
layer.
A
This
is
yeah
wonderful
use
case
I
mean
I,
don't
have
to
convince
you
here
at
ipvs
camp
on
on
ipfs.
It's
a
it's
one
of
our
largest
networks
in
the
sense
that
again
hard
to
measure,
but
around,
like
I
discovered
with
my
crawler
like
70
000
nodes
over
12
hours,
I
think
I'm,
guessing
Dennis
will
discover
something
else.
A
We'll
have
some
numbers
later
on
as
well
cool.
Then
another
network
ethereum
two-
and
this
is
quite
exciting.
I
know
the
font
is
impossible
to
read
back
there,
but
the
exciting
part
about
ethereum
2
is
that
we
have
high
client
diversity
in
the
sense
that
ethereum
two,
the
the
client
side,
is
implemented
in
many
different
languages
and
each
of
those
languages
and
implementations
use
the
corresponding
lipidophy
implementation.
A
So
each
of
the
colors
here,
on
the
one
hand,
is
a
different
ethereum
client,
but
also
a
different
lipid
V
implementation
and
yeah
they're
compatible
on
the
network,
which
is
wonderful
to
see.
Another
network
is
falcoin.
You
maybe
heard
a
bunch
about
it
during
IPS
Camp
there
are
big
challenges
are
like
how
do
we
transfer
big
chunks
of
data
from
A
to
B
and
I?
Think
that's
a
great
challenge
for
Liberty
p
in
general
to
tackle
and
then
another
one
is
polka
dot
mostly
focused
on
Rust
Liberty.
A
Also,
one
of
the
larger
networks
using
lipidopia
I
want
to
also
highlight
verti
I.
Think
Bertie
is
always
the
perfect
way
to
explain
lipidopy
like
as
the
chat
application,
and
this
is
basically
what
we
were
striving
for
today
in
the
and
the
intro
but
yeah.
A
If
you
want
to
see
how
to
do
chat
chat
with
lipidp
in
a
sophisticated
way,
you
want
to
check
out
Bertie
and
then
the
last
project
I
want
to
highlight
is
Persia
I'm,
probably
in
this
pronouncing
this,
but
we
have
Elliot,
give
a
talk
on
Physio
and
using
lipid
P
to
take
over
the
world
I'm
curious.
How
are
you
going
to
take
the
world
take
over
the
world,
but
we'll
have
you
talk
at
three
big
gold,
big
gold,
okay,
cool
I,
think
two
more
slides
here.
A
Where
is
Liberty
to
be
heading
a
little
bit
on
the
road
mapping
side,
I.
Think
a
big
theme
for
us
from
the
protocol
lab
side
was
browser
connectivity
and
last
couple
of
months
and
probably
will
be
and
the
next
upcoming
month.
A
Then
another
one
is
low.
Latency
efficient
connection
handshakes
with
Liberty,
that's
a
super
important
topic.
How
do
we
reduce
the
time
for
to
First
byte
metric
and
then
last
week,
comprehensive
interoperability
testing?
You
have
seen
on
the
ethereum
side,
like
so
many
people
using
Libra
V
and
so
many
people
using
different
implementations
off
lipidopy
in
a
live
network,
but
we
want
to
mirror
that
into
our
testing
infrastructure
so
that
we
can
properly
test
and
interoperability
here.
A
I
want
to
highlight
Long's
talk
over
there
and
the
one
will
guide
us
through
how
we're
testing
libidity
with
test
ground
and
hopefully
slowly
onboarding,
all
the
implementations
to
test
compatibility
across
implementations
and
across
versions.
A
Cool
yeah:
that's
all
for
Liberty
p
how
to
get
involved.
It's
an
open
source
project.
All
the
code
is
open
source,
but
I
want
to
what
I
want
to
stress,
and
what
I
want
to
strive
for
is
that
libidity
is
not
only
an
open
source
project,
but
an
open,
Community
project
in
the
sense
that
not
one
company
just
drives
it,
but
everyone
can
influence
it.
A
Yeah.
So
talk
to
us
as
the
venue
everyone
here
and
that
would
be
wonderful.
We
have
documentation,
forms
specifications
and
the
implementations
are
all
public.
The
roadmaps
are
public,
we
have
a
community
call
and,
lastly,
we
also
have
Steve
present
on
how
a
lot
of
this
is
being
built
within
protocol
apps
and
outside
cool.
That's
it.
Thank
you.