@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 open source, non-custodial peer-to-peer exchange with no user registration or identity verification, running on top of a Telegram bot. It allows you to buy and sell sats (minimum fractional unit of measurement of Bitcoin) via Lighting Network.
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
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, only the number of completed transactions, the total volume traded, the counterparty rating, and the dispute score, 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.
How do I create a sell order?
The procedure is exactly the same as for the purchase order, substituting the /buy
command for /sell
You have to type the details of your order: /sell [premium/discount]
without the special characters.
Ex. /sell 100000 50 usd "bank xyz"
I sell one hundred thousand sats at fifty dollars I charge by bank xyz Like with the buying orders, if there is any non-compatible variable, the bot will indicate it to you during the order creation process.
Upon completion, it will be published on the exchange channel and will remain visible for a period of 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.
The ID or identification number of your order appears just below the message of acceptance and publication of the same, 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 without specifying the amount in sats you want to buy/sell
, but rather the fiat amount to pay/charge
, 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 into your language, you can propose your collaboration. This is a good place to start
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.
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.
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
.