# General Grant Proposal
* **Project:** Merchant Service w/ zkopru
## Project Overview :page_facing_up:
### Overview
The proof of concept of merchant service made with zkopru.
This service can provide a Paypal-like crypto payment system without engaging a trusted third party. Also, thanks to the property of zkopru, this service also ensures cheap transaction fees and privacy.
### Project Details
The final state of this project would be
* CLI API server for payment. This server performs atomic-swap for configured items.
* Merchant admin tool to manage assets & payments(Web app)
* User payment tool to interact with a specific merchant(React component + demo app).
## Team :busts_in_silhouette:
### Team members
* Youngtaek OH <robbieinertia@gmail.com>
### Team Website
* [TBD]
### Team's experience
- [github](https://github.com/cloudinertia)
- https://www.linkedin.com/in/%EC%98%81%ED%83%9D-%EC%98%A4-421245120/
- I have 3 years of experiance as a developer at Blockchain Company(HAECHI LABS, auditing/wallet solution).
- 2 years as an researcher at blockchain academy, DECIPHER.
- Contributor of ethcon korea 2019(https://genesis.ethcon.kr/index.en.html, see 오영택)
### Team Code Repos
* [TBD]
## Development Roadmap :nut_and_bolt:
### Overview
* **Total Estimated Duration:** 3 month(start date: 10.1.2021/ end date: 1.8.2022)
* **Full-time equivalent (FTE):** 1 ([see](https://en.wikipedia.org/wiki/Full-time_equivalent))
* **Total Costs:** 21,000$ (35h X 50$/h X 4 X 3)
### Milestone 1 CLI server application for payment (run an API for atomic-swap for configured items)
* **Estimated Duration:** 1 month
* **FTE:** 1
* **Costs:** 7,000$ (35h X 50$/h X 4)
| Number | Deliverable | Specification |
| ------ | ----------------------- | ------------- |
| 0a. | Documentation | Giving general architecture for this cli server. For example, describe the domain model and its relation. And describe how to set up and execute. Also this document contains the specification of the API(e.g.swagger). | |
| 0b. | Testing Guide | The code would cover at least all core functionality(charging, invoice, authentication). Target coverage would be 90%. | |
| 1. | Functionality: Charging | Create, Update, Delete, Get charging information. Charging is basically metadata for describing what to sell and how much is it. | |
| 2. | Functionality: Invoice | This server would give the invoice, which is the current status of atomic swap on zkopru. | |
| 3. | Functionality: Authentication | Only pre-registered accounts can create the resources. | | | 4. | Application | Above all, we can get a client-server for the merchant service that everyone can easily run. | |
### Milestone 2 Web admin tool to manage assets & payments
* **Estimated Duration:** 1 month
* **FTE:** 1
* **Costs:** 7,000$ (35h X 50$/h X 4)
| Number | Deliverable | Specification|
| ------ | ---------------- | ------------ |
| 0a. | Documentation | Give a tutorial on how to use this web UI application |
| 1. | Functionality: Create a charge | This function is for the merchant to charge their product. If you want to sell an A ERC721 token with the price of 100 B ERC20 tokens, you can create the charge of it. Later they can atomic swap with the information.|
| 2. | Functionality: List charges | Give a list of charges.|
| 3. | Functionality: Delete/Update charge | You can even update or delete specific charge information. |
| 3. | Functionality: List Invoices| Give a list of all invoices. |
| 4. | Application | Above all, you can get an MVP admin dashboard for the merchants. |
### Milestone 3: Web user payment tool(React component + demo app)
* **Estimated Duration:** 1 month
* **FTE:** 1
* **Costs:** 7,000$ (35h X 50$/h X 4)
| Number | Deliverable | Specification|
| ------ | ---------------- | ------------ |
| 0a. | Documentation | Give a tutorial on how to use this web UI application |
| 1. | Functionality: Show charge information | User can check the charge information that the merchant created. |
| 2. | Functionality: Create atomic swap private transaction, and send it to the zkopru coordinator | If the user accepts the condition of the charge, she can sign with her own wallet. And let the private transaction be delivered to the coordinator. |
| 3. | Application | Above all, you can get a reusable React components and demo app for the payment. |
### Milestone 4: Blog post with demonstration.
- Estimation Duration: 1 week
- **FTE:** 0.5
* FREE
## Additional Information :heavy_plus_sign:
NA