In a nutshell, a bridge between the blockchain and the outside world.
in this thread, based on the Chainlink documentation, I summarize the main parts to get an idea in 5 minutes.
↓
Table of Contents:
· definition
· decentralized oracle networks
· smart-contract problem
· oracles are bridges
· oracles + smart contracts
· critical point
· decentralized oracles
· oracle types
· oracle reputation
· reputation frameworks
· oracle use cases
· conclusion
Definition
Oracles are entities that connect blockchains to external systems.
Based on the real-world input/output, oracles enable smart contract execution.
Oracles provide a way for the Web3 ecosystem to access:
- existing data sources
- legacy systems
- advanced computations
DONs
Decentralized oracle networks (DONs) enable the creation of hybrid smart contracts.
On-chain code and off-chain infrastructure are combined to support dApps that react to real-world events and interoperate with traditional systems.
Smart contract problem
Smart contracts have a problem:
They can't inherently interact with data/ systems outside their native blockchain environment.
Data stored on the blockchain is considered on-chain, and everything else is considered off-chain.
An Oracle is a bridge
Blockchains are isolated from external systems, and this is good.
They have:
- strong consensus on transactions' validity
- prevention of double-spending attacks
- mitigation of network downtime.
But they need an Oracle to operate with off-chain systems.
Oracles + Smart Contracts
Industries benefit from combining:
Oracles + Smart Contracts.
Oracles offer a gateway to off-chain resources but still uphold valuable security properties of blockchains.
Oracles expand the types of digital agreements that blockchains can support.
The Critical Point
So now we are at a critical point:
the data delivered by oracles to blockchains directly determines the outcomes of smart contracts
So it's critically important that the oracle mechanism is correct if the agreement is to execute exactly as expected because
Decentralized Oracles
The only way to prevent (again) a centralized point of failure and establish a real end-to-end decentralization, is using Decentralized Oracle Networks that combine:
oracle node operators + reliable data sources.
Oracles types
- Input Oracles: fetch data from the real world to the blockchain
- Output Oracles: send commands from Smart Contracts to real-world
- Cross-Chain Oracles: read/write info between different blockchains
- Compute-Enabled Oracles: provide decentralized services
Oracle Reputation
Reputation in blockchain oracle systems gives users the ability to monitor/filter between oracles based on different parameters
The oracles sign and deliver their data onto a public blockchain ledger, so the performance history can be analyzed/presented.
Reputation frameworks
They provide transparency for the accuracy/reliability of each oracle network and single node operator.
Users can then decide their oracles.
Oracle service providers can leverage their reputation to provide users more guarantees of their reliability.
Oracle Use Cases
These are some of the possible use cases for the Oracles:
The internet has produced a significant change in the way information is exchanged.
Oracle-based hybrid smart contracts are redefining the way the company exchanges value/enforces contractual arrangements, extending the blockchain's capabilities.
If this thread has been useful, follow @FrancescoCiull4 and share this one. Thank you.
One of the questions I get most often is:
"What are the steps to learn the basics of Docker?"
In this thread, I list the 10 steps that I think are optimal for a beginner.
There are no links or promotions here, just concepts.
/thread
↓
1) Understanding WHAT Docker is and what it isn't, what are the building blocks of it
2) Understanding what containerization is and why it is so important. Differences Containers/Virtual Machines
3) Install Docker on your operating system and make sure it works (`docker info`)
4) Take a look at "Docker Hub" and make a bit of practice using one image there (eg Nginx) and understand the basic commands: start/stop/list containers.
5) Understand how the components are made and their configuration: commands inspect/exec/logs.
The question I get most often about containerization is: "What is a container?".
Let's make it simple, with my 2 favorite definitions:
1. From a logical point of view, it's a single and packaged unit of software.
2. From a technical point of view, it's an isolated process.
↓
From a logical point of view, more understandable for a human, a container can be considered as a single unit of working software, with all its configurations and dependencies, packaged.
In this way, it can run quickly and reliably from one computer to another.
A container has its own dedicated filesystem, provided by an image.
The image contains:
-dependencies
-configuration
-binaries
-environment variables
-other important data related to the container to be instantiated.