-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added reserve clause to Selling Order description #1
Conversation
I vote nay. In fact, I would like @maran and the other developers to adjust their pull request to implement option 2, not option 1. https://bitcointalk.org/index.php?topic=292628.msg3521564#msg3521564 |
Moving the discussion here, quoting my reply on bitcointalk (please use this issue to discuss, not bitcointalk): Posting an offer that is larger than the amount of MSC you hold is actually an important feature in my book. You might want to let the system know you want to sell, even if you don't have the balance yet. The UI and offer matching engine should filter "live offers" from offers that lack funding. |
Let me paint you a picture. User A: puts a sell order online for 100MSC. This is confusing and sucky UX if you ask me. I stand by option 1.
As far as I know this is not a dictatorship. I would like to hear everybody's opinion before we put this to a vote. |
There is no "At the same time" in Mastercoin. All operations are always ordered by the blockchain. This is a fundamental property of Willett's original spec, and we must maintain it - this is what enables us to solve a super complicated problem like decentralized exchange, really really quickly. From our code's perspective, there is always one order that comes before the other. Now - User B's offer can either allow for partial fulfillment, or not. Of course this is not a dictatorship! I just voiced my opinion here ... I used the word "vote". |
The fact remains that by reserving the amount of a 'Selling Order' you increase the user experience for the end user. I literally quoted you where you are 'asking' us to adjust the pull request. The fact that you ask me to change it after we already had three votes for gave me the impression you think your one vote is stronger then our three votes. I will abstain from saying anything else until other voices are heard. |
Sorry about giving the wrong impression! I was just not part of the original discussion ... and am request a revote. Now to the actual matter - I think at least one of us doesn't understand the other. @dacoinminster, would you like to have your say? Waiting for more replies. |
No problem. I'm just passionate about the project and want to make sure everybody gets their voice heard. I'm ok with either solution although I prefer the first one for UX reasons. Let's wait for J.R. I will rewrite the spec after we hear from him. |
Hey there, I might be missing something, but I think that these "standby" orders are really useful and important enough to be a feature. Cheers, |
+1 Time to market isn't an issue in this specific case, it's relatively minor Ron Gross On Sat, Nov 9, 2013 at 5:57 PM, Ofer notifications@github.com wrote:
|
This discussion, as I understand it, is essentially about whether someone can do a simple-send with MSC funds that are currently offered for sale. I would say that this should be possible, but that doing so would instantly change the number of coins available for sale (as if the user had published a message changing or canceling the order amount, and then did the simple send). We could force the user to change their sell order amount first, and THEN send the MSC, but that seems like an extra step we don't need. Obviously if somebody else accepts the offer of coins available for sale first, the simple-send will be invalid. HOWEVER, implementing this might get too complicated. If this change to the spec makes implementations easier and user experiences better, then I support it. I don't feel strongly about this either way. |
Thinking about this a bit further, once we have a ton of different ways to send MSC, through betting and so on, handling this situation for each type of transaction might get too complicated. I think there is a pretty good case that can be made here for just debiting the amount for sale from the users' balance until the sell order is explicitly cancelled or changed. I like to keep things simple, and that seems simpler. I guess what I'm saying is, I support this pull request, though I still don't feel strongly about it. |
I'm supportive of this. Masterchest currently 'locks' funds allocated to a sell offer & these funds are only available to spend again by changing or cancelling the sell offer. This way we always have a known state and known set of balances. Not 'locking' the funds significantly complicates the implementation as it means for every other transaction type we have to first evaluate what's currently happening with that users exchange transactions (a complexity not required if we simply 'lock'/'reserve' funds assigned to a sell offer.) |
Thinking about it again - I changed my mind, and I am for option 2. |
Compromise option 3 User A post 300 coins for sale System locks the 300 coins of User A . It is only released if User B pays or until time runs out. Scenario 2 |
@Bitoy can you explain the difference between Option 2 and Option 3? |
Its the same :) Sorry I misread option 2 (I thought option 2 means users a can still send 200 coins even if it is accepted by user B.). But one thing I'd like to see is the option to allow user b to buy 100 coins even if he posted for 300. we can add another param partial or all in the buyer acceptance so that user b can choose if it is ok to partially fill his order or not (someone suggested this in bitcointalk) |
Ok I think I prefer now option 2. It is "fair" to both seller and buyer. |
I think we need a clarification here - Tachikoma's pull is for a protocol rule, not necessarily how it must be delivered to the end user. If (and I stress the 'if') the desire is to allow users to send MSC they otherwise have tied up in a sell offer, there is nothing to stop wallets changing the sell offer accordingly before transmitting the send - there is no reason for this to be 'harder' for the end user (or even visible if we don't want). I'm still of the view that without this pull we're adding a lot of complexity to every future transaction type (plus of course simple send) by requiring extra evaluation of exchange sell offers, purchase offers, payments and timelimits etc. As we scale out the burden becomes larger. I guess the point I'd like to make is users interact with software, not the protocol. We can do creative things in software that aren't explicitly designed for in the protocol. We can still deliver sends while funds are 'locked' if so desired, we just do it wallet-side. The one case I am interested in is Ron's - Ron, could you elaborate a bit? Say for example we did allow sells over and above what the holder has in MSC - are we not then allowing manipulation of the market? Ie what's to stop me holding 5MSC but posting a 100K MSC sell wall at a low price to encourage a downward trend? And won't end users be frustrated by their inability to actually trade on what they'll see as a fake offer? Or are you proposing that the offer only becomes visible to others once funded? In which case, where's the value? (excuse my trading naivety!) EDIT: Just re-read your comment Ron, so essentially you envisage the offers only being displayed when funded, so it's a method for selling funds received at an address at a given price in an automated manner? I'd appreciate your views on how important this would be (1-10) so we can weigh it against the (potential) extra complexity? Thanks! :) |
You are not manipulating the market. Sellers will mostly ignore such fake walls. It's a UI issue. Ron Gross On Tue, Nov 12, 2013 at 9:04 AM, zathras-crypto notifications@github.comwrote:
|
Yep, sorry I think my edit went in at the same time as your post. I re-read your comments & think I understand what your shooting for. I'd like to understand how important you guys see it as next so we can weigh pros/cons. Thanks! :) |
There are no cons, so let's go with #2. :) If anyone disagrees, let's discuss. Ron Gross On Tue, Nov 12, 2013 at 9:39 AM, zathras-crypto notifications@github.comwrote:
|
2 posts up :) Seriously though, we need to be clear about what use cases we want to enable with option 2 as there's no getting around the fact it introduces more complexity. JR is right on point there about when we're looking at betting and other future transactions - they ALL get more complicated if we go option 2. As I mentioned above if the deliverable is simple sends with funds tied up in a sell offer, this problem can be solved without the extra complexity of option 2. If the deliverable is selling over and above your balance, then yep that needs option 2 but if that's the only use case that option 2 enables we need to know how important it is as I'm currently seeing it as a small limited-use feature for a big development cost. Thanks! :) |
I don't think the complexity is critical. I honestly don't see the complication. Ron Gross On Tue, Nov 12, 2013 at 10:04 AM, zathras-crypto
|
No offence to you Ron but you haven't really done any coding on Mastercoin so far so I'm not really convinced you should be able to say that the complexity is not critical. We will need to do extensive querying whenever we parse an 'Purchase Offer' and calculate the available coins for sale based on all known transaction types since we can't assume the available amount for sale is actually available. If you reserve the funds, like most exchange software does, you can guarantee those funds are available and it makes parsing the transactions a lot easier since you only need to check how many of the reserved coins are already sold. Anyway. I think both sites of the argument have been heard and J.R. should just decide one of the options so we can move on. It's important we keep the momentum going and discussions like these can really drag out. |
Well ... I am able to say what I want, of course I might be talking I think waiting for our Spec Master to speak is a great idea. Ron Gross On Tue, Nov 12, 2013 at 1:10 PM, Maran notifications@github.com wrote:
|
Hahah, that's true. Let's wait for our fearless leader on this one :) |
I started coding option 2, and until now I don't see any major complexity. We have a serial system and each new tx changes the state of balances map. I treat sell offer as a "wish" from the user, and the buyers see at each specific moment only the actual available part (which is zero if no funds are available and partial order if only part of the funds are available). The buyers do not get confused. Option 2 makes it easier for the seller. No need to make each time a new (modified) sell order just because he has to send come coins somewhere. He sends what he likes, and the UI reflects the new picture to the buyers. As for the betting feature - this is already something else. Setting a bet is like sending the funds to a locked place, until the bet is resolved. I would treat it as a simple send to a third address and this third address sometimes sends back funds later (win), or not (lose). The only case that things may get more complicated is a reorder to the blockchain, but this doesn't happen too often, and anyways it is a known sickness of mastercoin. We said before that more confirmations are needed when mastercoin are used. |
Agreed, let's wait for JR :) I realize it's not always easy to articulate opposing viewpoints. Perhaps I can grossly oversimplify by noting a few points:
I'll say no more :P & will of course attempt to implement whatever is decided. JR, care to weigh in with a final call? Thanks! :) |
Sorry - I need to figure out how to turn on email notifications for these discussions. I've read through the discussion, and I'm going to merge this pull request once I figure out how to deal with the conflicts. |
Which version of it? Ron Gross On Wed, Nov 13, 2013 at 11:37 PM, dacoinminster notifications@github.comwrote:
|
I mistakingly based this PR of my master branch instead of the branch with the clause in it. I have a new branch ready merged on the latest spec if we decide to move forward with this. |
@maran sorry I'm not following. I must be missing some information, can you rephrase? |
Oh sorry, that was mostly intended for J.R. He asked me to make the pull request based on the latest version of the spec. I did that but haven't submitted it yet, since I see you still have some questions about it for J.R. |
Sure. I believe the pull request described option 1 (if I read it correctly), and I believe that will be the simplest implementation. Once @maran submits a new pull request, I think we should merge it. If I'm reading the comments above correctly, the devs seem to be in agreement that option 1 is best, and it seems best to me too. |
@dacoinminster are you sure this is the right move? Can you make your own explaination of what you think option1 is better than option 2 besides "the devs think it's best"? Specifically can you reply to my own arguments? Anyway if it's possible to migrate from option 1 to option 2 easily later, we can start with option 1 and just delay this argument/discussion. |
@zathras-crypto and @maran seem to support Option 1; @Bitoy and @grazcoin seem to support Option 2. The question, as I see it, is whether a simple send will alter the value of an open sell order (Option 2), or whether a send that would do so should simply to be an invalid transaction (Option 1). Both possibilities seem to me to be fair, valid and straightforward, as far as parsing goes. Option 1 is simpler, sure; but Option 2 is more powerful, I think. Let's not rush to make a decision---let's see if we can achieve consensus. |
The problem gets hairier when we have 10 different transaction types that need to have special processing for I see an opportunity here to avoid a whole slew of weird corner cases and extra testing. Each new feature increases testing complexity already, and if we have an opportunity to make that easier, we should! |
As I just told @dacoinminster in chat: If you guys know any pro traders, please invite them to comment here as Ron Gross On Thu, Nov 14, 2013 at 8:58 PM, dacoinminster notifications@github.comwrote:
|
Asking power users is actually a good idea. 👍 We could always add a different type of exchange message later. Make this the "Simple Selling Offer" and perhaps later make a "Expert Selling Offer" that has more features. It could support things like stop-loss, trailing-stop and the 'always sell' feature you mentioned. I'm not a trader so I wouldn't know what would work exactly but splitting it could help us keep momentum at the moment. |
Good point. Let's do the simple selling offer right now, rather than burn too much time in discussion. We can always add a more advanced selling offer later if the market wants it. |
@ripper234 is that something you could get behind? |
FULL SPEED AHEAD! :) Ron Gross On Thu, Nov 14, 2013 at 11:17 PM, Maran notifications@github.com wrote:
|
We can close this one if everything is ok with it and merge #4 :) |
Per conversation in try #1
Get the latest from mastercoin-MSC:master
OmniDex 2.0 updates for PR to OmniLayer
I suggested this addition to the spec a couple of weeks back. Grazcoin and Zathras are also behind it. Original discussion starting here: https://bitcointalk.org/index.php?topic=292628.msg3427465#msg3427465.