Skip to content

Commit

Permalink
chore: miscellaneous PAM reference changes.
Browse files Browse the repository at this point in the history
  • Loading branch information
samcamwilliams committed Dec 9, 2024
1 parent fe6e7ce commit bce0214
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 11 deletions.
4 changes: 2 additions & 2 deletions docs/converge-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
## Status: DRAFT-1
## Authors: Sam Williams, Tom Wilson, Tyler Hall, James Pichota, Vince Juliano < {first}@arweave.org>

This document contains a rough specification, in `engineering note` form, for the Converge Protocol (Converge). Converge is a method through which the permaweb can be interpreted as not only a flat, permanent ledger of data, but also as a mutable and reactive computation environment. Through this frame, the permaweb can be interpreted as a single, shared ['system image'](https://en.wikipedia.org/wiki/Single_system_image) that can be accessed and added to permissionlessly. Notably, the Converge itself intends to be a truly minimal computation model: It does not enforce any forms of consensus upon its execution directly, nor the use of any particular virtual machine. Even the requirements it imparts upon the host runtime environment are minimal. Instead, the Converge focuses on offering the simplest possible representation of _data_ and _computation_ upon that data, tailored for Arweave's distributed environment and [HTTP](https://datatracker.ietf.org/doc/html/rfc9114) access methods.
This document contains a rough specification, in `engineering note` form, for the Converge Protocol. Converge is a method through which the permaweb can be interpreted as not only a flat, permanent ledger of data, but also as a mutable and reactive computation environment. Through this frame, the permaweb can be interpreted as a single, shared ['system image'](https://en.wikipedia.org/wiki/Single_system_image) that can be accessed and added to permissionlessly. Notably, the Converge itself intends to be a truly minimal computation model: It does not enforce any forms of consensus upon its execution directly, nor the use of any particular virtual machine. Even the requirements it imparts upon the host runtime environment are minimal. Instead, the Converge focuses on offering the simplest possible representation of _data_ and _computation_ upon that data, tailored for Arweave's distributed environment and [HTTP](https://datatracker.ietf.org/doc/html/rfc9114) access methods.

[HyperBEAM](https://github.com/permaweb/HyperBEAM) is an implementation of the permaweb abstract machine, as well as [AO](https://ao.arweave.net), a framework ontop of the Converge that constructs an environment for _trustless_ -- not just _permissionless_ -- computation.
[HyperBEAM](https://github.com/permaweb/HyperBEAM) is an implementation of the converge protocol, as well as [AO](https://ao.arweave.net), a framework ontop of the Converge that constructs an environment for _trustless_ -- not just _permissionless_ -- computation.

## Context

Expand Down
4 changes: 2 additions & 2 deletions src/hb_converge.erl
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@
-include_lib("eunit/include/eunit.hrl").

%%% @moduledoc This module is the root of the device call logic of the
%%% Converge Protocol (Converge) in HyperBEAM.
%%% Converge Protocol in HyperBEAM.
%%%
%%% At the Converge layer, every device is simply a collection of keys that can be
%%% resolved in order to yield their values. Each key may return another
%%% message or a binary:
%%%
%%% resolve(Message1, Message2) -> {Status, Message3}
%%%
%%% See `docs/permaweb-abstract-machine.md` for more information about Converge.
%%% See `docs/converge-protocol.md` for more information about Converge.
%%%
%%% When a device key is called, it is passed the `Message1` (likely its state),
%%% as well as the message to 'apply' to it. It must return a tuple of the
Expand Down
4 changes: 2 additions & 2 deletions src/hb_message.erl
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
-include_lib("eunit/include/eunit.hrl").

%%% @moduledoc This module acts an adapter between messages, as modeled in the
%%% Converge Protocol (Converge), and their underlying binary representations.
%%% See `docs/permaweb-abstract-machine.md` for details on Converge. Unless you are
%%% Converge Protocol, and their underlying binary representations.
%%% See `docs/converge-protocol.md` for details on Converge. Unless you are
%%% implementing a new message serialization format, you should not need to
%%% interact with this module directly. Instead, use the `hb_converge`
%%% interfaces to interact with all messages. The `dev_message` module
Expand Down
8 changes: 4 additions & 4 deletions src/hb_path.erl
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
%%%
%%% A HashPath is a rolling Merkle list of the messages that have been applied
%%% in order to generate a given message. Because applied messages can
%%% themselves be the result of message applications with the Permaweb Abstract
%%% Machine (Converge), the HashPath can be thought of as the tree of messages that
%%% represent the history of a given message. The initial message on a HashPath
%%% is referred to by its ID and serves as its user-generated 'root'.
%%% themselves be the result of message applications with the Converge Protocol,
%%% the HashPath can be thought of as the tree of messages that represent the
%%% history of a given message. The initial message on a HashPath is referred to
%%% by its ID and serves as its user-generated 'root'.
%%%
%%% Specifically, the HashPath can be generated by hashing the previous HashPath
%%% and the current message. This means that each message in the HashPath is
Expand Down
2 changes: 1 addition & 1 deletion src/hb_private.erl
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
%%% should _not_ be used for encoding state that makes the execution of a
%%% device non-deterministic (unless you are sure you know what you are doing).
%%%
%%% See `hb_converge` for more information about the Converge Protocol (Converge)
%%% See `hb_converge` for more information about the Converge Protocol
%%% and private elements of messages.

%% @doc Return the `private` key from a message. If the key does not exist, an
Expand Down

0 comments on commit bce0214

Please sign in to comment.