# Learn

## Introduction

## What is PUT?

PUT is an open source project implementing a new, high-performance, permissionless blockchain.&#x20;

## Why PUT?

It is possible for a centralized database to process 710,000 transactions per second on a standard gigabit network if the transactions are, on average, no more than 176 bytes.&#x20;

A centralized database can also replicate itself and maintain high availability without significantly compromising that transaction rate using the distributed system technique known as Optimistic Concurrency Control \[H.T.Kung, J.T.Robinson (1981)].&#x20;

At PUT, we are demonstrating that these same theoretical limits apply just as well to blockchain on an adversarial network.&#x20;

The key ingredient?&#x20;

Finding a way to share time when nodes cannot rely upon one another.&#x20;

Once nodes can rely upon time, suddenly \~40 years of distributed systems research becomes applicable to blockchain!

> Perhaps the most striking difference between algorithms obtained by our method and ones based upon timeout is that using timeout produces a traditional distributed algorithm in which the processes operate asynchronously, while our method produces a globally synchronous one in which every process does the same thing at (approximately) the same time.&#x20;
>
> Our method seems to contradict the whole purpose of distributed processing, which is to permit different processes to operate independently and perform different functions.&#x20;
>
> However, if a distributed system is really a single system, then the processes must be synchronized in some way.&#x20;
>
> Conceptually, the easiest way to synchronize processes is to get them all to do the same thing at the same time.&#x20;
>
> Therefore, our method is used to implement a kernel that performs the necessary synchronization--for example, making sure that two different processes do not try to modify a file at the same time.&#x20;
>
> Processes might spend only a small fraction of their time executing the synchronizing kernel; the rest of the time, they can operate independently--e.g., accessing different files.&#x20;
>
> This is an approach we have advocated even when fault-tolerance is not required.&#x20;
>
> The method's basic simplicity makes it easier to understand the precise properties of a system, which is crucial if one is to know just how fault-tolerant the system is. \[L.Lamport (1984)]

Furthermore, and much to our surprise, it can be implemented using a mechanism that has existed in Bitcoin since day one.&#x20;

The Bitcoin feature is called nLocktime and it can be used to postdate transactions using block height instead of a timestamp.&#x20;

As a Bitcoin client, you would use block height instead of a timestamp if you don't rely upon the network.&#x20;

Block height turns out to be an instance of what's being called a Verifiable Delay Function in cryptography circles.&#x20;

It's a cryptographically secure way to say time has passed. In PUT, we use a far more granular verifiable delay function, a SHA 256 hash chain, to checkpoint the ledger and coordinate consensus.&#x20;

With it, we implement Optimistic Concurrency Control and are now well en route towards that theoretical limit of 710,000 transactions per second.

## Documentation Overview

The PUT docs describe the PUT open source project, a blockchain built from the ground up for scale.&#x20;

They cover why PUT is useful, how to use it, how it works, and why it will continue to work long after the company PUT closes its doors.&#x20;

The goal of the PUT architecture is to demonstrate there exists a set of software algorithms that when used in combination to implement a blockchain, removes software as a performance bottleneck, allowing transaction throughput to scale proportionally with network bandwidth.&#x20;

The architecture goes on to satisfy all three desirable properties of a proper blockchain: it is scalable, secure and decentralized.

The architecture describes a theoretical upper bound of 710 thousand transactions per second (tps) on a standard gigabit network and 28.4 million tps on 40 gigabit.&#x20;

Furthermore, the architecture supports safe, concurrent execution of programs authored in general-purpose programming languages such as C or Rust.

## What is a PUT Cluster?

A cluster is a set of computers that work together and can be viewed from the outside as a single system.&#x20;

A PUT cluster is a set of independently owned computers working together (and sometimes against each other) to verify the output of untrusted, user-submitted programs.&#x20;

A PUT cluster can be utilized any time a user wants to preserve an immutable record of events in time or programmatic interpretations of those events.&#x20;

One use is to track which of the computers did meaningful work to keep the cluster running. Another use might be to track the possession of real-world assets.&#x20;

In each case, the cluster produces a record of events called the ledger. It will be preserved for the lifetime of the cluster.&#x20;

As long as someone somewhere in the world maintains a copy of the ledger, the output of its programs (which may contain a record of who possesses what) will forever be reproducible, independent of the organization that launched it.

## What are PUTs?

A PUT is the name of PUT's native token, which can be passed to nodes in a PUT cluster in exchange for running an on-chain program or validating its output.&#x20;

The system may perform micropayments of fractional PUTs, which are called lamports.&#x20;

They are named in honor of PUT's biggest technical influence, Leslie Lamport.&#x20;

A lamport has a value of 0.000000001 PUT.

## Disclaimer

All claims, content, designs, algorithms, estimates, roadmaps, specifications, and performance measurements described in this project are done with the author's best effort.&#x20;

It is up to the reader to check and validate their accuracy and truthfulness.&#x20;

Furthermore, nothing in this project constitutes a solicitation for investment.
