diff --git a/docs/_GreeterFactory.md b/docs/_GreeterFactory.md new file mode 100644 index 0000000..64f823e --- /dev/null +++ b/docs/_GreeterFactory.md @@ -0,0 +1,74 @@ +## Overview +GreeterFactory is a Solidity smart contract designed to manage the creation and destruction of Greeter contract instances. It provides a factory pattern for deploying multiple Greeter contracts with unique initial greetings, allowing users to create, track, and destroy their own Greeter instances. + +## Interface + +| Function | Visibility | Parameters | Returns | Description | +|----------|------------|------------|---------|-------------| +| `createGreeter` | Public | `string initialGreeting` | `address` | Creates a new Greeter contract with the specified initial greeting | +| `destroyGreeter` | Public | `address greeterAddress` | `void` | Destroys a specific Greeter contract owned by the caller | +| `getOwnerGreeterInstances` | Public View | `address owner` | `address[]` | Retrieves all Greeter instances owned by a specific address | +| `isActiveGreeter` | Public View | `address greeterAddress` | `bool` | Checks if a Greeter contract is currently active | + +## Events + +- `GreeterCreated(address indexed greeter, address indexed owner, string initialGreeting)` + - Emitted when a new Greeter contract is created + - Provides the new contract address, owner, and initial greeting + +- `GreeterDestroyed(address indexed greeter, address indexed owner)` + - Emitted when a Greeter contract is destroyed + - Provides the destroyed contract address and owner + +## Storage Layout + +- `_ownerGreeterInstances`: Mapping tracking Greeter instances per owner +- `_activeGreeterInstances`: Mapping tracking active Greeter contract addresses +- Stores references to created Greeter contracts for management and tracking + +## Access Control + +- `createGreeter()`: Permissionless, any address can create a Greeter +- `destroyGreeter()`: Restricted to the original Greeter contract owner +- View functions are publicly accessible + +## Security Considerations + +- Input validation for non-empty greetings +- Owner-only destruction mechanism +- Prevents duplicate or invalid contract interactions +- Uses `delete` and array manipulation for instance tracking + +## Deployment + +### ChunkNet Devnet Deployment +- **RPC URL**: https://rpc.chunknet.org +- **Chain ID**: 214562 +- **Recommended Deployment Steps**: + 1. Ensure sufficient gas funds + 2. Use ChunkNet RPC URL for deployment + 3. Set appropriate gas limits and priorities + 4. Verify contract post-deployment + +### Recommended Deployment Script +bash +forge create GreeterFactory \ + --rpc-url https://rpc.chunknet.org \ + --private-key $PRIVATE_KEY + + +## Testing + +### Test Coverage +- Contract creation with valid greeting +- Contract creation with empty greeting (should revert) +- Destroying owned Greeter contracts +- Preventing unauthorized contract destruction +- Tracking owner's Greeter instances +- Verifying active/inactive contract states + +### Test Scenarios +1. Create multiple Greeter instances +2. Verify ownership tracking +3. Attempt unauthorized contract destruction +4. Validate instance management functions \ No newline at end of file