►
From YouTube: 2023-03-20 Helia (IPFS JS) Demo
Description
The March demo of Helia, a new IPFS implementation written in JS.
Information and source code for Helia: https://github.com/ipfs/helia
Sign up for future sessions: https://lu.ma/helia
B
Okay,
hi
everyone
welcome
to
the
Helia
demo
day
for
well.
This
is
the
delayed
here.
What's
supposed
to
be
the
13th
of
probably
March
2023,
it's
now
actually
gonna
be
the
20th
of
March
2023.
you're
gonna
have
to
oh,
no
forget
it.
I'm,
not
gonna
fix
it.
I
mean
part
of
the
fun
of
a
demo
day
is
doing
rough
edges
and
bugs
and
things
so,
there's
a
deliberate
mistake
in
the
slide
I'm
about
to
share.
B
Tada,
you
know
you,
can
you
don't
have
to
tell
me
what
the
mistake
is
because
I
know
what
the
mistake
is.
You
have
to
tell
everyone
else,
because
you
know
that'll
be
boring,
so
you
can
just
send
me
a
DM
anyway,
who
am
I,
say
hi,
so
I'm,
Alex,
I'm,
making
brain
on
the
internet.
I'm
part
of
the
IP
stewards
team,
I
maintain
just
La
Petite
PHS,
ipfs
and
I
am
leading
the
charge
on
this
new
version
of
ipfs
in
JS
called
Helia.
B
So
here's
a
quick
overview.
What
we're
going
to
talk
about
so
healer
itself,
I'm
going
to
just
going
to.
C
B
Know
briefly,
give
a
summation
of
that
a
couple
of
demos
and
then
q
a
for
any
chat
afterwards.
So
what
is
it
like?
What
is
it?
What
is
Helia?
Why
do
we
need
it
who's
it?
For
so
it's
a
replacement
for
JS
ipfs.
Why
do
we
need
to
replace
it?
Because
when
Joseph
was
born,
it
was
basically
supposed
to
be
a
one-to-one
port
of
go
ipfs
now
Kubo,
which
turned
out
to
be
a
horrific
mistake,
because
it's
enormous
and
they
serve
different
use
cases
different
audiences.
B
There
are
different
strengths
and
different
weaknesses,
so
why
on
Earth,
would
you
try
to
do
you
know
a
one-to-one
copy
of
these
things?
So
what
what
Helia
gives
the
opportunity
to
do
is
to
kind
of
Leverage
some
strength
of
JavaScript,
and
you
know,
and
the
environments
that
it
runs
in
and
the
tooling
that
it
has
available
and
what
we
will
end
up
with
will
hopefully
be
smaller,
faster
and
it
will
make
everybody
more
productive
and
who,
who
doesn't
want
that
or
literally
no
one.
Everyone
wants
that.
Okay.
So
what
is
it?
B
We've
got
a
very
simple
API
like
if
you
distilled
down
what
you
need
out
of
an
ipfs
like
what
is
it
so
you
need
someone
to
put
blocks,
you
need
to
be
able
to
put
them
in
it
and
get
them
out
and
then
getting
them
out
means
like
if
you
didn't
have
them
to
start
with,
you
should
be
able
to
fetch
them
from
the
network.
B
Blocked
The,
Block
store
is
where
you
put
the
blocks.
A
lot
of
the
things
that
are
built
on
top
of
ipfs
need
so
much
of
a
data
as
well.
So
you
have
a
data
store
which
is
basically
a
key
value
database.
It
is
backed
by
level
on
node
and
it
can
be
backed
by
indexeddb
in
the
browser
or
you
can
be
in
memory
all
of
these
things.
There
are
many
implementations
of
block
stores
and
data
stores
an
accessible
pinning.
B
So
if
you
have
a
bunch
of
blocks,
you
want
to
be
able
to
to
ensure
that
you
have
them
at
all
times.
B
So
you
need
to
get
a
pin,
a
tag
which
may
involve
fetching
the
rest
of
the
data
that
you
don't
have
from
the
network,
so
you
may
want
to
say:
I
only
want
to
pin
this
tag
several
levels
deep
or
whatever,
either
way
you
need
to
be
able
to
assert
that
you
have
blocks
when
you
think
that
you
have
them
and
then
let
Peter
P
so
LED
P2P
is
a
thing
that
underpins
all
of
this.
B
Well,
certainly,
all
the
network
operations
and
that
deals
with
things
like
finding
peers
opening
protocols,
not
traversal,
all
that
good
stuff
I
want
to
be
faster.
So
you
know
speed,
slowness,
fastness,
there's
it's
multifaceted.
There
are
lots
of
things.
One
one
thing
is
just
a
sheer
size
of
ill,
because
you
know
loading
things
is
slow,
like
bundle.
Size
is
a
problem
in
the
browser,
even
in
node
like
the
climate
takes
to
require
or
to
import,
things
is
non-trivial
when
you
get
very
large
packages,
like
Json
investor,
want
to
be
small.
B
Very
simple
API,
like
only
include
the
things
that
you
want
and
don't
include
things
that
you
don't
want.
We
want
to
be
able
to
favor
composition,
so
that
means
you
would
have.
If
you,
you
would
have
a
way
of
extending
Helia
with
the
extra
functionality
that
you
need.
B
So
if
you
were
dealing
primarily
with
Unix
FS
things,
you
would
use
that
you
would
use
a
module
that
extends
Helia
to
add
Unix.
First
capabilities.
If
you
wanted
a
different
file
system
like
winifest,
you
would
have
another
module
that
extends
here
to
do
winner.
First
things,
then
you
might
not
have
Unix
FS
things,
which
is
great
because
then
you're
not
including
a
bunch
of
redundant
coding
or
bundle.
B
Why
don't
talk
about
today?
So
the
the
kind
of
the
big
thing
that's
been
been
I've
been
working
since
last
time
is
progress
events,
so
what
we
really
want
to
do
is
be
able
to
make
Helia
be
observable
from
the
outside
and
debuggable
like
in
a
way
that
JSI
purpose
isn't
really.
There
are
a
lot
of
operations
that
we
do
in
JS
ipfs
and
you
don't
really
know.
B
What's
going
on
a
lot
of
the
times,
things
seem
to
hang
there's
just
not
a
lot
of
good
feedback
mechanisms,
so
you
want
to
build
these
into
Helio
from
the
ground
up.
B
So
what
I
want
to
talk
about
today,
for
the
most
part,
is,
is
progress,
events
and
how
to
use
them,
how
to
figure
out,
let's
have
to
see
what's
going
on
and
and
just
how
to
how
to
make
your
life
more
pleasant
and
make
things
more
predictable
with
by
you
by
looking
at
the
different
kind
of
progress
events
that
you
get
for
different
operations
within
helium,
so
demo
time,
I'm
gonna,
oh
no
I've
got
like
a
million
things
in
here,
okay
right,
so
this
is
too
big.
B
So
what
we
have
here
is
it's
just
helium.
B
So
I'm
running
running
the
main
branch
I
just
have
a
small
change
in
here.
So
this
is
a
unit
test.
All
it
does
is
as
part
of
the
interrupt
test.
B
B
B
So
it's,
this
is
all
all
typed,
so
I
know
that
my
the
type
that
I
have
is
a
progress
event.
So
the
progress
events
they
have.
They
extend
custom
event,
which
is
a
standard,
JavaScript
event
type
and
there's
a
type
field
which
is
one
of
these
strings
and
then
a
detail
field,
which
is
it
depends
on
the
kind
of
event
that
you
have.
B
B
B
Okay,
so
now
I've
got
a
whole
bunch
of
output.
I
didn't
have
before
so
what's
happened
here.
So
if
we
just
look
at
the
test
again
and
remember
that
we're
adding
we're
adding
some
input,
so
this
is
actually
because
we're
turning
on
Raw
leaves.
That
means
that
this
is
going
to
end
up
being
a
raw
note.
So
this
is
essentially
one
ipld
block
because
it's
smaller
than
the
than
the
maximum
block
size.
So
what
we're
doing
basically
is
putting
a
single
block
into
cubo's
Block
store
and
then
pulling
it
from
here.
B
So
what
actually
happens
so
within
The
Block
store,
get
we've
gone
to
bit,
swap
to
try
and
get
the
block
because
we
don't
have
it
in
our
in
our
block
store
bit
swap
has
done
a
fine
providers.
B
We've
found
a
provider
of
the
block,
so
this
CID
here
sorry,
this
pair
ID
is
going
to
be
the
pair
ID
of
the
Kubo
node
bits
or
dials
that
appear
it
sends
the
want
list
and
then
we
receive
a
block
back.
So
this
block
event
is:
is
the
remote
player
sending
us
the
block
back
to
us?
So
it's
a
block.
B
If
the
remote
player
didn't
have
it
none
of
this,
would
we
would
basically
stop
here
like
stop
at
the
send
wonders
so
we've
received
the
block,
we
put
it
back
in
the
Block
store
and
now
we're
able
to
fetch
all
right.
None
of
this
is
really
visible
before
the
JS
ipfs.
You
would
just
get
nothing,
it
would
be.
You
either
count
the
block
or
you
don't
get
the
block
and
well
you
can
either
get
a
block
or
everything
would
time
out.
That's
it
so
here
we
actually
have
some
visibility
into
into
bit.
B
Swap
now
we
can
go
deeper
and
we
will
go
deeper,
so
find
providers
cause
a
method
on
the.
B
Content
routing
interface
and
there
are
different
implementations
of
that
interface,
so
one
of
them
is
the
DHT.
So
then
there
will
be
DHC
queries
that
are
going
on
in
the
background
and
those
will
start
to
appear
in
here
as
well,
but
we
need
to
roll
these
progress
events
out
into
the
P2P
stack
at
the
moment.
They
just
did
the
IP
first
level.
B
So
that
is,
that
is
progress.
Events
in
in
The
Block
store,
so
we
can
see
other
kinds
of
progress
events
so,
for
example,
if
you're
building
a
you're
building
a
DAC,
you
can
do
the
same
thing.
So
here
we
have
the
Unix
FS
implementation
for
Helia.
So
if
you
come
to
any
of
the
other
demos,
you
will
recognize
this.
It
is
which
is
basically
a
module
called.
B
Oh,
it's
not
even
written
here.
Is
it
it's
a
module
called
hidea
unixfs
you
exports
a
function
called
unixfs,
which
you
would
pass,
in
instance,
of
Helia
to
you
get
a
you
get
an
object
back,
which
has
has
an
interstate
that
you
can
use
to
do
Unix
of
s
operations,
so
one
of
them,
you
can
do
is
add
bytes.
B
So
this
is
very
similar
to
the
operation
that
we
just
saw.
So
if
we're
we're
explicitly
adding
like
a
file
that
is
that
consists
of
this
one
one
buffer,
that's
five
bytes
long!
B
So
if
I
I
do
the
similar
similar
kind
of
thing,
so
you
can
do
a
event.
You'll
notice,
it's
the
exact
same
API
as
you've,
just
seen
with
Helio,
so
I'm
just
going
to
do
the
same
operation
I'm
going
to
do.
C
C
B
The
chat:
do
you
get?
There's
two
questions
at
the
end:
q.
A
so
what's
happened
here.
So
we've
got
some
events,
so
the
first
event
is
read
so
we've
read:
we've
read
some
input.
We've
read
five
bytes
that
end.
There
means
this
is
a
big
end,
so
we
can
handle
absolutely
enormous
streams
of
data
without
overflowing
numbers.
B
Yes,
talk
to
me
about
numbers
in
JavaScript,
one
time
or
don't
because
I
get
really
angry
anyway,
so
we've
read,
we've
read
some
bites
and
then
we've
written
some
bites.
It's
important
to
know
that
the
the
two
numbers
don't
always
add
up.
They
add
up
here
because
we're
using
just
a
a
block-
that's
small
enough
to
fit
into
one
node.
But
if
we
started
doing
things
like
adding
Unix
the
best
metadata,
then
the
number
of
bytes
to
be
right
becomes
bigger
than
the
actual
input.
B
B
Something
happened.
We
wrote
like
we
wrote
this
block
in
a
file
layout.
B
It's
not
massively
obvious
right
now,
because,
through
our
our
input
is
overly
simplistic.
We've
just
got
a
single
buffer,
so
we've
written
a
single
block
and
then
our
file
at
the
end
of
it,
is
a
single
block.
This
CID
were
you
to
put
into
the
CID
tool.
It
would
tell
you
that
it
is
a
V1
or
product
CID.
B
This
is
not
terribly
interesting
like
what
we
want
to
see
is
is
like
what
else
can
we
see
from
the
from
the
layout?
So
if
I
change
something
if
I
make
the
chunker
use
a
fixed
size,
chunker
and
I'm
going
to
reduce
the
chunk
size
to
one
byte
I.
B
B
What
I'm
going
to
do
here
is
I'm
going
to
print
out
the
dag,
so
EVT
I
equals
layout.
Do
the
layout.
Turning
now
I
can
get
the
block
from
The
Block
store
cards
block
equals
appreciate.
So
this
is
a
I'm
going
to
do
something
naughty
promise
dot
resolve
because
the
we
only
have
we're
on
the
progress
events
to
be
as
quick
as
possible,
and
if
you
don't
specify
them,
we
don't
want
anything
to
slow
the
progress
down
process
down.
B
So
all
the
progress
events
are
synchronous,
but
I'm
going
to
do
some
async
operations,
so
I
need
to
just
pop
out
into
an
async
context.
B
Equals
hour,
wait,
Block
store,
get
EVT
detail,
CID.
C
B
B
B
So
info
node.
So
what
have
we
got
here?
So
we
have
changed
the
chunk
size
to
one
like
this
there's
five
byte
block
is
going
to
get
dunked
up
into
five
blocks
of
one
byte
and
that's
going
to
make
us
a
dag,
rather
than
just
having
a
single
a
single
block,
I'm
going
to
stick
a
little
delay
in
because
we've
gone
async
and
we
don't
want
the
test
to
end
before
we
stop
it.
B
Was
the
first
failed
because
I
am
asserting
on
the
CID
and
obviously
we've
changed
the
file
layout,
so
the
CID
will
have
changed.
But
if
we
look
at
what
we've
got,
we
can
now
see.
We've
read
We've
read
each
individual
bite
because
it's
the
chunk
size
that
we've
defined
we've
written
our
blocks
for
each
chunk.
B
You
can
see
that
the
you
know
the
bytes
written
are
incrementing
as
we're
going
along.
These
are
all
these
are
all
going
to
be
raw
blocks
again
and
then
we
have
a
layout
event.
The
CID
is
different
to
the
one
that
was
the
last
time
and
so
now,
I'm
now
I'm
in
here
in
the
layout,
then
and
I've
read
the
block
out
of
the
Block
store,
deserialize,
the
divepv
node
and
just
printed
it
out.
B
So
we
can
see
you
can
see
the
nodes
that
we've
written
there's
the
Unix
of
metadata,
which
tells
us
what
the
block
sizes
are
of
each
link
and
then
we
have
all
the
links.
So
the
first
link
is
there:
it
just
sends
an
Adu
and
then
the
next
one
ends
in
the
first
one
ends
in
Adu,
FTI,
FTI,
etc,
etc.
So
we
have
received
a
layout
event
and
then
we
have
managed
to
write
out
things
into
the
console
based
on
on
the
event.
B
B
B
Until
you're
going
to
carry
on
okay,
so
the
final
one
is
Helio
ipn,
sorry,
this
is
similar
again,
so
we
have
I'm
an
interrupt
test.
Suite
of
The
Helio
IPS
package.
B
We
create
two
nodes,
like
openness
is
a
bit.
This
is.
This
is
even
the
DHT
to
revolve
IPS
names
so
just
quickly.
What
is
ipns
right.
Well,
ipfs
is
all
about
our
musical
data
right,
so
you
put
a
block
in
and
you
get
a
CID
out
or
down
in
you
get
a
CID
out
and
you're
like
that's
great.
What
so
you
know
what's
a
practical
application
of
that
is
something
like
well
I
can
host
my
website
on
ipfs.
B
B
So
what
you
need
is
mutability
to
bring
mutability
to
the
permanent
web
and
that's
where
ipns
comes
in,
so
you
publish
use
a
public
key
to
publish
a
record
that
other
people
can
resolve
and
that
that
record
results
to
the
CID
which
you
can
change.
So
you
can
update
the
record
with
a
new
version,
the
CID.
So
when
you
fix
your
typo,
the
people
that
you've
given
instead
of
giving
people
a
CID,
you
give
them
an
ipns
name
instead
which
they
can
then
resolve
to
a
new
CID.
B
When
you
update
fantastic
wonderful,
how
does
that
work?
Well,
there
are
different
ways
of
resolving
it.
Pubs
up
is
one
and
the
DHT
is
another
one,
and
so
this
one
this
one
is
the
DHT.
So
what's
going
on,
so
we
have
two
nodes.
We
have
a
Cubo
node
and
we
have
a
helium
node.
They
are
connected
well,
at
least
they
know
about
each
other
on
the
network.
B
We
get
a
CID
back
and
then
we
use
the
the
Cubase
HTTP
API
to
to
import
a
key,
and
then
we
publish
we
published
the
CID
under
a
name,
and
so
the
key
is
the
well.
The
pair
ID
is,
is
the
ipns
name
and
we
use
Helia
to
resolve
it.
So
what's
going
to
happen
here
so
right,
well
and
programs,
EVT.
B
So
there
we
go,
we
have
some
events,
so
we're
doing
a
day,
still
get
there's
nothing
there.
So
we
did
a
ght
query
and
so
you'll
notice
that
we
actually
see
the
DHT
query.
That
has
been
run.
So
the
query
looks
for
the
value
for
the
given
the
given
key.
It's
found
that
from
this
pair,
which
is
the
Kubo
peer
and
here's
the
value,
and
so
the
value
there
is
the
ipns
name.
B
So
it's
the
rbns
record
that's
been
published,
which
heliopians,
10,
decodes
and
and
users
to
fetch
the
CID,
and
so
you
can
see
the
CID
that's
resolved
from
the
record.
It's
asserted
and
that's
the
one
that
that's
the
one
that
we're
after
progress
events,
you'll
notice,
that
we
actually
see
the
DHT
query
in
this,
whereas
we
didn't
see
it
when
we
were
trying
to
fetch
a
block
via
a
DNS
content.
Router.
That's
because
ipness
actually
uses
a
DHT
API
directly.
B
When
you
configure
your
ipns
implementation,
you
can
choose
the
different
resolvers,
and
so
they
can.
They
can
call
directly
into
the
the
the
components
that
they
use.
So
the
difference
is
that
when
you're
fetching,
a
block
from
when
bitstop
is,
is
doing
a
fine
providers,
query
it's
actually
using
the
content,
routing
API
and
not
the
DHT
API,
because
there
can
be
different
implementations
of
content
routing,
one
of
which
is
the
DHT
another.
One
might
be
a
delegate
that
kind
of
thing.
So
we
have
we
have
like
we
can.
B
Just
you
know
we
can
interpret
the
the
DHD
query
results
directly
in
ipns,
which
is
why
it's
trivial
to
then
make
those
make
the
actual
query
progress
available
to
to
interested
parties
via
the
progress
event.
B
Hopefully
that
kind
of
gives
people
a
bit
of
a
view
into
like
how
you
would
go
about
looking
at
the
internals
of
of
Helio
like,
and
what
I
really
hope
is
that,
because
all
these,
these
events
are
predictable,
documented
hyped.
B
B
B
What's
next
V1,
maybe
so
you
know,
the
idea
here
is
that
the
apis
can
be
very
small,
very,
very
small.
Wouldn't
that
be
lovely,
so
we
can
actually
have
a
V1
and
everything
else
is
experimental
and
built
on
top
of
it.
So
the
API
to
Helio
is
at
this
point
since
the
progress
event
surrender
it
makes
it
pretty
much
complete
because
it
doesn't
ship
with
a
Unix
surface.
B
For
example,
you
would
use
your
own
well,
you
would
use
the
the
units,
the
best
implementation,
and
if
you
wanted
a
different
unixf
implementation,
you
have
the
tools
to
implement.
It
yourself
is
what
you
have
is
you
know
a
block
store
or
a
data
store
and
a
little
P2P
and
go
nuts.
You
know
so
maybe
maybe
we
can
ship
it
demo.
Demo
time,
hey.
A
B
I'm
just
kind
of
waiting
for
this
to
run
so
the
thing
that
I
was
waiting
to
to
work
before
was
who
was
the
P2P
shipping
version
0.43,
which
gives
us
like
circuit,
relay
V2
and
a
bunch
of
other
bug
fixes,
and
that
has
happened.
You
know
it's
happened
during
during
this
demo,
so
this
PR
just
updates
Helia
to
use
that
version
of
the
P2P,
and
when
that
is
done,
then
my
friends,
we
can
merge
this
PR,
which
will
release
version.
B
One
of
Helia
I
was
hoping
to
do
in
this
meeting,
but
I'm
not
going
to
make
you
all
stare
at
GitHub,
CI
binning
away,
that's
my
job!
So
if
you
check
back
in
maybe
I
don't
know
15
20
minutes
or
so
we
should
hopefully
be
at
version.
One
of
Helio,
maybe
I'll,
do
a
little
screen
recording
of
me
doing
it
and
we
can
all
we
can
splice
it
into
this,
we'll
download
it
from
YouTube
and
we'll
delete
the
original
and
we'll
just
like
tack
it.
On
the
end,
foreign.
A
Well,
thanks
Alex
I
I
have
a
couple,
but
others
please
feel
free
to
jump
in
just
going
back
at
the
beginning,
where
you,
with
the
Block
store
demo,
where
you
were
you,
would
we
log
out
hey?
We
found
this
particular
P.
Sorry
peer
for
Prime
providers.
Would
we
have
visibility
into
if
multiple
peers
were
found.
B
Yes,
absolutely
so
the
idea
is
yeah,
so
you
would
have
all
the
all
the
DHD
queries,
so
you
can
actually
see
what's
going
on
like
which
pairs
you're
connecting
to
like
what
addresses
you're
connected
to
them
on
like
do
they
respond
in
time?
Is
it
timing
out
that
kind
of
thing?
The
DHC
queries
are
very
resilient
because
you,
you
do
a
whole
bunch
of
queries
or
different
pairs
in
parallel.
B
So
if
you
see
like
a
timeout
message,
it
doesn't
mean
that's
it.
The
query
is
over
because
there
are
other.
There
are
other
queries
that
are
going
on
at
the
same
time
to
try
and
resolve
the
same
bit
of
information,
so
yeah
yeah
for
sure,
like
making
that
stuff
invisible,
is
very
important.
Okay,.
A
And
is
that
there
to
like,
if
today,
there
had
been
multiple
peers
that
had
that
CID
would
that
have
shown
up
in
the
progress
events?
Yeah,
okay,
got
it
cool?
The
other
thing
I
was
wondering:
what's
the
API
that
you
use
in
the
interop
suite
for
controlling
a
Kubo
node.
B
Just
the
the
HTTP
client,
so
the
keyboard
HTTP
client
is
using
ipfsdctl
to
spin
it
up.
Okay
and
then
you
get
an
instance
of
the
the
HTTP
client,
but.
A
God,
okay,
so
that's
using
the
newer
Kubo,
RPC,
client,
package,
okay
and
then
I
guess.
I
also
had
the
question
of
apps,
you
demoed
us
being
able
to
resolve
an
ipns
record
in
Helia
that
was
published
by
Kubo.
Does
the
other
direction
work
as
well.
B
Of
course,
of
course,
it
does
it's,
it's
not
dependent
on
Cuba;
it
is
dependent
only
on
other
compliant
DHT
implementations,
cool.
D
I
also
have
a
question
with
regards
to
ipns,
so
remember,
I
think
it
may
have
been
earlier
in
one
of
the
first
demo
days.
You
mentioned
how
the
keys
are
managed.
The
ipn,
the
keys
for
ipns
I,
was
wondering.
Have
you
explored
already?
I
know
that,
right
now,
if
I
remember
correctly
they're
stored
in
the
data
store,
have
you
explored
it
or
using
the
crypto
API
and
non-extractable
browser
keys.
B
No
but
I
mean
I'm
sure
that
would
be
very
interesting
cool
at
the
moment
because
it
used
the
data
store
so
they're
all
encrypted
at
rest
and
and
all
that
kind
of
thing.
B
It's
yeah,
so
there's
a
yes
another
data
store
itself,
but
the
crypto,
the
Liberty
crypto,
like
the
Obesity
Keys
module.
B
B
It's
it's
by
default.
Everything
is
oh.
D
And
and
then
the
encryption
key
is
also
in
like
the
index
DB
in
the
browser
or
level
DB
in
the.
So
you.
B
By
by
default,
the
password
is
not
secure,
but
it's
something
that
you,
as
the
user
will
configure
and
ensure
is
stored
somewhere,
that
isn't
the
data.
A
So
I
guess
Alex.
What's
the
recommended,
how
what's
the
recommended
way
for
someone
to
be
you
passing
this
password
around
that
is
used
for
encryption
securely.
B
It's
well
I
mean
it's
kind
of
it's
absolutely
easy
to
store
it
like
somewhere.
That
isn't
you
know
how
do
you,
where
do
you
store
your
password
for
your
yeah,
exactly
no
secure
in
a
locked
room,
it's.
A
A
Cool
I
think
thanks
Alex,
so
do
you
want
to
just
share
a
little
bit
of
what's
next?
Obviously,
ipfs
thing
is
coming.
Is
there
going
to
be
another
demo
between
now
and
itfs
thing.
B
Yeah,
so
what's
next,
is
there
another
demo
day
between
now
and
IPS.
C
B
Building
I
would
like
to
see
some
people
using
Helia
and
I
would
like
the
next
demo
data
to
be
all
about
their
demos
rather
than
me,
waffling
on
and
running
things
in
the
console,
but
since
we
like,
since
we
won,
will
ship
that
means
that
the
API
docs
will
spring
into
life,
and
it
means
that
the
the
examples
and
or
ipvs
examples
org
slash,
healer
examples
and
start
using
actual
version
numbers
now,
which
will
be
very
helpful
in
terms
of
making
everything
a
bit
more
stable
yeah.
A
Cool
thanks
Alex
we'll
stop
the
recording
here,
but
thanks
all
for
coming
appreciate.
It.