-
Notifications
You must be signed in to change notification settings - Fork 206
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
Implement dispense
Transaction Type
#1825
Comments
I think any changes that breaks existing functionality for current and past wallets should be postponed, until there are replacements in place that have been tested and proven to work. |
The only idea I am supportive of is to implement the proposed changes in the XCP whitepaper BEFORE changing dispensers. In fact, the alternative path for upgrading dispensers in a slower manner over a longer period of time (that doesnt effect existing wallets) was not created by me, but created by Adam and mentioned in #1784 If my opinion even matters, I simply would like to see users have something else they can use to buy/sell XCP tokens before changing dispensers.... which wasn't even mentioned in the whitepaper at all Users dont consider dispensers as a bug or flaw, despite them not being perfect. |
|
Thank you for the reasoned and sober comment. My perspective is as follows:
|
let me once again, address this false accusation that I changed my mind or am threatening a fork. I have already addressed this falsehood multiple times, in multiple github issues, but the current core devs seem to keep closing issues with differing views and reopening new issues to rehash existing conversations. As you can see, I clearly addressed this falsehood already. Github Post #1670
I have made no such threat sir, I simply stated that I do not feel that changes to dispensers are necessary at this time, and I do not feel comfortable "upgrading" to this software at this time.
This is incorrect, I commented on your "Alternative Dispesnser Upgrade" that I felt that the proposal could work better than the other where you immediately break mobile wallets and force users to your new "dispense" method. I did not indicate "ACK" the changes, nor say that I feel they should be included a counterparty release. Simply commented that the "alternative" path was better than the forced changes path. I have made it clear for many months, that I disagree with changes to dispensers, and feel development should focus on PSBT and atomic swaps. Side-Note: we now deleting comments from community members you disagree with? It costs you absolutely nothing to leave comments, and demonstrates censorship and control to delete them.... certainly doesn't feel like a decentralized community anymore 🤷♂ I am no desire to engage on this issue any further, but will continue to speak up LOUDLY to defend myself, anytime someone accuses me of something false. 🤷♂️ |
Since this is discussing a protocol level change to dispensers, I think its important that the design should attempt to fix what I think is one of the biggest issues with dispensers currently, as a user. Rugspensers, where the seller and setup a dispenser, and once another user puts in a buy in the mempool, he buys it himself with a higher fee. Here are some previous discussions What about something like a op_return dispense_reserve function, that buyers could use to reserve the dispenser for a number of blocks, like 10? |
this is the nature of dispensers, they have this flaw by design, if you want to remove this then just use a btcpay tx and you have 20 blocks to pay from when the order is matched |
This would inadvertently create an 'options market'. |
As someone who has inadvertently (and stupidly) dispensed tokens from dispensers without intent on a number of occasions, I think this solution, on balance, is warranted. People have the potential to lose money in both scenarios (presently) or with these changes (accidently using a non cp-aware wallet), so I'm not really swayed by appeals to keep things the same as a means to prevent losses. I do think a lot of the potential for losses can be mitigated with an educational campaign around the new behaviour and labelling explorers very clearly that they should be using a cp-aware wallet (and linking to one) right next to a dispenser's QR code. Perhaps even an interstitial that hides the QR code by default with messaging that you must "click to acknowledge" before revealing the QR code can help mitigate this issue. So, on balance, I think this change is warranted. |
Something like #1814 would solve the accidental dispenses. I just don't agree over-engineering the feature is the best solution here. I believe less is more in this one. |
I agree that the way dispensers were implemented wasn't ideal. They have been successful at lowering the barrier to entry. And have created a source of BTC buy-side liquidity that was not present without CEX listings. I'm not sure accidental dispenses has been a major issue, people have used this much more as a feature to have dispensers that give multiple assets for one payment. See: This change wouldn't prevent the risk of someone self-closing or sniping a dispenser from you in the mempool resulting in a loss of funds. It probably adds a new way to lose funds and that's sending BTC without including the dispense message. Opening on addresses you don't prove you own has been a nice way to incentivize donations where people are accepting BTC, for example. And I've used it extensively to create dispensers that would land funds in my cold wallet. The state of things for years has been you send BTC and you get dispensed what's open and at that address for a price at or below the amount of BTC you've sent. For the users not following along with these changes, I'd expect an increase in loss of funds due to people doing what they're familiar with and sending the BTC without the dispense message. Getting rid of AddrIndex makes sense to me. Making dispenses follow the normal conventions of Counterparty makes sense to in the abstract, but it's a little bit what's done is done in my view. UTXO binding to allow for PSBTs looks like the ultimate, alternate solution to dispensers that would allow for the AddrIndex removal and sunsetting of dispensers. Is what happens to existing, open dispensers after these changes still an open question? I'm imagining it would like an order expiration except for a whole lot of assets at once. |
I think PSBTs are better than dispensers. The benefit of this change is primarily the removal of AddrIndex. I wouldn't say dispensers are made safer after these changes, but they're not made considerably worse if wallets exist to adopt this change. If dropping AddrIndex streamlines things and keeps development velocity high towards a UTXO-based option, it will be worth it. tl;dr - Overall, I support this change. |
This is probably the biggest risk with this update but I don't think its a showstopper. Important risk to understand and have a plan to mitigate. There's always a risk someone will get burned due to a consensus change if they aren't following along. IMO you need to just rip the bandaid off and push forward. This is an important change to the core developers that makes sense to do and with future changes down the road users that intend to interact with Counterparty will need to keep themselves as informed as possible. I support the change as part of the continued effort by the current maintainers to both modernize Counterparty and make it more efficient and easier for users to run on their own. |
My understanding of the main issues with addrindexrs are:
Point 1: Can be solved by replacing it with an "industry standard" alternative, like electrs. AND this has already been DONE, see https://github.com/jotapea/counterparty-core/commits/master/. Point 2: Like @droplister mentioned "what's done is done". Meaning, that for the rest of time, the verifiability / auditing of the ledger of transactions of the protocol will require the functionality provided by this software. AND the Point 3: Yep, it does. And like all software, there are tradeoffs. And this is a nuance point because of the many things that must be considered: block parsing vs. steady state (following the tip); bootstrap; hard-coded transactions; code complexity / maintainability; etc... The multiple added limitations in a single release to the "dispensers" feature is basically like killing it, but keeping the same name for appearances. Limitations to the existing feature set should only be acceptable AFTER a better feature has been proven to make the old feature irrelevant. Or at the very least just having the alternative ready BEFORE. Having "indexed addresses" is a natural for Counterparty which is (as of today still 100%) address based. After having proved that addrindexrs can be replaced by a vanilla electrs, I just won't accept that argument as valid any longer. Counterparty is more feature-full by including it. |
It is a serious flaw in the protocol that dispenses are not normal Counterparty transactions. It was also not part of the original specification. A non-exhaustive list of the ways in which this causes major problems may be found here: #1670 (comment)
We need to:
dispense
TX type that is a normal Counterparty transaction (with theCNTRPRTY
prefix) that specifies the asset requested and the quantity (to eliminate accidental dispenses from multiple dispensers registered at the same address)compose_send()
API call to infer whether the user is trying to trigger a dispenser—if so, generate adispense
transaction in the background (which will obv. also be a valid BTC send). Allow dispenser hosts to choose the default dispenser; if none is specified, use the first (and purchase the maximum possible).The text was updated successfully, but these errors were encountered: