-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.testnet.example
More file actions
99 lines (90 loc) · 5.61 KB
/
Copy path.env.testnet.example
File metadata and controls
99 lines (90 loc) · 5.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# Testnet DVT deployment config — copy to deploy/.env.testnet and fill in.
# deploy/.env.testnet is git-ignored (never commit RPC keys or tunnel tokens).
# --- Chain (required) ---
ETH_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY
# v0.20.0 canonical AAStarBLSAlgorithm (verify with `npm run check-deps` before deploying)
VALIDATOR_CONTRACT_ADDRESS=0xAF525A161CB17e0A1b6254ef0B8d8473bdA05174
ENTRY_POINT_ADDRESS=0x0000000071727De22E5E9d8BAf0edAc6f37da032
# --- Policy gate (optional; recommended ON for production) ---
POLICY_ENABLED=false
# POLICY_REGISTRY_ADDRESS=0x8c2488d46d5447418558c38AA6441720df656094
# --- Out-of-band confirmation path-2 (KMS, #124/#193; optional) ---
# When CONFIRM_ENABLED=true, high-value ops are withheld until the user approves
# via a passkey (WebAuthn) assertion verified by KMS (the RP). The node delegates
# crypto verification to KMS POST /verify-confirm-assertion and resolves contacts
# via GET /contact/{account}. Use a DEDICATED per-node, revocable API key (PII).
# CONFIRM_ENABLED=false
# CONFIRM_THRESHOLD_WEI=500000000000000000 # 0.5 ETH
# KMS_BASE_URL=https://kms.aastar.io
# KMS_API_KEY=<dedicated per-node revocable key>
# --- Price Keeper (#58, optional; default OFF) ---
# Keeps paymaster cachedPrice fresh by calling updatePrice() before it goes stale.
# KEEPER_PAYMASTER_ADDRESS is comma-separated → one keeper can serve several
# paymasters. 3 nodes run keepers redundantly (idempotent + jittered). Before each
# submit the keeper STATIC-SIMULATES updatePrice() and skips if it would revert
# (another keeper already refreshed it), so redundant keepers don't jam each other.
# Fees are auto-bumped (estimate +15%, priority floor) for prompt inclusion.
# Use a DEDICATED KEEPER_PRIVATE_KEY (funded) — keep it SEPARATE from
# RELAY_OPERATOR_PK so keeper and relay don't share a nonce queue. Falls back to
# ETH_PRIVATE_KEY only if unset. Sepolia defaults: SuperPaymaster + community
# PaymasterV4. Chainlink feed defaults to Sepolia ETH/USD.
KEEPER_ENABLED=false
# KEEPER_PRIVATE_KEY=0x<dedicated funded key for updatePrice gas — NOT the relay key>
# KEEPER_PAYMASTER_ADDRESS=0x030025f40d509b1a99547bAEb3795bD27F7182b7,0x957852251f44570dc2B60Dde0954f191FF3372eE
# KEEPER_INTERVAL_MS=60000
# KEEPER_REFRESH_BUFFER_S=300
# KEEPER_MAX_UPDATES_PER_DAY=48
# KEEPER_MAX_BASE_FEE_GWEI=50
# KEEPER_CHAINLINK_FEED=0x694AA1769357215DE4FAC081bf1f309aDC325306
# --- Gasless purchase relay (#98, optional; default OFF) ---
# Ports the launch token-sale relayer into the node so the sale stops depending
# on a single centralized Cloudflare Worker. When ON, the node exposes POST
# /v3/relay and submits gasless GToken/aPNTs buys (EIP-3009 + BuyIntent → BuyHelper).
# Each node is an independent relayer (redundancy + anti-censorship); the SDK
# picks one and fails over.
#
# RELAY_OPERATOR_PK MUST be a DEDICATED funded hot wallet that pays gas — it does
# NOT fall back to ETH_PRIVATE_KEY. Use a SEPARATE key per node, keep it off the
# validator-owner key, and fund each with Sepolia ETH. Addresses below default to
# the Sepolia Path-A sale stack; override only for a different sale deployment.
RELAY_ENABLED=false
# RELAY_OPERATOR_PK=0x<dedicated funded hot-wallet key, 64 hex>
# RELAY_RPC_URL= # defaults to ETH_RPC_URL
# RELAY_CHAIN_ID=11155111
# RELAY_BUY_HELPER=0x8d08fBD8297355BC93397820AE1CfFD884BEaA00
# RELAY_USDC=0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238
# RELAY_GTOKEN=0x20a051502a7AE6e40cfFd6EBe59057538E698984
# RELAY_APNTS=0x9e66B457E0ABb1F139FD8A596d00f784eBA2873b
# RELAY_MAX_PAYMENT_USDC=864000000 # $864 per-tx cap (6-decimal USDC)
# RELAY_RATE_LIMIT_PER_ADDRESS_PER_HOUR=5
# RELAY_RATE_LIMIT_GLOBAL_PER_HOUR=100
# --- x402 payment facilitator (#130, optional; default OFF) ---
# Runs the x402 facilitator as a DVT node module: POST /x402/verify (off-chain),
# POST /x402/settle (on-chain X402Facilitator), GET /x402/supported (discovery).
# Mirrors relay — each node holds a DEDICATED operator key and submits settlements.
# verify/supported go live immediately; settle additionally needs the operator
# PROVISIONED on-chain (ROLE PAYMASTER_SUPER + each xPNTs addApprovedFacilitator by
# its communityOwner) + funded with Sepolia gas (see docs/x402-facilitator.md §6).
# X402_OPERATOR_PK MUST be dedicated (NOT ETH_PRIVATE_KEY / RELAY_OPERATOR_PK) — set
# it per-node in deploy/node{1,2,3}/.env. Spec: docs/x402-facilitator.md.
X402_FACILITATOR_ENABLED=false
# X402_FACILITATOR_CONTRACT=0xfe1DB01e1d6622e722B92ed5993af61325DB92aF
# X402_SUPPORTED_ASSETS=0x696A73701b104c6cCBbAadDD2216788ea08EaB89,0xE6579A90dc498a710008de12119812D0FB7aA224
# X402_CHAIN_ID=11155111
# X402_FEE_BPS=200
# X402_RPC_URL= # defaults to ETH_RPC_URL
# X402_OPERATOR_PK=0x<dedicated funded+provisioned key, per node> # put in deploy/node$i/.env
# X402_OPERATOR_ADDRESS=0x<derived> # auto-written beside the PK; the provision/register
# # scripts read THIS (never the key → nothing on `ps`)
# Optional stateless-HMAC auth on /settle (maps to the SDK createAuthHeaders):
# X402_AUTH_ENABLED=false
# X402_AUTH_SECRET=<32-byte random>
# X402_AUTH_TTL_MS=300000
# --- Cloudflare named tunnel (required for the public endpoint) ---
# Create a tunnel in the Cloudflare dashboard (Zero Trust → Networks → Tunnels → Cloudflared),
# copy its token here. Then add 3 Public Hostnames pointing at http://dvt-node-1:3001 etc.
CLOUDFLARE_TUNNEL_TOKEN=eyJ...your-tunnel-token...
# --- Public URLs each node advertises (the hostnames you set in the tunnel) ---
NODE1_PUBLIC_URL=https://dvt-node-1.yourdomain.com
NODE2_PUBLIC_URL=https://dvt-node-2.yourdomain.com
NODE3_PUBLIC_URL=https://dvt-node-3.yourdomain.com