Development Artifact Cleanup: ✅ BROTHER_NODE REORGANIZATION: Moved development test node to appropriate location - dev/test-nodes/brother_node/: Moved from root directory for better organization - Contains development configuration, test logs, and test chain data - No impact on production systems - purely development/testing artifact ✅ DEVELOPMENT ARTIFACTS IDENTIFIED: - Chain ID: aitbc-brother-chain (test/development chain) - Ports: 8010 (P2P) and 8011 (RPC) - different from production - Environment: .env file with test configuration - Logs: rpc.log and node.log from development testing session (March 15, 2026) ✅ ROOT DIRECTORY CLEANUP: Removed development clutter from production directory - brother_node/ moved to dev/test-nodes/brother_node/ - Root directory now contains only production-ready components - Development artifacts properly organized in dev/ subdirectory DIRECTORY STRUCTURE IMPROVEMENT: 📁 dev/test-nodes/: Development and testing node configurations 🏗️ Root Directory: Clean production structure with only essential components 🧪 Development Isolation: Test environments separated from production BENEFITS: ✅ Clean Production Directory: No development artifacts in root ✅ Better Organization: Development nodes grouped in dev/ subdirectory ✅ Clear Separation: Production vs development environments clearly distinguished ✅ Maintainability: Easier to identify and manage development components RESULT: Successfully moved brother_node development artifact to dev/test-nodes/ subdirectory, cleaning up the root directory while preserving development testing environment for future use.
46 lines
1.9 KiB
Solidity
Executable File
46 lines
1.9 KiB
Solidity
Executable File
// SPDX-License-Identifier: MIT
|
|
// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/ProxyAdmin.sol)
|
|
|
|
pragma solidity ^0.8.22;
|
|
|
|
import {ITransparentUpgradeableProxy} from "./TransparentUpgradeableProxy.sol";
|
|
import {Ownable} from "../../access/Ownable.sol";
|
|
|
|
/**
|
|
* @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an
|
|
* explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.
|
|
*/
|
|
contract ProxyAdmin is Ownable {
|
|
/**
|
|
* @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address,address)`
|
|
* and `upgradeAndCall(address,address,bytes)` are present, and `upgrade` must be used if no function should be called,
|
|
* while `upgradeAndCall` will invoke the `receive` function if the third argument is the empty byte string.
|
|
* If the getter returns `"5.0.0"`, only `upgradeAndCall(address,address,bytes)` is present, and the third argument must
|
|
* be the empty byte string if no function should be called, making it impossible to invoke the `receive` function
|
|
* during an upgrade.
|
|
*/
|
|
string public constant UPGRADE_INTERFACE_VERSION = "5.0.0";
|
|
|
|
/**
|
|
* @dev Sets the initial owner who can perform upgrades.
|
|
*/
|
|
constructor(address initialOwner) Ownable(initialOwner) {}
|
|
|
|
/**
|
|
* @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation.
|
|
* See {TransparentUpgradeableProxy-_dispatchUpgradeToAndCall}.
|
|
*
|
|
* Requirements:
|
|
*
|
|
* - This contract must be the admin of `proxy`.
|
|
* - If `data` is empty, `msg.value` must be zero.
|
|
*/
|
|
function upgradeAndCall(
|
|
ITransparentUpgradeableProxy proxy,
|
|
address implementation,
|
|
bytes memory data
|
|
) public payable virtual onlyOwner {
|
|
proxy.upgradeToAndCall{value: msg.value}(implementation, data);
|
|
}
|
|
}
|