Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix broken links #6

Closed
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions 04-protocol-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ It turns out, solving this problem means much more than just getting decentraliz

The Ambients protocol connects decentralized applications and networks by defining a programming model for distributed programs and a peer-to-peer distribution and computation network to run and share them.

Programs leveraging the Ambients protocol are turned into distributed executables that can be executed safely in the Ambients network. This lets the programs move where the data is. Sharing these distributed programs is essential for the interoperability and scalability of decentralized applications, for example when building the aforementioned decentralized, local-to-its-owner database where the programs form the distributed database services. The deployment and execution of the distributed programs is discussed in detail in the later [chapters](#execution-model).
Programs leveraging the Ambients protocol are turned into distributed executables that can be executed safely in the Ambients network. This lets the programs move where the data is. Sharing these distributed programs is essential for the interoperability and scalability of decentralized applications, for example when building the aforementioned decentralized, local-to-its-owner database where the programs form the distributed database services. The deployment and execution of the distributed programs is discussed in detail in the later [chapters](https://github.com/ambientsprotocol/whitepaper/blob/master/07-execution-model.md).

The Ambients programming model is restrictive enough to be verifiably safe. At the same time, it is expressive enough to let developers build data structures, functions, algorithms, business logic, databases, even full-fledged systems and services. Most programming languages today have an Ambients-compliant subset of features, which means that developers can build their decentralized applications and services on the Ambients protocol using a familiar programming language. The translation of a program to a distributed program using the Ambients protocol is discussed in detail in the later [chapters](#compilation-model).
The Ambients programming model is restrictive enough to be verifiably safe. At the same time, it is expressive enough to let developers build data structures, functions, algorithms, business logic, databases, even full-fledged systems and services. Most programming languages today have an Ambients-compliant subset of features, which means that developers can build their decentralized applications and services on the Ambients protocol using a familiar programming language. The translation of a program to a distributed program using the Ambients protocol is discussed in detail in the later [chapters](https://github.com/ambientsprotocol/whitepaper/blob/master/06-compilation-model.md).

The Ambients protocol is designed to be platform-independent. The Ambients network can overlay and connect multiple different Ambients-compliant runtime environments, from trusted, permissioned centralized systems (like traditional web services) to trustless, permissionless decentralized systems (like blockchain platforms). The details of Ambients-compliant runtime environments are discussed in more detail in the later [chapters](#runtime-environment).
The Ambients protocol is designed to be platform-independent. The Ambients network can overlay and connect multiple different Ambients-compliant runtime environments, from trusted, permissioned centralized systems (like traditional web services) to trustless, permissionless decentralized systems (like blockchain platforms). The details of Ambients-compliant runtime environments are discussed in more detail in the later [chapters](https://github.com/ambientsprotocol/whitepaper/blob/master/07-execution-model.md#runtime-environment).

The Ambients protocol is open source, and free for everyone to build on.

Expand All @@ -34,12 +34,12 @@ The [Safety](https://en.wikipedia.org/wiki/Software_system_safety) of distribute

The [Scalability](https://en.wikipedia.org/wiki/Scalability) of distributed programs increases the value of a decentralized network. Scalability is commonly regarded as the solution to performance issues, but it is also about ensuring that users benefit from being part of the application network. Non-scalable programs eventually become unavailable, making applications using them unavailable and denying the service from users. Scalable programs, in turn, remain available, and in the best case improve, when usage grows which increases the absolute value of the application in a decentralized network. Therefore, verifying that a distributed program scales is essential for the long-term health of a decentralized network and for the success of a decentralized programming model.

Decentralization of distributed programs is not an end goal itself, but a crucial property to enable cooperation in open and permissionless networks while allowing programs to compete. Decentralization distributes the value of programs to all participants and a protocol that is decoupled from its underlying platform allows developers and users to operate on a higher abstraction level and enjoy shared "network effects", while enabling innovation to emerge. In contrast, [as previously discussed](#background), centralized networks require to compete over users and developer mindshare, which eventually converges to the situation as it is right now. To prevent this to happen, deliberate design choices need to be made, such as requiring location-agnostic content-addressing, expecting trust to be proof-based, and guaranteeing open and permissionless network participation.
Decentralization of distributed programs is not an end goal itself, but a crucial property to enable cooperation in open and permissionless networks while allowing programs to compete. Decentralization distributes the value of programs to all participants and a protocol that is decoupled from its underlying platform allows developers and users to operate on a higher abstraction level and enjoy shared "network effects", while enabling innovation to emerge. In contrast, [as previously discussed](https://github.com/ambientsprotocol/whitepaper/blob/master/03-introduction.md#background), centralized networks require to compete over users and developer mindshare, which eventually converges to the situation as it is right now. To prevent this to happen, deliberate design choices need to be made, such as requiring location-agnostic content-addressing, expecting trust to be proof-based, and guaranteeing open and permissionless network participation.

The Ambients protocol preserves these properties by specifying models for verifying the properties throughout the lifecycle of a distributed program. Detailed in the following chapters, we specify:

1. The [Programming Model](#protocol-primitives) for translating programs to a process-algebraic representation of distributed computation
2. The [Compilation Model](#compilation-model) for compiling programs to distributed executables
3. The [Execution Model](#execution-model) for deploying, executing, and sharing distributed executables in content-addressed, peer-to-peer networks
1. The [Programming Model](https://github.com/ambientsprotocol/whitepaper/blob/87546d2dff97de398cd26be2c0b3dd73d935df3e/05-distributed-programs-as-ambients.md#protocol-primitives) for translating programs to a process-algebraic representation of distributed computation
2. The [Compilation Model](https://github.com/ambientsprotocol/whitepaper/blob/master/06-compilation-model.md) for compiling programs to distributed executables
3. The [Execution Model](https://github.com/ambientsprotocol/whitepaper/blob/master/07-execution-model.md) for deploying, executing, and sharing distributed executables in content-addressed, peer-to-peer networks