Add initialization-block to tycho runner, fix docker and improve docs

This commit is contained in:
Thales
2024-08-01 01:35:55 -03:00
committed by tvinagre
parent 67f10e777a
commit 11619bf8be
9 changed files with 60 additions and 8 deletions

View File

@@ -2,6 +2,8 @@ substreams_yaml_path: ./substreams.yaml
protocol_type_names: protocol_type_names:
- "balancer_pool" - "balancer_pool"
adapter_contract: "BalancerV2SwapAdapter" adapter_contract: "BalancerV2SwapAdapter"
adapter_build_signature: "constructor(address)"
adapter_build_args: "0xBA12222222228d8Ba445958a75a0704d566BF2C8"
skip_balance_check: true skip_balance_check: true
initialized_accounts: initialized_accounts:
- "0xba12222222228d8ba445958a75a0704d566bf2c8" - "0xba12222222228d8ba445958a75a0704d566bf2c8"

View File

@@ -1,5 +1,7 @@
substreams_yaml_path: ./substreams.yaml substreams_yaml_path: ./substreams.yaml
adapter_contract: "SwapAdapter.evm.runtime" adapter_contract: "SwapAdapter.evm.runtime"
adapter_build_signature: "constructor(address)"
adapter_build_args: "0x0000000000000000000000000000000000000000"
skip_balance_check: false skip_balance_check: false
protocol_type_names: protocol_type_names:
- "type_name_1" - "type_name_1"

View File

@@ -2,3 +2,4 @@ SUBSTREAMS_PATH=../substreams/ethereum-curve
RPC_URL=https://mainnet.infura.io/v3/your-infura-key RPC_URL=https://mainnet.infura.io/v3/your-infura-key
DATABASE_URL: "postgres://postgres:mypassword@db:5432/tycho_indexer_0" DATABASE_URL: "postgres://postgres:mypassword@db:5432/tycho_indexer_0"
SUBSTREAMS_API_TOKEN="changeme" SUBSTREAMS_API_TOKEN="changeme"
DOMAIN_OWNER="AWSAccountId"

View File

@@ -7,7 +7,7 @@ WORKDIR /app
# Add current directory code to /app in container # Add current directory code to /app in container
ADD . /app/testing ADD . /app/testing
RUN chmod +x /app/testing/tycho-indexer-linux-x64 RUN chmod +x /app/testing/tycho-indexer
# Create a new conda environment and install pip # Create a new conda environment and install pip
RUN conda create -n myenv pip python=3.9 RUN conda create -n myenv pip python=3.9
@@ -21,7 +21,8 @@ RUN apt-get update \
&& pip install psycopg2 \ && pip install psycopg2 \
&& apt-get clean && apt-get clean
RUN /bin/bash -c "source activate myenv && cd testing && pip install --no-cache-dir -r requirements.txt && cd -" ARG PIP_INDEX_URL
RUN /bin/bash -c "source activate myenv && cd testing && pip install --no-cache-dir -r src/requirements.txt && cd -"
# Make port 80 available to the world outside this container # Make port 80 available to the world outside this container
EXPOSE 80 EXPOSE 80
@@ -31,4 +32,4 @@ RUN wget -c https://github.com/streamingfast/substreams/releases/download/v1.8.0
RUN mv substreams /usr/local/bin/substreams && chmod +x /usr/local/bin/substreams RUN mv substreams /usr/local/bin/substreams && chmod +x /usr/local/bin/substreams
# Run the command to start your application # Run the command to start your application
CMD ["python", "testing/cli.py", "--test_yaml_path", "/app/substreams/my_substream/test_assets.yaml", "--with_binary_logs", "--db_url", "postgres://postgres:mypassword@db:5432"] CMD ["python", "testing/src/runner/cli.py", "--package", "my_substream", "--with_binary_logs", "--db_url", "postgres://postgres:mypassword@db:5432"]

View File

@@ -9,6 +9,7 @@ The testing suite builds the `.spkg` for your Substreams module, indexes a speci
## Prerequisites ## Prerequisites
- Latest version of our indexer, Tycho. Please contact us to obtain the latest version. Once acquired, place it in the `/testing/` directory. - Latest version of our indexer, Tycho. Please contact us to obtain the latest version. Once acquired, place it in the `/testing/` directory.
- Access to PropellerHeads' private PyPI repository. Please contact us to obtain access.
- Docker installed on your machine. - Docker installed on your machine.
## Test Configuration ## Test Configuration
@@ -38,7 +39,9 @@ Example: `SUBSTREAMS_PATH=../substreams/ethereum-curve`
### Step 2: Build and the Testing Script ### Step 2: Build and the Testing Script
Run the testing script using Docker Compose: To build the testing script, run the following commands:
```bash ```bash
source pre_build.sh
docker compose build
docker compose run app docker compose run app
``` ```

View File

@@ -17,17 +17,29 @@ services:
build: build:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
args:
PIP_INDEX_URL: ${PIP_INDEX_URL}
volumes: volumes:
- ${SUBSTREAMS_PATH}:/app/substreams/my_substream # - ${SUBSTREAMS_PATH}:/app/substreams/my_substream
- ../substreams:/app/substreams - ../substreams:/app/substreams
- ../proto:/app/proto - ../proto:/app/proto
- ./tycho-indexer:/app/testing/tycho-indexer - ./tycho-indexer:/bin/tycho-indexer
- ./src/runner/runner.py:/app/testing/src.py - ./src/runner/runner.py:/app/testing/src.py
- ../evm:/app/evm
- ./src/runner:/app/testing/src/runner
ports: ports:
- "80:80" - "80:80"
depends_on: depends_on:
- db - db
env_file: env_file:
- ".env" - ".env"
command:
- "python"
- "testing/src/runner/cli.py"
- "--package"
- "ethereum-balancer"
- "--with_binary_logs"
- "--db_url"
- "postgres://postgres:mypassword@db:5432/tycho_indexer_0"
volumes: volumes:
postgres_data: postgres_data:

26
testing/pre_build.sh Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
# Enable automatic export of all defined variables
set -a
# Source the .env file
source .env
# Disable automatic export (optional, if you want to stop exporting variables)
set +a
# Check if DOMAIN_OWNER is set
if [ -z "$DOMAIN_OWNER" ]; then
echo "DOMAIN_OWNER environment variable is not set."
exit 1
fi
# Fetch the CODEARTIFACT_AUTH_TOKEN
CODEARTIFACT_AUTH_TOKEN=$(aws --region eu-central-1 codeartifact get-authorization-token --domain propeller --domain-owner $DOMAIN_OWNER --query authorizationToken --output text --duration 1800)
# Set the PIP_INDEX_URL
PIP_INDEX_URL="https://aws:${CODEARTIFACT_AUTH_TOKEN}@propeller-${DOMAIN_OWNER}.d.codeartifact.eu-central-1.amazonaws.com/pypi/protosim/simple/"
# Export the variables
export CODEARTIFACT_AUTH_TOKEN
export PIP_INDEX_URL

View File

@@ -109,7 +109,9 @@ class TychoRunner:
str(start_block), str(start_block),
"--stop-block", "--stop-block",
# +2 is to make up for the cache in the index side. # +2 is to make up for the cache in the index side.
str(end_block + 2) str(end_block + 2),
"--initialization-block",
str(start_block),
] + (["--initialized-accounts", ",".join(all_accounts)] if all_accounts else []), ] + (["--initialized-accounts", ",".join(all_accounts)] if all_accounts else []),
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, stderr=subprocess.PIPE,

View File

@@ -7,10 +7,13 @@ This repository contains the Tycho Adapter, a tool that allows you to interact w
### Prerequisites ### Prerequisites
- Python 3.9 - Python 3.9
- Access to PropellerHead's private PyPi repository (CodeArtifact)
### Install with pip ### Install with pip
```shell ```shell
# Access to PropellerHead's private PyPi repository (CodeArtifact)
aws codeartifact login --tool pip --repository protosim --domain propeller
# Create conda environment # Create conda environment
conda create -n tycho pip python=3.9 conda create -n tycho pip python=3.9
# Activate environment # Activate environment