-
Notifications
You must be signed in to change notification settings - Fork 30
VoteProxy2 #8
base: master
Are you sure you want to change the base?
VoteProxy2 #8
Conversation
Hey @nmushegian , thanks for this! This was actually something we were looking to do very soon anyway. We also have a couple of other changes we need to make to the vote proxy, which we will do very soon now too. If it gets the ok from some of the devs that originally wrote this proxy, we can certainly merge this into master. With regards to updating vote.makerdao.com, we don't want users to have to migrate twice, so given we know the other changes we need to put in, we will get these done and update the vote proxy just once when all the changes have been made. |
@nmushegian With regards to what we were just discussing, as far as I can see from this PR the user still only designates a HOT and COLD wallet, and the MKR can only be returned to the COLD wallet which was set up initially (regardless of where the MKR actually came from). What we are also looking for is being able to assign a different return address for the MKR, which is the only address to which the MKR can be sent back to. |
That is what the cold wallet is. |
So if a user sets up a vote proxy with a cold wallet of 0xABC....... could we use the current contract to say MKR can only be withdrawn to 0xDEF.... for instance? |
nikolai M 11:22 AM |
No, the current code only supports withdrawal to the cold wallet, but the MKR can be deposited from any address. So your use case should be supported, it's simply a matter of making the deposit from an address distinct from the cold wallet. |
@chrisbradbury88 In this scenario, 0xDEF is the cold wallet. Really all the cold wallet is is "where MKR is withdrawn to". I'm not sure what 0xABC is in your scenario, but it isn't the cold wallet (because by definition, the cold wallet is where the MKR is withdrawn to, which is 0xDEF in your example). |
But you can transfer MKR in no matter what... that was one of the main issues with voteproxy1 I can see the argument for adding a way to |
Let's not get distracted with red herrings - are there any actual issues? Assume for now we're satisfied with the use cases this enables |
Yeah this was not criticism of the code, I just tried to clarify why the code is fine even when taking @chrisbradbury88's comment into account.
Not as far as I can see. |
I nuked voteproxy1 from this branch wholesale after seeing the factory, rather than trying to finish updating it for the latest compiler. If anyone wants to update voteproxy1 for whatever reason, you can continue from f3a9cd1 |
The proxy looks really clean to me. The only things to be defined IMO are:
|
Complexity for a temporary solution. You can create a slate with any low stakes key, and most votes don't create new slates. I won't object if someone adds it back, I guess.
Generally UIs need to bend to contract design constraints, but these particular compositions are fine, especially for temp solution
You still have to do an approval transaction, and I was thinking about the cold address when I decided not to add it - any extra transaction is bad for the cold address, and you want to be able to transfer in. But I can imagine pulling from the hot address, so you might as well enable for both. I'm ambivalent but wouldn't oppose it.
Again UIs need to bend to contract design constraints and not versa. But I can't say more until I know what the supposed constraints they want on the UI side is. |
Right, but the approval once is done allows you to do repeatedly
I'm not sure if that happens in reality. We never had significant issues bringing existing contract data but several reaching logs (not referring about historical from previous block numbers) .
I kind of agree and disagree. From a smart contract developer perspective I can say you are right, nothing is better than a clean structure without any redundant data. |
@gbalabasquer It sounds like you want a scheme that involves more than I would also like to better understand the trouble you have run into with logs. Unrelated to this project, I have been considering switching to logs for data fetching/aggregation. |
Here's a clearer way to articulate the solution space: The use pattern enabled right now, without suggestions above, is the only one that allows the cold key to make zero transactions. For those who can sign transactions with their offline/hardware keys, 90% want direct-voting without a proxy anyway. Finally, the requirement of separation of control for custody gives its own constraints that are not purely technical. In an approve/pull based system they might have to approve/unapprove/re-limit the proxy as their internal allocations change. |
Single forward call per call. GOV can be transferred directly to the contract - in fact it must be, there is no way to pull from any address.
Function calls require explicit quantities - necessary to add *all functions?
Massively simplify factory proxy "tracking" - voteproxy1 factory is an anti-pattern.