Basic requirements and step-by-step plan
## Milestones
1. Setup **Unilode Proof-Of-Authority network** (`UniPOA`) with 5 initial nodes, make sure that it's scalable and expandable (up to 10 nodes);
2. Run the network;
3. Deploy `PheixDatabase` [smart contract](https://gitlab.com/pheix-research/smart-contracts) to network and check basic features manually;
4. Configure `pheix.io` API gateway: it should be able to connect (auth, pull and push) `UniPOA` master node.
5. Test `UniPOA` connectivity, load-resistance and reliability via `pheix.io`.
## Step-by-Step
1. **Setup `UniPOA`**
1. prepare genesis;
1. prepare docker containers;
1. deploy to servers;
1. setup bootnode(s).
---
2. **Run `UniPOA`**
1. initial run;
1. debug;
1. manual test.
---
3. **Deploy `PheixDatabase` to `UniPOA`**
1. clone repo;
1. install dependencies (go, z3, solidity, etc);
1. compile smart-contract;
1. deploy to network via GETH console and helper JS-scripts.
---
4. **Configure `pheix.io` API gateway**
1. add `UniPOA` public endpoints;
1. add `UniPOA` public endpoints access credentials;
1. update local database for caching and other system features (search indexes, data proxying).
---
5. **Test `UniPOA` connectivity**
1. prepare test data;
1. run tests;
1. report load-resistance and reliability details.
## Dates
milestone | dates | aprox. hours
-- | --- | ---
Setup `UniPOA` | 1 Mar 2021 - 14 Mar 2021 | 40
Run `UniPOA` | 15 Mar 2021 - 28 Mar 2021| 40
Deploy `PheixDatabase` to `UniPOA` | 29 Mar 2021 - 10 Mar 2021| 40
Configure `pheix.io` API gateway | 11 Apr 2021 - 20 Apr 2021| 10
Test `UniPOA` connectivity | 20 Apr 2021 - 30 Apr 2021| 20
## Subscription details
Payment model: **{+ PAY-PER-TRANSACTION +}**.
Cost: **{+ 2¢ per transaction +}**.
## API stack
1. **GET** — search data;
2. **POST** — store data on blockchain, (4096) bytes per transaction.
## Default search options
1. Search by address (node unique address);
1. Search by transaction id;
1. Search by block id;
1. Search by event id (every event stored on blockchain will has own identifier);
issue