►
From YouTube: EtherGit
Description
In this presentation from Day 1 of the #SwarmOrangeSummit Javier Peletier presents Ethergit, which combines Swarm storage with ethereum smart contracts for safer code storage and to achieve better code-governing logic.
A
A
However,
today
we're
not
going
to
talk
about
video
streaming,
we
set
out
one
one
year
ago
to
provide
from
some
blockchain
consulting
services
as
a
way
of
kind
of
coming
out
of
the
closet,
because
we
really
wanted
wanted
to
do
that.
So
we
picked
one
project
we
could
work
on
and
the
idea
was
to
start
testing
the
waters
and
do
an
actual
application
and
see
what
problems
we
would
find
along
the
way.
Okay,
three
of
our
funders
come
from
from
Akamai.
As
you
may
know,
akima
is
a
content
delivery
network.
A
A
A
So
what
is
heater
get
so
the
idea
here
and
Aiko
summarizes
has
as
getting
github
out
of
the
way,
but
the
idea
is
is
to
combine
storm
storage
with
Hyrum
smart
contacts
to
scholarly
and
safely
host
source
code
with
high
the
high
availability
of
distributed
network,
okay
and
enforce
how
the
code
is
governed
and
do
that
with
full
transparency
about
the
rules
that
the
community
will
follow
to
update
the
code,
okay
and
as
well
to
decentralize.
That
word
flog
that
we
are
involved
every
day
right.
A
We
submit
an
issue
about
bug,
report
or
a
pull
request.
Okay,
so
all
that
right
now
we're
doing
it
on
on
github.
So
the
idea
would
be
to
not
have
to
use
a
centralized
service
for
that
and
at
the
at
the
end,
when
everything
is
set
up,
then
we
can
start
instant
device
in
people
for
to
resolve
issues.
You
know,
with
some
sort
of
internal
economy
in
there
to
make
sure
that
people
are
solving
the
right
issues.
A
You
know
out
of
the
maybe
hundreds
of
things
that
we
need
to
do
in
an
open
source
project,
but
Before
we
jump
into
a
circuit.
Let's
look
a
little
bit
a
look
at
prior
art,
similar
projects,
and
we,
when
we
set
out
to
start
with
the
circuit,
we
found
at
least
these
three
probably
they're
more
attention.
A
Even
this,
we
have
good
torrent,
which
is
pretty
much
just
storing
all
the
git
repository
in
in
a
torrent
get
on
scuttlebutt,
which
is
this
messaging
append-only
database,
where
you
can
stored
information
and
then
the
one
that
got
me
really
excited
about
was
was
mango,
but
the
only
problem
that
I
see
is
that
at
least
like
I
couldn't
find
any
updates
on
on
mango
in
the
last
two
years.
So
for
me,
was
a
little
bit
disappointing,
so
we
started
about
three
months
ago
to
to
start
building
in
surrogate.
A
This
is
very
much
work
in
progress
for
us.
Today's
is
actually
very
early
or
too
early
to
show
what
we're
doing,
but
our
idea
was
to
get
feedback
to
see
what
everybody
thinks
and
see.
If
this
is
worth
continuing
and
what
is
you
know,
what
are
the
ideas
or
what
are
the
things
that
people
need
to
use
this?
Okay,
so
about
components
and
features.
Forget
ether
get
comes
with
a
get
plugin,
so
this
is
something
that
you
install
on
your
on
your
machine.
A
Fortunately,
it
is
a
system
that
is
extensible.
Ok,
so
it
comes
with
a
possibility
of
adding
new
protocols
to
stack
the
one
that
we
use.
The
most
is
SSH
everyday.
We
are
using
SSH
to
to
push
code,
but
get
this
extensible,
so
you
can
create
your
own
plugin
so
that
you
can
support
any
back-end.
Ok,
we
also
provide
that
javascript
library
that
can
be
used
to
build
web
applications
and
that's
one
of
the
applications
that
we're
going
to
show
you
today.
A
It
also
comes
with
a
go
Lang
library
in
case
a
more
back-end
type
of
application
needs
to
connect
to
a
surrogate
and
then
we're
also
going
to
show
in
an
html5
app.
That
is,
its
idea
is
to
to
allow
you
to
browse
the
code
and
interact
with
others
with
your
browser.
I
mean
like
in
an
everyday
situation
and
then
in
terms
of
architecture,
the
contracts,
the
smart
contracts
that
backup
any
repository
are
modular.
So
it
means
that
you
can
bring
into
your
contract
the
features
that
you
need
for
that
particular
situation.
Ok,
ok!
A
Okay!
So,
as
many
of
you
know,
a
good
rapper
is
sort
of
like
a
blockchain
right,
because
at
the
end,
all
those
comets
are
reference
in
the
previous
one,
okay
with
a
hash,
so
that
is
like,
like
like
a
low
chain.
The
the
thing
is
that
the
hash
Aryan
that
is
used
for
referencing
those
objects,
ingot
it's
a
sha-1
which
is
as
of
today
and
suitable
for
securing
code,
but
it's
useful
for
just
making
sure
that
the
code
was
not.
You
know
that
much
or
whatever,
okay.
A
The
thing
is
that,
obviously
we're
not
gonna
change
the
whole
gate
and
all
the
reporters
they're
out
there
so
there's
some
things
that
we
need
to
do
in
order
to
be
able
to
use
sh-sh-sha
one
in
this
in
the
system.
Also
when,
when
we
use
we
use
get
all
the
code
governing
logic
is
not
part
of
this
repository
itself.
All
the
governance
of
our
code
is
based
on
on
whatever
tool,
we're
using,
for
example,
github
or
bitbucket,
where
they
allow
you
to
create
accounts,
and
then
you
set
branch
permissions
and
things
like
that.
A
All
those
things
are
not
part
of
the
repository
itself
and
then
also
and
most
importantly,
all
the
issue
and
pull
requests
and
all
the
history
is
kept
in
the
tool
that
we
are
using,
for
example,
bitbucket
or
github.
So
I
know
that
if
our
you
know
bitbucket
or
github
disappear,
everybody
has
a
copy
of
the
entire
git
repository
in
their
machines,
but
one
of
the
things
that
we
would
lose
is
the
entire
pull
request,
history
and
issues,
and
that's
one
of
the
things
that
makes
makes
you
hostage
in
the
system.
A
You
are
okay,
so
you
base
your
project
in
github.
Then
you
want
to
move
the
git
repository.
That's
fine,
but
all
the
you
know
the
the
the
pull
request,
history
and
everything
which
has
a
lot
of
value.
You
would
lose
and
you
keep
it
in.
It
would
be
hostage
there.
Okay,
so
how
does
ether
get
work?
So
we
start
off
by
by
a
blue
I'm,
going
to
talk
about
an
example
in
which
is
just
a
repository
with
one
file
and
we
don't
want
commit
okay.
A
If
we
do
something
like
that,
when
we,
when
we
do
a
commit
of
that
single
file,
git
is
going
to
create
start,
creating
some
objects.
Okay,
that
is
going
to
be
stirring
that
get
mysterious
folder
that
we
have
in
our
project.
Okay,
so
for
a
file
for
a
cold
file,
is
gonna,
create
a
blob
object,
okay
and
it's
going
to
calculate
a
sha-1
hash
of
that
blob
object
and
since
that
blob
object
is
going
to
be
in
a
directory,
for
example,
the
root
directory
of
our
repository.
A
A
You
get
a
snapshot
of
the
of
the
end
of
the
code
at
that
point
and
then,
if
you
go
down,
then
you
get
all
the
history
and
how
the
code
change.
Okay
and
last.
What
you
do
is
is
to
update
the
branch
pointer
so
that
you
know
that
branch,
1
or
master
or
development
branch
point
to
that
particular
comment
up
until
the
up.
Until
this
point
there's
nothing
new
here.
This
is
how
it
works.
Okay,
there
is
how
to
how
we
put
this
structure
to
work
in
a
decentralized
way.
Okay,
this
is
on
our
computer.
A
How
do
we
push
it
to
swarm?
So
to
do
to
do
this?
We
have
to
do
a
little
bit
of
work,
so
in
order
to
upload
those
blob
objects
and
three
objects
and
commit
objects
to
swarm,
we
need
to
start
doing
some
some
magic
in
here.
Okay,
so
the
first
thing
that
we
do
is
we
wrap
each
of
the
objects
with
a
header
that
is
going
to
give
us
some
meta
information
about
that
particular
object.
A
We
call
it
an
ether
gate
header,
which
contains
just
version
of
the
of
the
protocol,
a
compression
flag
to
see
we
are
going
to
be
compressing
the
object
or
not
in
the
case
of
tree
object,
we're
going
to
be
also
including
a
form
hash
of
the
previously
uploaded
blob
object.
So
that
way
we
can
keep
a
double
reference.
Okay,
we
keep
the
sha-1
reference,
which
is
the
one
like
it
needs.
Okay,
but
we
also
create
a
swarm,
has
reference,
so
we
can
also
pull
that
object
out
of
out
of
swarm
and
for
the
comet
object.
A
We
do
something
similar.
We
we
just
wrap
it.
We
put
the
the
storm
has
of
the
previous
object
that
we
have
uploaded
and
also
the
the
parent
of
the
the
parent
has
of
the
other
part
of
the
parent
OB
that
we
also
have
uploaded
okay.
So
at
the
end
we
are
replicating
all
this
pointer
structure
in
a
way
that
firm
can
understand,
and
then
the
key
difference
is
that
when
we
have
to
put
the
branch
reference,
we
stored
that
branch
reference
into
a
smart
contact.
A
So
that
way,
the
smart
contract
is
going
to
be
managing
what
particular
branch
or
what
particular
commit
is
the
real
version
of
the
code
that
we
want
to
that.
We
want
to
publish
all
right.
We
want
to
show
everybody,
okay,
so
branch
one
could
be
master
so
every
time
that
we
commit
to
master,
then
we
are
really
saying
to
the
world
hey.
You
know
this
is
the
best
version
of
our
code
so
far
and
we
are
publishing
it
here.
A
So,
at
the
end,
that
small
block
in
there
is
a
small,
but
a
in
that
smart
contract.
You
are
really
defining
what
are
the
rules
of
engagement
of
your
open
source
community
around
your
code?
So
if
anyone,
if
anybody
can
push
who
has
permission
to
what
branch?
Okay,
whether
or
not
you
need
to
have
a
certain
amount
of
tokens
to
do
a
pull
request,
you
know
all
those
rules
you
can
configure
and
define
in
in
a
smart
contract.
A
A
But
it's
up
to
you
to
define
the
rules
of
engagement
of
your
of
your
community
okay.
So,
at
the
end
of
the
day,
what
you
get
is
a
team
of
developers
use
the
remote
helper,
the
get
plugin
to
talk
to
swarm
and
a
theorem
repository,
and
then
you
also
have
developers
using
the
web
the
distributed
application
to
to
visualize
the
code
in
a
more
friendly
way
and
also
work
in
the
review
process.
You
know:
do
I
merge.
This
pull
request.
A
Do
I
answer
to
this
issue,
all
those
things
you
do
on
the
on
the
web
interface,
okay,
okay,
so
with
all
this
explanation,
then
we
can
do
a
demo
and
see
how
that
how
that
looks.
So
what
we're
gonna
do
in
the
demo
is
we're
gonna
deploy
a
new
repository
which
is
actually
deploying
a
smart
contract.
Okay,
we're
going
to
take
a
look
at
that
smart
contract
with
him.
A
A
A
Okay,
good
enough,
okay,
so
this
simple
contract
has
just
two
functions
that
we
need
to
look
at.
Okay,
the
first
one
is
the
function
that
is
called
every
time
that
somebody
pushes
a
new
comment.
Okay,
this
is
update
ref
and
the
second
one
is
the
one
that
is
seldom
news
is
used
only
at
the
beginning
of
a
repository
usually-
and
you
use
it
to
say
what
branch
is
the
most
important
one:
okay
or
the
head
branch.
Usually
we
call
it
master,
but
it
could
be
anything
okay.
A
A
Okay,
so
in
this
case,
as
you
can
see
in
this
contract,
we're
defining
in
an
owner
of
the
repository
and
we
store
in
that
in
the
owner-
variable,
okay,
and
then
we
are
we're
requiring
that
in
this
particular
contract,
what
we're
saying
is
only
the
owner
can
modify
the
code
okay.
So
this
is
what
this
contact
is
about.
You
take
a
look
at
it
and
then
you
see
what
is
the
governance
model
of
this
of
this
repository?
It's
just
one
guy
that
that's
all
the
pushes!
A
Okay,
it's
enough
for
our
demo,
but
the
idea
here
is
that
it
could
have
a
more
complex
rules.
Okay,
it
could
check
if
you
have
enough
push
tokens
or
something
okay
or
that
do
you
have
enough
tokens
of
the
project
that
you're
working
on
whatever
okay,
that
is
up
to
you
to
decide
what
sort
of
contract
you
want
to
put
in
here.
Okay,
it
could
also
check
whether
or
not
you
are
in
a
set
of
approved
users.
A
A
A
A
A
Yeah
very
good
question:
you
actually
don't
have
to
use
a
smart
contract
stuff.
Okay,
the
the
architecture
of
ether
grid
has
what
is
called
a
registry
architecture.
One
of
the
registries
is
a
smart
contract,
a
theorem
smart
contract
registry,
which
is
what
I'm
demoing
today,
okay,
but
you
don't
have
to
use
the
smart
contract
register
you
could
use
a
local
registry,
for
example,
just
store
a
reference
in
your
disk
in
the
source
code.
We
have
an
implementation
of
a
local
registry
which
what
it
does
is
it's
not
going
to
a
smart
contract.
A
A
Okay,
I
think:
we've
got
this
mind:
okay,
okay,
so
I'm
going
to
copy
the
contract
that
others
that
came
out
and
I'm
gonna
go
to
my
console.
Okay,
so
nothing
different
than
getting
a
good
cloning
and
a
repository.
So
what
is
different
is
that,
instead
of
putting
in
SSH
colon
slash
slash
and
such
it's
going
to
be
a
custom
protocol,
okay,
so
it's
going
to
look
like
this.
Okay,
so
I'm
gonna
get
clone
ether
get
:,
that's
does
whatever
and
that's
the
contract,
others
that
we
just
deployed
so
the
first
step.
A
What
it
does
is
it
checks
the
capabilities
of
that
repository.
Okay,
because
the
because
of
the
modular,
contrary
textured
different
repositories
could
support
different
features.
Okay,
so
one
of
the
things
if
it
does
is
to
probe
what
kind
of
contact
is
it
okay,
but
in
this
case,
is
a
very
simple
one
and
one
of
the
things
that
would
be
the
same,
is
you
appear
to
have
clone
and
empty
repository?
Okay,
so
it
has
created
this
folder
and
these
four
letters
I
have
anything
so
it's
time
to
start
with
our
application.
A
A
It
has
a
hello
world
message:
okay,
it's
a
JavaScript
application
with
a
hello
world
message
and
we're
going
to
commit
this
to
our
contract
to
swarm
okay.
So
what
I
do
is
is
get
add.
This
is
a
regular,
get
commands
I'm,
not
doing
anything
strange
here,
so
I'm
going
to
add
main
DoDEA's
and
I'm
going
to
commit
this
with
a
message:
okay,
okay,
so
I
commit
this,
and
now
it's
a
comet,
but
on
my
local
machine
and
now
I'm
going
to
push
it
to
the
Internet
to
Twitter,
get
this
actually
pushing
to
swarm.
A
So
what
it's
doing
is
detecting
the
remote
head
is
not
set
promote
Hadees,
as
I
said
before
is
what
is
the
the
most
important
branch
in
this
case
master,
because
because
the
the
this
is
a
new
repository,
we
didn't
set
what
was
the
main
branch?
Okay.
So
that
is
the
first
thing
that
he
had
to
do
and
and
it
has
uploaded
the
content,
the
main
dot
JS
file
and
other
objects
to
to
the
repository.
So
we're
gonna
see
what's
happening
in
my
in
my
theorem
address.
A
Okay,
as
you
can
see,
they're
two
transactions
in
there,
one
of
the
trans-
well,
the
first
transaction
is
a
one-off-
is
the
first
time
that
you
commit
something
to
our
gate.
Repo
is
going
to
update
the
main
branch,
but
that
is
just
a
one
of
operation
and
then
the
second
one
is
the
actual
push
that
I
that
I
did
okay.
So
we
need
to
also
wait
for
this
to
mine,
not
not
yet
there.
So
we
have
to
wait
a
little
bit
until
it
gets
mine.
A
So
I'm
going
to
go
ahead
and
clone
it
again:
okay,
and
then
we
can
see
that
we're
retrieving
the
the
files
that
I
just
committed
okay,
so
there
you
go
downloaded
everything
and
there's
our
main
DoDEA's
file
in
there,
okay,
okay,
we
can
see
what
it
is
and
run
it
that's
our
application,
so
we
were
able
to
push
code
to
swarm
and
govern
it
with
a
with
a
smart
conduct.
I
could
do
this
push
because
I
was
the
owner
or
the
of
the
repository
as
as
as
expressed
in
this
in
this
smart
contract.
A
Okay,
otherwise
I
would
have
gotten
an
error
message
saying
that
I
am
not
authorized
to
push
that.
Okay,
okay.
So
now,
let's
take
a
look
at
how
it
looks
how
this
looks
on
the
web.
Okay,
so
I
have
a
development
server
running
on
my
computer,
and
this
is
how
it
looks
on
the
web.
Okay,
this
is
add
up,
though,
didn't
host
it
on
on
farm,
but
it's
a
static,
a
fully
static,
HTML
application
to
html5
application
that
can
be
run
totally
without
any
sort
of
server.
A
A
This
repo
test,
save
okay
and
now
I
can
open
it
here
and
then
I
can
I
can
browse
it
as
as,
if
any
any
other
tools
that
you
guys
are
familiar
with.
Okay,
I
could
click
on
the
on
the
file
and
see
the
content
of
the
file.
I
can
look
at
the
Komets
and
then
I
can
see.
This
is
the
first
comment
and
if
I
click
on
the
comment,
I
get
a
div
of
the
discussion
new
file,
so
nothing
nothing,
fancy
there,
but
I
get
a
default
of
the
file.
A
I
also
can
see
what
are
the
branches
that
are
in
my
play
in
this
case,
only
the
master
branch
is
there,
and
then
we
have
not
these
two
screens
the
issues
and
the
pull
requests
screens,
because
we're
still
this
is
the
work
in
progress,
but
the
idea
is,
we
also
have
all
the
issue
issue
tracking
facilities
in
there
and
the
pull
requests
as
well.
Okay,
you
could
have
all
the
different
pull
requests
in
there
to
approve
or
or
merge,
okay.
What
else
can
we
do
here?
A
For
example,
just
let's
take
a
look
at
another
repository
that
is
a
little
bit
more
complete
okay,
because
our
our
repository
was
only
one
commit.
Okay,
they
have
anything.
But
you
know
a
larger
triple
looks
like
this:
okay,
you
can
click
on
the
folders
browse
browse
code.
You
can
go
to
the
comets
and
you
click
on
any
commit.
Then
you
see
larger
diff.
You
know
with
all
the
things
that
we
are
used
to
seeing
github,
ok
and
again.
In
this
case,
for
example,
this
pre
has
two
branches
and
so
a
little
bit
more
more
interesting.
A
What
else
do
we
have
in
here?
So
one
of
the
things
that
we
also
have
mocked
for
now
is
the
create
repository
aspect.
You
could
see
the
creator
depository
functionality
by
me
manually
submitting
a
contract
to
to
the
cerium
robson
blockchain,
but
the
idea
would
be
to
make
it
very
easy
for
the
user
to
deploy
a
new
repository.
So
in
this
case
the
idea
is,
you
create
a
repository
and
it
asks
what
type
of
governance
model
you
want
for
your
Porsche
Tory.
A
You
could
have
a
basic
one,
which
is
only
you
are
able
to
commit
like
the
one
that
I
was
showing
you
before.
You
have
a
more
standard,
one
which
is
I
am
able
to
to
push
to
the
repository,
but
also
my
friends
or
colleagues
or
a
list
of
particular
people,
and
then
custom
would
be
write
your
own
contract
and
do
whatever
you
think
is
good.
Okay,
you
define
all
those
rules
in
there
and
also
all
the
things
that
I
uploaded
here.
Just
for
a
demo
is
our
own
repository.
A
We
host
it
there
as
well,
but
also
the
go
etherium
repository
is
here
so
here
you
can
see.
Well,
you
know
it's
a
good
report,
so
we
pushed
it
to
we
push
it
to
swarm.
So
it's
this
Corsten
itself,
I
think
that's
kind
of
cool
and
ok.
So
this
is
the
extent
of
the
demo.
So
let
me
go
back
to
the
presentation.
A
Okay,
so
roadmap
thinks
that
we
would
like
to
do
next.
We
would
like
to
complete
the
html5
dub
that
you
saw
okay,
so
it's
fully
functional
and
hassle
all
the
things
like
issue
and
PR
tracking
that
you
can
edit
code
online
that
you
don't
need
to
like
use
the
command
line,
get
to
edit
a
file
for
small
change
that
you
can
also
PR
merge
CPRS
on
the
on
the
web
application.
We
need
to
improve
the
performance
of
the
different
aspects
of
pushing
code
and
unloading
code.
A
We
want
to
also
provide
some
sample
contracts
that
are
a
little
bit
more
advanced
than
just
a
I
can
commit,
and
you
can't
okay
and
then
we
want
to
also
have
a
bounty
issue
management
built
in
into
the
whole
platform,
so
that
a
particular
team
can
incentivize
others
to
to
contribute.
Okay
with
whatever
system
they
come
up
with.
A
We
will
probably
need
some
sort
of
server-side
or
no
type
of
component
that
takes
care
of
indexing
and
searching,
and
things
like
that
that
a
browser
is
not
going
to
be
able
to
to
do,
but
in
essence,
I
would
say
that
the
roadmap
is
to
get
rid
of
the
gif
file
together.
Okay,
that
is
a
very
ambitious
goal,
but
the
idea
would
be
to
to
go
for
it
really.