
ZeppelinOS: tools for smart contract applications - demianbrener
https://blog.zeppelin.solutions/introducing-zeppelinos-the-operating-system-for-smart-contract-applications-82b042514aa8
======
Rmilb
Standard peer reviewed libraries for the new world of smart contracts is
sorely needed. Hopefully the increased complexity does not increase the gas
costs of the contracts too much. I think most devs would trade higher gas
costs for a more secure platform to develop on. Anyone who lost funds in the
parity wallet hack would probably agree.

[https://www.coindesk.com/30-million-ether-reported-stolen-
pa...](https://www.coindesk.com/30-million-ether-reported-stolen-parity-
wallet-breach/)

~~~
hrpnk
> Hopefully the increased complexity does not increase the gas costs of the
> contracts too much

It's possible to save gas by pulling in libraries' code into the contracts via
the "internal" keyword [0]. This way JUMP will be used instead of
DELEGATECALL.

Peer reviewed libraries will definitely help to make the platform more secure.
However, the engineers decide whether to use libraries or not. What's needed
is more discipline and willingness to raise the overall quality level of smart
contracts and DApp development.

Writing software that handles money is different from some random web app,
where bugs can be quickly fixed. We see some ICOs using OpenZeppelin [1] for
their contracts, using practices like continuous integration and measurement
of code coverage. However, we need much more quality-oriented practices to
become widespread like mutation testing. In the current environment,
developers are often more motivated to participate in bug bounties or exploit
already deployed code, rather than contribute to the ecosystem/tooling.

[0]
[http://solidity.readthedocs.io/en/develop/contracts.html#lib...](http://solidity.readthedocs.io/en/develop/contracts.html#libraries)

[1] [https://medium.com/@bocytko/would-you-trust-your-money-
to-a-...](https://medium.com/@bocytko/would-you-trust-your-money-to-a-smart-
contract-3581063d52b1)

~~~
Rmilb
Thanks for linking docs

------
hossbeast
Sounds interesting and important, but you probably need a new term for this
category of software. "OS" is taken, and it means something else.

~~~
xellisx
Also it's built on top of Ethereum Virtual Machine. Quick look at
[http://ethdocs.org/en/latest/introduction/what-is-
ethereum.h...](http://ethdocs.org/en/latest/introduction/what-is-
ethereum.html), which calling that a VM from what I read isn't screaming VM to
me, more like a distributed computing application.

~~~
tom_mellior
Which sense of virtual machine do you mean? There are already at least two.
One is a virtualization thing like VMware. Ethereum is not that. The other
sense is a bytecode interpreter/compiler like the Java Virtual Machine.
Ethereum is like that. Except that it duplicates computations across many
physical machines.

------
sauravt
I'm a big fan of Zepplin devs and the open source work they have been putting
out there since the early days. Their medium posts are a goldmine for any
beginner developer looking to develop DAPPs.

~~~
currymj
it's pretty hard to write even a simple smart contract that doesn't have
horrible vulnerabilities. far harder, I would say, than writing C code that
can't be buffer-overflowed on an old system with no protections in place. and
solidity the language does NOT make this any easier. read all the resources
you can. there are really counterintuitive best practices.

the reason for all these hacks is not stupidity or laziness of the developers.
the EVM execution model just makes it very easy to write vulnerable code.

~~~
heliumcraft
Quite the exaggeration, this silly meme has to stop. You make it sound like
writing even a hello world would have horrible vulnerabilities or something.
There are thousands of perfectly safe contracts deployed, one can't take some
isolated incidents and make such conclusions from such a small sample.

~~~
nosuchthing

      If the creator of Solidity, Gavin Wood, cannot write a 
      secure multisig wallet in Solidity, pretty much confirms 
      Ethereum is hacker paradise. 
    

[1] [https://t.co/WAR3eltfWl](https://t.co/WAR3eltfWl)

[2] [https://www.cryptocoinsnews.com/hackers-seize-32-million-
in-...](https://www.cryptocoinsnews.com/hackers-seize-32-million-in-parity-
wallet-breach/)

~~~
heliumcraft
That's tweet is factually incorrect.

Gavin Wood DID NOT write the change that caused that bug, he was not the
assigned reviewer either.
[https://github.com/paritytech/parity/pull/3773](https://github.com/paritytech/parity/pull/3773)

~~~
nosuchthing
Gavin Wood is the designer of solidarity and the founder of Parity.

[https://en.wikipedia.org/wiki/Solidity](https://en.wikipedia.org/wiki/Solidity)

[http://gavwood.com/](http://gavwood.com/)

~~~
yarrel
Yes but that doesn't mean that they wrote this particular code. Authorship
isn't transitive.

------
dvcc
So if I read this right, I am supposed to trust a contract that sits on top of
a mutable 'OS' that is managed by the community? I feel like all of these
contract-as-code groups really need to have a lawyer on their team as well;
for some reason, it seems like developers believe they understand the purpose
of financial/other contracts and how they're actually used.

Would you sign a contract that references a contract that can be changed at
anytime without your agreement?

~~~
spalladino2
First of all, upgrades are opt-in, so you can build on top of the OS and only
switch to a new kernel version under certain conditions, such as if all
parties in the contract agree.

Also, keep in mind that financial contracts are not subject to hacks, unlike
smart contracts, as we have seen several times. One of the goals of
upgradeability is the possibility to roll out security patches as needed.

------
themanual
how does this compare to Tezos?

~~~
edjere
Tezos and zeppelinOS are very different things. zeppelinOS is building an
operating system on top of the Ethereum Virtual Machine to provide secure
infrastructure for the development of smart contract applications. A
technology that is still being developed but used by thousands of developers,
and maturing into it's next phase. Tezos is building a new blockchain with a
different infrastructure altogether.

~~~
bshimmin
_Millions_ of developers are working with Ethereum?

~~~
edjere
Thousands! Little typo over there. Hopefully soon they will be millions :-)

------
lurchpop
sounds the same as EOS

------
mattl
What about this is an operating system?

~~~
edjere
It's an operating system insofar as it's a layer of services on top of the
"bare metal" that is the EVM. Through those services it allows the development
of complex applications in the same way a normal OS does.

~~~
mattl
How does that differ from installing a web framework, or an application? That
doesn't seem like an operating system to me.

~~~
spalladino2
Good question. Both libraries and frameworks (the main difference between the
two being the inversion of control) are addenda to _your_ application, aimed
at providing more features and building blocks to set up more complex
behaviours.

zOS takes this one step further, including not only libraries for SC
development, but also aiming at defining interoperability standards, mechanics
and economics for having independent contracts _interact_ between them as
independent actors (or processes, if you will) on a shared computing space
that is the blockchain.

I think the key here in terms of semantics is that zOS is not just an
Operating System, but rather an Operating System _for the blockchain_. And
when we go there, we don't have many definitions available, but are rather
waiting to be made.

