Smart Contract History and Related Resources

14 minute read

I was writing this basic introduction, Smart Contracts: Use cases, and DApps

Smart contracts are self-executing code that defines and executes an agreement between multiple parties. That code contains simple “if/when…then…” statements executed within a distributed network that achieves consensus on transactions made within it.

When I came across:

  • lambda-the-ultimate.org/node/5003#comment-94645
    • A Next Generation Smart Contract and Decentralized Application Platform (Vitaliks ANN post on lambda-the-ultimate)

      Smart contracts and related languages have a long discussion history on LtU

Which took me down the rabbithole and led to the creation of this resource.

Source Crypto

I collect links in the SourceCrypto Discord Server #smart-contracts channel, and occasionally I export them to this website:

You can expect that page and the discord server to have information that isn’t on this page, as exporting the contents of a discord server is faster than updating each page individually.

Smart Contract History


VatA (the donor) deposits a reference to gift at nonce in VatC’s (the host’s) from-VatA-for-VatB table, and returns a Vine for the gift-entry.

Object Capabilities (ObCap)

The object-capability model was first proposed by Jack Dennis and Earl C. Van Horn in the 1966 paper.

Object Capabilities are new to me, and I’m just placing any related information here for now until I make them a page of their own.

Basically this research starting in the 60’s, with much work throughout the 80’s (that is not well dowcumented online), culminating with Nick Szabo’s work, and E Language. Object Capabilities are central to the original line of work the term “Smart Contracts” was used in reference to, which was somewhat misappropriated by Vitalik.

Mark S Miller

Mark S. Miller is an American computer scientist. He is known for his work as one of the participants in the 1979 hypertext project known as Project Xanadu; for inventing Miller columns; as the co-creator of the Agoric Paradigm[1] of market-based distributed secure computing; and the open-source coordinator of the E programming language. He also designed the Caja programming language.

Miller earned a BS in computer science from Yale in 1980 and published his Johns Hopkins PhD thesis in 2006.[2] Previously Chief Architect with the Virus-Safe Computing Initiative at HP Labs, he is now a research scientist at Google[3] and a member of the ECMAScript (JavaScript) committee.[4] - Wikipedia

Agoric

Nick Szabo

Elang and other Early Work

  • erights.org
  • wiki.c3.com - E Language An ObjectCapabilityLanguage
  • Mailing list ARChives— e-lang The E capability-secure scripting language
  • monte.readthedocs.io
    • Monte is a programming language inspired by the E and Python programming languages. Monte aims to be:
    • A reliable scaffold for secure distributed computing
    • An example of capability-safe programming language design
    • A model for misuse-resistant programming
  • news.ycombinator.com - E Programming Language
    • kentonv

      I’m always astounded by the depth to which Mark has explored this space. On more than a few occasions, I’ve come up with an interesting idea for a new protocol or programming language feature or piece of distributed systems infrastructure and told Mark about it, only to find he had already thought of that problem and discovered and solved several issues I hadn’t even thought about yet.

      Cap’n Proto RPC https://capnproto.org/rpc.html is based on E’s network protocol, CapTP, e.g. utilizing The Four Tables:

      http://erights.org/elib/distrib/captp/4tables.html

      https://github.com/capnproto/capnproto/blob/master/c++/src/capnp/rpc.capnp#L116

      (You can think of this design as an extension of the file descriptor table concept in Unix, except that both sides may export descriptors to the other side (so that calls can flow either way), and either side can be responsible for assigning the numeric descriptor value for any particular description (which makes it easier to compensate for a high-latency transport).)

      When I first told Mark I was working on an object-oriented RPC protocol, he insisted I visit him and listen while he explained all this to me, and boy am I glad he did… would have taken a lot longer for me to figure it out myself.

      It’s crazy that most of the content of erights.org was written over 10 years ago – I think some of it goes back to the 90’s, even.

    • 7373737373

      Modern smart contract systems should learn a lesson or five from it, most importantly, (object) capability security.

      Why? Because it lets programs handle permissions like other objects, keeping them apart and thus reducing the attack surface and preventing Confused Deputy [0] attacks.

      https://en.m.wikipedia.org/wiki/Confused_deputy_problem

    • ghosthamlet - news.ycombinator

      The E on Common Lisp Project website is down, code on github: https://github.com/kpreid/e-on-cl

      e-on-javascript: https://github.com/kpreid/e-on-javascript

Bitcoin

  • Yes, Bitcoin Can Do Smart Contracts and Particl Demonstrates How The Bitcoin blockchain is not known for its ability to enable smart contracts. In fact, most developers creating smart contracts use a different blockchain, like Ethereum. But the truth is that the Bitcoin protocol can be used to create smart contracts. Particl.io, the blockc…
  • Scriptless Scripts: How Bitcoin Can Support Smart Contracts Bitcoin’s capacity is limited. Meanwhile, smart contracts can be resource intensive. So even though Bitcoin has always supported basic smart contract functionality, the two have never been a natural match.But a recent topic of research spearheaded by Blockstream mathematici…
  • http://www.rootstock.io/

    RSK, bitcoin´s smart contract platform.

Colored Coins

  • Colored Coins - BitcoinX - Vitalik Buterin, Meni Rosenfeld

    By the original design bitcoins are fungible, acting as a neutral medium of exchange. However, by carefully tracking the origin of a given bitcoin, it is possible to “color” a set of bitcoins to distinguish it from the rest. These bitcoins can then have special properties supported by either an issuing agent or by public agreement, and have value independent of the face value of the underlying bitcoins. Such colored bitcoins can be used for alternative currencies, commodity certificates, smart property, and other financial instruments such as stocks and bonds.

    Because colored coins make use of the existing Bitcoin infrastructure and can be stored and transferred without the need for a third party, and even be exchanged for one another in an atomic transaction, they can open the way for the decentralized exchange of things that are not possible by traditional methods. In this paper we will discuss the implementation details of colored coins and some of their use cases.

  • Colored Coins Whitepaper 2.0 - Google Doc
  • https://en.bitcoin.it/wiki/Colored_Coins
  • Making Sense of Colored Coins
  • Godfather of Ethereum

    About a year and a half ago in autumn 2013, I was working as the lead developer with Vitalik Buterin (who later became the initiator of the Ethereum project) on another project with the name ‘Keidom’ (now called ascribe.io). The idea behind Keidom/Ascribe was to develop a custom colored-coin web-wallet for registering and transfering digital art in a secure way, based on the Bitcoin blockchain, with build-in proof-of-existence. We developed a working prototype during September and November 2013.

  • Could This Holy Bitcoin Trinity Revive Colored Coins? -2014

Ethereum

The short version is that Vitalik started Ethereum after a few attempts to integrate colored coins with Bitcoin.

  • Crypto Bites - A Chat with Ethereum Founder

    So what actually happened was that back in maybe October 2013, I spent some time working on projects like colored coins and Mastercoin, so these were the existing layer twos that were trying to kind of extend Bitcoin with more advanced functionality, and at one point I realized that, hey, you could replace these five features with one other feature by just basically having a programming language instead of these five specific different transaction types. And it kind of came over time.

    The first thing I did was I made a proposal to Mastercoin that would replace basically five of the transaction types they have with a programming language designed to express financial contracts between two parties. So you could do binary options, contracts for different bets—

  • ethereum/wiki/wiki/White-Paper

DAO

After DAO

Resources

Smart Signatures

*Transcript

Languages - Platforms

Learn-BUIDL

This page isn’t really about learning how to do smart contracts, but more about the history and different aspects of smart contracts. However, I have these links, and I’ll throw them here until I make a page devoted to learning how-to.



ETC

Literature

Resources

  • https://en.bitcoinwiki.org/wiki/Smart_contract

    Smart contract (also self-executing contract, blockchain contract, or digital contract) is an electronic algorithm intended for the automation of the contract execution process in the blockchain. The general idea of smart contracts is to exclude divergences in the treatment …

  • OpenLaw — A free legal repository

    We are home to a passionate group of people, technologists, and dreamers committed to rebuilding the legal industry.

  • Investopedia — Smart Contracts

    Smart contracts are self-executing contracts with the terms of the contract between buyer and seller directly written into lines of code.

Updated: