Files
proxmox/thirdweb-core-2103-test/README.md
defiQUG 98c7e312e0 docs(thirdweb-2103): npm-only vendor deps; avoid nested lib/contracts
Document foundry remappings via node_modules and that embedded lib/contracts
clones break parent git; quick forge:build check after npm install.

Made-with: Cursor
2026-04-12 06:44:13 -07:00

66 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Thirdweb core infra — VMID 2103 test harness
Deploys **Forwarder → TWRegistry → TWFactory → ContractPublisher** from `@thirdweb-dev/contracts` against **Chain 138** RPC for **VMID 2103** (Thirdweb admin core).
## RPC URL (FQDN default)
**Canonical HTTPS JSON-RPC (NPM → VMID 2103):** `https://rpc.tw-core.d-bis.org`
**WebSocket:** `wss://wss.tw-core.d-bis.org` (see `docs/04-configuration/RPC_ENDPOINTS_MASTER.md`).
E2E checks (2026-04-09): `eth_chainId``0x8a`, `eth_blockNumber` OK; `forge script … --rpc-url https://rpc.tw-core.d-bis.org` simulation OK.
`scripts/rpc-url-2103.sh` (used by npm scripts and `deploy-*-with-project-env.sh`) **defaults to that FQDN**. For **LAN-only** HTTP to the container, set:
```bash
export RPC_THIRDWEB_ADMIN_LAN_ONLY=1
# optional: export RPC_THIRDWEB_ADMIN_CORE=192.168.11.217
```
Or set a full override: `RPC_URL_2103` or `RPC_TW_CORE_HTTP`.
- **Foundry:** compiles Thirdweb sources via `node_modules` remappings; `script/DeployThirdwebCore.s.sol`.
- **Hardhat:** compiles only `contracts/HardhatPlaceholder.sol`; deploy uses **ABI + bytecode from `forge build`** (`out/`) to avoid an OpenZeppelin `Address` library name clash inside Thirdwebs dependency graph.
## Commands
```bash
cd thirdweb-core-2103-test
npm install
npm run forge:build
npm run forge:dry-run
# Loads PRIVATE_KEY via parent repo load-project-env.sh; RPC defaults to https://rpc.tw-core.d-bis.org
npm run deploy:forge:project-env
npm run deploy:hh:project-env
export PRIVATE_KEY=0x...
npm run forge:deploy
npm run hh:deploy
```
Use **`--legacy --with-gas-price 1000000000`** on Foundry for Besu chain minimum (see `smom-dbis-138` deployment docs).
OpenZeppelin is pinned to **4.8.3** so Thirdweb 3.15 compiles (avoids `_contextSuffixLength` conflicts with OZ 4.9+).
## Dependencies (npm only — no `lib/contracts` clone)
Foundry remappings in `foundry.toml` point Thirdweb and OpenZeppelin at **`node_modules/`** (for example `tw/=node_modules/@thirdweb-dev/contracts/`). You do **not** need a separate git checkout under `lib/contracts/`.
If you previously cloned Thirdweb (or another vendor) into `lib/contracts`, remove that directory and rely on `npm install` only. A nested `.git` there breaks the parent monorepo (`git add` warns about embedded repositories); the parent workspace intentionally **ignores** `thirdweb-core-2103-test/lib/contracts/` in `.gitignore` so accidental clones stay local.
Quick compile check after install:
```bash
npm install
npm run forge:build
```
## CREATE2 on VMID 2103
`Create2Factory` + `Create2Probe` (`src/`) and `script/Create2DeployTest.s.sol` deploy via OpenZeppelin `Create2`, assert `predictProbe(salt) == deployProbe(salt)`, and read `VMID_TAG == 2103`.
```bash
npm run forge:create2:dry-run
npm run deploy:create2:project-env # needs PRIVATE_KEY via load-project-env
```