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

Remove Deprecated REPL Page Contents #1268

Merged
merged 2 commits into from
Feb 11, 2025
Merged
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
129 changes: 2 additions & 127 deletions main/reference/repl/index.md
Original file line number Diff line number Diff line change
@@ -1,129 +1,4 @@
# Agoric REPL

**Note**: This page describes the Agoric REPL.
If you are instead looking for information about `node` or the Node.js REPL, see
[Node.js documentation](https://nodejs.org/api/repl.html).

## Introduction

When you run `agoric start --reset`, you start a local _ag-solo_.

You use `agoric start` to start what we call an _ag-solo_, which is a
single personal local Agoric node. You need an ag-solo running on your
machine to interact with Agoric network services, whether a built-in
simulated chain (also started by `agoric start`), or a fully-decentralized public Agoric
blockchain.

All deployment happens via the local running Agoric process. This is usually the
ag-solo process, and frequently referred to as that or just as ag-solo. It is also
sometimes described as/called an Agoric VM or a local server.

An ag-solo communicates with either a locally running or remote chain. This local process (the ag-solo)
has a home object, which contains references to services on-chain, including Zoe, the
Board for sharing objects, and an application user's Wallet, among others. Developers can
use these service references to call the service's associated API commands.

Contract code starts in a file on a user's computer, either written by them or
imported from `agoric/zoe`. The code is _bundled_; turned into a particularly formatted
blob of code that exists in memory while a deploy script is running. When `E(zoe).install()` is
called, the blob is sent to and stored on-chain so that Zoe can access it.

An ag-solo has an associated REPL (_Read-Eval-Print Loop_). From the REPL and the `home`
object, developers can use all the on-chain commands that deployment scripts use to
deploy contracts and Dapps. In addition to the on-chain commands, they can also run
any other JavaScript commands from the REPL.

## Accessing the REPL

Once an ag-solo is running and on-chain, you can access its associated REPL
in two ways.

- In a browser tab, go to `localhost:8000`. Depending on the browser's width, you
will see the Wallet UI and REPL either in separate columns or separate rows.

![Wallet and REPL](./assets/walletAndREPLColumns.png)

![Wallet and REPL](./assets/walletAndREPLRows.png)

- From a shell, run `agoric open --repl` This opens the user's Wallet UI and its
associated REPL. To open only the REPL, run `agoric open --repl only`

![REPL](./assets/repl.png)

## Using the REPL

You can run JavaScript commands from the REPL. You can also use the REPL's
`home` object's predefined connections to other objects and services. To see what’s
available, just type `home` into the REPL:

![home](./assets/home.png)

```js
Command[1] home
History[1] {"chainTimerService":[Presence o-50],"contractHost":[Presence o-52],"ibcport":[Presence o-53],"registrar":[Presence o-54],"registry":[Presence o-55],"zoe":[Presence o-56],"localTimerService":[Presence o-57],"uploads":[Presence o-58],"spawner":[Presence o-59],"wallet":[Presence o-60],"network":[Presence o-61],"http":[Presence o-62]}
```

The results of what is entered into the REPL is saved under `history[N]`

The following sections describe the `home` objects developers can use. Click on the
section header to go to more detailed documentation about that object.
Several `home` objects are either for internal Agoric use only or have been deprecated. These
are listed together in the final section. External developers should ignore them and not try to use
them.

### [`wallet`](../wallet-api/)

Holds on-chain digital assets and object capabilities on behalf of the user.
The header link takes you to the standard non-REPL specific `wallet` API documentation. When calling
`wallet` API methods from the REPL, `wallet` must be prefaced by `home.` and use `E()`. For
example, `E(home.wallet).getPurses()`. [Full Wallet API documentation.](/guides/wallet/)

### [`chainTimerService`](./timerServices)

On-chain time authority used to schedule events. [Full `chainTimerService` documentation.](./timerServices)

### [`localTimerService`](./timerServices)

Local off-chain time authority used to schedule events. [Full `localTimerService` documentation.](./timerServices)

### [`board`](./board)

Shared on-chain location where users can post generally accessible values. [Full `board` documentation.](./board)

### [`ibcport`](./networking)

IBC implementation that lets vats open and close listening ports,
connect and disconnect to/from remote ports, and send and receive
data over those connections. [Full `ibcport` documentation.](./networking)

### [`zoe`](../zoe-api/zoe)

Deploy and interact with smart contracts. Zoe protects smart contract users by escrowing
digital assets and guaranteeing users get either what they want or get a refund of what
they escrowed. Even if the contract is buggy or malicious. The header link takes you to the
standard, non-REPL specific, `zoe` API documentation. When calling any of the `zoe` API
methods from the REPL, `zoe` must be prefaced by `home.` and use `E()`. For
example, `E(home.zoe).getFoo()`. [Full Zoe API documentation.](../zoe-api/zoe)

### [`priceAuthority`](./priceAuthority)

Get price quotes for pairs of digital assets. [Full `priceAuthority` documentation.](./priceAuthority)

### [`scratch`](./scratch)

An off-chain, private, place to store key-value pairs on your ag-solo for later use. [Full `scratch` documentation.](./scratch)

### Deprecated and Internal-Only Objects

- `contractHost`: Replaced by the `spawner` object.
- `faucet`: Internal for chain setup.
- `http`: `api/deploy.js` uses this to install new HTTP and WebSocket handlers in an
ag-solo. You should not need to use it.
- `network`: Privileged object for internal use. [Full Network documentation.](./networking)
- `plugin`: Privileged object for internal use.
- `priceAuthorityAdmin`: Privileged object for internal use.
- `registrar`: Deprecated.
- `registry`: Deprecated.
- `spawner`: Privileged object for internal use.
- `uploads`: Deprecated name for `scratch`.
- `vattp`: Privileged object for internal use.
**Note**: Agoric REPL has been deprecated. Please see [Testing a Contract](/guides/zoe/contract-hello#testing-a-contract)
for information on how to test your smart contracts using [AVA](https://github.com/avajs/ava).
Loading