-
Notifications
You must be signed in to change notification settings - Fork 40
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into 10871-exciseReallocate
- Loading branch information
Showing
12 changed files
with
260 additions
and
1,088 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,94 +1,7 @@ | ||
# Agoric Dapps | ||
|
||
**This is a generic guide to Agoric Dapp projects** | ||
See | ||
|
||
A dapp is a _decentralized application_ which typically has a browser-based user interface, a public API server, and a contract running on the Agoric blockchain. | ||
|
||
## Using a Dapp | ||
|
||
If you have installed the [Agoric CLI](../getting-started/) and you want to try running a dapp locally on a simulated Agoric VM (i.e., it won't be running on an actual public chain), do the following: | ||
|
||
1. Checkout the latest beta release of the SDK. | ||
|
||
```sh | ||
cd agoric-sdk | ||
git checkout beta | ||
yarn && yarn build | ||
``` | ||
|
||
2. Run `agoric init` to make a new local copy of a dapp template. | ||
|
||
```sh | ||
# Here we chose the Fungible Faucet Dapp. | ||
# You can replace `my-fungible-faucet` with a name of your choice. | ||
agoric init --dapp-template dapp-fungible-faucet --dapp-branch beta my-fungible-faucet | ||
cd my-fungible-faucet | ||
# Install the project dependencies | ||
agoric install | ||
# Start the Agoric VM | ||
agoric start --reset | ||
``` | ||
|
||
3. Leave this command running (it is your simulated environment). | ||
4. In a separate terminal, deploy the contract and API to the VM. | ||
|
||
```sh secondary style2 | ||
# Deploy a new instance of the contract to the VM | ||
agoric deploy contract/deploy.js | ||
# Reset the VM's API server | ||
agoric deploy api/deploy.js | ||
``` | ||
|
||
5. In a third terminal, run the following. | ||
|
||
```sh secondary style3 | ||
# Start the user interface | ||
cd ui && yarn start | ||
``` | ||
|
||
6. You can now navigate to [http://localhost:3000](http://localhost:3000) to view your dapp. | ||
|
||
## Modifying this Dapp | ||
|
||
In the Agoric system, components are written in Javascript. | ||
|
||
## Components | ||
|
||
The following are the important directories in an Agoric dapp project: | ||
|
||
- [`contract/`](#contract-directory) defines the on-chain smart contract. | ||
- [`api/`](#api-directory) defines the chain-connected server's `/api` HTTP endpoint. | ||
- [`ui/`](#ui-directory) defines the browser user interface connecting users' personal wallets and the API server. | ||
|
||
Other files and directories in this top-level folder should not typically be modified. | ||
|
||
### Contract Directory | ||
|
||
In the `contract` directory, you can find the following files to edit: | ||
|
||
- **src directory**: Contract source code, starting with `src/contract.js`. | ||
|
||
There are also files and folders that you usually shouldn't edit: | ||
|
||
- **deploy.js**: Generic Agoric contract deployment script. | ||
|
||
### API Directory | ||
|
||
In the `api` directory, you can find the following files to edit: | ||
|
||
- **src directory**: Handler for API HTTP endpoints, starting with `src/handler.js`. | ||
|
||
There are also files and folders that you usually shouldn't edit: | ||
|
||
- **deploy.js**: Generic Agoric API handler deployment script. | ||
|
||
### UI Directory | ||
|
||
The `ui` directory is almost completely under your control. The only files and folders that you usually shouldn't edit are: | ||
|
||
- **public/lib**: The Agoric UI library. | ||
- **public/conf**: Configuration files that are generated by the `contract/deploy.js` script. | ||
|
||
## More Information | ||
|
||
You can [learn more about the Agoric smart contract platform](https://agoric.com). | ||
- [Getting Started](/guides/getting-started/) | ||
- [Building Client Dapps](/guides/getting-started/contract-rpc.html) | ||
- [UI Tutorial](/guides/getting-started/ui-tutorial/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. | ||
|
||
 | ||
|
||
 | ||
|
||
- 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` | ||
|
||
 | ||
|
||
## 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: | ||
|
||
 | ||
|
||
```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). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.