🏅 Winner of BuildUP #2 Lukso Hackathon

Inspiration

Imagine having a universal decentralized identity/profile that will connect all your web2/web3 accounts and keep any valuable public data from these accounts forever.

What it does

upDev is a multi-chain dApp that allows you to mint your web2/web3 accounts like GitHub, Twitter or Buidlbox (thanks to Chainlink Functions) as soulbound NFT 2.0 (Lukso's LSP8) to create Universal Dev Profile, that will contain all your merits on-chain – somewhere where they can never be lost.

Features

✅ Users can connect various web2/web3 accounts related to their developer activities to generate ownership-proofs which exist on-chain to verify they own their accounts using Chainlink Functions and earn achievements related to their activity.

✅ Chainlink Functions are currently not supported on Lukso Network, so users can connect with both their Polygon Mumbai wallet and their Universal Profile browser extension to deploy their Universal Profile onto Polygon Mumbai where Chainlink Functions are available now!

LSP24 (experimental) verification of user's Universal Profiles.

✅ Profile page where users can connect their web2/web3 accounts and see all information associated with them, as well as users original Lukso Mainnet Universal Profiles metadata.

✅ Discover Profiles page that lists a directory of all upDev developers.

TODOs

🌀 Deploy UP on Polygon Mumbai AT THE SAME ADDRESS using LSP23

🌀 [DONE] Retrieve on-chain and display on the dApp following GitHub account stats: date created, number of followers, contributions in the last year and following BuidlGuidl account stats: date created, role, functions, number of builds

🌀 Allow to mint a Repo NFT (with number of stars & other stats) shared by repository contributors proportionally to a number of their contributions

🌀 Allow bounty hunters to share their API tokens in exchange for a fee in order to give access to paid APIs like Twitter/X API

🌀 Support GitCoin Passport, Buidlbox, Twitter/X & other providers

Challenges we ran into

Chainlink Functions are really lacking some good debugging tools / error logs. We've wasted a lot of time trying to find a reason of "Fulfilled with error" messages on the dashboard (that ended up to be a gas limit errors) or even couldn't deliver for this submission second TODO from the list above because of the similar issue with error: "Exec Error: syntax error, RAM exceeded, or other error". Like this error is too abstract and at the same time Chainlink Functions Playground suddenly just stopped fulfilling requests for our code returning error "Network Error." without any reasons.

Also Buffer on Chainlink Functions Playground is different from Buffer that is used on Chainlink DON, which also led to some unexpected errors. It'd be great if you'll add examples on how to respond with a custom Buffer value containing multiple variables.

Our recent code that still needs debugging you can find on the boris branch of our GitHub repo.

UPDATE: "boris" branch now have working sources codes, but they return Functions.encodeString(JSON.stringify({})) as per one of your examples. Although we can parse that JSON on our dApp, that's not really what we want, because that data won't be easily accessible on-chain. Previously you had an example using Buffer.concat, that could be used then for abi.decode, but it's currently unavailable for some reason.

UPDATE #2: Turns out that Chainlink Functions source code can also return Uint8Array, whereas docs refer only to Buffer, which actually is not even Deno version of it, but some modified one. So right now "boris" branch have working sources codes, which return multiple values that will work even with Solidity abi.decode.

UPDATE #3: Merged to "main" & deployed 🌀 [DONE] Retrieve on-chain and display on the dApp following GitHub account stats: date created, number of followers, contributions in the last year and following BuidlGuidl account stats: date created, role, functions, number of builds.

Built With

  • buidlguidl
  • chainlink
  • github
  • hardhat
  • lukso-network
  • nextjs
  • polygon
  • scaffold-eth-2
  • solidity
  • typescript
  • univeral-profiles-browser-extension
  • viem
  • wagmi
Share this project:

Updates