►
A
Back
to
the
thread
here
we
are,
this
is
right
now,
okay,
so
where
were
we
so
yeah?
I
figured
out
a
lot
of
stuff
today.
It's
all
written
down,
we're
not
gonna,
go
into
it,
just
because
yeah
okay,
so
I'm
gonna
put
everything
on
the
chain.
You
know
where
we're
we've.
We've
figured
out
that
we
can
do
the
thoughts
as
nfts,
so
we're
gonna
try
to
encode
a
thought
to
an
nft
and
we
want
to
you,
know,
put
it
on
top
of
one
of
these
did
base
change.
A
Also,
we
are
going
to
then
do
some
stuff
with
cb
band
tool,
which
I
can't
remember
if
I
talked
about
that
already
yeah
that'll
be
later,
but
let's
just
go
put
this
thing
on
on
on
a
chain
so
yeah,
so
we
wanted
to
put
it
on
transact.
A
A
A
A
A
What
is
this
so
we're
in
nft
storage?
We're
looking
at
this
packages,
create
nft
storage,
create
nft
storage.
Maybe
this
is
like
oh
yeah.
This
is
like
a
generator
for
the
rest
of
these
and
for
tools
website.
Api
api,
src
index
okay.
So
this
is
probably
our
main
entry
point
for
the
nft
start
storage
thing.
A
A
News
to
me
thought
there
was
a
no
delete
situation
with
blockchains
all
right.
I
think
it's
just
what's
in
their
database,
but
bad
joke
all
right,
so
check
has
accounts
restrictions,
upload,
okay,
so
this
upload
route
is
what
we
care
about
here.
A
A
Ft
upload
it
looks
like
this
is
active,
so,
okay,
upload
car,
oh
wait,
upload
car.
A
Okay,
wait:
request
blob:
okay,
there
we
go.
We
grabbed
the
body
is
car
application,
car
okay,
so
that
seems
to
be
like
some
kind
of
multiple
thing:
car
file.
Okay,
so
we're
not
going
to
deal
with
the
car
file
format
right
now,
two
nft
response:
if
his
car
packed
a
blob,
okay
car
equals
patch.car.
A
A
So,
where
is
pack
to
blob
okay,
so
pack
to
blob,
is
this?
Is
this
thing
that
basically
just
shoots
it
into
ipfs,
so.
A
A
A
A
A
You
can
then
use
these
ipf's
uris
and
put
them
into
a
json
file.
However,
you'd
like
to
create
your
metadata,
this
metadata
can
be
stored
using
resulting
in
an
ipfs
uri
that
then
you
can
use
that
you
can
then
store
in
your
tokens
on
chain
record.
So
basically,
what
it's
saying
is
that
go
ahead.
Put
your
token
on
the
chain
or
put
put
your
put
your
str
put
your
data
in
ipfs.
A
A
So
this
says
the
thing
about
car
files
that
you
looked
at:
okay,
single
file:
this
is
the
response.
We
got
multiple
files,
so
basically
it
tells
us
that
we
can
shoot
stuff
at
this
nft
storage
and
it
will
upload
it
to
ipfs
for
us,
okay,
great
cool,
so.
A
We
can
use
this
so
or
we
can
do
it
directly,
so
preparing
your
metadata.
So
once
you
have
all
your
assets
updated,
you
can
update
your
metadata
using
the
ipfs
urls
in
these
images,
others
that
are
part
of
your
for
each
file,
preparing
fpfs
some
cases.
You
may
wanna,
okay,
but
basically
try
to
put
that
yeah.
A
We
read
this
last
time
so
basically
try
to
put
the
stuff
in
ipfs
and
then
access
over
gateway
to
that
same
thing,
but
we're
going
to
use,
manifests
and
data
flows
to
be
our
generic
method
of
access
need
to
use
cidv0
your
two
version
of
ipfs
contacts.
Okay,
so
we
don't
care
about.
Ipfs
maintain
your
nft.
You
can
now
mint
tokens
using
the
blockchain
platform
of
your
choice.
We
wanted
to
illustrate
the
minting
process
here.
A
A
A
A
A
A
A
A
A
A
A
A
Okay,
so
fireplace
import,
so
it'll
take
takes
inputs
and
outputs
and
firefly
we'll.
A
Enter
dump
firefly
jump
chain
to
cold
storage.
We
can
have
later
an
alternate
implementation
of
this,
where
we
load
fro
or
where
we
just
serialize
to
did
after
we
know
format
in
cold
storage.
Okay.
So
basically,
what
do
we
say
here?
So
we're
going
to
spin
up
firefly
we're
going
to
hit
the
gateway
interface,
we're
going
to
start
adding?
A
We
can
we're
going
to
start
adding
adding
inputs
to
the
chain
right,
we're
just
going
to
link
this
to
to
everything
or
we're
just
going
to
link
a
couple
inputs
into
here.
Put
it
in
the
chain,
then
we're
going
to
we're
just
going
to
add
their
data
indiscriminately
and
then
we're
going
to
you
know,
dump
it
out
to
the
chain
we're
going
to
have
it.
You
know:
do
that.
A
A
To
do
stop
firefly,
okay,
so
just
like
we
do
with
our
docker
my
sql
server
spin
up
docker
spin
down
docker
when
you're
done,
and
in
this
case
we'll
also
add
a
to-do
dump
or
output
chain.
A
A
Know
argument
another
argument:
you
know
so
another
path
left
up
half
argument
after
cash
right
just
in
case,
I'm
totally
forget
what
I'm
doing
later.
Okay,
that's
exactly
what
we're
doing
okay!
So
let's
go
ahead,
we'll
download
firefly!
Let's
see,
do
we
have
these
fields
configured
correctly
now,
okay,.
A
A
Okay,
so
this
is
firefly.import
the
inputs.
A
We
need
to
make
all
this
easier
does
no
expand
and
printer
great.
So
this
looks
good
to
me.
This
looks
like
it'll
download
that
and
then
throw
us
a
break.
A
A
A
We're
just
going
to
leave
it
sort
of
you
know
open
to
open
to
the
caller
to
define.
So
this
is,
let's
see,
let's
drive,
let's,
let's
just
work
off
of
this
right,
so
we're
just
gonna
say
you
know.
Instead
of
run
dataflow.
A
A
So
we've
got
our
cash
firefly
cli
we've
got
our
firefly
config,
which
takes
our
values
right.
So
these
are
our
default
values
for
this
operation.
Whenever
it's
instantiated,
here's
the
setup
for
the
operation,
here's
the
operation
itself,
let's
give
it
a
name
firefly.import.
A
A
So
this
is
firefly
import
gateway.
A
And
this
is
firefly.importpeerdid.
A
Right
so
we're
going
to
output
a
pdid
directly,
there's
no
imprinter!
There's!
You
know
the
output
is
going
to
be.
A
A
And
the
name
is
peri
pure
did
so.
This
is
the
definition.
The
name
is
a
pure
did.
The
primitive
is
an
object
right,
because
this
is
a
a
live
object
right,
so
we
could
serialize
it,
but
it's
not
serialized
right
now.
So
it's
an
object.
A
A
So,
let's
see
so
what
what
kind
of
nodemon
command
do
we
have
over
here
python
dash?
U
okey,
dokey.
A
A
A
A
A
A
A
A
A
A
A
A
I
think
we're
on
an
old
we're
on
an
old
branch
yeah.
So
there
is
a
we
need
to
commit.
A
Okay,
there
we
go
yeah,
so
there
was
an
issue,
and
this
is
you
know
something
that
like
alice,
would
identify
if
you
know
so.
This
happens
to
be
me-
and
I
remember,
but
you
know
if
this
was
somebody
else
who
would
run
into
the
same
issue
right,
they
would
say,
attribute
error
base.
Config
object
has
no
attribute
download
url.
Now
this
is
something
where
alice
would
have.
You
know
seen
this
exception.
A
She
would
have
seen
this
happen
almost
like
stack
overflow
for
every
single
thing.
You
run
right
and
you
see
why
I
think
this
is
because,
obviously,
every
time
I
save
a
file,
it
runs
everything.
So
if
we
could
only
do
this
across
multiple
computers
with
lots
of
people
or
lots
of
computers,
we
get
a
lot
done
so
right
see
I
I
was
just
able
to
cherry
pick
right.
A
So
this
is
where
you
know:
you're
gonna,
say:
okay,
what
what
am
I
working
on
now
right
so
watching
watching
developer,
watching
developer,
watching
developer,
right,
okay,
developer
hits
issue
known
issue
right,
traverse,
tree,
look
at
input,
object,
determine
feature,
do
feature
extraction
on
input,
object
right
or
you
just
do
see
a
direct
lookup.
Have
I
seen
this
thing
before
what
happened?
You
know
what
what
you
know
does
does
it
relate?
How
does
it
relate
to
my
current
system
context?
My
current
top
level
system
context.
A
How
do
the
solutions
that
I
can
find
you
know
relate
to
the
assets
that
I
have
available
to
me
within
my
top
level
system?
Context,
for
example,
like
a
developer's
environment,
we're
going
to
do
this
whole
thing
with
vnc
it's
going
to
be
sweet
okay,
so
now
we've
got
that,
let's
rerun
it's
gonna,
yeah,
okay,
great
see,
look
at
that.
A
A
Why
did
I
now
run
it
some
other
way
well
or
via
the
cli
or
something
because
we
have.
A
A
There
are
no
regular
stuff,
but
not
within.
This
is
just
me
running
a
one-off.
So
where
are
we
here?
I
wish
there's.
I
think
there
might
be
a
way
to
show
the
text
around
you
a
little
bit
more,
but
here
look
at
this
check
this
out
locals
import
pp
print
pprint.ppprint
locals
now.
That
is
what
I
call
fun
debugging.
I
love
python.
A
A
Okay,
so
yeah,
so
basically,
this
is
this
is
and
you're
seeing
doc
test
run
here,
and
it's
saying
I
was
expecting
expected
last
film
and
empath
okay
last
element.
This
is
where
that
is
right.
That's
where
that
coming
from
so
if
we
were
alice,
we
would
say
you
know:
we've
identified
this
string
here.
It
says
that
it
expected
this
string
right.
So
there
was
an
issue.
We
know
we're
running
doc
test.
We
know
previous
executions
of
doctest
yield.
A
This
example
we
see
this
is
the
failure
you
know
this
is
the
line
failed
in
dock
test
format.
We
can
write
strategic
plans
that
tell
us
these
things
explicitly
for
this
format,
and
we
can
say
you
know
this
is
the
expected
line.
Is
the
next
line,
and
then
we
can
say
alice
can
say:
okay!
Well,
this
is
you
know
the
output
like?
Is
it
this
that's
wrong
or
is
it
this
that's
wrong
right?
We
should
be
able
to
tell
things
like
that
over
time.
A
I'm
not
quite
sure
that
one,
yet
you
know
when
you
have
something
where
okay.
This
is
wrong
with.
This
is
the
source
of
truth
right.
The
source
code
right
well,
okay,
we're
in
the
middle
of
changing
the
source
code.
So
maybe
you
know
how
do
we?
How
do
we
tell
I'm
not
quite
sure
anybody
got
any
ideas
posted.
A
All
right,
so
we
got
that
looks
like
it's
a
binary.
We
validated
the
sha.
Let's
go
execute
it,
so
I
think
we
may
be
lacking.
A
A
I
like
it,
let
me
know
what
you
think,
I'm
curious,
so
basically
yeah.
We
can
use
this
to
that's
weird.
I
didn't
understand
that
code
block.
A
A
So
delete
all
that
delete
all
that
yield.
Firefly
cli
we're
not
going
to
do
that.
Yet
here,
okay,
yeah.
What
are
we
going
to
do
so
logger
equals,
so
these
have
a
logger,
so
we
can
say
self.logger.
So
then
I'll
just
log
all
the
output
of
the
command
and
we
can
say
sys.executable,
okay,
so
we'll
say
so:
firefly
download.
A
A
Ff
init,
okay,
so
ff
init
all
right.
So
what
what?
What
was
that?
What
was
that
that
we
just
saw
there
in
util?
So
this
looks
like
it's
about
to
prompt
us
for
some
inputs.
Oh,
oh,
how
are
we
going
to
script?
This?
Oh
okay!
Well,
that's
a
fake
o!
Unless
you
can't
hear
my
excitement
because
we
know
exactly
how
we're
going
to
script
this.
A
So
what
was
that
that
we
just
saw
here
I'm
just
very
pleased
with
this
clearly
exec
sub
process.
So
what
does
this
do
so,
let's
actually
just
copy
this
whole
thing.
A
A
A
I
don't
think
we're
seeing
the
logging
on
this
yeah
we're
not
seeing
the
debug
logging.
That's
right.
I
think
the
doctor
already
said
the
doctor's
thing
gets
rid
of
that.
So
what
are
we
gonna
do
here,
so
basically
subprocess
created.
So
let's
just
set
a
breakpoint.
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
There's
this
repository
okay,
so
this
is
where
we
can
use
their
okay
decentralized
standards
based
primitives
for
using
decentralized
identifier,
verifiable
credentials,
life
cycle
protocol,
okay.
So
this
looks
like
what
we
want
to
look
at
okay.
So
it
looks
like
that.
Firefly
thing,
after
all,
turns
out,
didn't
really
do
what
we
wanted.
It
didn't
spit
out
post
a
blockchain.
It
can't
split
blockchain.
Okay,
this
is
the
problem
with
the
approach.
A
Sometimes
it
didn't
it
doesn't
it
doesn't
actually
get
us
there,
so
we
we
should
just
we
should
we
we
we
learned
we
learned,
but
it
turns
out.
We
actually
want
to
just
hang
out
in
this
tb
dex
spec,
because
this
is
a
much
better
place
to
hang
out
than
it
seems
like,
because
we
don't
really
want
to
deal
with
running
stuff
right
now.
We
just
want
to
make
sure
that
we
are
serializing
to
this
protocol.
A
A
It's
purpose
focus
on
fleshing
out.
Okay,
I
need
to
get
involved.
Who
else
wants
to
get
involved
with
me?
What
types
of
messages
do
allison
pfacing
each
other?
No
idea
who
pfi
is
it's
an
interesting
name
just
kidding
all
right?
Let's
message:
storage,
processors,
oh
I'm
so
excited!
I
just
knocked
over
my
water.
A
A
Tb
text
protocol
message,
format,
instructure
message
type.
Yes,
yes,
yes,
yes,
yes,
yes,
this
is
just
exactly
what
we
need.