// npm 패키지
@aztec/validator-client
The validator client handles consensus duties for Aztec validators: validating block proposals, attesting to checkpoints, and detecting slashable some offenses. Validators do NOT attest to individual blocks. Attestations are only created for checkpoint pr
버전
982
메인테이너
6
최초 publish
2025-02-07
publisher
charlielye
tarball
414,425 B
AUTO-PUBLISHED·1개 버전 인덱싱됨·최근 publish: 2026-06-04
// exfil path
what is read → where it shipssteals
- ● Seed phrase
sends to
(no destination string extracted — payload may be dynamic / obfuscated)
→ view full payload// publisher 캠페인by charlielye
이 계정에서 catch된 패키지 9건고립된 catch가 아닙니다. 동일 publisher가 8개의 다른 패키지를 추가로 발행했고, 모두 파이프라인이 catch했습니다 — 일회성이 아닌 조직적 캠페인의 형태. 아래 링크는 각 형제 catch의 분석으로 이동합니다.
// offending code· @4.3.1· 3 files flagged
- @4.3.1··AUTO-PUBLISHED·publisher: charlielyeheuristic 64/100static flags 1llm skippednew-publisher:15dmature-packagepublisher-multi-name-burst:40publisher-version-pump:41reads-seed-phrase
// offending code· 3 files flaggedpatterns: 1
--- package/src/key_store/node_keystore_adapter.ts (excerpt) --- import type { EthSigner } from '@aztec/ethereum/eth-signer'; import type { Buffer32 } from '@aztec/foundation/buffer'; import { EthAddress } from '@aztec/foundation/eth-address'; import type { Signature } from '@aztec/foundation/eth-signature'; import { KeystoreManager, loadKeystoreFile } from '@aztec/node-keystore'; import type { EthRemoteSignerConfig } from '@aztec/node-keystore'; import { AztecAddress } from '@aztec/stdlib/aztec-address'; import { InvalidValidatorPrivateKeyError } from '@aztec/stdlib/validators'; import type { SigningContext } from '@aztec/validator-ha-signer/types'; import type { TypedDataDefinition } from 'viem'; import { privateKeyToAccount } from 'viem/accounts'; import type { ExtendedValidatorKeyStore } from './interface.js'; type AddressHex = string; type ValidatorIndex = number; interface ValidatorCache { attesters: EthSigner[]; publishers: EthSigner[]; all: EthSigner[]; byAddress: Map<AddressHex, EthSigner>; // all signers, any role attesterSet: Set<AddressHex>; // attester addresses only } export class NodeKeystoreAdapter implements ExtendedValidatorKeyStore { private readonly keystoreManager: KeystoreManager; // Per-validator cache (lazy) private readonly validators = new Map<ValidatorIndex, ValidatorCache>(); private readonly addressIndex = new Map<AddressHex, { signer: EthSigner; validatorIndex: ValidatorIndex }>(); private constructor(keystoreManager: KeystoreManager) { this.keystoreManager = keystoreManager; --- package/dest/key_store/node_keystore_adapter.d.ts (excerpt) --- import type { Buffer32 } from '@aztec/foundation/buffer'; import { EthAddress } from '@aztec/foundation/eth-address'; import type { Signature } from '@aztec/foundation/eth-signature'; import { KeystoreManager } from '@aztec/node-keystore'; import type { EthRemoteSignerConfig } from '@aztec/node-keystore'; import { AztecAddress } from '@aztec/stdlib/aztec-address'; import type { SigningContext } from '@aztec/validator-ha-signer/types'; import type { TypedDataDefinition } from 'viem'; import type { ExtendedValidatorKeyStore } from './interface.js'; export declare class NodeKeystoreAdapter implements ExtendedValidatorKeyStore { private readonly keystoreManager; private readonly validators; private readonly addressIndex; private constructor(); /** * Create an adapter from a keystore JSON file on disk. * @param keystoreFilePath Absolute or relative path to a keystore JSON file * @returns A configured NodeKeystoreAdapter instance * @throws Error when the file fails schema validation or cannot be read */ static fromKeystoreFile(keystoreFilePath: string): NodeKeystoreAdapter; /** * Create an adapter from an in-memory keystore-like object. * Validates resolved duplicate attester addresses across validators and sources. * @param keystoreConfig Parsed config object (typically result of loadKeystoreFile) * @returns A configured NodeKeystoreAdapter instance * @throws Error when resolved duplicate attester addres --- package/dest/key_store/node_keystore_adapter.js (excerpt) --- import { KeystoreManager, loadKeystoreFile } from '@aztec/node-keystore'; import { InvalidValidatorPrivateKeyError } from '@aztec/stdlib/validators'; import { privateKeyToAccount } from 'viem/accounts'; export class NodeKeystoreAdapter { keystoreManager; // Per-validator cache (lazy) validators = new Map(); addressIndex = new Map(); constructor(keystoreManager){ this.keystoreManager = keystoreManager; } /** * Create an adapter from a keystore JSON file on disk. * @param keystoreFilePath Absolute or relative path to a keystore JSON file * @returns A configured NodeKeystoreAdapter instance * @throws Error when the file fails schema validation or cannot be read */ static fromKeystoreFile(keystoreFilePath) { const keystoreConfig = loadKeystoreFile(keystoreFilePath); return NodeKeystoreAdapter.fromKeystoreConfig(keystoreConfig); } /** * Create an adapter from an in-memory keystore-like object. * Validates resolved duplicate attester addresses across validators and sources. * @param keystoreConfig Parsed config object (typically result of loadKeystoreFile) * @returns A configured NodeKeystoreAdapter instance * @throws Error when resolved duplicate attester addresses are detected */ static fromKeystoreConfig(keystoreConfig) { const keystoreManager = new KeystoreManager(keystoreConfig); // Validate resolved attester addresses (covers JSON V3 and mnemonic duplicates across vali
