wearekickback / app

Front-end app for Kickback
MIT License
43 stars 48 forks source link

Burner Wallet Integration R&D #266

Closed makoto closed 4 years ago

makoto commented 4 years ago

Challenge: Burner Wallet Integration R&D

Bounty

Up to 500 DAI. Many submissions, multiple winners.

[NOTE] If the winning submission turned out to be feasible, we may commission further work to productionize it.

Background.

Kickback is a popular choice to manage free events. User commit Eth/DAI to attend events. If they don't their commitment gets distributed to the one who attended.

Burner wallet is a popular choice to bring "Token economy" to events. User receives xDAI in their mobile browser and can claim drinks and swags at event without waiting for long confirmation time or needing ETH to pay gas price.

These two are the perfect combo for any events and there will be a great synergy if they can seemlessly integrate but here are the problems.

The current workflow.

If you want to use Kickback and Burner wallet as is, here is the flow.

The challenge

Simplify step 4&5 by somehow linking Kickback wallet address and Burner wallet address.

Here are some ideas Kickback and Burner team have brainstormed in the past but you can be creative to have your own solution.

Idea 1: Generate Burner address derived from existing wallet address

Burner wallet has a way to generate contract based wallet using contract wallet plugin so it can generate new burner wallet address which is unique to the signer. The advantage is that there is no need to store the information which links burner and kickback wallet addreses. The downside is that something like Metamask chrome plugin does not work on mobile browser hence we have to restrict the usage of Metamask plugin.

Idea 2: Scan QR code

User has Kickback page open on his laptop, click "Scan QR code" will display a QR code, then user scan the code using his/her mobile phone which opens up burner wallet page preloaded with some xDAI. We couldn't figure out how wwe can preload xDAI with the link, so not sure if this is feasible.

Idea 3: Signed message

Utilize signed messages and contracts to let them attach their burner account to a contract that's already linked to their kickback account.

Idea 4: Use injected wallet as a signer.

Idea from Tom

Currently, burner modules have InjectedSigner. As long as we discourage users not to use desktop Metamask plugin but use others (eg: Opera mobile, Metamask mobile, Status, Trust Wallet, etc), then it can use the same address.

If this is the case, please also investigate if this can work not only injected wallet but with any other wallets such as Torus, Authereum, Wallet Connect, etc as we are planning to integrate with onboard.js

Submission Requirement

Judging criteria.

References

TomAFrench commented 4 years ago

I'm not sure this is necessary. If we're working on the assumption that for check in people have a web3 enabled browser on their phone then can't we just open burner wallet inside that with the metamask plugin so they retain the address they signed up with?

xDAI can then just be airdropped into a user's account on confirmation of registration (or they're given a preloaded key which only they can decrypt for them to drain funds from). Having a "post check in" hook on the check in server is then the meat of this issue.

This way we can also get better social integration in events as we can directly load names/images from their profile without having to link 2 addresses together.

makoto commented 4 years ago

@TomAFrench then that would be idea 4, load the injected wallet. If that's the case, I would like to add to the required criteria that if it would work even if we started integrated with other wallet providers such as Torus, Authereum, and WalletConnect, as we are planning to integrate with BlockNative onboard.js

gitcoinbot commented 4 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 300.0 DAI (300.0 USD @ $1.0/DAI) attached to it as part of the Wearekickback fund.

gitcoinbot commented 4 years ago

Issue Status: 1. Open 2. Cancelled


Work has been started.

These users each claimed they can complete the work by 1 month ago. Please review their action plans below:

1) immense055 has started work.

We can setup a boot by public.they also Get some token.it's be easy way to make our gol 2) jasondrogo has started work.

Worked with WalletConnect Earlier. I am familier to this one.I can deliver with all requirements.

Learn more on the Gitcoin Issue Details page.

makoto commented 4 years ago

@immense055 We can setup a boot by public.they also Get some token.it's be easy way to make our gol I don't quite understand what you mean by this. Can you join our discord channel and explain a bit more detail?

TomAFrench commented 4 years ago

I've been thinking a little on how to handle this in a way which doesn't rely on a user having the same address on their desktop and mobile wallets, in particular how 3box could help with option 3.

Linking addresses

Multiple addresses can be linked to the same DID. A user could attach their mobile/Authereum/whatever wallet to use on their phone to the same DID as their desktop wallet which put up the deposit. Once this is done then the DID defines their identity rather than just their address (This has the benefit of allowing the use of the QR scanner to check in these people; something not possible atm)

More relevant to this issue is that a burner wallet could be linked to the DID (this would need to be done at home before coming to the event). Users would have to pregenerate a short seed phrase with which to create the burner address and then link it to their DID.

Once they go to the event they can enter this seed phrase (which should be memorable) into their mobile browser and bingo, we have a burner wallet which can be linked to the attendee's identity.

Funding the Burner

If we assume that the airdrop can be sent to each registered person without verification of attendance (seems reasonable as the event deposit can be increased to cover this or the event can use a token which is otherwise worthless such as buffidai), then the event organisers just need to query 3box for each attending address to get the address which is designated to receive airdrops.

If attendance is required then this would need to be done through whatever check in procedure is implemented. But as an example: the organisers can scan the addresses of attendees on arrival, perform the lookup on the DID to see if the address of an attendee is linked to the scanned address and then send the airdrop if it is. (This could be wrapped up into a burner wallet plugin to automate this)

TomAFrench commented 4 years ago

To do this properly would probably require some deep munging about in the login system to make DIDs a first class citizen as otherwise we get into a situation where multiple addresses "are the user" but only one can log into Kickback.events

zoek1 commented 4 years ago

the linked bounty is still open?

gitcoinbot commented 4 years ago

Issue Status: 1. Open 2. Cancelled


The funding of 300.0 DAI (300.0 USD @ $1.0/DAI) attached to this issue has been cancelled by the bounty submitter

makoto commented 4 years ago

I will close this for now. May reopen in future