1.0.0 • Published 3 years ago

baseline-protocol-template v1.0.0

Weekly downloads
4
License
SEE LICENSE IN LI...
Repository
-
Last release
3 years ago

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 NameSHA-1 Hash
contracts/registry/IOrgRegistry.sol0514e15aa16c4c92f61c3cdc3f17d93e3ee56377
contracts/registry/OrgRegistry.sole0bb2ddd83c0d3373d6b58d50ec756a833ac88d0
contracts/registry/Registrar.sol6507a72d2283a5e2cc04bc99ea90ef1f878fe9b7

Contracts Description Table

ContractTypeBases
Function NameVisibilityMutabilityModifiers
IOrgRegistryInterface
registerOrgExternal ❗️🛑NO❗️
updateOrgExternal ❗️🛑NO❗️
getOrgCountExternal ❗️NO❗️
getOrgExternal ❗️NO❗️
OrgRegistryImplementationOwnable, ERC165Compatible, Registrar, IOrgRegistry
Public ❗️🛑ERC165Compatible Registrar
setInterfacesPublic ❗️🛑onlyOwner
getInterfacesExternal ❗️NO❗️
canImplementInterfaceForAddressExternal ❗️NO❗️
assignManagerExternal ❗️🛑onlyOwner
registerOrgExternal ❗️🛑onlyOwner
updateOrgExternal ❗️🛑NO❗️
registerInterfacesExternal ❗️🛑onlyOwner
getOrgCountExternal ❗️NO❗️
getOrgExternal ❗️NO❗️
getInterfaceAddressesExternal ❗️NO❗️
RegistrarImplementation
Public ❗️🛑NO❗️
setInterfaceImplementationInternal 🔒🛑
interfaceAddrExternal ❗️NO❗️
assignManagementInternal 🔒🛑
getManagerPublic ❗️NO❗️

Legend

SymbolMeaning
🛑Function can modify state
💵Function is payable

Privacy Contracts Description Report 🔮

Files Description Table

File NameSHA-1 Hash
contracts/privacy/IShield.solc4b6e694bbdd4317e6fdc1e595e467cb10e5e1dd
contracts/privacy/IVerifier.solba4926ea2f01fde5d11362808fc1e573e69e31e3
contracts/privacy/Shield.sol14415a0a47a10c0865993bdc3c8a350c683dc69f

Contracts Description Table

ContractTypeBases
Function NameVisibilityMutabilityModifiers
IShieldInterface
getVerifierExternal ❗️NO❗️
verifyAndPushExternal ❗️🛑NO❗️
IVerifierInterface
verifyExternal ❗️🛑NO❗️
ShieldImplementationIShield, MerkleTreeSHA256
Public ❗️🛑MerkleTreeSHA256
getVerifierExternal ❗️NO❗️
verifyAndPushExternal ❗️🛑NO❗️

Legend

SymbolMeaning
🛑Function can modify state
💵Function is payable

License

CC-0

1.0.0

3 years ago