Inquiry about the decision to discontinue support for dashcoin #447
Replies: 14 comments 7 replies
-
Support for Dash was dropped because of lack of time to maintain reliable and up-to-date code. Also not enough public api's are available for Dash or Dash testnet to run your own software or wallet and for instance update transactions information. |
Beta Was this translation helpful? Give feedback.
-
Subject: Proposal for Integrating Dash-SPV as a Service Provider for Bitcoinlib DearBitcoin lib team, I hope this letter finds you well. I am writing to propose an integration of Dash-SPV as a service provider within Bitcoinlib to enable seamless interactions with the Dash blockchain, including features like wallet balance querying, transaction broadcasting, and SPV-based querying. This integration could be a significant enhancement to Bitcoinlib, especially in addressing the Dash node limitation issue that has been affecting its support for Dash. Background: As you may know, Dash-SPV (Simple Payment Verification) is a lightweight protocol for interacting with the Dash blockchain that relies on Electrum-Dash servers. This protocol allows for wallet operations, such as checking balances and broadcasting transactions, without the need to run a full Dash node. Electrum-Dash servers use this SPV protocol to provide services to lightweight clients, making it possible to interact with Dash in a decentralized way. However, a challenge currently exists with Bitcoinlib's support for Dash. Due to the lack of sufficient Dash nodes in the network, it is difficult to provide reliable services for tasks like querying wallet balances and broadcasting transactions. This has led to limited functionality for Dash within Bitcoinlib, which impacts users who want to integrate Dash into their applications. Proposed Solution: I propose integrating Dash-SPV support within Bitcoinlib by utilizing Electrum-Dash servers as a service provider. This would allow Bitcoinlib users to interact with Dash via the SPV protocol, enabling wallet balance queries, transaction broadcasts, and other Dash-specific operations. By using public Electrum-Dash servers, or even private instances, Bitcoinlib could bypass the need to run a full Dash node, thus solving the insufficient Dash node issue. This integration would also expand Bitcoinlib's capabilities, offering users an easy way to work with Dash alongside other cryptocurrencies. How Dash-SPV Could Help: Dash-SPV leverages the Electrum protocol, which provides a simple and efficient way to interact with Dash through lightweight clients. By integrating this service into Bitcoinlib, we would be able to: Query wallet balances for Dash addresses without needing a full node. requests: This is a simple library for making HTTP requests to Electrum-Dash servers and interacting with the SPV protocol. It’s essential for sending JSON-RPC requests to Electrum-Dash servers. Install it via: pip install requests pyelectrum: This Python library can be used to interact with Electrum servers (including Electrum-Dash) to query balances and broadcast transactions. It will handle the Electrum protocol required for Dash-SPV interactions. Install it via: pip install pyelectrum bitcoinlib (optional): This library is for general Bitcoin and cryptocurrency wallet operations and can be extended to work with Dash-SPV by integrating it with Electrum-Dash servers. If needed, Bitcoinlib can be used to create wallets, sign transactions, and interact with the Dash network via the Electrum-SPV protocol. Install it via: pip install bitcoinlib json: Python’s built-in json library is used to handle JSON-RPC requests and responses when communicating with the Electrum-Dash server. Example Python Integration (Using PyElectrum or Custom SPV Client): I’ve outlined an example below that demonstrates how to interact with Electrum-Dash servers using Python. The solution can be expanded to integrate directly with Bitcoinlib: import requests import json The Electrum-Dash server to use (public or private) Wallet address to query Prepare the JSON-RPC payload to check balance Send the request Parse and handle the response This Python example demonstrates how to query the balance of a Dash address using Electrum-Dash servers. This can be easily extended within Bitcoinlib to provide the same functionality for Dash wallet operations. Benefits of This Integration: No Need for Full Nodes: By relying on Electrum-Dash servers, users can interact with the Dash blockchain without needing to maintain a full Dash node. Thank you for considering this proposal. I look forward to hearing your thoughts and would be happy to discuss this further if needed. Best regards, |
Beta Was this translation helpful? Give feedback.
-
Here's a list of Electrum-Dash servers (Electrum servers for Dash) that you can use to interact with the Dash blockchain. These servers implement the Electrum protocol, which allows you to access Dash blockchain data without downloading the entire blockchain. List of Electrum-Dash Servers These are the official public servers provided by Dash developers: Mainnet Servers: electrumx1.dash.org - Port: 50001 (non-SSL), 50002 (SSL) testnet1.dash.org - Port: 51001 (non-SSL), 51002 (SSL) Community-Run Electrum Servers These are Electrum servers run by community members or independent projects: electrum1.dashpay.io - Port: 50001 (non-SSL), 50002 (SSL) Public Electrum Servers Some public Electrum servers may also support Dash. While they are generally intended for Bitcoin, some may also support Dash: electrum.blockstream.info (Primarily Bitcoin, but you can try to connect with Dash wallets.) Connecting to an Electrum-Dash Server Open Electrum-Dash (or any other Electrum wallet). Conclusion Let me know if you need help setting up your wallet or running your own ElectrumX server! |
Beta Was this translation helpful? Give feedback.
-
Good to see there is a list of Electrum providers for Dash. Bitconlib supports connections to ElectrumX server since the latest version. So it should be easy to test the library with the Dash network. If you add the Dash network settings in networks.json and the provider definitions in providers.json you can for instance create a wallet and test. |
Beta Was this translation helpful? Give feedback.
-
Im going to do this and provide update on it: Modify the networks.json file to add the Dash network. Add the following parameters to the file: Name: Dash Provider: Electrum Import Wallet from bitcoinlib Save the script as test_dash.py pip install --upgrade bitcoinlib |
Beta Was this translation helpful? Give feedback.
-
Okay Here is a quick report on the information: it worked I was able to create a dash wallet and was able to get an address. However I have come to the conclusion that in the past bitcoinlib update that removed dash it also affected whatever sqllite schema you had. I ran into several errors trying to call update_utxos the following letter describes the error. It has something to do with the sqllite database schema. Problem Description: anti_fee_sniping Column Missing: Error: sqlite3.OperationalError: no such column: wallets.anti_fee_sniping Context: Triggered during wallet creation after upgrading bitcoinlib. index Column Missing: Error: sqlite3.OperationalError: no such column: cache_transactions.index Context: Occurred when updating UTXOs (wallet.utxos_update()). Troubleshooting Steps Taken: Database Deletion: Deleted outdated SQLite databases at: /Users/[username]/.bitcoinlib/database/bitcoinlib.sqlite /System/Volumes/Data/Users/[username]/.bitcoinlib/database/bitcoinlib.sqlite Library Reinstallation: Performed a clean install of bitcoinlib to ensure no cached schema conflicts. Code Adjustments: Explicitly set witness_type='legacy' for Dash compatibility (Dash does not support SegWit). Root Cause: Outdated Database Schema: Dash Compatibility: Solution: Nothing yet.... |
Beta Was this translation helpful? Give feedback.
-
Did you try to set default_witness_type=legacy in the config.ini? |
Beta Was this translation helpful? Give feedback.
-
Okay so here is the final work through guys it is a lot to get dash working again but it worked I was able to send transaction, create a wallet, and get addresses. You can not use bitcoinlib built in sqlite library it is missing a table. You will need your own mysql or postgre database and install pythons required database libraries that bitcoinlib uses. First update config.ini to make dash use legacy witness type, below is my full config.ini:
Here is the work around. I will how my networks.json:
Next here is my providers.json:
1.Update cofig.ini with: [dash]
The SQLite database wasn’t working due to a schema mismatch caused by:
Why SQLite Failed: |
Beta Was this translation helpful? Give feedback.
-
just copy my config.ini and providers.json and networks.json to get dash coin working again, replace those files with what you copied in the bitcoinlib library. Hopefully the devs will test this and get dash readded again. Electrum servers are free and not rate limited. As with the snipping fee column in sqllite it may have been cause by my cached sqlolite database or something is missing in the code. To get around that just install docker and get a mysql or postgre image (they are free) and create a container. Then just use the database uri with your root user and password and pass in the uri whenever you use bitcoinlib Wallet or Service classes. It will work. Hopefully the devs please can they patch this fix in next bitcoinlib version. Electum servers are free and are usually not rate limited example:
On a separate note after experimenting the same procedure can be done for bitcoin cash and bitcoin sv if you want since they are also electrum based. However upon further inspection some more code tweaks are needed since those where removed form the bitcoin lib library. Just some formatting needs to be done to the wallet addresses and that the transactions under them need no witness fields: transaction.py
encoding.py
Electrum Server Configuration Example: Override Electrum servers for BSV
Example with editing providers.json (recommended):
finally add the bsv and bch network definitions:
|
Beta Was this translation helpful? Give feedback.
-
FInal Testing to see if changes persisted:
|
Beta Was this translation helpful? Give feedback.
-
Where did you find the list of Electrum-Dash servers? None of them seems to be working, or am I missing something? |
Beta Was this translation helpful? Give feedback.
-
Hello, I found them here: https://github.com/pshenmic/electrum-dash/blob/master/electrum_dash/servers.json and some crypto currency site |
Beta Was this translation helpful? Give feedback.
-
I just wanted to add a few more dash snode servers here: I got them working. This is the providers.json file. { |
Beta Was this translation helpful? Give feedback.
-
Still this configuration is not correct and none of the providers seem to be working. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello, I am revisting this project after many years. I know it supported dashcoin at some point in time. What led to the discontinue of support for dashcoin. Can I use previous versions to use dashcoin wallets.
I have been able to edit the providers.json but I would like more insight to be able to add my own dashcoin node.
Beta Was this translation helpful? Give feedback.
All reactions