Skip to content

Commit

Permalink
feat: isMemberOfProfile
Browse files Browse the repository at this point in the history
  • Loading branch information
Avinash-kumar-82 committed Aug 25, 2024
1 parent 452f67f commit 19e9518
Showing 1 changed file with 23 additions and 9 deletions.
32 changes: 23 additions & 9 deletions src/core/registry.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,16 @@ struct Metadata {
// allo.gitcoin.co

/// Registry contract
/// Solidity equivalent: https://github.com/allo-protocol/allo-v2/blob/main/contracts/core/Registry.sol
/// Solidity equivalent:
/// https://github.com/allo-protocol/allo-v2/blob/main/contracts/core/Registry.sol

/// Registry contract interface
/// Interface for the Registry contract.
#[starknet::interface]
pub trait IRegistry<TContractState> {
fn is_member_of_profile(
self: @TContractState, profile_id: u256, member: ContractAddress
) -> bool;
fn is_owner_of_profile(self: @TContractState, profile_id: u256, owner: ContractAddress) -> bool;
fn update_profile_pending_owner(
ref self: TContractState, profile_id: u256, pending_owner: ContractAddress
Expand Down Expand Up @@ -141,7 +145,7 @@ pub mod Registry {
> { // Issue no. #15 Implement the functionality to retrieve profile by profileId
// Down below is the function that is to be implemented in the contract but in cairo.
// https://github.com/allo-protocol/allo-v2/blob/4dd0ea34a504a16ac90e80f49a5570b8be9b30e9/contracts/core/Registry.sol#L94
// Use _profileID as u256
// Use _profileID as u256

// Issue no. #14 Implement the functionality to retrieve profile by anchor
// Down below is the function that is to be implemented in the contract but in cairo.
Expand Down Expand Up @@ -200,9 +204,16 @@ pub mod Registry {
return self._is_owner_of_profile(profile_id, owner);
}
// Issue no. #5 Implement the functionality of isMemberOfProfile

// Down below is the function that is to be implemented in the contract but in cairo.
// https://github.com/allo-protocol/allo-v2/blob/4dd0ea34a504a16ac90e80f49a5570b8be9b30e9/contracts/core/Registry.sol#L245

fn is_member_of_profile(
self: @ContractState, profile_id: u256, member: ContractAddress
) -> bool {
return self.is_member_of_profile(profile_id, member);
}

// Issue no. #9 Implement the functionality of UpdateProfilePendingOwner
// Down below is the function that is to be implemented in the contract but in cairo.
// https://github.com/allo-protocol/allo-v2/blob/4dd0ea34a504a16ac90e80f49a5570b8be9b30e9/contracts/core/Registry.sol#L253
Expand Down Expand Up @@ -238,12 +249,12 @@ pub mod Registry {
i += 1;
}
}
// Issue no. #6 Implement the functionality of removeMembers
// Issue no. #6 Implement the functionality of removeMembers
// Use u256 instead of bytes32
// Down below is the function that is to be implemented in the contract but in cairo.
// https://github.com/allo-protocol/allo-v2/blob/4dd0ea34a504a16ac90e80f49a5570b8be9b30e9/contracts/core/Registry.sol#L311

// Issue no. #16 Implement the functionality of recoverFunds
// Issue no. #16 Implement the functionality of recoverFunds
// Down below is the function that is to be implemented in the contract but in cairo.
// https://github.com/allo-protocol/allo-v2/blob/4dd0ea34a504a16ac90e80f49a5570b8be9b30e9/contracts/core/Registry.sol#L392C14-L392C26

Expand All @@ -256,10 +267,13 @@ pub mod Registry {
impl RegistryInternalImpl of RegistryInternalTrait { // Issue no. #19 Implement the functionality of _generateProfileId
// Internal function to create a profile
// https://github.com/allo-protocol/allo-v2/blob/4dd0ea34a504a16ac90e80f49a5570b8be9b30e9/contracts/core/Registry.sol#L366
// Reference on how to implement keccak256(abi.encodePacked)
// Solidity - https://github.com/celestiaorg/blobstream-contracts/blob/0b4bcf69d1ce96df000da7f95fba8c03aa15a45e/src/lib/tree/namespace/TreeHasher.sol#L33
// Cairo - https://github.com/keep-starknet-strange/blobstream-starknet/blob/b74777e5fb479e5b4aa5a1419135e0826343fc37/src/tree/namespace/hasher.cairo#L10
// More about it - https://github.com/keep-starknet-strange/alexandria/tree/main/src/encoding
// Reference on how to implement keccak256(abi.encodePacked)
// Solidity -
// https://github.com/celestiaorg/blobstream-contracts/blob/0b4bcf69d1ce96df000da7f95fba8c03aa15a45e/src/lib/tree/namespace/TreeHasher.sol#L33
// Cairo -
// https://github.com/keep-starknet-strange/blobstream-starknet/blob/b74777e5fb479e5b4aa5a1419135e0826343fc37/src/tree/namespace/hasher.cairo#L10
// More about it -
// https://github.com/keep-starknet-strange/alexandria/tree/main/src/encoding

// Issue no. #18 Implement the functionality of _generateAnchor
// Internal function to create a _generateAnchor
Expand Down Expand Up @@ -288,7 +302,7 @@ pub mod Registry {
) -> bool {
return self.profiles_by_id.read(_profile_id).owner == _owner;
}
// Issue n. #5 Implement the functionality of _isMemberOfProfile
// Issue n. #5 Implement the functionality of _isMemberOfProfile
// Down below is the function that is to be implemented in the contract but in cairo.
// https://github.com/allo-protocol/allo-v2/blob/4dd0ea34a504a16ac90e80f49a5570b8be9b30e9/contracts/core/Registry.sol#L384C14-L384C32

Expand Down

0 comments on commit 19e9518

Please sign in to comment.