For the complete documentation index, see llms.txt. This page is also available as Markdown.

fetchEligibleRevokeSignerGrant

Dry-runs the only check of pox-5 revoke-signer-grant: that the caller is the Stacks address of the signer key. Computed locally with no network request. Run it before buildRevokeSignerGrant.


Usage

import { privateKeyToPublic } from '@stacks/transactions';
import { fetchEligibleRevokeSignerGrant } from '@stacks/bitcoin-staking';

const signerPrivateKey = process.env.SIGNER_PRIVATE_KEY!; // compressed private key, hex ending in 01

const result = await fetchEligibleRevokeSignerGrant({
  signerKey: privateKeyToPublic(signerPrivateKey),
  caller: 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE',
  network: 'mainnet',
});

if (!result.ok) console.log(result.reasons); // [1]: Pox5ErrorCode.Unauthorized

Notes

  • Mirrors revoke-signer-grant, which requires contract-caller to equal the single-signature address built from hash160(signerKey) and otherwise fails with ERR_UNAUTHORIZED (u1).

  • The expected address uses the address version of opts.network, defaulting to 'mainnet'. The contract uses the mainnet version on mainnet and the testnet version elsewhere.

  • Revoking a grant that does not exist succeeds. The contract result reports existed: false.


Signature

opts also takes the NetworkClientParam fields.


Returns

Promise<EligibilityResult>

Resolves to an EligibilityResult: { ok: true } if caller is the signer key's address, otherwise { ok: false, reasons: [Pox5ErrorCode.Unauthorized] }.


Parameters

opts.signerKey (required)

  • Type: Uint8Array | string

Signer public key whose grant would be revoked: 33-byte compressed, as bytes or hex.

opts.caller (required)

  • Type: string

The principal that would send the transaction (the contract's contract-caller).

opts.network (optional)

  • Type: StacksNetworkName | StacksNetwork

The network whose address version builds the expected address: a name such as 'mainnet' or 'testnet', or a StacksNetwork object. Defaults to 'mainnet'.

opts.client (optional)

  • Type: { baseUrl?: string; fetch?: FetchFn }

Accepted for a uniform signature. This function makes no request, so it has no effect.

Was this helpful?