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:
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
- A Next Generation Smart Contract and Decentralized Application Platform (Vitaliks ANN post on lambda-the-ultimate)
Which took me down the rabbithole and led to the creation of this resource.
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.
Programming Semantics for Multiprogrammed Computations
The semantics are defined for a number of meta-instructions which perform operations essential to the writing of programs in multiprogrammed computer systems. These meta-instructions relate to parallel processing, protection of separate computations, program debugging, and the sharing among users of memory segments and other computing objects, the names of which are hierarchically structured. The language sophistication contemplated is midway between an assembly language and an advanced algebraic language.
What Are Capabilities?
The capability paradigm is about access control. When a system, such as an OS or a website, is presented with a request for a service it provides, it needs to decide if it should actually do what the requestor is asking for. The way it decides is what we’re talking about when we talk about access control. If you’re like most people, the first thing you’re likely to think of is to ask the requestor “who are you?” The fundamental insight of the capabilities paradigm is to recognize that this question is the first step on the road to perdition. That’s highly counterintuitive to most people, hence the related controversy.
- wikipedia- Object-capability model
- Awesome Object Capabilities and Capability-based Security
- Linked Data Capabilities
- Cosmos Object-Capability Model
- Ethereum Object Capabilities
- Security in Scala: Using Object Capabilities
- DIDAuth + Obj. Cap.
- History of Object Capabilities
https://www.infoq.com/interviews/johnson-armstrong-oop/ - anaphor
Then, my thesis supervisor said “But you’re wrong, Erlang is extremely object oriented”. He said object oriented languages aren’t object oriented. I might think, though I’m not quite sure if I believe this or not, but Erlang might be the only object oriented language because the 3 tenets of object oriented programming are that it’s based on message passing, that you have isolation between objects and have polymorphism.
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 of market-based distributed secure computing; and the open-source coordinator of the E programming language. He also designed the Caja programming language.
- Mark Miller: Agoric and the Decades-Long Quest for Secure Smart Contracts. -Epicenter Podcast
The Agoric Papers
These three papers by Mark S. Miller and K. Eric Drexler appeared in The Ecology of Computation, Bernardo Huberman (ed.) Elsevier Science Publishers/North-Holland, 1988.
- Nick Szabo - Distributed Wikipedia Powered by IPFS
- Nick Szabo’s Essays, Papers, and Concise Tutorials - Nick Szabo’s Home Page
- Smart Contracts Glossary ‘95
- Smart Contracts: Building Blocks for Digital Markets - Nick Szabo 1996
- Formalizing and Securing Relationships on Public Networks- Nick Szabo
Let’s Talk Bitcoin! #246 Smart Contracts with Nick Szabo
Adam, Stephanie and Andreas spend an hour with crypto-scholar of note Nick Szabo in a wide ranging discussion covering Smart Contracts, Bitcoin and Blockchains.
A Technology, Legal & Regulatory Introduction — Foreword by Nick Szabo
- Prepared by: Smart Contracts Alliance — In collaboration with Deloitte
“the most secure environments for smart contracts are the most mature public blockchains, which are designed for trust minimization instead of trusting the often private and insecure system found resident with a central party” @NickSzabo4
- Prepared by: Smart Contracts Alliance — In collaboration with Deloitte
- A Formal Language for Analyzing Contracts ‘02
- Wet Code and Dry ‘06
Elang and other Early Work
- wiki.c3.com - E Language An ObjectCapabilityLanguage
- Mailing list ARChives— e-lang The E capability-secure scripting language
- 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
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:
(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.
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  attacks.
ghosthamlet - news.ycombinator
The E on Common Lisp Project website is down, code on github: https://github.com/kpreid/e-on-cl
- 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…
RSK, bitcoin´s smart contract platform.
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
- 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
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—
What’s in a Name? — The Disambiguation of Smart Contracts
2014 and Gavin Wood takes the stage at the auditorium in Barclays Whitechapel Accelerator space to describe a brave new world of…
- They Might be Smart, but these contracts need to be more Secure ‘16
Scanning Live Ethereum Contracts for Bugs - ‘16
In this post, we examine just how prevalent the recently discovered “unchecked-send” bug is in real, live, deployed Ethereum contracts, with the aid of an automated analysis
The Future of the Blockchain: my DevCon IV talk. – Mattereum - Humanizing the Internet
This year October 31 at the DevCon IV I gave the first talk on the Smart Property Register — the Mattereum innovation, which I think is…
Researchers: Roughly 60% of Ethereum smart contracts have never been interated with
A group of researchers from the Northeastern University and the University of Maryland published a paper detailing their analysis of Ethereum’s contract topology. The researchers modify Ethereum’s geth client to log how users and contracts interact with one another. The r…
Ethereum in BigQuery: a Public Dataset for smart contract analytics
Ethereum transactions, like some other cryptocurrencies, are stored in a public ledger. Learn how to analyze that ledger in BigQuery to better understand transaction and even contracts history.
Ricardian - Legal
- On the intersection of Ricardian and Smart Contracts
Smart Contracts, Dumb Signatures: Why Blockchain-based signatures
This is not legal advice, please seek professional guidance from an attorney.
Defining smart contracts – Craig Wright – Medium
When contrasting contractual principles, it is clear that where a contract is not required to be in writing (Columbia Law Review, Apr…
The application, scope and limits of Letters of Indemnity in Bitco…
The Bill of Lading is a document unique document as its negotiability fulfils several purposes. These documents have led to a…
- Coalition of Automated Legal Applications
- WebOfTrustInfo/rwot2-id2020 - Smarter Signatures
- Smart Signatures—Experiments in Authentication -Christopher Allen -SlideShare
- Simplicity Itself for Blockchains
- Near Future of Programming Languages
- Stephen Diehl (@smdiehl) ‘17
Languages - Platforms
List of awesome platforms for smart contracts. Contribute to Overtorment/awesome-smart-contracts development by creating an account on GitHub.
Comparison of Smart Contract Platforms – Hacker Noon
Ivy-lang, Plutus, Solidity, Scrypto, Michelson, Hoon, Rust, …
Meet ‘Spedn’ — A Smart Contract Programming Language for Bitcoin Cash
- On Wednesday, a developer called Tendo Pein announced the launch of a new smart contract programming language for the Bitcoin Cash network. Pein said “Spedn,” a BCH-based language, is designed for explicitness and safety while having a syntax similar to the C programming …
Cardano Introduces Smart Contracts For Financial Transactions
Marlowe, a new smart contract language for Cardano aimed primarily at financial contracts on the blockchain was revealed some days ago. The language has been developed by researchers from IOHK, a company that are the main developers and maintainers of the blockchain Cardano.
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.
Learn Solidity — The Ethereum smart contract programming language
In the course of time that I am involved in Ethereum development, I have noticed that not much information exists yet to learn Solidity…
NEO Smart Contract development
My first Smart Contract on NEO blockchain in C#: Open Visual Studio 2017. In Team explorer click on Clone and insert the neo-compiler link: https://github.
Blockchain Unleashed: IBM Blockchain Blog
Whether you’re new to smart contracts on blockchain, or you’re looking for an in-depth explanation, this guide is a great place to start.
- Building a non-fungible token sales smart contract -Selling non-fungible tokens and the ERC721 standard
Philip Daian | Smart Contract Security - Incentives Beyond the Launch
To mitigate security issues that were quickly evident in the deployment of smart contracts, developers have tried a wide variety of security techniques. Standard when deploying new contracts is…
Preparing for a Smart Contract Code Audit – ConsenSys Media
If you are planning to launch a project on the Ethereum blockchain, you probably know the importance of a third-party code audit. An…
Solidified - Audit Platform for Smart Contracts
A platform for crowd-sourced review of smart contracts, where any developer can bring their contract for review with a large network of verified blockchain experts.
The Truth about Smart Contracts – Jimmy Song – Medium
Much like the words “blockchain”, “AI” and “cloud”, “smart contract” is one of those phrases that get a lot of hype.
Smart contracts: Turing completeness & reality – Hacker Noon
The meltdown of “The DAO” and, more recently DDOS attacks on Ethereum have spurred a debate on the wisdom of “Turing completeness” in…
Bribery-Resistant Voting Schemes for Smart Contracts
This is joint work/post with Ian Miers, Oded Naor, and Ari Juels. Recently, a number of proposals and applications have evolved on Ethereum that require voting; from contracts that use voting-based DAOs for governance or other administrative tasks, to boardroom-like votes to…
Why Many Smart Contract Use Cases Are Simply Impossible
Coin Sciences CEO Gideon Greenspan attacks common misconceptions that he argues are contributing to outlandish expectations for smart contracts.
Deloitte Insights - Upgrading blockchains
Paper contracts can take weeks to travel around the globe, while digital documents are uncomfortably easy to forge. Is there a way to automate transactions to make them smoother, more efficient, and more secure for all parties? Leaders are looking at blockchain and smart cont…
They Might Be Smart, But These Contracts Need to Be More Secure
A certification process can provide participants in smart contracts with greater assurances they won’t lose their money (see: the DAO). But in distributed systems, the true test of security comes when software is released into the wild.
- Most Cited Smart Contracts Publications
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.
Share onTwitter Facebook LinkedIn Reddit
SUPPORT THE CAUSE
Feel free to contact me!
Especially if you're interested in bitcoin related content and/or research!