pub struct DefaultSigner {
    pub arg_name: String,
    pub path: String,
    /* private fields */
}
Expand description

A command line argument that loads a default signer in absence of other signers.

This type manages a default signing source which may be overridden by other signing sources via its generate_unique_signers method.

path is a signing source as documented by signer_from_path, and arg_name is the name of its clap command line argument, which is passed to signer_from_path as its keypair_name argument.

Fields

arg_name: String

The name of the signers command line argument.

path: String

The signing source.

Implementations

Create a new DefaultSigner.

path is a signing source as documented by signer_from_path, and arg_name is the name of its clap command line argument, which is passed to signer_from_path as its keypair_name argument.

Examples
use clap::{App, Arg, value_t_or_exit};
use solana_clap_utils::keypair::DefaultSigner;
use solana_clap_utils::offline::OfflineArgs;

let clap_app = App::new("my-program")
    // The argument we'll parse as a signer "path"
    .arg(Arg::with_name("keypair")
        .required(true)
        .help("The default signer"))
    .offline_args();

let clap_matches = clap_app.get_matches();
let keypair_str = value_t_or_exit!(clap_matches, "keypair", String);

let default_signer = DefaultSigner::new("keypair", &keypair_str);
assert_eq!(default_signer.path, keypair_str);

Generate a unique set of signers, possibly excluding this default signer.

This function allows a command line application to have a default signer, perhaps representing a default wallet, but to override that signer and instead sign with one or more other signers.

bulk_signers is a vector of signers, all of which are optional. If any of those signers is None, then the default signer will be loaded; if all of those signers are Some, then the default signer will not be loaded.

The returned value includes all of the bulk_signers that were not None, and maybe the default signer, if it was loaded.

Examples
use clap::{App, Arg, value_t_or_exit};
use solana_clap_utils::keypair::{DefaultSigner, signer_from_path};
use solana_clap_utils::offline::OfflineArgs;
use solana_sdk::signer::Signer;

let clap_app = App::new("my-program")
    // The argument we'll parse as a signer "path"
    .arg(Arg::with_name("keypair")
        .required(true)
        .help("The default signer"))
    .arg(Arg::with_name("payer")
        .long("payer")
        .help("The account paying for the transaction"))
    .offline_args();

let mut wallet_manager = None;

let clap_matches = clap_app.get_matches();
let keypair_str = value_t_or_exit!(clap_matches, "keypair", String);
let maybe_payer = clap_matches.value_of("payer");

let default_signer = DefaultSigner::new("keypair", &keypair_str);
let maybe_payer_signer = maybe_payer.map(|payer| {
    signer_from_path(&clap_matches, payer, "payer", &mut wallet_manager)
}).transpose()?;
let bulk_signers = vec![maybe_payer_signer];

let unique_signers = default_signer.generate_unique_signers(
    bulk_signers,
    &clap_matches,
    &mut wallet_manager,
)?;

Loads the default Signer from one of several possible sources.

The path is not strictly a file system path, but is interpreted as various types of signing source, depending on its format, one of which is a path to a keypair file. Some sources may require user interaction in the course of calling this function.

This simply delegates to the signer_from_path free function, passing it the DefaultSigners path and arg_name fields as the path and keypair_name arguments.

See the signer_from_path free function for full documentation of how this function interprets its arguments.

Examples
use clap::{App, Arg, value_t_or_exit};
use solana_clap_utils::keypair::DefaultSigner;
use solana_clap_utils::offline::OfflineArgs;

let clap_app = App::new("my-program")
    // The argument we'll parse as a signer "path"
    .arg(Arg::with_name("keypair")
        .required(true)
        .help("The default signer"))
    .offline_args();

let clap_matches = clap_app.get_matches();
let keypair_str = value_t_or_exit!(clap_matches, "keypair", String);
let default_signer = DefaultSigner::new("keypair", &keypair_str);
let mut wallet_manager = None;

let signer = default_signer.signer_from_path(
    &clap_matches,
    &mut wallet_manager,
)?;

Loads the default Signer from one of several possible sources.

The path is not strictly a file system path, but is interpreted as various types of signing source, depending on its format, one of which is a path to a keypair file. Some sources may require user interaction in the course of calling this function.

This simply delegates to the signer_from_path_with_config free function, passing it the DefaultSigners path and arg_name fields as the path and keypair_name arguments.

See the signer_from_path free function for full documentation of how this function interprets its arguments.

Examples
use clap::{App, Arg, value_t_or_exit};
use solana_clap_utils::keypair::{SignerFromPathConfig, DefaultSigner};
use solana_clap_utils::offline::OfflineArgs;

let clap_app = App::new("my-program")
    // The argument we'll parse as a signer "path"
    .arg(Arg::with_name("keypair")
        .required(true)
        .help("The default signer"))
    .offline_args();

let clap_matches = clap_app.get_matches();
let keypair_str = value_t_or_exit!(clap_matches, "keypair", String);
let default_signer = DefaultSigner::new("keypair", &keypair_str);
let mut wallet_manager = None;

// Allow pubkey signers without accompanying signatures
let config = SignerFromPathConfig {
    allow_null_signer: true,
};

let signer = default_signer.signer_from_path_with_config(
    &clap_matches,
    &mut wallet_manager,
    &config,
)?;

Trait Implementations

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The alignment of pointer.

The type for initializers.

Initializes a with the given initializer. Read more

Dereferences the given pointer. Read more

Mutably dereferences the given pointer. Read more

Drops the object pointed to by the given pointer. Read more

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more