1.0.0 • Published 3 years ago
License SEE LICENSE IN LI...
Share package Developer Tools 🛠️ Workflows 🧰 Organization Registry 💼 Each organization registered within the OrgRegistry first generates a secp256k1 keypair and uses the Ethereum public address representation as "primary key" for future resolution. This key SHOULD NOT sign transactions. A best practice is to use an HD wallet to rotate keys, preventing any account from signing more than a single transaction.
Note that an organization may not update its address.
struct Org {
address orgAddress;
bytes32 name;
bytes messagingEndpoint;
bytes whisperKey;
bytes zkpPublicKey;
bytes metadata;
}
struct OrgInterfaces {
bytes32 groupName;
address tokenAddress;
address shieldAddress;
address verifierAddress;
}
mapping (address => Org) orgMap;
mapping (uint => OrgInterfaces) orgInterfaceMap;
uint orgInterfaceCount;
Org[] public orgs;
mapping(address => address) managerMap;
event RegisterOrg(
bytes32 _name,
address _address,
bytes _messagingEndpoint,
bytes _whisperKey,
bytes _zkpPublicKey,
bytes _metadata
);
event UpdateOrg(
bytes32 _name,
address _address,
bytes _messagingEndpoint,
bytes _whisperKey,
bytes _zkpPublicKey,
bytes _metadata
);
Shield 🛡 Unlike the Radish34 Reference Implementation, the contracts package does not include a "shield" contract. Rather, it is up to each workgroup to determine a suitable shielding mechanism to ensure privacy. For example, the IBaselineRPC implementation within the Nethermind client used in the BRI-1 Reference Implementation ships with shield contract binaries (i.e., including the MerkleTreeSHA contract).
Registry Contracts Overview 🏢 Files Description Table File Name SHA-1 Hash contracts/registry/IOrgRegistry.sol 0514e15aa16c4c92f61c3cdc3f17d93e3ee56377 contracts/registry/OrgRegistry.sol e0bb2ddd83c0d3373d6b58d50ec756a833ac88d0 contracts/registry/Registrar.sol 6507a72d2283a5e2cc04bc99ea90ef1f878fe9b7
Contracts Description Table Contract Type Bases └ Function Name Visibility Mutability Modifiers IOrgRegistry Interface └ registerOrg External ❗️ 🛑 NO❗️ └ updateOrg External ❗️ 🛑 NO❗️ └ getOrgCount External ❗️ NO❗️ └ getOrg External ❗️ NO❗️ OrgRegistry Implementation Ownable, ERC165Compatible, Registrar, IOrgRegistry └ Public ❗️ 🛑 ERC165Compatible Registrar └ setInterfaces Public ❗️ 🛑 onlyOwner └ getInterfaces External ❗️ NO❗️ └ canImplementInterfaceForAddress External ❗️ NO❗️ └ assignManager External ❗️ 🛑 onlyOwner └ registerOrg External ❗️ 🛑 onlyOwner └ updateOrg External ❗️ 🛑 NO❗️ └ registerInterfaces External ❗️ 🛑 onlyOwner └ getOrgCount External ❗️ NO❗️ └ getOrg External ❗️ NO❗️ └ getInterfaceAddresses External ❗️ NO❗️ Registrar Implementation └ Public ❗️ 🛑 NO❗️ └ setInterfaceImplementation Internal 🔒 🛑 └ interfaceAddr External ❗️ NO❗️ └ assignManagement Internal 🔒 🛑 └ getManager Public ❗️ NO❗️
Legend Symbol Meaning 🛑 Function can modify state 💵 Function is payable
Privacy Contracts Description Report 🔮 Files Description Table File Name SHA-1 Hash contracts/privacy/IShield.sol c4b6e694bbdd4317e6fdc1e595e467cb10e5e1dd contracts/privacy/IVerifier.sol ba4926ea2f01fde5d11362808fc1e573e69e31e3 contracts/privacy/Shield.sol 14415a0a47a10c0865993bdc3c8a350c683dc69f
Contracts Description Table Contract Type Bases └ Function Name Visibility Mutability Modifiers IShield Interface └ getVerifier External ❗️ NO❗️ └ verifyAndPush External ❗️ 🛑 NO❗️ IVerifier Interface └ verify External ❗️ 🛑 NO❗️ Shield Implementation IShield, MerkleTreeSHA256 └ Public ❗️ 🛑 MerkleTreeSHA256 └ getVerifier External ❗️ NO❗️ └ verifyAndPush External ❗️ 🛑 NO❗️
Legend Symbol Meaning 🛑 Function can modify state 💵 Function is payable
License CC-0