Bounty: Add Session Key Integration - 300 OP Reward
kamescg opened this issue ยท 1 comments
๐จโ๐ป User Story
As a Web3 developer I want to craft beautiful experiences for users of my application
More specifically I want to minimize friction experienced by users in my Web3 application by minimizing signing and managing permissions overhead. Session keys (browser hot wallets) are a great way to minimize friction in Web3 applications.
The user's session keys can be given temporary smart contract permissions via the delegatable framework and/or temporary write/read access to Ceramic network data streams.
Join the Discord channel if you have any questions.
๐ฐ Bounty Reward
The bounty reward is 300 OP tokens and TurboETH DevPass digital collectible.
TurboETH is the recipient of 18,271.88 OP Tokens from Optimism Retroactive Public Goods Funding. The OP tokens earned from the PGF program are the primary funding source for TurboETH bounties.
Bonus: 50 OP will be awarded if flux.paradigm.xyz is used to help generate the integration code. Exported conversations must be made available to be eligible for the bonus reward.
๐งฑ Project
Add Web3 browser session keys as a TurboETH integration.
Session keys will be given temporary read/write access controls from a root account using technologies like Sign-In With Ethereum object capabilities and Delegatable delegations.
The hook should be similar to useBurnerWallet
found in Scaffold-ETH 2.
Except with 2 major changes:
- Replace
ethers
withviem
to manage wallet instances - Add support for multiple wallet instances i.e. browser session keys
Viem Documentation
- Docs - https://viem.sh
- Github - https://github.com/wagmi-dev/viem
- NPM - https://www.npmjs.com/package/viem
Required Functionality:
- Browser session wallets via Ethereum private keys.
- Use
viem
to manage wallet instances. - If necessary use
jotai
for state management.
Developer Tasks:
- Create Hook -
useSessionKey
- Create Component -
<CreateSessionKey />
- Create Component -
<DeleteSessionKey />
- Create Component -
<ListSessionKeys />
The ideal candidate will have experience with React, as well as a strong understanding of browser session management and security best practices. They should be able to create a robust, reliable, and easy-to-use hook that can be easily integrated into existing React applications.
The deliverables for this project include a fully-functional React hook that manages temporary browser session keys, as well as comprehensive documentation and test cases. The project timeline is flexible, but we expect the work to be completed within two weeks of the start date.
Potential File Structure
integrations/session-keys
โโ components/
โ โโ create-session-key.tsx
โ โโ delete-session-key.tsx
โ โโ list-session-keys.tsx
โโ hooks/
โ โโ use-session-key.ts
โ โโ use-session-keys.ts
โโ client.ts
โโ README.md
Notice
The final integration may not resemble the proposed integration - that's O.K - a natural part of software development.
During development you might discover an original hypothesis doesn't make sense. No problem. Make a comment and clearly explain why a new approach is better than old one. Get rewarded for thinking out of the box.
The final bounty reward can be increased to match new bounty tasks.
Resources
- โก๏ธ TurboETH
- Overview - http://docs.turboeth.xyz
The bounty is complete -- #35
Thank you @marthendalnunes ๐