Skip to content
This repository has been archived by the owner on Apr 26, 2019. It is now read-only.

Documentation for revoking bounties #234

Closed
pablodip opened this issue Jan 25, 2018 · 15 comments
Closed

Documentation for revoking bounties #234

pablodip opened this issue Jan 25, 2018 · 15 comments
Assignees

Comments

@pablodip
Copy link
Contributor

How should this be done?

cc @tpatja

@oskarth
Copy link
Contributor

oskarth commented Jan 25, 2018

This is a common task and part of handing over capabilities so we aren't blocked by one person.

@churik
Copy link
Member

churik commented Jan 25, 2018

Do you mean directly from database, right?
Just FYI: actually in app we haven't this possibility yet
#185 is dedicated to this feature

@pablodip
Copy link
Contributor Author

pablodip commented Feb 6, 2018

@churik Sorry for the late response. :S Yes, I meant to execute the operation manually, since as you mentioned there isn't any automatic process for that yet.

@vitvly vitvly self-assigned this Feb 13, 2018
@vitvly
Copy link

vitvly commented Feb 13, 2018

Did some investigation. In order to revoke a bounty, the following steps should occur:

  • invoke multisig/send-all from contract address to repo owner address
  • this will give us an execute-hash. Use it in a scheduler thread to obtain confirm-hash from transaction receipt
  • use confirm-hash to invoke confirmTransaction with a callback fn. This fn will receive a payout-hash string, which we'll use to get a payout receipt

I suggest to extend #185 with the logic above that will be executed if:

  • a bounty label was removed from the issue
  • associated contract had some funds

Also it would be nice to see revoked bounties in the UI. So maybe an additional section in the Manage Payouts screen would work?

@pablodip
Copy link
Contributor Author

@siphiuel That's great! :))

1.) Have you tried that those steps actually work?

2.) How should those be executed right now, totally manually or is there anything in code for that?

3.) Revoking a bounty has a cost. Should we really execute the revocation instead of letting the contract for a future bounty?

4.) Agree with showing somehow revoked bounties in the UI. How about creating an issue to define it there?

@vitvly
Copy link

vitvly commented Feb 14, 2018

  1. Yes, we've tested it with @andytudhope
  2. Verified them in the REPL for now, connected to prod Geth
  3. Not qualified enough to answer this. Maybe @3esmit and @andytudhope can advise.
  4. Yes, will do.

@vitvly
Copy link

vitvly commented Feb 14, 2018

  1. To be more precise: payout confirmation was not executed via REPL, but manually by @andytudhope using MyEtherWallet. This essentially does what Confirm Payout does in SOB UI, but as there was no merge and no PR, these revoked bounties did not show up in Manage Payouts.
  2. Bounty revocation: UI + backend #284

@pablodip
Copy link
Contributor Author

1.) Is it enough to perform revocations via MyEtherWallet right now, is is there any step required REPL access in the Clojure system to change/fix any state? Just to know the exact modus operandi that we can use right now when we need any revocation, and if we have a dependency on REPL access for that.

@vitvly
Copy link

vitvly commented Feb 15, 2018

  1. The DB has to be updated. I believe the transaction itself needs to be executed from REPL, as it depends on commiteth Eth account that is unlocked by Geth.

@pablodip
Copy link
Contributor Author

1.) Not sure to understand it fully. So there are two main things to do for the revocation:

a.) Call Ethereum to return the money.
b.) Update the database to reflect a correct state.

You said that @andytudhope can execute point a.), but how about point b.)? Do we need it to do it manually in the database right now if we need to complete a revocation?

Please, correct me if I am missing or not getting anything well. :)

@vitvly
Copy link

vitvly commented Feb 15, 2018

Sorry, I was unclear indeed. In detail:
a) There are 2 steps here: one is call to withdrawEverything() method in the contract, another one is confirmTransaction(). I think that the former should be executed from REPL, and cannot be executed from MEW.
b) We have to do DB update manually right now, yes.
c) Sorry, forgot to mention that GitHub comment must also be updated via a REPL call.

@pablodip
Copy link
Contributor Author

pablodip commented Feb 15, 2018

I get it now, thanks a lot! :)

@andytudhope Could you please confirm that withdrawEverything() cannot be executed from MEW?

@pablodip
Copy link
Contributor Author

@andytudhope Ping. :)

@andytudhope
Copy link
Contributor

@pablodip withdrawEverything() needs to be executed from the REPL, as it relies on an SOB account, whereas confirmTransaction() needs to be called from frontend/MEW as it relies on the admin account I control.

I actually agree with an earlier comment here though, that instead of going through the pain and gas costs of revoking, we could think of adding funded bounties back to the pool of contracts for reuse. However, this raises other intricacies like that fact that the bounty that contract gets re-assigned to could perhaps be smaller than the original one, so it could then be overfunded if we reuse the contract...

@rcullito
Copy link
Contributor

in an effort to try and consolidate issues so that they can be more easily tracked via the "issue project" I am closing this one and linking it to the more recently created #284 . Far from dismissing the importance of what is stated in the above comments, I am merely trying to organize it so that work can begin :)

Please reach out if this pains you in any way. - Rob

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

7 participants