The Proof of Trade protocol will use the Proxy Pattern in Solidity, delegating "logic" contracts from a static parent proxy contract. This approach offers flexibility but leaves the protocol vulnerable to unwanted changes or bugs. Moreover, because the Proof of Trade requirements dictate that no single EOA can change any contract, upgrades will go through a rigorous process outlined in the Change Process.
The exception is the $DXBL token contract, which will never be upgradeable.
The Proxy Pattern is a Solidity design pattern enabling a more dynamic delegation of calls to a target contract. The proxy contract acts as an intermediary between a calling contract and the target contract by forwarding calls and delegating execution. This pattern enables the target contract to be upgraded or changed without affecting the calling contract. The proxy contract remains constant and acts as a stable interface to the target contract.
Delegating "logic" contracts from a non-changing parent proxy contract means that the parent contract acts as a static and unchanging intermediary between the calling contract and one or more logic contracts that hold the actual implementation of the desired functionality. The parent contract delegates calls the appropriate logic contract, allowing the logic to be updated or changed without affecting the calling contract. This approach provides a separation of concerns, making it easier to manage and upgrade the logic contracts.
A single EOA, or Externally Owned Account, is a type of EVM wallet account controlled by a private key held by a human or a program. An EOA does not have its own code or functionality and can be used to interact with smart contracts or send transactions on an EVM network. An EOA is typically created by a user through wallet software, and is used to store and manage addresses' tokens and account privileges.