boltzexchange / boltz-web-app Goto Github PK
View Code? Open in Web Editor NEWBoltz Web App (06/2023 - today)
Home Page: https://boltz.exchange
License: GNU Affero General Public License v3.0
Boltz Web App (06/2023 - today)
Home Page: https://boltz.exchange
License: GNU Affero General Public License v3.0
Like this, boltz partners can earn referrals if they redirect users to us via a simple ref link. Payout monthly and trusted, referrals can be queried with a referral key via https://docs.boltz.exchange/en/latest/api/#querying-referral-fees
Uncaught (in promise)
Object { message: 'Expected property "1" of type Satoshi, got Number -5846', __label: undefined, __property: 1, __type: Satoshi(value)
, __value: -5846, __valueTypeName: "Number", stack: "" }
__label: undefined
__property: 1
__type: function Satoshi(value)
__value: -5846
__valueTypeName: "Number"
message: 'Expected property "1" of type Satoshi, got Number -5846'
stack: ""
Reason: https://boltz.exchange/ does it this way since forever.
Bug collection:
We are moving to interval updates, so in most cases the button won't do anything
Plus right now I don't know if there just is no update or if the button doesn't work since it doesn't give any feedback.
Especially on mobile we want to start getting rid of not frequently used highly advanced features like these.
Should say BETA
@ https://beta.boltz.exchange/
User feedback:
a noob user could easily miss this file...
Currently web app changes amounts back to default when
Saw these logs in the backend
Request /createswap {"type":"submarine","pairId":"L-BTC/BTC","orderSide":"sell","refundPublicKey":"023fde56004373be64fb19db721b21fc6a3c0ae417d6c044bfe19492e32cddae15","invoice":"lnbc110u1pj8pnfqpp569rs9ltd7h5dh2f9ql809vgwwy46enat6qpqxnth4kucfdtttassdqqcqzpgxqrrssrzjqvgptfurj3528snx6e3dtwepafxw5fpzdymw9pj20jj09sunnqmwqqqqqyqqqqqqqqqqqqlgqqqqqqgqjqnp4qgz6w7ean7qmwdnz9vduhqr80j7d2hpxlpmltgqnz784jjf6kd6nwsp55pv5le5ty60rms3rrxs9ptzxqunlmrn4s0cq5mezaj6mktlletgs9qyyssq9l5xv57nk88p7g22j4jrg2ps236mmzf2gr74c60purmpwsy0rmr38q59el8ghhcy595xpxat4ek3sy7ukx56mmdxa2rlmxry9rce98sqdkszh7 \n","referralId":"boltz_webapp"} failed: {"error":"Unknown character "}
This is the relevant part:
rce98sqdkszh7 \n","referralId"
@dni and I debated back and forth a bit how to combine the use cases:
and finally decided it's best to split these two up. Historically we had ""Check Status & Refund" combined which is probably hard to understand and not how the user's mental model works.
"Refund" @ boltz.exchange/refund
- shows list of refundable swaps and refund file upload section, refund details page for a particular swap is boltz.exchange/refund/sWaPiD
"History" @ boltz.exchange/history
- show all swaps from local storage. They link to different swap detail pages depending on their state
boltz.exchange/refund/sWaPiD
boltz.exchange/history/sWaPiD
boltz.exchange/swap/sWaPiD
where user can resume the swap.TBD since I am sure you thought about this @dni but noticed when I am in the refund overview @ boltz.exchange/refund and I click on a Swap I should have a refund overview page boltz.exchange/refund/vDTvI1 not boltz.exchange/swap/vDTvI1 also see PRD/wireframe
In order to stay trustless, web app has to
/createswap
, before showing invoice to user/createswap
, before showing invoice to user/createswap
are as expected, before showing invoice to userHere I simply typed "4". Couldn't reproduce this behavior with any other value so far (not 0.01,0.02, 0.04, 0.05 or others)
Have to trim spaces from the clipboard because input validation determines spaces illegal when pasting which is correct
QR PNG on mobile
JSON on desktop
Based on User feedback "my only feedback would be: if possible, show additional info once the lightning invoice is paid but before the swap confirms. ie. ack the lightning payment then show detail like “lighting payment received”
We want to show JSON responses of our API in the browser just like https://swaps.electrum.org/api/version does.
In a second step BoltzExchange/boltz-backend#346 let's /api
return sth meaningful.
This is the state we want when page load is done, send amount input field ready to take input, ideally also with a 0
as place holder like UniSwap does:
Reason?
Substitutes BoltzExchange/boltz-backend#319
Part of BoltzExchange/boltz-backend#347. Webapp implements a simple browser notification Network fee was updated based on network situation, please confirm new amounts and continue with swap
Recent user feedback made it crystal clear that users don't get that they need to keep the browser tab open on mobile for it to be able to claim locked coins. Or rather go back to the browser after lightning invoice in another app. This problem arises when waiting for 1 confirmation, especially mainchain.
Options are to warn better OR imo better instead of trying to get users to understand this (many still won't) move the webapp to use 0-conf instant swaps only. Like this browser will claim seconds after lightning invoice was paid. And it almost never should be an issue.
Depends on BoltzExchange/boltz-backend#198
Quick opinion which way to go please! @dni @michael1011
All I did was CTRL+A to mark and copy receive amount, it recalculated send amount
Screencast from 04-11-2023 03:33:25 PM.webm
So that the field only goes yellow and enables the "Create Atomic Swap" Button when a valid liquid address is present. It is red otherwise.
Right now it only gives me the "invalid address" error after I pressed the Button (pay attention to the bottom part of the video):
Discussion issue if we want that. Theoretically we could leave out asking for an invoice or showing the invoice alby provided if alby is connected to the boltz.exchange site. My counterargument would be that if a user connected alby to boltz.exchange but then wants to swap to his lightning mobile wallet which is not added to his alby he would first have to understand that the only way to do this is to disconnect alby.
So I would actually keep the flow exactly as is and the only difference between alby connected or not connected to boltz.exchange is that it doesn't bring up this permission window when I press the "WebLN" button to submit an invoice.
Follow-up of #82. This issue is about webapp verifying make sure on-chain amount is the one used /createswap
before claiming. Not trivial because webapp would need to query the mempool (0-conf swaps), ideally also double check that RBF is not enabled or query the chain to do so. Needs to be via 3rd party mempool api.
Since webapp let's you specify receive amount we want to make sure the user receives exact amount down to Satoshi, not the current "this or more" logic.
User had
Error loading address data.
(base58 error: base58ck checksum 0x42e6f03c does not match expected 0x5a8ec4a7)
when clicking on the exlorer link which seems it was https://liquid.network/address/undefined
It's not an easy feat for even experienced webdevs to integrate boltz swaps into a website. Cryptography and Bitcoin need to be understood. This issue is the start of how a swap widget could look like.
It should allow for basic customization:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.