Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save gists-immunefi/26c6b2558f4edcf1ebd9aefca0daaccd to your computer and use it in GitHub Desktop.
Save gists-immunefi/26c6b2558f4edcf1ebd9aefca0daaccd to your computer and use it in GitHub Desktop.
// ownable.sw
library;
pub struct OwnershipTransferred {
previous_owner: b256,
new_owner: b256,
}
pub trait StorageHelpers {
#[storage(read)]
fn get_owner() -> b256;
#[storage(write)]
fn set_owner(owner: b256);
}
pub trait Ownable : StorageHelpers {
} {
#[storage(read)]
fn owner() -> b256 {
Self::get_owner()
}
#[storage(read)]
fn only_owner() {
assert(msg_sender().unwrap() == Identity::Address(Address::from(Self::get_owner())));
}
#[storage(write)]
fn renounce_ownership() {
Self::set_owner(b256::zero());
}
#[storage(read, write)]
fn transfer_ownership(new_owner: b256) {
assert(new_owner != b256::zero());
let old_owner = Self::get_owner();
Self::set_owner(new_owner);
// log does not work here
log(OwnershipTransferred {
previous_owner: old_owner,
new_owner: new_owner,
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment