►
From YouTube: NFT x IPFS Best Practices with Yusef Napora
Description
Yusef Napora, Protocol Labs software engineer, covered NFT x IPFS best practices, and introduced us to Minty at this month’s IPFS meetup.
For more information on IPFS
- visit the project website: https://ipfs.io
- or follow IPFS on Twitter: https://twitter.com/IPFS
Join your local IPFS meetup to attend our next event: https://www.meetup.com/pro/ipfs/
Sign up to get IPFS news, including releases, ecosystem updates, and community announcements in your inbox, each Tuesday: http://eepurl.com/gL2Pi5
A
What
are
those
right,
and
we've
spent
some
time
thinking
about
this
and
we've
kind
of
come
up
with
a
few
recommendations
that
we
think
will
ensure
that
your
nfts
end
up
in
a
good
state,
because
there's
a
lot
of
like
subtle
missteps
you
can
make
along
the
way
and
because
nfts
are
pretty
permanent.
You
kind
of
want
to
get
it
right
on
your
first
go.
If
you
can
so,
but
first
before
we
get
into
like
you
know,
it's
ips,
I
yeah.
That's
specifics!
A
I'm
gonna
talk
about
like
what
actually
is
an
nft
right
because,
like
it's
not
this
image
over
here,
although
there
is
an
nft
of
this
image,
but
you
know,
of
course
anybody
can
grab
these
pixels
and
stick
them
in
a
presentation
or
whatever
it's
that
so
the
the
media
itself
is
not
really
the
core
of
the
nft
in
almost
all
cases,
but
what
what
it
is
is
like
a
a
record
of
ownership,
that's
public
on
a
blockchain,
so
these
there's
a
few
like
when
you
boil
it
all
down
like
what
actually
is
the
nft.
A
So
they
have
this.
You
know
escape
patch,
basically,
which
is
like
you
can
link
to
data
off-chain
using
a
uri
or
universal
or
uniform
sorry
resource
identifier,
and
this
is
the
primary
method
of
actually
getting
the
nft
to
mean
something
as
it
were
so
right,
an
nft
generally
when
people
think
of
it.
They're
like
oh,
it's
this
cool
artwork
or
it's
it's
music
or
it's
whatever,
but
on
the
blockchain
itself.
All
you
really
have
is
the
uri
that
points
you
to
the
thing.
So
here
we
are
at
our
public
service
announcement.
A
Friends,
don't
let
friends
mint
nfts
with
http
links,
because
here
we
yeah
they
are
fragile,
although
they
are
super
familiar
and
easy
and
they're
widely
supported.
So
it's
easy
to
understand
why
you
might
want
to
use
them,
but
they
can
change
at
any
moment.
A
Like
I
mean
I
can
write,
a
web
server
now
returns
the
current
time
and
every
time
you
request
that
url,
it's
going
to
return
something
different,
and
the
same
is
true
for
any
artwork
that
you
might
want
to
put
your
or
any
asset
that
you
might
want
to
make
an
nft
out
of
the
the
url
points
to
a
location
and
that,
what's
at
the
other
end
of
that
location
can
be
anything
and
so
there's
no
guarantee
that
it's
going
to
be
the
same
thing
that
the
nft
creator
put
there.
A
So
we
have
ipfs,
as
most
people
here
will
probably
know
like
ipfs
uses
content
addressing
and
it
basically
now
you
have
a
link
that
actually
can't
change
right.
If
the
the
ipfs
cid
your
content
id
will
only
ever
point
to
the
specific
piece
of
data
that
created
it.
So
we
think
that
this
is
the
best
way
to
refer
to
data
from
a
blockchain,
basically,
because
it
will
always
point
to
the
thing
that
you
thought
it
was
pointing
to
when
you
created
the
record
and
on
the
retrieval
side,
you
get
built-in
verification.
A
So
when
your
ipfs
client
fetches
the
data,
it's
going
to
compare
the
hash
to
the
cid,
if
they're
not
a
match,
it
just
won't.
Give
you
any
data.
So
there's
no
like
real
danger
that
you're
going
to
be
like.
Have
the
rug
pulled
out
from
under
you
as
it
were,
your
your
all.
Your
goodies
are
changed
for
something
else,
and
it's
also
location,
indepen
independent.
I
should
say
so.
A
You
don't
have
to
plan
at
a
specific
server
that
could
go
down
or
change
ownership
or
whatever
you
just
say,
here's
the
content
and
go
find
it
on
ipfs,
please,
and
that
it
makes
it
so
you're
not
really
tightly
coupled
to
any
particular
host,
which
we
think
is
a
really
powerful
advantage.
And
then
you
can
also
sort
of
be
served
over
http.
In
fact,
a
lot
of
people
use
ipfs
without
really
realizing
it.
Just
by
going
through
ipfs
gateways,
you
follow,
you
click
a
link
to
ipfs.io
or
dweb.link
or
cloudfare's
gateway.
A
There's
a
bunch
of
gateways
that
you
can
use
and
they'll
just
go
and
do
the
ipfs
bits
for
you
and
your
web
browser
doesn't
know
the
difference
right.
So
that's
great!
We
don't
want
to
store
those
links
on
the
blockchain,
because
you
know
there's
a
bunch
of
gateways
and
none
of
them
is
the
canonical
gateway
and
also
yeah.
They
could
disappear.
Maybe
who
knows
like
it
would
be
sad
if
your
nfts
were.
A
You
know
inaccessible
now,
even
though
they're
still
on
ipfs,
because
you
pointed
somebody
at
a
gateway
that
no
longer
exists.
So
what
we
think
the
solution
is
is
just
use
this
ipfs
uri
scheme
the
nft
metadata
standards
like
erc
721.
They
want
you
to
return
a
uri
and
hey.
We've
got
one:
it's
it's
really
simple:
to
construct,
one
you
take
the
ipfs
cid
and
you
stick
ipfs
colon,
slash,
slash
in
front
of
it
and
you've
got
an
ipfs
uri.
A
You
can
also
optionally
have
a
path
component.
If
you
store
your
data
in
ipfs
inside
a
directory.
Now
the
cid
points
to
the
directory
object,
but
then
you
can
also
add
the
file
name
has
a
nice
human
readable
path,
which
I
think
is
nice,
especially
inside
json
metadata
that
sort
of
describes
the
nft
where
that
json
metadata
can
be
stored
in
ipfs.
So
there's
no
real
size
limit.
You
can
pack
it
full
of
as
many
bytes
as
you
want,
and
human
readable
uris
are
nice
and
on
chain.
A
I
still
think
it's
kind
of
nice
to
have
the
human
readable
file
name,
but
if
you're
really
like
trying
to
save
every
byte,
you
might
only
do
the
cid
without
the
file
name
in
there
that
just
to
point
to
your
metadata,
because
the
way
this
generally
works,
I
didn't
actually
make
a
slide
for
this
part,
but
there's
sort
of
there's
two
links
in
place
right.
The
nft
points
to
a
metadata
object,
which
is
generally
some
json
and
then
that
metadata
object,
probably
points
to.
A
I
mean
it's:
it's
unlikely
that
when
you're
buying
an
nft,
you
you're
just
buying
an
nft
of
json
and
you're
happy
with
that.
Probably
what
you
want
is
the
artwork
or
whatever.
Maybe
it's
a
house
or
something,
but
that's
going
to
be
described
in
and
referenced
in,
that
json
object
and
so
inside
the
json
object.
We
also
think
ipfsuri
is
the
way
to
go,
because
it's
very
clear
and
unambiguous.
You
get
this
extra
bit
of
context
that
this
isn't
just
some
random
hash
from
any
old
system
anywhere.
A
It's
an
ipfs
hash.
You
can
use
ipfs
to
retrieve
it
and
here's
how
and
then
also
it's
pretty
easy
to
rewrite
one
of
these
into
a
gateway
url,
which
is
so,
if
I
click
on
this
thing
here,
it's
actually
going
to
be
serving
it
from
dweb.link
and
there
you
go
so
that
can
happen
in
your
presentation
layer.
A
If
you're
building
a
platform
for
nfts,
you
can
write
a
little
tiny
bit
of
javascript,
take
an
ipfs,
uri
and
point
it
at
your
favorite
gateway
or
you
can
do
both,
because
if
you
just
have
an
ipfs
uri
people
that
have
grave
installed
or
the
ipfs
companion
browser
extension,
they
can
click
on
these
uris
directly
and
it'll
all
just
work
either
through
their
local
ipfs,
node
or
through
their
default
gateway.
A
If
they
have
one
configured
but
then,
if
you
want
to
breach
the
broadest
audience
like
right,
when
you're
presenting
the
link
to
the
user
for
them
to
click
on,
maybe
that's
when
you
rewrite
it
into
an
http
gateway
url,
and
then
they
can
also
have
the
yeah
okay.
This
is
so.
This
is
me
talking
about
what
should
you
use
when
probably
should
skip
to
this
slide
a
second
ago
on
chain
just
store
the
ipfs
uri
and
then
return
it
from
your
metadata
uri
function?
A
That
is
in
your
smart
contract
in
metadata
like
in
that
json
bundle
again,
ipfsuri
is
the
way
to
go.
If
you
want,
you
can
totally
have
like
another
field
in
there
that
has
mirrors
that
serve
over
http
or
something
like
that,
for
you
know
just
for
redundancy's
sake,
but
we
feel
that
the
ipfs
content
id
is
specific
to
the
data
is
the
best
like
canonical,
link
and
yeah.
A
The
uri
is
a
nice
way
to
package
that
up
and
then
on
the
web
gateway
url
and
if
you
can't
like,
if
it
makes
sense
to
display
it
to
the
user,
have
an
ipfs
uri
in
there
that
they
can
use
brave
or
other
ips
native
tools
with
and
if,
as
you're,
you
know
a
lot
of
my
the
recommendations,
I'm
making
to
people
they're
building
platforms,
but
this
also
kind
of
applies
to
people
minting
nfts,
just
to
kind
of
like
have
an
understanding
in
your
head
of
like
what
do.
A
I
want
my
nft
to
look
like
under
the
covers:
it's
nice
if
it
has
ipfs
uris
in
it
right
and
that's
something
that
you
can
kind
of
check
out
with
the
nft
platforms
that
you
might
be
working
with
like
do
they
actually
do
this
in
a
sensible
way
or
what's
going
on
so
and
then
there's
another
thing
to
mention
here
about
persistence,
right
ipfs
is
you
know
it's
a
peer-to-peer
content
distribution
protocol
and
addressing
system
and
you're
as
data
is
requested,
it
kind
of
like
spreads
out
through
the
network.
A
A
You
can't
just
put
your
data
onto
ipfs
at
large
and
just
forget
about
it.
Somebody
has
to
be
there
to
provide
the
data
to
the
network
on
ongoing
basis
and
that's
you
know
an
ipfs
node,
that's
connected
to
the
internet,
running
24
7.,
and
that
could
be
your
node.
If
you
want,
we
have
ipfs
cluster,
which
is
a
awesome
project
for
coordinating
several
ipfs
nodes
to
all,
pin
and
maintain
the
same
content
over
time,
and
that
in
fact
is
used
by
pinning
services
under
the
hood.
A
Well,
if
you,
so,
if
you
don't
want
to
run
your
own
ipfs
cluster,
you
can
run
a
pinning
service
stuff
like
that.
There's
other
alternatives
that
we'll
get
into
later
that
pl
is
developing,
but
the
the
main
the
key
takeaway
is
like
somebody
has
to
keep
the
data
alive
as
it
were,
and
host
provide
it
to
the
network.
So
that's
you
know.
Whatever
solution
you
have
for
that,
it's
just
something
to
keep
in
mind
because
we
want,
you
know
nfts
to
always
be
resolvable
right
through
via
ipfs
like.
A
Those
are
reasonable
options
and
I'll
talk
about
another
upcoming
option
in
a
minute,
and
then
here
I
just
want
to
point
you
guys
at
some
resources,
mostly
if
you
want
to
really
like
get
into
more
detail
about
like
why
you
know
these
recommendations
are
the
way
they
are
and
stuff
like
that.
We
did
a
write-up
on
the
ipfs
doc
site
about
this
a
few
weeks
ago,
and
you
can
go
check
it
out
at
this
url
down
here,
there's
also
at
the
same
site.
A
If
you
go
to
mint
an
nft
with
ipfs,
you
can
see
a
little
command
line,
nft
mentor
app.
I
wrote,
and
it
kind
of
you
know
it's
sort
of
a
toy
example,
but
it'll
show
you
the
way
that,
like
we
think,
nft
metadata
should
look
and
like
how
the
links
actually
work
in
practice,
and
then
I
also
wanted
to
just
call
out
some
really
good
content
on
pinata's
blog,
because
they've
been
producing
awesome,
nft
resources
for
a
while
now,
and
I
think
it's
worth
a
quick
around
for
anybody
that
has
not
seen
it
yet.
A
So
I
figured
I'd
toss
that
in
here
as
well.
Oh,
so
this
is
a
sneak
preview
of
alan's
talk
towards
the
end
of
this
meetup,
but
pl
is
launching
a
new
service
for
nft
data
storage
called
nft.storage,
and
it's
awesome
and
you
guys
check
it
out.
So,
basically,
like
all
that
stuff,
I
said
about
persistence,
well
that
this
is
us
doing
it
for
you,
because
we
want
nfts
to
be
awesome
and
like
we
want
to
preserve
the
sort
of
you
know:
cultural
artifacts
that
are
being
created
and
traded
and
everything
else.
A
So
I
don't
want
to
spoil
it
too
much.
I'm
sure
alan
will
get
under
the
covers
and
tell
us
all
about
how
it
works
and
stuff.
But
it's
it's
a
very
like
sort
of
set
it
and
forget
it
approach,
especially
if
you're
just
you,
if
you
have
other
things
to
think
about
you're
building
an
ft
platform.
Maybe
you
want
to
use
ipfs,
but
you
don't
want
to
like
learn
everything
about
ipfs
right
now,
maybe
check
out
nft.storage,
and
that's
that's
really
it.
A
I
think
that
if
you
guys,
if
anybody
here
has
questions
for
me,
hit
me
up,
I'm
probably
gonna
give
you
a
faster
response.
If
you
email
me,
twitter
is
something
I
very
rarely
check,
but
I
do
have
a
thing
on
there
and
yeah.
I
think
you
know
as
we're
learning
more
about
nfts.
I'm
sure
we
will
have
more
things
to
say
about
this,
but
I
think
the
key
takeaway
is
like
an
nft.