Skip to content

Commit

Permalink
Update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
adairrr committed May 12, 2024
1 parent d6b2feb commit 9fa39d5
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 20 deletions.
44 changes: 24 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
# Abstract App Module Template

The Abstract App Module Template is a starting point for developing composable smart-contracts, or "Apps" on the Abstract platform. An App is instantiated for each Account individually and is migratable. Apps are allowed to perform actions on Abstract Accounts and can integrate with other Apps and Adapters installed on the Account. To learn more about Abstract Accounts, please see the [abstract accounts documentation](https://docs.abstract.money/3_framework/3_architecture.html). To read more about apps, please see the [app module documentation](https://docs.abstract.money/3_framework/6_module_types.html).

## Getting Started

### Requirements

Learn more about the requirements for developing Abstract apps in the [getting started documentation](https://docs.abstract.money/4_get_started/1_index.html).

### Setup

To get started, clone this repository and run the following command:

```shell
chmod +x ./template-setup.sh
./template-setup.sh
```

The setup will suggest you to install a few tools that are used in the template. You can skip this step if you already have them installed or if you're not planning on using them.
# IBC Mail

This project is a simple mail application that demonstrates the use of the IBC module in Abstract. The application allows users to send and receive messages to and from other users on different chains.
It supports:
- Sending messages to other users on the same chain.
- Sending messages to users on other chains one hop away

It's designed with two contracts, the Client and the Server. Every user has their own mail Client, which can send and receive messages. It routes these messages to the Server, which then forwards them to the recipient's Client. This is beneficial for a few reasons:
- Multiplexing between different versions of clients. Users will likely want their own version of the client, which can be updated independently of the server. The server will be able to support sending messages to multiple clients.
- When sending multi-hop messages, the mail Server will send the message to the recipient's chain's mail Server, which will then forward it to the recipient's Client. If there is a hop in between, it will just hop between servers. The big question is "which client should the message be sent to? for routing?"

See [this document](https://www.notion.so/abstract-money/IBC-Mail-744feaac39cb412ba8b5b4147cf8fb32?pvs=4) for more information.

**Desired Features**
- [x] Send / receive messages to users on the same chain
- [x] Send / receive messages to users on other chains
- [ ] Sending to namespaces
- [ ] Sending to "namespace@remote.local"
- [ ] Contacts contract
- [ ] Sending funds in messages
- [ ] Sending NFTs in messages
- [ ] Send messages to users on other chains with hops in between
- [ ] Support for multiple versions of the client
- [ ] (frontend) Encrypting messages with the recipient's public key

## Using the Justfile

Expand Down
1 change: 1 addition & 0 deletions contracts/client/tests/integration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ mod receive_msg {
let msg = create_test_message(server_account_id.clone(), app_account_id.clone());
let server_addr = app.account().module_addresses(vec![IBCMAIL_SERVER_ID.into()])?.modules[0].1.clone();

// TODO: for some reason, the accounts are conflicting with one another. I've fixed this test by removing the "two" accounts... it's probably the same bug
println!("app_account_id: {:?}", app.account().id());
let res = app.call_as(&server_addr).receive_message(msg);

Expand Down

0 comments on commit 9fa39d5

Please sign in to comment.