LocalSigner

LocalSigner is a simple in-memory signer shipped with Colibri for convenience during development and testing. It is not intended for production use cases where more secure key management solutions are recommended.

circle-info

LocalSigner shields the secret key by not exposing it unnecessarily—the key exists only inside a secure closure and is never returned by any method.

Creating a LocalSigner

From Secret Key

import { LocalSigner } from "@colibri/core";

const signer = LocalSigner.fromSecret("SBCDEFGHIJKLMNOPQRSTUVWXYZ...");

console.log(signer.publicKey()); // "GABC..."

Generate Random Keypair

const signer = LocalSigner.generateRandom();

console.log(signer.publicKey()); // New random public key

Usage with Pipelines

import { PIPE_InvokeContract, LocalSigner, NetworkConfig } from "@colibri/core";
import { Operation } from "stellar-sdk";

const network = NetworkConfig.TestNet();
const signer = LocalSigner.fromSecret("S...");

const pipeline = PIPE_InvokeContract.create({ networkConfig: network });
const result = await pipeline.run({
  operations: [
    Operation.invokeContractFunction({
      contract: "CABC...",
      function: "transfer",
      args: [...],
    }),
  ],
  config: {
    source: signer.publicKey(),
    fee: "100000",
    signers: [signer],
  },
});

## Signing Targets

Colibri processes select signers via `signsFor(target)`. By default, `LocalSigner` signs for its own public key.

If you need a `LocalSigner` to sign Soroban authorization entries for a contract address, add that contract ID as a target:

```typescript
import { LocalSigner } from "@colibri/core";

const signer = LocalSigner.fromSecret("S...");
signer.addTarget("CABC..." as ContractId);

Next Steps

  • Signer — Signer interface for custom implementations

  • Pipelines — Use signers in transaction workflows

Last updated