CoW Grant
The following document is intended to structure and define the first of two deliverables:
1. CoW Swap Golang SDK/client
2. CoW Swap TWAP/DCA CLI bot/app (with no TWAP smart order functionality)
It is also important to discuss the future milestones that will allow us to realize the full impact of this grant; offering CoW Swap users an interface to create TWAP and DCA smart orders:
- DCA/TWAP smart order development based on existing MVP
- Smart contract audit (might be done with core team resources)
- Adding TWAP smart order functionality to the CLI
- CoW Swap TWAP UI
outlined in the grant proposal submitted by @itsahedge in the CoW DAO forum.
Grant Proposal (Section 1: Go SDK)
About the grantee
@itsahedge is a software engineer at GFX Labs and can be found on GitHub and Twitter.
Grant Category
Developer tools (SDK)
Proposal
Build a CoWSwap Golang SDK/client that interfaces with the API.
This is a breakdown of the first milestone in the outlined proposal. The deliverable of the grant consists of the Golang SDK, SDK documentation, and example implementation starter code for interacting with the Golang SDK.
With the Golang SDK, it will provide developers a quick and easy way to natively integrate CoW Swap into their Go applications, without having to build their own CoW Swap client or write their own API.
Grant Goals and impact
The goal for creating the CoWSwap Golang SDK/client is to make it as simple and easy to integrate into existing (or future) Go applications. A CoW Swap Go SDK would allow for a more fluid opportunity to integrate into trading systems, bots, or any infrastructure that is already utilizing Go or wishes to interface with the CoW Protocol.
Funding request
After some discussions, it is proposed to split the grant into several funding milestones:
1. CoW Swap Golang SDK/client ($10k: $5k upfront, $5k on completion)
2. CoW Swap TWAP/DCA CLI bot/app (with no TWAP smart order functionality)
3. DCA/TWAP smart order development based on existing MVP
4. Smart contract audit (might be done with core team resources)
5. Adding TWAP smart order functionality to the CLI
6. CoW Swap TWAP UI
The budget breakdown in the following section will only focus on the cost of milestone No. 1 at this point in time.
Budget breakdown of Section 1: Go SDK
$10k (10,000 xDAI): development / labor cost (payed $5k upfront, $5k on completion)
Timeline
The estimate timeline is broken down in the following way:
- Week of Nov 8 → During this week, the grantee and grants committee will discuss the contents of this document to iron out the final details to be included in the agreement.
- Week of Nov 13 → During this week, the CoW Grants DAO will provide the first installment of 50% of the grant. The grantee will start the development and testing of the Golang SDK.
- Week of Nov 20 → During this week, the grantee will continue with the development and testing of the Golang SDK and start drafting the Go SDK documentation.
- Week of Nov 27 → Upon the completion of the Golang SDK, completed documentation, and example implementation/code snippet of the Golang SDK, the CoW Grants DAO will proceed to pay the outstanding amount of the grant.
Milestones
Each milestone is to be completed in due time and to be reviewed by the technical team at CoW Protocol. In the event that the code needs changes, milestones and timeline will be affected.
Milestone Section | Milestone Specific Action | Performed | Date | Link |
---|---|---|---|---|
Golang SDK | Allows users to create a new order | - | - | - |
Golang SDK | Allows users to get existing order from UID | - | - | - |
Golang SDK | Allows users to cancel orders from UID by marking it invalid with timestamp | - | - | - |
Golang SDK | Allows users to cancel and replace orders with a new one | - | - | - |
Golang SDK | Allows users to get orders by settlement transaction hash | - | - | - |
Golang SDK | Allows users to get existing trades | - | - | - |
Golang SDK | Allows users to get the current batch auction | - | - | - |
Golang SDK | Allows users to get orders of one user paginated | - | - | - |
Golang SDK | Allows users to get native price for the given token | - | - | - |
Golang SDK | Allows users to fetch quoted price and fee for the specified order parameter | - | - | - |
Golang SDK | Allows users to get information about solver competition by auction id | - | - | - |
Golang SDK | Allows users to get information about solver competition by transaction hash | - | - | - |
Golang SDK | Allows users to get information about current deployed version of the API | - | - | - |
Golang SDK | Proper response & error type definitions | - | - | - |
Golang SDK | Allows users to use the SDK on Mainnet, Goerli & Gnosis Chain | - | - | - |
Golang SDK | Allows users to easily sign orders | - | - | - |
Golang SDK | Allows users to use the subgraph from the Golang SDK | - | - | - |
Golang SDK | Allows users to check and set token allowance for trade with GPv2 Vault Relayer | - | - | - |
Documentation | Provide documentation for interacting with CoWSwap Go SDK | - | - | - |
Documentation | Provide example code snippet for implentation & use of the Go SDK | - | - | - |
Gnosis Chain Address (to receive the grant):
0x33A6415cC6d315B29Ef8F859D84766600b313E8F
Referral
This project has been the culmination of discussions between myself, Master_Cow, Middleway and Netrunner.
Terms and conditions
By applying for this grant, the grantees agree to be bound by the CowDAO Participation Agreement and the COWDAO Grant Terms and Conditions.
Final Grant Agreement signal
Since the original application has slightly changed, this document serves as the final version of the grant description, milestones, funding and more, as well as a forum poll on https://forum.cow.fi where only the grantee, and the grants committee will be able to vote on it. The vote will serve as the final confirmation for the acceptance of the details found in this document.