As stated in the original worker proposal (visible here), I’ve done 70% part-time work from Nov 14th up to the end of the worker proposal. The payment proposal’s period contained 23 working days, 11 of which worked in full and 12 of which worked in 70% part time. This brings the total worked days to 11 + (12 * 0.7) = 19.4
instead of the 23 of the full worker period. With that in mind, I’m asking for 9000 / 23 * 19.4 = 7591.30 xDAI
to be sent to DevX’s wallet (DevX.eth).
Proof of work
Carrot
Work has been going on in Carrot Scripts and Create Carrot Template to make it as easy as possible to develop templates. Local development implies having a local IPFS node and a local forked chain running, so that everything stays on the developer’s machine. Furthermore, development presets were added to bootstrap template development with various supported technologies (a bit like what CRA does). The initial templates are Solidity + Foundry for smart contracts and React + Typescript for the frontend.
Detailed proof about the work done can be seen here.
As for work on the monorepo, I have:
- Added Sepolia as a supported chain with a dedicated Carrot deployment (good to get away from Goerli’s costs and also to test the dapp working without a Subgraph required, as intended to be).
- Implement a decentralized storage upload hook to let Carrot templates freely upload metadata to the (for now) only supported option of IPFS. In the future Arweave or other solutions might be supported.
- In order to make it easy and less error prone to integrate with the core frontend, dependencies shared through module federation have now been moved to their own JSON file, and the JSON file exported from the
@carrot-kpi/frontend
library. Templates can now simply import that in their building process and correctly set up module federation in a somewhat easy way. - After Sepolia was added with the latest contract deployments, a dedicated
Fetcher
class was added to the SDK leveraging the smart contract architecture to fetch templates/KPI tokens/oracles directly from the blockchain with no effort. - In the “create KPI token” route, code was added to handle the KPI token creation transaction returned by the module federated KPI token template creation form, adding the missing link to creation.
- Updated the initial KPI token template picker to show more data about the available templates to use.
- In order to support locally hosted templates (in template development mode), a new prop was introduced to allow federated components to be loaded from a specified URL instead of IPFS (the default federated templates location). This was done for both
Page
andCreationForm
components. - Implemented new unit tests in the SDK package.
- Implemented a new
Fetcher
function to fetch specific KPI token templates by id. - Improved i18n handling.
- Generally upgraded dependencies.
The above is an extract of the most significant things done on the monorepo. Proof and further details available here.
On the ERC20 KPI token template, I have:
- Implemented the first creation form prototype.
- Slightly updated the Webpack build config to set
__DEV__
to false globally to avoid dev-only logic being brought to production. - Implemented a first-version creation proxy contract that lets the user of the template approve ERC20 tokens only once to this contract instead of as many times as needed when creating KPI tokens. In normal conditions, without the proxy, the user would need to reapprove each token every time as new creations get done by him. The proxy brings UX improvements on that end.
- Added a deployment script for the new proxy contract.
- Implemented usage of the new proxy contract in the ERC20 KPI token creation form.
Proof and further details available here.
On the v1 contracts, only small and non-impacting changes were done such as adding docs and tidying up the code further. Proof here.