# panamilit/comp726-individual-technical-assessment architecture

> Architecture diagram of the GitHub repository panamilit/comp726-individual-technical-assessment, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/panamilit/comp726-individual-technical-assessment
- Repository: https://github.com/panamilit/comp726-individual-technical-assessment

## Overview

This repository is an educational blockchain portfolio: Python exercises demonstrate chained blocks and validation, proof-of-work mining and performance reporting, and SECP256K1 key handling and signature verification; Solidity contracts support a separate Sepolia playground. The Python workflow is visible in sampled source. The READMEs describe the Solidity deployment and interaction purpose, but contract internals and deployment wiring were not sampled, so those details are not inferred.

Main entry points: [`Part_A/task_3_ecdsa.py`](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py) (ECDSA demo), [`Part_A/task_2_proof_of_work.py`](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_2_proof_of_work.py) (Mining demo), [`Part_A/task_1_blockchain.py`](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_1_blockchain.py) (Chain demo), [`Part_B/Playground_Part_B/SepoliaPlayground.sol`](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_B/Playground_Part_B/SepoliaPlayground.sol) (Sepolia playground)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_chain["Blockchain exercise"]
  node_chain_app["Chain demo"]
  node_block["Block hashing"]
  node_chain_validation["Chain validation"]
  node_pow_app["Mining demo"]
  node_pow_mining["Proof of work"]
  node_pow_metrics["Mining metrics"]
  node_pow_files["Mining CSV files"]
end

subgraph group_crypto["Cryptography exercises"]
  node_ecdsa_app["ECDSA demo<br/>[task_3_ecdsa.py]"]
  node_key_generation["Key generation<br/>[task_3_ecdsa.py]"]
  node_key_encoding["Key encoding<br/>[task_3_ecdsa.py]"]
  node_key_files["Key files<br/>[task_3_ecdsa.py]"]
  node_signature_test["Signature test<br/>[task_3_ecdsa.py]"]
end

subgraph group_ethereum["Ethereum contracts"]
  node_aut_contract["Assessment contract<br/>[Storage.sol]"]
  node_playground_contract["Sepolia playground"]
end

node_user(("Learner"))
node_sepolia{{"Ethereum Sepolia"}}

node_user -->|"runs"| node_chain_app
node_chain_app -->|"creates blocks"| node_block
node_chain_app -->|"validates chain"| node_chain_validation
node_block -->|"recalculates hashes"| node_chain_validation
node_user -->|"runs"| node_pow_app
node_pow_app -->|"mines blocks"| node_pow_mining
node_pow_mining -->|"returns results"| node_pow_metrics
node_pow_app -->|"calculates metrics"| node_pow_metrics
node_pow_app -->|"writes CSV"| node_pow_files
node_user -->|"runs"| node_ecdsa_app
node_ecdsa_app -->|"generates keys"| node_key_generation
node_ecdsa_app -->|"encodes keys"| node_key_encoding
node_ecdsa_app -->|"saves keys"| node_key_files
node_ecdsa_app -->|"tests signature"| node_signature_test
node_user -->|"uses contract"| node_aut_contract
node_user -->|"deploys and interacts"| node_playground_contract
node_playground_contract -.->|"deploys to"| node_sepolia

click node_chain_app "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_1_blockchain.py"
click node_block "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_1_blockchain.py"
click node_chain_validation "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_1_blockchain.py"
click node_pow_app "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_2_proof_of_work.py"
click node_pow_mining "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_2_proof_of_work.py"
click node_pow_metrics "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_2_proof_of_work.py"
click node_pow_files "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_2_proof_of_work.py"
click node_ecdsa_app "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py"
click node_key_generation "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py"
click node_key_encoding "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py"
click node_key_files "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py"
click node_signature_test "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py"
click node_aut_contract "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_B/AUT_Part_B/Storage.sol"
click node_playground_contract "https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_B/Playground_Part_B/SepoliaPlayground.sol"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_chain_app,node_block,node_chain_validation,node_pow_app,node_pow_mining,node_pow_metrics,node_pow_files toneBlue
class node_ecdsa_app,node_key_generation,node_key_encoding,node_key_files,node_signature_test toneAmber
class node_aut_contract,node_playground_contract toneMint
class node_user,node_sepolia toneIndigo
```

## Components

### Blockchain exercise

- [Chain demo](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_1_blockchain.py): `Part_A/task_1_blockchain.py`
- [Block hashing](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_1_blockchain.py): `Part_A/task_1_blockchain.py`
- [Chain validation](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_1_blockchain.py): `Part_A/task_1_blockchain.py`
- [Mining demo](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_2_proof_of_work.py): `Part_A/task_2_proof_of_work.py`
- [Proof of work](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_2_proof_of_work.py): `Part_A/task_2_proof_of_work.py`
- [Mining metrics](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_2_proof_of_work.py): `Part_A/task_2_proof_of_work.py`
- [Mining CSV files](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_2_proof_of_work.py): `Part_A/task_2_proof_of_work.py`

### Cryptography exercises

- [ECDSA demo](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py): `Part_A/task_3_ecdsa.py`
- [Key generation](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py): `Part_A/task_3_ecdsa.py`
- [Key encoding](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py): `Part_A/task_3_ecdsa.py`
- [Key files](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py): `Part_A/task_3_ecdsa.py`
- [Signature test](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_A/task_3_ecdsa.py): `Part_A/task_3_ecdsa.py`

### Ethereum contracts

- [Assessment contract](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_B/AUT_Part_B/Storage.sol): `Part_B/AUT_Part_B/Storage.sol`
- [Sepolia playground](https://github.com/panamilit/comp726-individual-technical-assessment/blob/main/Part_B/Playground_Part_B/SepoliaPlayground.sol): `Part_B/Playground_Part_B/SepoliaPlayground.sol`

### Other components

- **Learner**
- **Ethereum Sepolia**

## Connections

- Learner → Chain demo: runs
- Chain demo → Block hashing: creates blocks
- Chain demo → Chain validation: validates chain
- Block hashing → Chain validation: recalculates hashes
- Learner → Mining demo: runs
- Mining demo → Proof of work: mines blocks
- Proof of work → Mining metrics: returns results
- Mining demo → Mining metrics: calculates metrics
- Mining demo → Mining CSV files: writes CSV
- Learner → ECDSA demo: runs
- ECDSA demo → Key generation: generates keys
- ECDSA demo → Key encoding: encodes keys
- ECDSA demo → Key files: saves keys
- ECDSA demo → Signature test: tests signature
- Learner → Assessment contract: uses contract
- Learner → Sepolia playground: deploys and interacts
- Sepolia playground → Ethereum Sepolia: deploys to
