Crate pallet_sudo[][src]

Expand description

Sudo Pallet

Overview

The Sudo pallet allows for a single account (called the “sudo key”) to execute dispatchable functions that require a Root call or designate a new account to replace them as the sudo key. Only one account can be the sudo key at a time.

Interface

Dispatchable Functions

Only the sudo key can call the dispatchable functions from the Sudo pallet.

  • sudo - Make a Root call to a dispatchable function.
  • set_key - Assign a new account to be the sudo key.

Usage

Executing Privileged Functions

The Sudo pallet itself is not intended to be used within other pallets. Instead, you can build “privileged functions” (i.e. functions that require Root origin) in other pallets. You can execute these privileged functions by calling sudo with the sudo key account. Privileged functions cannot be directly executed via an extrinsic.

Learn more about privileged functions and Root origin in the Origin type documentation.

Simple Code Snippet

This is an example of a pallet that exposes a privileged function:

 
#[frame_support::pallet]
pub mod logger {
	use frame_support::pallet_prelude::*;
	use frame_system::pallet_prelude::*;
	use super::*;

	#[pallet::config]
	pub trait Config: frame_system::Config {}

	#[pallet::pallet]
	pub struct Pallet<T>(PhantomData<T>);

	#[pallet::call]
	impl<T: Config> Pallet<T> {
		#[pallet::weight(0)]
        pub fn privileged_function(origin: OriginFor<T>) -> DispatchResultWithPostInfo {
            ensure_root(origin)?;

            // do something...

            Ok(().into())
        }
	}
}

Genesis Config

The Sudo pallet depends on the GenesisConfig. You need to set an initial superuser account as the sudo key.

Re-exports

pub use pallet::*;

Modules

The module that hosts all the FRAME types needed to add this pallet to a runtime.