---
# System prepended metadata

title: Junior Blockchain Dev
tags: [tests]

---

###### tags: `tests`

# Junior Blockchain Dev

#### Task 1 - Identity Wrapper Contract

**You should clone the GoodDollar repo and make a PR with your solution.**
Write a new Identity contract which is identical to the old one but with the following features
1. View functions should return result from old contract unless the address has been updated in anyway in the new contract (whitelisted,blacklisted,authenticated)
2. the DID string should be updateable by the address owner
3. Emit an event when address lastAuthenticated is updated

#### Task 2 - Identity "thegraph" Integration
**At the bottom you have instructions how to setup a local graph dev env**
Write a subgraph for the current (old) Identity contract
1. listen for method calls of `authenticate`
2. create and update a `Citizen` record which have two fields
    - public address
    - timestamp of last authenticated


### Links Task 1
- GoodContracts repo - https://github.com/GoodDollar/GoodContracts
- Identity contract in explorer https://explorer.fuse.io/address/0xFa8d865A962ca8456dF331D78806152d3aC5B84F/read-contract
- Identity contract source https://github.com/GoodDollar/GoodContracts/blob/master/contracts/identity/Identity.sol

### Links Task 2
- Setup thegraph https://thegraph.com/docs/quick-start
    - Skip step 1
    - in step 2 modify docker-compose.yml to the Fuse network: `ethereum: 'mainnet:https://explorer-node.fuse.io/`
    - in step 3 follow this guide to start a project from an existing contract. use the Identity contract: `0xFa8d865A962ca8456dF331D78806152d3aC5B84F` https://thegraph.com/docs/define-a-subgraph#create-a-subgraph-project
    - work on your task to create the subgraph (see https://thegraph.com/docs/define-a-subgraph#call-handlers)
    - skip step 4
    - do step 5 to deploy your subgraph locally it should be available via http://127.0.0.1:8000/
`