Skip to content

Commit

Permalink
fix readme and port
Browse files Browse the repository at this point in the history
  • Loading branch information
zkokelj committed Aug 21, 2024
1 parent e92afa3 commit 0520dee
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 31 deletions.
73 changes: 43 additions & 30 deletions tools/walletextension/README.md
Original file line number Diff line number Diff line change
@@ -1,56 +1,69 @@
# The Ten gateway

See the documentation [here](https://docs.ten.xyz/wallet-extension/wallet-extension/).
# Ten Gateway Documentation

## Developer notes
For a comprehensive overview, refer to the [official documentation](https://docs.ten.xyz/docs/tools-infrastructure/hosted-gateway).

Running gateway frontend locally requires building static files first.
To do that, run `npm run build` in `tools/walletextension/frontend` folder.
## Running the Gateway Locally

The precompiled binaries for macOS ARM64, macOS AMD64, Windows AMD64 and Linux AMD64 can be built by running the
following commands from the `tools/walletextension/main` folder:
### Backend

```
To run the backend locally, first build it using the `go build` command. Navigate to the `tools/walletextension/main` folder and use the following commands to build for your respective operating system:

```bash
# macOS AMD64
env GOOS=darwin GOARCH=amd64 go build -o ../bin/wallet_extension_macos_amd64 .
env GOOS=darwin GOARCH=arm64 go build -o ../bin/wallet_extension_macos_arm64 .

# macOS ARM64
env GOOS=darwin GOARCH=arm64 go build -o ../bin/wallet_extension_macos_arm64 .

# Windows AMD64
env GOOS=windows GOARCH=amd64 go build -o ../bin/wallet_extension_win_amd64.exe .

# Linux AMD64
env GOOS=linux GOARCH=amd64 go build -o ../bin/wallet_extension_linux_amd64 .
```

The binaries will be created in the `tools/walletextension/bin` folder.

### Structure
The binaries will be available in the `tools/walletextension/bin` directory. Run the compiled binary to start the backend.

This package follows the same structure of `host` and `enclave`.
### Frontend

It uses a container to wrap the services that are required to allow the wallet extension to fulfill the business logic.
Once the backend is running, navigate to the `tools/walletextension/frontend` directory and execute the following commands:

### Running Wallet Extension with Docker
```bash
npm install
npm run dev
```

To build a docker image use docker build command. Please note that you need to run it from the root of the repository.
To run the container you can use `./docker_run.sh`. You can add parameters to the script, and they are passed to the wallet extension
(example: `-host=0.0.0.0` to be able to access wallet extension endpoints via localhost).
The frontend will be accessible on `http://localhost:80`.

## HTTP Endpoints

### HTTP Endpoints
Ten Gateway exposes several HTTP endpoints for interaction:

For interacting with Ten Gateway, there are the following HTTP endpoints available:
- **`GET /v1/join`**
Generates and returns a `userID`, which needs to be added as a query parameter `u` in your Metamask (or another provider) URL to identify you.

- `GET /v1/join`
- **`POST /v1/authenticate?token=$EncryptionToken`**
Submits a signed message in the format `Register <userID> for <account>`, proving ownership of the private keys for the account, and links that account with the `userID`.

It generates and returns userID which needs to be added as a query parameter "u" to the URL in your Metamask
(or another provider) as it identifies you.
- **`GET /v1/query/address?token=$EncryptionToken&a=$Address`**
Returns a JSON response indicating whether the address "a" is registered for the user "u".

- `POST /v1/authenticate?token=$EncryptionToken`
- **`POST /v1/revoke?token=$EncryptionToken`**
Deletes the userId along with the associated authenticated viewing keys.

With this endpoint, you submit a signed message in the format `Register <userID> for <account>`
from that account which proves that you hold private keys for it, and it links that account with your userID.
- **`GET /v1/health`**
Returns a health status of the service.

- `GET /v1/query/address?token=$EncryptionToken&a=$Address`
- **`GET /v1/network-health`**
Returns the health status of the node.

This endpoint responds with a JSON of true or false if the address "a" is already registered for user "u"
- **`GET /v1/network-config`**
Returns the network configuration details.

- **`GET /v1/version`**
Returns the current version of the gateway

- `POST "/v1/revoke?token=$EncryptionToken"`
- **`GET /v1/getmessage`**
Generates and returns a message for the user to sign based on the provided encryption token.

When this endpoint is triggered, the userId with the authenticated viewing keys should be deleted.
2 changes: 1 addition & 1 deletion tools/walletextension/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"dev": "next dev -p 80",
"build": "next build",
"start": "next start",
"lint": "next lint"
Expand Down

0 comments on commit 0520dee

Please sign in to comment.