Skip to content

Commit

Permalink
Merge branch 'main' into eip-5559-v2
Browse files Browse the repository at this point in the history
  • Loading branch information
pikonha authored Aug 19, 2024
2 parents 697b911 + a089f76 commit 8021b39
Show file tree
Hide file tree
Showing 37 changed files with 1,703 additions and 341 deletions.
11 changes: 10 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,19 @@ RPC_URL=http://127.0.0.1:8545
GATEWAY_URL=http://127.0.0.1:3000/{sender}/{data}.json
DATABASE_URL=postgresql://blockful:ensdomains@localhost:5432/ensdomains
ETHERSCAN_API_KEY=DNXJA8RX2Q3VZ4URQIWP7Z68CJXQZSC6AW
# Base Registrar Implementation
REGISTRAR_ADDRESS=0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0 # local deployment
# ENS Registrar Implementation
REGISTRY_ADDRESS=0x5FbDB2315678afecb367f032d93F642f64180aa3 # local deployment

# Ethereum
# Database
CHAIN_ID=31337
PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
GRAPHQL_URL=https://localhost:3000

# Arbitrum
PRIVATE_KEY=0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659
LAYER2_RPC=http://127.0.0.1:8547

# Metadata
RESOLVER_ADDRESS=0x0165878A594ca255338adfa4d48449f69242Eb8F # local deployment
17 changes: 16 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
{
"extends": ["@rocketseat/eslint-config/node", "prettier", "plugin:@typescript-eslint/recommended"]
"extends": [
"@rocketseat/eslint-config/node",
"prettier",
"plugin:@typescript-eslint/recommended"
],
"rules": {
"@typescript-eslint/no-unused-vars": [
"error",
{
"args": "all",
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_",
"caughtErrorsIgnorePattern": "^_"
}
]
}
}
140 changes: 39 additions & 101 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -1,171 +1,95 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "read client",
"skipFiles": [
"<node_internals>/**"
],
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}/packages/client/src/read.ts",
"runtimeArgs": [
"-r",
"ts-node/register",
"-r",
"tsconfig-paths/register"
],
"runtimeArgs": ["-r", "ts-node/register", "-r", "tsconfig-paths/register"],
"env": {
"NODE_ENV": "development",
"TS_NODE_PROJECT": "${workspaceFolder}/packages/client/tsconfig.json",
"ENV_FILE": "${workspaceFolder}/.env"
},
"console": "integratedTerminal",
"outFiles": [
"${workspaceFolder}/**/*.js",
"!**/node_modules/**"
],
"args": [
"--resolver",
"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",
]
"outFiles": ["${workspaceFolder}/**/*.js", "!**/node_modules/**"]
},
{
"type": "node",
"request": "launch",
"name": "db write client",
"skipFiles": [
"<node_internals>/**"
],
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}/packages/client/src/db.write.ts",
"runtimeArgs": [
"-r",
"ts-node/register",
"-r",
"tsconfig-paths/register"
],
"runtimeArgs": ["-r", "ts-node/register", "-r", "tsconfig-paths/register"],
"env": {
"NODE_ENV": "development",
"TS_NODE_PROJECT": "${workspaceFolder}/packages/client/tsconfig.json",
"ENV_FILE": "${workspaceFolder}/.env"
},
"console": "integratedTerminal",
"outFiles": [
"${workspaceFolder}/**/*.js",
"!**/node_modules/**"
],
"args": [
"--resolver",
"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",
]
"outFiles": ["${workspaceFolder}/**/*.js", "!**/node_modules/**"]
},
{
"type": "node",
"request": "launch",
"name": "l2 write client",
"skipFiles": [
"<node_internals>/**"
],
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}/packages/client/src/l2.write.ts",
"runtimeArgs": [
"-r",
"ts-node/register",
"-r",
"tsconfig-paths/register"
],
"runtimeArgs": ["-r", "ts-node/register", "-r", "tsconfig-paths/register"],
"env": {
"NODE_ENV": "development",
"TS_NODE_PROJECT": "${workspaceFolder}/packages/client/tsconfig.json",
"ENV_FILE": "${workspaceFolder}/.env"
},
"console": "integratedTerminal",
"outFiles": [
"${workspaceFolder}/**/*.js",
"!**/node_modules/**"
],
"args": [
"--resolver",
"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",
"--providerL2",
"http://127.0.0.1:8545",
"--l2resolver",
"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6",
]
"outFiles": ["${workspaceFolder}/**/*.js", "!**/node_modules/**"]
},
{
"type": "node",
"request": "launch",
"name": "gateway db",
"skipFiles": [
"<node_internals>/**"
],
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}/packages/gateway/cmd/database.ts",
"runtimeArgs": [
"-r",
"ts-node/register",
"-r",
"tsconfig-paths/register",
],
"runtimeArgs": ["-r", "ts-node/register", "-r", "tsconfig-paths/register"],
"env": {
"NODE_ENV": "development",
"TS_NODE_PROJECT": "${workspaceFolder}/packages/gateway/tsconfig.json",
"ENV_FILE": "${workspaceFolder}/.env"
},
"console": "integratedTerminal",
"outFiles": [
"${workspaceFolder}/**/*.js",
"!**/node_modules/**"
]
"outFiles": ["${workspaceFolder}/**/*.js", "!**/node_modules/**"]
},
{
"type": "node",
"request": "launch",
"name": "gateway arbitrum",
"skipFiles": [
"<node_internals>/**"
],
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}/packages/gateway/cmd/arbitrum.ts",
"runtimeArgs": [
"-r",
"ts-node/register",
"-r",
"tsconfig-paths/register",
],
"runtimeArgs": ["-r", "ts-node/register", "-r", "tsconfig-paths/register"],
"env": {
"NODE_ENV": "development",
"TS_NODE_PROJECT": "${workspaceFolder}/packages/gateway/tsconfig.json",
"ENV_FILE": "${workspaceFolder}/.env"
},
"console": "integratedTerminal",
"outFiles": [
"${workspaceFolder}/**/*.js",
"!**/node_modules/**"
]
"outFiles": ["${workspaceFolder}/**/*.js", "!**/node_modules/**"]
},
{
"type": "node",
"request": "launch",
"name": "gateway eth",
"skipFiles": [
"<node_internals>/**"
],
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}/packages/gateway/cmd/ethereum.ts",
"runtimeArgs": [
"-r",
"ts-node/register",
"-r",
"tsconfig-paths/register",
],
"runtimeArgs": ["-r", "ts-node/register", "-r", "tsconfig-paths/register"],
"env": {
"NODE_ENV": "development",
"TS_NODE_PROJECT": "${workspaceFolder}/packages/gateway/tsconfig.json",
"ENV_FILE": "${workspaceFolder}/.env"
},
"console": "integratedTerminal",
"outFiles": [
"${workspaceFolder}/**/*.js",
"!**/node_modules/**"
]
"outFiles": ["${workspaceFolder}/**/*.js", "!**/node_modules/**"]
},
{
"type": "node",
Expand All @@ -180,13 +104,27 @@
"--timeout",
"999999",
"--colors",
"${relativeFile}",
"${relativeFile}"
],
"env": {
"TS_NODE_PROJECT": "${workspaceFolder}/packages/gateway/tsconfig.json",
"TS_NODE_PROJECT": "${workspaceFolder}/packages/gateway/tsconfig.json"
},
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"internalConsoleOptions": "neverOpen"
},
{
"type": "node",
"request": "launch",
"name": "metadata api",
"program": "${workspaceFolder}/packages/gateway/cmd/metadata.ts",
"runtimeArgs": ["-r", "ts-node/register", "-r", "tsconfig-paths/register"],
"env": {
"NODE_ENV": "development",
"TS_NODE_PROJECT": "${workspaceFolder}/packages/gateway/tsconfig.json",
"ENV_FILE": "${workspaceFolder}/.env"
},
"console": "integratedTerminal",
"outFiles": ["${workspaceFolder}/**/*.js", "!**/node_modules/**"]
}
]
}
}
32 changes: 19 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ try {
await client.simulateContract({
functionName: 'register',
abi: dbAbi,
args: [namehash(publicAddress), 300],
args: [toHex(name), 300],
account: signer.address,
address: resolverAddr,
})
Expand All @@ -78,7 +78,7 @@ try {
await client.simulateContract({
functionName: 'setText',
abi: l1Abi,
args: [toHex(packetToBytes(publicAddress)), 'com.twitter', '@blockful'],
args: [toHex(packetToBytes(name)), 'com.twitter', '@blockful'],
address: resolverAddr,
})
} catch (err) {
Expand All @@ -92,7 +92,7 @@ try {
args: {
functionName: 'setText',
abi: l2Abi,
args: [namehash(publicAddress), 'com.twitter', '@blockful'],
args: [namehash(name), 'com.twitter', '@blockful'],
address: contractAddress,
account: signer,
},
Expand All @@ -109,17 +109,19 @@ try {

To run the External Resolver project in its entirety, you'll need to complete the installation process. Since we provide an off-chain resolver solution, it's essential to set up both the database and the Arbitrum Layer 2 environment. This will enable you to run comprehensive end-to-end tests and verify the functionality of the entire project.

### Prerequisites

- [Foundry](https://book.getfoundry.sh)
- Run local node by calling `anvil`

### Setup

1. Clone this repository to your local machine.
2. Copy the `env.example` file to `.env` in the root directory.
3. Install dependencies:

```bash
npm install
```
3. Install dependencies: `npm install`
4. Build the contracts: `npm run build`

### Database Setup
#### Database Setup

1. Run a local PostgreSQL instance (no initial data is inserted):

Expand All @@ -130,7 +132,7 @@ To run the External Resolver project in its entirety, you'll need to complete th
2. Deploy the contracts locally:

```bash
npm run contracts start:db
npm run contracts dev:db
```

3. Start the gateway:
Expand All @@ -151,12 +153,12 @@ To run the External Resolver project in its entirety, you'll need to complete th
npm run client read
```

### Layer 2 Setup
#### Layer 2 Setup

1. Deploy the contracts to the local Arbitrum node (follow the [Arbitrum's local node setup tutorial](https://docs.arbitrum.io/run-arbitrum-node/run-local-dev-node)):
```bash
npm run contracts start:arb:l2
npm run contracts dev:arb:l2
```
2. Gather the contract address from the terminal and add it [here](https://github.com/blockful-io/external-resolver/blob/main/packages/contracts/script/local/ArbResolver.s.sol#L56) so the L1 domain gets resolved by the L2 contract you just deployed.
Expand All @@ -175,7 +177,7 @@ To run the External Resolver project in its entirety, you'll need to complete th
## Deployment
### Prerequisites
### Gateway
Ensure you have the [Railway CLI](https://docs.railway.app/guides/cli) installed.
Expand Down Expand Up @@ -203,6 +205,10 @@ Ensure you have the [Railway CLI](https://docs.railway.app/guides/cli) installed
railway up
```
### Contracts
1. `npm run contracts deploy:db -- --rpc-url <RPC_URL>`
## Architecture
### High-Level Overview
Expand Down
15 changes: 12 additions & 3 deletions compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ services:
context: packages/contracts
container_name: contracts
ports:
- "8545:8545"
- '8545:8545'
networks:
- local
env_file:
Expand All @@ -15,15 +15,24 @@ services:
context: .
dockerfile: packages/gateway/docker/database/Dockerfile
ports:
- "3000:3000"
- '3000:3000'
depends_on:
- db

metadata-api:
build:
context: .
dockerfile: packages/gateway/docker/database/Dockerfile
ports:
- '4000:3000'
depends_on:
- db

db:
image: postgres:16.2
container_name: gateway-postgres-db
ports:
- "5432:5432"
- '5432:5432'
volumes:
- db_data:/data/db
restart: always
Expand Down
Loading

0 comments on commit 8021b39

Please sign in to comment.