Skip to content

Translate README.md to English #1

@jmikedupont2

Description

@jmikedupont2

This pull request replaces the existing Chinese README.md with a fully translated English version. All instructions, comments, and configuration details are now in English. The content and formatting have been preserved for clarity and usability.

Summary of changes:

  • Full replacement of README.md with an English translation
  • All technical instructions, comments, and configuration explanations are now in English

New README.md content:

# Evil

Used to track some suspicious (evil) wallet addresses and record their holdings.

## Usage

```bash
# 1. Install sqlx
cargo install sqlx-cli --no-default-features --features postgres
# 2. Create the database
mkdir data
touch data/db.sqlite3
cp env.example .env
sqlx database create
sqlx migrate run
# 3. Build the project
cargo build --release
# 4. Run
cp app.example.toml app.toml
## 4.1 Start the web service
./target/release/angel -c app.toml web
## 4.2 Start tracking
./target/release/angel -c app.toml daemon
```

Add an address

```bash
curl "http://127.0.0.1:2211/api/v1/add_account?address=9xHxgDbeQDX51Vof7ruAaYjSYgR87BXRp3ZC62jrmJV1"
{"msg":"ok","data":null}
```

Query a token address

```bash
# The address holds tokens
curl "http://127.0.0.1:2211/api/v1/get_coin?token=APAkdwfAyqFsQuD92hURMnfUE2dKkjaZjbttx3oZfniy"     
{"msg":"ok","data":{"id":528,"account":"9xHxgDbeQDX51Vof7ruAaYjSYgR87BXRp3ZC62jrmJV1","token":"APAkdwfAyqFsQuD92hURMnfUE2dKkjaZjbttx3oZfniy","created_at":1733293394,"deleted":0}}
# The address does not hold tokens
curl "http://127.0.0.1:2211/api/v1/get_coin?token=APAkdwfAyqFsQuD92hURMnfUE2dKkjaZjbttx3oZfn1y"
{"msg":"ok","data":null}
```

Check if a token has an unusually large holder

```bash
# Someone holds a disproportionately large amount of the token (threshold set in config: check_largest_account_hold_coin)
curl "http://127.0.0.1:2211/api/v1/check_token_largest_accounts?token=4XVHtuLTu35F9vV5JZBNUQGaAZe7KuK8ZQffVssvpump"
{"msg":"ok","data":{"is_suspicion":true} # Someone holds too much

curl "http://127.0.0.1:2211/api/v1/check_token_largest_accounts?token=9FABQYprYoaBDjhaqHcQzyMnWzBSYPS3RPLYiTG2pump" 
{"msg":"ok","data":{"is_suspicion":false} # No one holds too much

# When you provide a non-existent token
curl "http://127.0.0.1:2211/api/v1/check_token_largest_accounts?token=9FABQYprYoaBDjhaqHcQzyMnWzBSYPS3RPLYiTG2pum"
{"msg":"get token largest accounts err: RPC response error -32602: Invalid param: could not find mint; ","data":null}
```

## Configuration file

```toml
database_url="sqlite://./data/db.sqlite3"
host_uri="127.0.0.1:2211" # Address of the local web service
solana_rpc_url="https://api.mainnet-beta.solana.com" # Solana RPC addresses, separated by commas. It's best to use your own, e.g., helius.dev
solana_rpc_curl_interval=10 # Interval (in seconds) to sync the holdings of monitored accounts
check_largest_account_hold_coin=100000000.0 # Threshold for flagging large holders; here, 100 million means any account (excluding the pool) holding more than 100 million tokens will be flagged as suspicious
```

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions