TypeScript-strict scripts for interacting with Safe multisig accounts via:
All scripts use ethers v6, validate inputs (addresses, tx hashes), and output JSON.
cd <this-skill>
./scripts/bootstrap.sh
# sanity check network + service
./scripts/safe_about.sh --chain base
| Script | Description |
|---|---|
| -------- | ------------- |
create-safe.ts | Predict address + optionally deploy a new Safe |
safe-info.ts | Fetch Safe info (owners/threshold/nonce) |
list-pending.ts | List pending (queued) multisig transactions |
safe_txs_list.ts | List all multisig transactions (queued + executed) |
propose-tx.ts | Create + propose a multisig tx |
approve-tx.ts | Add an off-chain confirmation for a tx hash |
execute-tx.ts | Execute a fully-confirmed tx onchain |
All scripts: npx tsx scripts/
npx tsx scripts/create-safe.ts \
--chain base \
--owners 0xOwner1,0xOwner2,0xOwner3 \
--threshold 2
Add --deploy + SAFE_SIGNER_PRIVATE_KEY to send the deployment tx.
npx tsx scripts/safe-info.ts --chain base --safe 0xYourSafe
npx tsx scripts/list-pending.ts --chain base --safe 0xYourSafe
Create a tx request JSON (see references/tx_request.schema.json and references/examples.md).
export SAFE_SIGNER_PRIVATE_KEY="..."
npx tsx scripts/propose-tx.ts \
--chain base \
--rpc-url "$BASE_RPC_URL" \
--tx-file ./references/example.tx.json
export SAFE_SIGNER_PRIVATE_KEY="..."
npx tsx scripts/approve-tx.ts \
--chain base \
--safe 0xYourSafe \
--safe-tx-hash 0x...
export SAFE_SIGNER_PRIVATE_KEY="..."
npx tsx scripts/execute-tx.ts \
--chain base \
--rpc-url "$BASE_RPC_URL" \
--safe 0xYourSafe \
--safe-tx-hash 0x...
All scripts accept:
--chain (recommended): e.g. base, base-sepolia, mainnet, arbitrum, optimism--tx-service-url : Override the transaction service URL--rpc-url : RPC endpoint (or RPC_URL env var)--api-key : Safe Transaction Service API key (or SAFE_TX_SERVICE_API_KEY env var)references/examples.md — example requests + workflowsreferences/tx_request.schema.json — tx request JSON shapereferences/tx_service_slugs.md — chain slugs + notes共 1 个版本