@lnp2pBot
On this site you will find information about @lnp2pBot. It is an application to buy and sell bitcoin on Lightning Network with your local currency, without giving your personal data.
Quick Start Guide
-
Download a Lightning Network compatible wallet (Recomended wallets).
-
Get a Telegram username.
-
Start @lnp2pBot
-
Find offers in the channel @lnp2pbot Exchange.
-
Start buying and selling.
-
Find answers to your questions in the FAQ section.
FAQ
Here we try to answer frequent questions.
What is @lnp2pBot?
Lnp2pBot is an exchange system of bitcoin for local currency, to make easy and secure peer-to-peer transactions using the Lightning Network. It is a Telegram bot that can be used pseudonymously, without user registration or identity verification. It is a "non-custodial" tool, i.e. it does not store satoshis (minimum bitcoin unit) during the exchange. Lnp2pBot is an open source application, which can be freely replicated, modified and redistributed. Go to @lnp2pBot
What is Lightning Network?
Lighting Network is a network of payment channels that works as a second layer protocol on the Bitcoin network, taking advantage of the property of writing smart contracts on its blockchain. It is a scalability solution that allows exponentially increasing the number of transactions and their speed by not needing on-chain confirmations, while drastically reducing network fees. Payments become instant and cost almost nothing.
What do I need to use @lnp2pBot?
You only need a Telegram account with the "username" enabled to initialize the bot and interact with it; and a wallet that supports Lighting Network, to start buying and selling. Here we leave some recommended wallets
How do I initialize the bot?
Open the private chat with @lnp2pBot and click "START", or run the /start
command.
What are the channels to make exchanges on Telegram?
To create your buy / sell
orders, use the chat with @lnp2pBot.
To take buy / sell
offers, go to the channel @p2plightning.
Where I can find offers for my local currency?
You can ask it to the bot executing /findcomms
command and your local currency code.
This will show you the venezuelan bolivar communities:
/findcomms
ves
You can also find this and other commands by clicking on the "Menu" button.
Do I need to fill out any user registration or identity verification?
NO! Bitcoin was born as "a peer-to-peer electronic money system", and we are proud to support that principle. No personal information is required from you, the exchanges are entirely between peers, and @lnp2pBot does not collect or store any personal information of the parties involved.
What type of information do you collect from each user?
For the purposes of the user reputation system, lnp2pBot collects some statistics on your trades. Specifically, the number of completed transactions, the total volume traded, the counterparty rating and the record of disputes if any. Of this information, only the number of transactions and the counterparty rating are public by default. Meanwhile, showing the total volume traded and your username is optional (you choose to show it or not, by default it is not shown).
In case you want to show your username and/or volume traded to accompany your reputation in the offers you publish, you must do it manually through the following commands:
/showusername
yes
/showvolume
yes
Each command is sent as a direct message to the bot.
How does the user reputation system work?
For every trade you make, you will be asked to rate your counterparty, while your counterparty will rate you. To do this, lnp2pBot has a 5-star rating system that will allow you to rate your experience, where 1 star is the lowest rating and 5 stars are the highest.
When you create an offer, it will include by default the number of successful trades you have made and the ratings received from your counterparties.
How do I create a sell order?
When chatting with @lnp2pBot you will find a "Menu" button. Click it to display the list of commands you can use. Select the sell command: /sell
, to activate the wizard that will guide you through the selling process.
Once activated, the wizard will ask you to specify the fiat currency in which you want to trade:
Next, you must enter the amount, in fiat currency, that you want in exchange for your satoshis. Remember to enter only numbers in this step, so that the wizard can understand you.
You can also enter a range of amounts to buy, separating the numbers by a hyphen (-).
The bot will ask you the amount, in satoshis, you want to deliver. Here you have the possibility to use the "Market price" button. If you do so, the rate of Yadio. io will be applied.
The next thing the wizard prompts you for is the percentage premium or discount you want on your swap. If you want to increase the market rate (premium), select a positive number; if you want to decrease it (discount), select a negative number. If you want neither, use the "No premium or discount" button.
Next, you will need to specify the payment method. In this field, you can get creative and add emoticons or whatever you consider to make your request attractive.
The bot will proceed to publish your offer in the general or community channel you have set as default. It will remain visible for 23 hours if no one takes it before that time.
At any time you can cancel the offer, as long as no one has taken it, using the command /cancel
followed by the order identifier. You can also copy the command plus the identifier in the chat with the bot.
The wizard will return a message confirming the cancellation and your offer will be removed from the offers channel.
In case your sale is taken, the bot will ask your counterparty to deliver a Lightning Network invoice.
At the same time, it will ask you to pay the invoice with the corresponding amount in satoshis, plus a 0.6% commission. Remember that the network may charge you an additional amount for payment routing. This amount will depend on the nodes through which your transaction will pass and the network status. The bot has nothing to do with this amount.
At this point, the bot will contact both parties to discuss the details of the exchange.
Once the bot receives notice that the fiat amount was paid, it sends you an alert to check your account. If everything is in order, you can release the satoshis with the command /release
followed by the transaction identifier (or copy and paste the text into the bot chat) and the transaction will be executed.
The exchange is finished. Now you can rate your counterparty.
You can exit the wizard at any time by executing the /exit
command.
To execute the same sell order, without using the wizard, you must type your order with the details: /sell <amount in sats> <amount in fiat> <fiat code> <payment method> [premium/discount]
(without the special characters).
Example: /sell 100000 50 USD "bank xyz"
I sell one hundred thousand sats at fifty dollars I charge by bank xyz.
In case there is any unsupported variable, the bot will indicate it to you during the order creation process. Once completed, the order will be published in the exchange channel and will be visible for a period of 23 hours.
How do I create a purchase order?
The procedure is the same as for the sell order. Only, when pressing the "Menu" button, you must select the command /buy
instead of /sell
. This will activate the wizard that will guide you through the buying process.
Once activated, the wizard will ask you to specify the fiat currency with which you want to trade:
Next, you must enter the amount, in fiat currency, that you want to buy. Remember to enter only numbers in this step, so that the wizard can understand you.
You can also enter a range of amounts to buy, separating the numbers by a hyphen (-).
The wizard will ask you the amount, in satoshis, you want to receive. Here you can to use the "Market price" button. If you do so, the rate of Yadio.io will be applied.
The next thing the wizard prompts you for is the percentage premium or discount you want on your exchange. If you want to increase the market rate (premium), select a positive number; if you want to decrease it (discount), select a negative number. If you want neither, use the "No premium or discount" button.
Next, you will need to specify the payment method. In this field, you can get creative and add emoticons or whatever you consider to make your offer attractive.
The bot will proceed to publish your offer in the general or community channel you have set as default. It will remain visible for 23 hours if no one takes it before that time.
At any time you can cancel the offer, as long as no one has taken it, using the command /cancel
followed by the order identifier. You can also copy the command plus the identifier into the chat with the bot.
The wizard will return a message confirming the cancellation and your offer will be removed from the offers channel.
In case your offer is taken, the wizard will ask you to submit an invoice to Lightning Network with the corresponding amount in satoshis. At the same time, it will ask your counterparty to pay the invoice.
At this point, the bot will contact both parties to discuss the details of the exchange.
Once you have made the fiat payment, notify the bot with the /fiatsent
command. The bot will notify your counterpart to check and verify receipt of the money, and proceed to release the satoshis. Remember that your wallet must be online to receive the satoshis.
The exchange is finished. Now you can rate your counterparty.
You can exit the wizard at any time by executing the /exit
command.
To execute the same purchase order, without using the wizard, you must write your order with the details: /buy
Example: /buy 100000 50 USD "xyz bank"
.
I buy one hundred thousand sats at fifty dollars payment by xyz bank.
Some examples of purchase orders would be as follows:
- Ex.
/buy 0 50 ves "xyz bank"
: I buy fifty bolivars in sats -in this case, the bot will calculate at the market rate- payment by xyz bank. - Ex.
/buy 0 10-100 pen "mobile payment"
: I buy from 10 to 100 nuevos soles -in this case, the seller will choose what amount to sell you in that range- payment by mobile payment. - Ex.
/buy 0 100 eur -3 "mobile payment"
: I buy 100 euros discounting 3% -in this case, the bot will calculate at the market rate discounting or increasing the percentage you choose- payment by mobile payment.
If there is any unsupported variable, the bot will indicate it to you during the order creation process. Once completed, the order will be automatically published in the exchange channel and will be visible for 23 hours.
How do I find and accept an offer to buy or sell?
In the channel @p2plightning you will find the offers of all the participants, including yours. Just scroll through until you find one that suits your search and hit the "buy satoshis
" or "sell satoshis
" button.
How do I cancel a posted order?
If the order has not been taken, use the command /cancel
in your chat with the bot or select it in the "Menu". The bot will show you the active orders. Select the ID corresponding to the order you want cancel.
The ID or identification number of your order appears just below the message of acceptance and publication, and it is even indicated to you as an option to cancel it.
If the order has been taken, you must initiate a cooperative cancellation.
Is there a limit (minimum or maximum) on the amounts I can trade?
From the botโs side, there are no limits to the volume of your transaction. However, it will depend on the network's capacity and the channel's liquidity that you can find a maximum limit at a given moment.
How long does it take to finalize a transaction?
It depends on several factors. Being a P2P exchange, the main variable is the taking of your offer by another person. Your post will be available for up to 23 hours and will then be automatically deleted if it is not taken.
Once an offer is accepted, a 15-minute window is opened to pay the lighting bill and for the bot to contact both parties. From here, they have a maximum time of two hours to complete the operation. After those two hours, the order expires and the sats will be returned to the wallet they came from. For this reason users must only use instant fiat money payment methods.
As both participants are online and agree on immediate payment methods, transactions are almost instantaneous.
Fees and commissions
The bot charges a flat rate of 0.6%. It includes the network fee, so there are no additional charges. This commission is paid only by the seller, not the buyer.
What exchange rate does the bot use?
When creating an order you can choose to specify only the fiat amount to be paid/charge
, but not the sats amount to buy/sell
. In this case, you should select the "Market price" button, and then the bot will calculate at the market rate offered by yadio.io.
In which countries and languages is it available?
Being a P2P exchange on Telegram, it is technically available to everyone who has the app. However, so far the bot can get the market price of 58 currencies with which you can create buy/sell
orders using the price market
button when create an order with the wizard.
Here we present you the list of currencies:
Code | Name | |
---|---|---|
AED | United Arab Emirates Dirham | ๐ฆ๐ช |
ARS | Peso argentino | ๐ฆ๐ท |
AUD | Australian Dollar | ๐ฆ๐บ |
AZN | Azerbaijani Manat | ๐ฆ๐ฟ |
BOB | Boliviano | ๐ง๐ด |
BRL | Brazilian Real | ๐ง๐ท |
BYN | Belarusian Ruble | ๐ง๐พ |
CHF | Swiss Franc | ๐จ๐ญ |
CAD | Canadian Dollar | ๐จ๐ฆ |
CLP | Peso chileno | ๐จ๐ฑ |
CNY | Chinese Yuan | ๐จ๐ณ |
COP | Peso colombiano | ๐จ๐ด |
CRC | Colรณn | ๐จ๐ท |
CUP | Peso cubano | ๐จ๐บ |
CZK | Czech Republic Koruna | ๐จ๐ฟ |
DKK | Danish Krone | ๐ฉ๐ฐ |
DOP | Peso dominicano | ๐ฉ๐ด |
EUR | Euro | ๐ช๐บ |
GBP | British Pound Sterling | ๐ฌ๐ง |
GEL | Georgian Lari | ๐ฌ๐ช |
GHS | Ghanaian Cedi | ๐ฌ๐ญ |
GTQ | Quetzal | ๐ฌ๐น |
HKD | Hong Kong Dollar | ๐ญ๐ฐ |
HUF | Hungarian Forint | ๐ญ๐บ |
IDR | Indonesian Rupiah | ๐ฎ๐ฉ |
ILS | Israeli New Sheqel | ๐ฎ๐ฑ |
INR | Indian Rupee | ๐ฎ๐ณ |
JMD | Jamaican Dollar | ๐ฏ๐ฒ |
JPY | Japanese Yen | ๐ฏ๐ต |
KES | Kenyan Shilling | ๐ฐ๐ช |
KRW | South Korean Won | ๐ฐ๐ท |
KZT | Kazakhstani Tenge | ๐ฐ๐ฟ |
MXN | Peso mexicano | ๐ฒ๐ฝ |
MYR | Malaysian Ringgit | ๐ฒ๐พ |
NAD | Namibian Dollar | ๐ณ๐ฆ |
NGN | Nigerian Naira | ๐ณ๐ฌ |
NOK | Norwegian Krone | ๐ณ๐ด |
NZD | New Zealand Dollar | ๐ณ๐ฟ |
PAB | Panamanian Balboa | ๐ต๐ฆ |
PEN | Peruvian Nuevo Sol | ๐ต๐ช |
PHP | Philippine Peso | ๐ต๐ญ |
PKR | Pakistani Rupee | ๐ต๐ฐ |
PLN | Polish Zloty | ๐ต๐ฑ |
PYG | Paraguayan Guarani | ๐ต๐พ |
QAR | Qatari Rial | ๐ถ๐ฆ |
RON | Romanian Leu | ๐ท๐ด |
RUB | Russian Ruble | ๐ท๐บ |
SAR | Saudi Riyal | ๐ธ๐ฆ |
SEK | Swedish Krona | ๐ธ๐ช |
SGD | Singapore Dollar | ๐ธ๐ฌ |
TRY | Turkish Lira | ๐น๐ท |
TTD | Trinidad and Tobago Dollar | ๐น๐น |
UAH | Ukrainian Hryvnia | ๐บ๐ฆ |
USD | US Dollar | ๐บ๐ธ |
UYU | Peso uruguayo | ๐บ๐พ |
VES | Bolรญvar | ๐ป๐ช |
VND | Vietnamese Dong | ๐ป๐ณ |
ZAR | South African Rand | ๐ฟ๐ฆ |
So far, @lnp2pBot is fully available in English and Spanish. There is a partial translation (in progress) to portuguese.
To change the wizard language use the /setlang
command
If you want to help by translating lnp2pBot into your language, you can propose your collaboration. This is a good place to start.
How can I find communities operating with my currency?
By executing the command: /findcomms
followed by the desired currency code (you can use standard ISO 4217 currencies codes), lnp2pBot will show you the created communities operating with your coin. There may also be communities trading sats against some other cryptocurrency. There is no limitation for the user.
In the following image we can see the result of /findcomms usd
.
Recommended wallets
The following wallets are the ones that have shown better performance when tested with the bot:
Support
@lnp2pbot is not a company, therefore it does not have a technical support department, although there is a community that you can go to in case you need help, remember that the participants in this community do not receive any type of remuneration, if You do not receive an immediate answer, be patient and educated that if someone has the answer at some point they will try to help you.
Common problems and their solutions
I tried to pay an invoice with a wallet with insufficient funds and @lnp2pbot now tells me that the invoice was used
Wait 15 minutes for the transaction time to expire and start it again for a new invoice to be generated.
My counterparty had a problem sending me the payment in fiat and then it disappeared, my sats were blocked
The transaction will be automatically canceled after 23 hours and your satoshis will appear in your wallet as a failed payment.
A user took my purchase by mistake and I already made the payment in satoshis
A cooperative cancellation can be initiated. The initiator must execute the command /cancel <command identifier>
and the counterpart only needs to run /cancel
and touch the button to confirm.
I canceled an order but the sats have not returned to my wallet, how long should I wait?
When an order is canceled, the seller's sats return immediately to the node/wallet that made the payment. If you use a self-custody wallet or your own node you will not have any problem but if you use a wallet that custodies your funds you must wait for them to reflect your balance in their internal system, this can take from a few minutes to a couple of hours depending on the wallet but in all wallets it returns 100% of your funds, be patient.
How do I know if the seller actually released the sats?
If @lnp2pBot tells you that the vendor released, it really is, but if you want to verify it you can do it as follows:
Write to the bot /listorders
and if the bot is still in the process of paying your invoice the status you will see will be PAID_HOLD_INVOICE
, if the bot has already paid the invoice the order will not appear on the list.
When an order has status PAID_HOLD_INVOICE
, the seller no longer has any responsibility because he/she has released the sats, if you have problems receiving go to the section The seller released but I don't get the sats in my wallet.
The seller released but I don't get the sats in my wallet
Sometimes the bot does not find successful routes to make the payment for different reasons, sometimes because there is simply not a good connection from the origin to the destination but other times it is much more complicated, it can happen that the nodes connected to the destination charge very high fees, @lnp2pBot's node is willing to pay up to 0.2% of the total amount of the operation in routing fee, if this fee is higher the bot simply will not make the payment, some wallets that are not native lightning may charge more than 0.2% when the mempool is congested, those wallets will not be able to be paid by the bot.
Another case is that you do not have inbound capacity
, I will give you an example, if you use Blixt wallet and in it you have a channel that you just opened, all the money in that wallet would be outgoing, you do not have the capacity to receive, in that case all Payments to that wallet will fail, there are modern wallets such as the Phoenix wallet that solves this problem by indicating that you do not have inbound capacity and offers you to open a new channel, this wallet charges a commission for this.
As a solution we recommend trying different wallets, generate new invoices and give them to the bot so that it tries to send you the payment again.
Contact with developers
If you need to contact the developers use our GitHub, if you have any proposal or want to report a bug go to the issues section and create one.
I am a developer and I want to contribute
Brilliant! Thanks for your interest, in the issues section you will see a list of issues to be resolved, choose one with the tag help wanted and if you have doubts you can ask by making a comment and then if you are sure you want to solve it, comment it, those with the label good first issue are simple issues that often help you get familiar with the code.
Communities
Communities were design so that users may interact in small groups, adapted to their tastes and needs.
Communities can be created around a project, a currency, or a country, for example.
Anyone can create a community and interact with the bot from it. Witch leaves creators/administrators with great power in their hands, โa great power comes with a great responsibilityโ This means that once users start working in their own communities, they will also have to manage any disputes that may occur.
Trust
The model we have chosen to resolve disputes is that of trust. This seems paradoxical for those who work with Bitcoin and advocate of "trustless" systems. The truth is that the goal is to develop systems in which we do not have to trust anyone. But after thinking a lot about dispute resolution systems, we had to accept that you always have to trust someone to some extent.
Benevolent dictator
Having accepted that to resolve a dispute, you have to trust someone, our focus shifted to answering the question: how to make there less incentive to create disputes? Regarding this issue, the community has made several proposals. And the one we are developing (because at the time of writing this text it is not ready yet) is to use the figure of the โbenevolent dictatorโ. It is about a "dictator" whom the people accept and trust that his decisions are made for the good of the community. Let's say he is a trusted community mediator.
The benevolent dictator is the creator of the community. The benevolent dictator is the one who can add dispute solvers or โsolversโ. These are publicly known by the community (we refer to your โusernameโ in Telegram). The community will be in charge of denouncing if these users are doing their job correctly or not. In a community where the "benevolent dictator" correctly selects the "solvers", everything will work fine; in one where the "dictator" makes mistakes, his subjects will go to another community or create a new one. In this way, we delegate this responsibility to the communities.
How do I create a community?
To create a community, simply type the /community
command. After this, the bot will ask you to indicate the following:
- Community Name: A name to identify your community.
- Currencies: Fiat currencies that can operate in the community. These must be entered separately from a blank space. For example, for an Uruguayan community, "UYU USD" can be added.
- Community Group: This is the main group where members of the community meet. Both @lnp2pbot and the person creating the community must be administrators in this group. Users will be able to create orders by sending bot commands in this group.
- Order book channel or channels: Orders will be published where we indicate to the bot. If we enter a single channel, the purchases and sales will be published in that channel, but if you indicate two channels, the purchases will be published in the first and the sales in the second. Channels are entered separately with a blank space and both the bot and the community creator must be channel admins.
- Solvers: We must indicate the โusernamesโ of the users who will be in charge of resolving the disputes, separated by a blank space.
- Channel for disputes: In this channel, the bot will publish when a user initiates a dispute. Both the bot and the community creator must be channel administrators.
Modifying a community
To modify any field, we simply execute the /mycomms
command and the bot will show you a menu that will help you select the community you want to modify and the specific field.
Creating orders
The operation of the bot remains exactly the same, by default it creates the orders in a global channel. But since we have created a new community we want our order to be published in the channel that we have associated with the community. There are two ways to create an order in the new community.
We enter the community group (in the case of our example it would be @p2pZimbabwe) and within the group, we execute the usual command: /sell
or /buy
.
If we want something more private, we tell the bot our default community by running the /setcomm
@p2pZimbabwe command. From then on, all orders you create privately will go to the corresponding channel linked to @p2pZimbabwe. You can change your default community at any time with /setcomm
@Coolercommunity (example). You can also go back to the previous state, where you didn't have a community by default, by running /setcomm
off.
Incentives
Since its creation, @lnp2pbot has charged a fee to the seller for each completed order, this fee is currently 0.6%, now, if the order was created in a community, the bot divides this fee, one part remains for the bot and the other part will be the community profit.
The proportions are 70% of the commission for the bot and the rest for the community.
That is, in a transaction for 10,000 satoshis, the commission to be paid by the seller is 60 satoshis. Of those, 42 satoshis are for the roboto, and the rest (18 satoshis) are for the community.
But, to encourage competition, the community has the power to reduce its 'earnings', so that instead of charging all of that 30%, it can lower a percentage of its commissions.
In the example above, instead of charging 18 satoshis (100%), you can choose to collect 9 satoshis (50%). The remaining satoshis remain as a discount for the seller who, instead of paying 60 satoshis, would pay 51.
What is a solver
Solvers are users appointed by the community administrator and are responsible for resolving disputes and maintaining order.
A community must have at least one solver. There is no requirement to be a solver. The administrator can add or remove them at any time.
The administrator can be a solver in his community.
Resolving disputes
When a user initiates a dispute, a message is sent by the bot to the dispute channel. Only solvers can take it by tapping the Take dispute button. Before taking a dispute, the solver must be sure that he/she have the community setted up, to set up the community, the solver must run the command /setcomm @community-group
.
Once the solver takes the dispute, the bot will send them all the necessary information to resolve it. The solver will also have to communicate with each party, understand what happened, and complete the order or cancel it.
Settle an order
Many disputes start because one of the two parties was slow to respond to a message, there was a misunderstanding, or payment was delayed. These are simple cases that only require patience and help in communication.
Other cases involve malice, for example, there may be a seller who wants to keep the fiat money and return the sats. For these cases, the solver can execute the /settleorder
command, what this command does is that it recognizes the received payment and automatically sends the sats to the buyer.
Canceling an order
The other alternative that the solver has is to cancel the order if the case warrants it. To do this, use the /cancelorder
command. This returns the sats to the seller.
Removing disputes
Every time a user initiates a dispute, both he and his counterpart are involved in it. Until it is resolved, both remain related, when resolved, the solver has the power to eliminate this dispute from one of the users or both, if he needs it, with the command
/deldispute username order-id
.