Message Sender
The standard prelude imports a function msg_sender()
automatically, which retrieves the Identity of the caller.
The identity can be used for a variety of reasons however a common application is access control i.e. restricting functionality for non-privileged users (non-admins).
Example
We can implement access control by specifying that only the owner can call a function.
In the following snippet we accomplish this by comparing the caller msg_sender()
to the OWNER
. If a regular user calls the function then it will revert otherwise it will continue to run when called by the OWNER
.
const OWNER = Identity::Address(Address::from(0x0000000000000000000000000000000000000000000000000000000000000000));
fn update() {
require(msg_sender().unwrap() == OWNER, "Owner Only");
// code
}