Standalone

Vanity Addresses

close button

Vanity Addresses

Download quests in Questplay

View the contracts and any other additional content from your IDE.

Starknet relies on salted hashing in its computation of contract addresses. A positive side-effect of this is that it is possible to deploy accounts and other smart contracts onto vanity addresses. Vanity addresses are addresses that contain a easily distinguishable hexadecimal segment. For example, 0x0000... or 0xdead....

Your quest is simple, can you find an 04515?

Your Task

Set is_oasis_found in EndlessDesert to true.

Contract Code

#[starknet::interface] trait IDesert<TContractState> { fn is_oasis_found(self: @TContractState) -> bool; fn find_oasis(ref self: TContractState); } #[starknet::contract] mod EndlessDesert { use starknet::{ ContractAddress, get_caller_address }; use traits::Into; use super::IDesert; #[storage] struct Storage { is_oasis_found: bool, } #[abi(embed_v0)] impl EndlessDesert of IDesert<ContractState> { fn is_oasis_found(self: @ContractState) -> bool { self.is_oasis_found.read() } fn find_oasis(ref self: ContractState) { let caller = get_caller_address(); assert(is_oasis(caller), 'NOT_OASIS'); self.is_oasis_found.write(true); } } #[inline(always)] fn is_oasis(address: ContractAddress) -> bool { let addr_as_felt: felt252 = address.into(); let addr_as_u256: u256 = addr_as_felt.into(); let prefix = addr_as_u256.high / 0x1000000000000000000000000000; prefix == 0x04515 } }

To safely cross the desert, you need to find the oasis…