ChainLink, an Overview and Our Focus
Firstly, we’d like to thank everyone that has put their personal time, effort, and cryptocurrency towards ChainLink’s success. I and our entire team are deeply grateful for the support we and our community have received towards solving the smart contract connectivity problem.
Defining the Smart Contract Connectivity Problem
A smart contract is a digital agreement that has been made tamper-proof by being run on a decentralized node network e.g. Ethereum; creating a more trustworthy, and therefore a superior form of digital agreement.
The Smart Contract Connectivity Problem, is the inability of a smart contract to interact with any external data feed, or other resource that is run outside the node network in which the smart contract itself is executed.
The decentralized nature of smart contracts that makes them tamper-proof, also removes their ability to access key contractual performance data, denying them the use of any & all web APIs, as well as precluding them from utilizing important existing outputs like bank payments. This lack of external connectivity is inherent to all smart contract networks, due to the method by which consensus is reached around blockchain transactions, and will therefore be an ongoing problem for all smart contract networks.
This lack of connectivity with external resources creates a large limitation for what a smart contract developer can build today. Without key inputs like data feeds to prove performance (IoT for insurance, market prices for securities, GPS about shipments, etc..), or key outputs (widely accepted bank payments), it becomes difficult to build smart contracts which have the functionality we’ve come to expect from a well made web/mobile application. If we examine the way a successful application like Uber is built, we see the application’s core code using a combination of key inputs (GPS data), and critical outputs (SMS & Payments). If we tried to build an application like Uber without access to these key building blocks, we’d have to build the inputs/outputs ourselves, in addition to the highly complex application itself. Making all of the building blocks that a good application relies on to come into existence is the work of multiple companies; providing accurate GPS data (Google), interfacing with telecoms for SMS (Twilio), and providing usable bank to bank payments (Stripe), are all critical building blocks which were not built by the companies that rely on them to make a working application. The ability for smart contract developers to easily access similarly useful building blocks for their decentralized application, is what we believe would be needed to enable the creation of increasingly more useful smart contracts.
The Solution is a Secure Blockchain Middleware
Luckily, the many inputs and outputs needed by a smart contract already exist in the form of the data feeds and APIs used by web/mobile applications. The problem we need to solve, is the ability for a smart contract to connect with these many external resources in a way that retains the smart contracts value for end-users; a tamper-proof digital agreement that is trustworthy. There should now be a secure, decentralized and tamper-proof way to trigger smart contracts with external events/data, while also sending key payment outputs.
ChainLink seems to provide a secure, decentralized and therefore tamper-proof “blockchain middleware”, while also being an easy way to access the multiple inputs and outputs needed by a complex smart contract. By greatly simplifying how smart contracts can securely access key off-chain resources, ChainLink accelerates the development of increasingly useful smart contracts.
Key Areas of Focus to Enable the ChainLink Network
Building ChainLink’s Improved Reference Implementation in Go
We’re currently focused on building the improved reference implementation of ChainLink, which is the foundation on which the extensive capabilities described in our white paper will be built. We’ve decided to write this improved main implementation in Go due to its security, scalability, and the growing community of developers applying Go to crypto use cases e.g. Ethereum’s popular Geth client. Our plan is to have an initial simplified implementation of Go ChainLink released in Q1 of 2018, at which point we plan to actively work with the larger open source community on improving and securing it to the point where it’s ready for active us on mainnet .
We have hired, and are continuing to hire both Go developers, and active detail oriented developers who want to solve complex problems in the smart contract space, are open to learning a new language like Go, or know solidity, and are interested in working on ChainLink Core’s open source code (MIT License). If you are interested in the problem we’re solving, we are actively meeting with developers familiar with our Github, and via our Gitter.
Creating a Large Network of Immediately Useful ChainLinks
We currently have over 19,000 people that have told us they’d like to be ChainLink Node Operators; even if there is a small conversion rate from this large initial group, we expect that we’ll be able to have a sufficiently large amount of independent node operators to provide a fully decentralized oracle network. We’re glad to say that having a large ecosystem of active ChainLink Node Operators is something we seem to be on track to deliver at this point.
In addition to ChainLink Node Operators that run each independent node, there are also multiple developers in our community writing the code that connects a ChainLink to a specific off-chain resource/API. With a minimal amount of code any API’s specific requests/responses can become a ChainLink that securely interfaces with requesting contracts on various networks. We’ve made it easy to write a ChainLink Adapter in any language, and know that the core/adapter model works well for making ChainLinks around both web APIs, and enterprise standards like SWIFT payment messages. If you’re a developer that wants to give smart contracts on leading networks like Ethereum access to an API you’re familiar with, we’re making it easy for you to provide that access to many contracts at once. If you need help building a ChainLink, please email firstname.lastname@example.org, or chat with us and the other developers already building ChainLinks on our Gitter.
ChainLink’s Role in the Smart Contract Ecosystem
Enabling Smart Contract Developers to Build Better Applications
We’re currently working with multiple smart contract development teams on their use of ChainLink as both a way to add external data to their own contracts, and/or for use by contracts generated on their own platform. We’re excited about working with these great teams, and are thrilled to see them using ChainLink as a solution to the smart contract connectivity problem. We’re also actively meeting with, and doing our best to be helpful to the smart contract developers, fintechs, insurtechs and various other startups making the next generation of exciting new decentralized applications. We’re also working with larger technical teams applying smart contracts to an existing company’s back-end, as well as the teams building smart contracts in private networks. These larger teams commonly benefit from ChainLink’s ability to help keep key transactional data private using off-chain computation, connecting their contract to the data feeds they already rely on, enable payments using their existing payment methods, and allowing their current back office systems to connect with smart contracts much more easily. We are continuing to work on the best ways to connect large existing systems and their underlying standards to smart contracts, and are eager to help larger technical teams connect their existing systems to various contracts using the standards they rely on for key operations like payment e.g. SWIFT Messages.
As a result of our ongoing work with agile smart contract development teams, payment networks, banks, and financial institutions, we’re making ChainLink useful for technical teams of all sizes. If you’re working on a smart contract that needs external inputs/outputs, we’re here to help, feel free to email us at email@example.com, or signup to be contacted about how we can help you quickly connect your smart contracts to a key off-chain resource.
Providing Access to Data, Payments and Many Other API Services
We believe that smart contracts, and blockchain-based networks are on track to overcome the total value transacted through the existing internet. If blockchain-based logic in the form of smart contracts does become the method by which large amounts of value is transacted, this new form of digital agreement will need data inputs, payment outputs, and various other API services, just like today’s centrally run web applications do. As this new infrastructure emerges, the data, payments and various other API-based services that enable widely used smart contracts to succeed, will be in a superior competitive position. Looking at a historical example like PayPal, and its rise as a widely used payments service for the internet, due to its use in Ebay’s P2P ecommerce web application (a collection of centrally run digital agreements); we believe that being a service used by widely used contracts built on this newly formed infrastructure, can be the inflection point for wider adoption by other contracts on this newly emerging infrastructure.
The dynamic of a successful application’s key building blocks being widely replicated is actually much more prevalent in smart contracts than traditional software, web, or mobile development. The public nature of smart contract code, and the “copy paste” nature of contracts in general makes it a common occurrence that a successfully used smart contract becomes widely copied. Today’s popular token contracts are a good example of this, with many token contracts coming from Open Zepplin’s code, and then being widely copied as a result of an initial successful implementation by others. This dynamic means that if a data, payments, or any other service is used as a key building block of a highly successful smart contract, it is most likely that this key input/output will be copied along with the rest of the contract. This dynamic presents a large opportunity for the services that enable highly successful contracts; the large scale copying of a successful contract can result in any API service critical to that contract quickly acquiring a market leading amount of usage, across all the copied contracts, and the subsequent copies of those contracts.
There is now a large opportunity to be the key online services which highly successful smart contract/decentralized application rely on to function properly, bringing a large amount of volume and wider usage to an API’s provider. We’re currently working with multiple data providers, payment networks, and various API services, which we are actively enabling to be these key building blocks for the next highly successful smart contract. If you have data feeds, payments, and/or APIs which you want to sell to smart contracts, we’re here to make that process easy to implement; please feel free to email us at firstname.lastname@example.org, or sign-up to be contacted about your API.
Enabling the Evolution of Smart Contracts
Our entire team, and the larger community we’ve been lucky enough to attract are committed to moving smart contracts into the next step of their evolution. We strongly believe that smart contracts which interact with key off-chain events/data, and are able to use widely accepted payment methods, are the next critical step in this technology’s development. Our entire team is deeply grateful for all the support we’ve received to help expand what smart contracts are capable of, and thank everyone for their moral, technical, and non-technical support; we do very much appreciate all of it.
If you’ve just recently heard of the problem we’re solving, and are interested in seeing it solved for yourself or others, we do encourage you to join us; we’re an inclusive, open, and respectful community that’s focused on solving this problem well. For general questions, email us at email@example.com, and/or request an invite to our Slack, for technical discussions about ChainLink, please review our Github, and/or join our Gitter Channel.