When pro/v3 contracts are deployed the following objects are created on Genesis:
"Package": "0x19b1bfa102bdb1c2cfca195bfeb895398a75674a2a355b263e15f0d11587d844",
"AdminCap": "0x27604e50e743401ab70a3632eaf2d4bb7c74b89f7002dc08f36f5b9cfdb34f89",
"UpgradeCap": "0x404eeeaacfa9833a6608b3c807b531d3c3b8cf8c0dd4eceb65d0cf3c27fe1626",
"ExternalDataStore": "0xa7afb7525fb50f544a280a24e9f45aeab8bef6b229fa931b79b72f73e230cf7b",
"InternalDataStore": "0xd1996d047403e6241c471f940a030ebb623e1337bb058289cb1fd78e0faec3ea",
- Package: This is the id/address of the deployed package
- AdminCap: The owner of this capability object is the admin of the protocol. This is the highest privileged account and can perform some admin controlled operations. More on that later on. The deployer of the contracts is given the capability object.
- UpgradeCap: This is the upgrade capability object. On genesis the deployer of the protocol is given this object. The holder can publish upgrades to the contract
- ExternalDataStore: This is the shared external data store object. All operations that can be performed directly by users (deposit) and the holder of admin cap such as setting new operators or creating perpetuals etc.. are performed on this object.
- InternalDataStore: This is the owned internal data store that can only be accessed only by the sequencer (owner of the data store object. Note: The word sequencer refers to the internal data store object owner) - All operations like trade, liquidate, adjust margin, leverage etc are perform directly on this object. Upon deployment, the deployer is the given this object.