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.
201 lines
6.6 KiB
Solidity
Executable File
201 lines
6.6 KiB
Solidity
Executable File
// SPDX-License-Identifier: MIT
|
|
// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC777.sol)
|
|
|
|
pragma solidity >=0.5.0;
|
|
|
|
/**
|
|
* @dev Interface of the ERC-777 Token standard as defined in the ERC.
|
|
*
|
|
* This contract uses the
|
|
* https://eips.ethereum.org/EIPS/eip-1820[ERC-1820 registry standard] to let
|
|
* token holders and recipients react to token movements by using setting implementers
|
|
* for the associated interfaces in said registry. See {IERC1820Registry} and
|
|
* {IERC1820Implementer}.
|
|
*/
|
|
interface IERC777 {
|
|
/**
|
|
* @dev Emitted when `amount` tokens are created by `operator` and assigned to `to`.
|
|
*
|
|
* Note that some additional user `data` and `operatorData` can be logged in the event.
|
|
*/
|
|
event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData);
|
|
|
|
/**
|
|
* @dev Emitted when `operator` destroys `amount` tokens from `account`.
|
|
*
|
|
* Note that some additional user `data` and `operatorData` can be logged in the event.
|
|
*/
|
|
event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData);
|
|
|
|
/**
|
|
* @dev Emitted when `operator` is made operator for `tokenHolder`.
|
|
*/
|
|
event AuthorizedOperator(address indexed operator, address indexed tokenHolder);
|
|
|
|
/**
|
|
* @dev Emitted when `operator` is revoked its operator status for `tokenHolder`.
|
|
*/
|
|
event RevokedOperator(address indexed operator, address indexed tokenHolder);
|
|
|
|
/**
|
|
* @dev Returns the name of the token.
|
|
*/
|
|
function name() external view returns (string memory);
|
|
|
|
/**
|
|
* @dev Returns the symbol of the token, usually a shorter version of the
|
|
* name.
|
|
*/
|
|
function symbol() external view returns (string memory);
|
|
|
|
/**
|
|
* @dev Returns the smallest part of the token that is not divisible. This
|
|
* means all token operations (creation, movement and destruction) must have
|
|
* amounts that are a multiple of this number.
|
|
*
|
|
* For most token contracts, this value will equal 1.
|
|
*/
|
|
function granularity() external view returns (uint256);
|
|
|
|
/**
|
|
* @dev Returns the amount of tokens in existence.
|
|
*/
|
|
function totalSupply() external view returns (uint256);
|
|
|
|
/**
|
|
* @dev Returns the amount of tokens owned by an account (`owner`).
|
|
*/
|
|
function balanceOf(address owner) external view returns (uint256);
|
|
|
|
/**
|
|
* @dev Moves `amount` tokens from the caller's account to `recipient`.
|
|
*
|
|
* If send or receive hooks are registered for the caller and `recipient`,
|
|
* the corresponding functions will be called with `data` and empty
|
|
* `operatorData`. See {IERC777Sender} and {IERC777Recipient}.
|
|
*
|
|
* Emits a {Sent} event.
|
|
*
|
|
* Requirements
|
|
*
|
|
* - the caller must have at least `amount` tokens.
|
|
* - `recipient` cannot be the zero address.
|
|
* - if `recipient` is a contract, it must implement the {IERC777Recipient}
|
|
* interface.
|
|
*/
|
|
function send(address recipient, uint256 amount, bytes calldata data) external;
|
|
|
|
/**
|
|
* @dev Destroys `amount` tokens from the caller's account, reducing the
|
|
* total supply.
|
|
*
|
|
* If a send hook is registered for the caller, the corresponding function
|
|
* will be called with `data` and empty `operatorData`. See {IERC777Sender}.
|
|
*
|
|
* Emits a {Burned} event.
|
|
*
|
|
* Requirements
|
|
*
|
|
* - the caller must have at least `amount` tokens.
|
|
*/
|
|
function burn(uint256 amount, bytes calldata data) external;
|
|
|
|
/**
|
|
* @dev Returns true if an account is an operator of `tokenHolder`.
|
|
* Operators can send and burn tokens on behalf of their owners. All
|
|
* accounts are their own operator.
|
|
*
|
|
* See {operatorSend} and {operatorBurn}.
|
|
*/
|
|
function isOperatorFor(address operator, address tokenHolder) external view returns (bool);
|
|
|
|
/**
|
|
* @dev Make an account an operator of the caller.
|
|
*
|
|
* See {isOperatorFor}.
|
|
*
|
|
* Emits an {AuthorizedOperator} event.
|
|
*
|
|
* Requirements
|
|
*
|
|
* - `operator` cannot be calling address.
|
|
*/
|
|
function authorizeOperator(address operator) external;
|
|
|
|
/**
|
|
* @dev Revoke an account's operator status for the caller.
|
|
*
|
|
* See {isOperatorFor} and {defaultOperators}.
|
|
*
|
|
* Emits a {RevokedOperator} event.
|
|
*
|
|
* Requirements
|
|
*
|
|
* - `operator` cannot be calling address.
|
|
*/
|
|
function revokeOperator(address operator) external;
|
|
|
|
/**
|
|
* @dev Returns the list of default operators. These accounts are operators
|
|
* for all token holders, even if {authorizeOperator} was never called on
|
|
* them.
|
|
*
|
|
* This list is immutable, but individual holders may revoke these via
|
|
* {revokeOperator}, in which case {isOperatorFor} will return false.
|
|
*/
|
|
function defaultOperators() external view returns (address[] memory);
|
|
|
|
/**
|
|
* @dev Moves `amount` tokens from `sender` to `recipient`. The caller must
|
|
* be an operator of `sender`.
|
|
*
|
|
* If send or receive hooks are registered for `sender` and `recipient`,
|
|
* the corresponding functions will be called with `data` and
|
|
* `operatorData`. See {IERC777Sender} and {IERC777Recipient}.
|
|
*
|
|
* Emits a {Sent} event.
|
|
*
|
|
* Requirements
|
|
*
|
|
* - `sender` cannot be the zero address.
|
|
* - `sender` must have at least `amount` tokens.
|
|
* - the caller must be an operator for `sender`.
|
|
* - `recipient` cannot be the zero address.
|
|
* - if `recipient` is a contract, it must implement the {IERC777Recipient}
|
|
* interface.
|
|
*/
|
|
function operatorSend(
|
|
address sender,
|
|
address recipient,
|
|
uint256 amount,
|
|
bytes calldata data,
|
|
bytes calldata operatorData
|
|
) external;
|
|
|
|
/**
|
|
* @dev Destroys `amount` tokens from `account`, reducing the total supply.
|
|
* The caller must be an operator of `account`.
|
|
*
|
|
* If a send hook is registered for `account`, the corresponding function
|
|
* will be called with `data` and `operatorData`. See {IERC777Sender}.
|
|
*
|
|
* Emits a {Burned} event.
|
|
*
|
|
* Requirements
|
|
*
|
|
* - `account` cannot be the zero address.
|
|
* - `account` must have at least `amount` tokens.
|
|
* - the caller must be an operator for `account`.
|
|
*/
|
|
function operatorBurn(address account, uint256 amount, bytes calldata data, bytes calldata operatorData) external;
|
|
|
|
event Sent(
|
|
address indexed operator,
|
|
address indexed from,
|
|
address indexed to,
|
|
uint256 amount,
|
|
bytes data,
|
|
bytes operatorData
|
|
);
|
|
}
|