Created
September 25, 2024 10:44
-
-
Save gists-immunefi/26c6b2558f4edcf1ebd9aefca0daaccd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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