Unreleased (see master)
- Add
dpp-proxy
server to the SDK. - Fixed a bug with the use of the
reset
command for themerchant_api
component (when running the SDK in standalone, portability mode).
- Set the app version number in the terminal window title.
- Prevent all components from binding on
0.0.0.0
because it results in firewall permission pop-ups. The SDK is now only intended for use onRegTest
and so there is no reason to bind on all interfaces like this.
- Add
reference_server
component to the SDK. This server is designed to house all relevant LiteClient APIs as well as any other APIs specifically needed by ElectrumSV. It functions as a proxy to multiple backend services in order to unify the full set of APIs as well as the authorization and account model. - Add
header_sv
component to the SDK (LiteClient component) - involves download of embedded Java RE. - Set terminal window title with the name of the running component.
- Add
simple_indexer
component to the SDK. This component is a very simplistic implementation of the new set of indexer-backed APIs that ElectrumSV requires moving forward.
- Upgrades to allow for usage of an embedded postgres instance on a non-default port.
- Added the reference implementation of Peer Channels as a new SDK component.
- Use Python3.10 as the recommended version.
- Add comprehensive mypy static type checking to codebase
- Update mAPI version to 1.3.0
- Fix
stop
command on windows to performSIGINT
for all of--inline
, '--background' and--new-terminal
modes of exectution. - Set sockets to
SO_REUSEADDR
mode to prevent TCP cooldown from preventing rapid stop/start iterations of SDK components. - Beginning to add portability features by allowing to specify an arbitrary
SDK_HOME
directory rather than the default os-specific home location. This is part of a new direction of creating a fully standalone / bundled SDK CLI-Tool (where the user doesn't need to separately install anything).
- Bump aiorpcX version to 0.22.1 as the minimum.
- Python package versioning updates.
- Increment to support of only Python3.9+. Drops official support for Python3.7 and Python3.8.
- docker-compose.yml updates.
- Python package versioning updates.
- Documentation updates
- Changes to make the SDK usable as a python library (namely for use in CI/CD reorg functional testing scripts)
- Added a
--deterministic-seed
option forElectrumSV
to ease regtest functional testing efforts. - Added
electrumsv-server
component which has a locally hosted interactive website for BIP270 invoicing and payments. - Added broadcasting via mAPI for the
electrumsv-server
.
- Pypi packaging fix (to ensure all relevant files are copied into the final bundle).
- Update mAPI to ASP.NET Core-based version (from Go).
- Made significant new additions to online hosted documentation for each command and component.
- Added
BITCOIN_NETWORK
environment variable fornode
,electrumx
andelectrumsv
.
- Fix pypi markdown rendering of documentation.
- Bug fixes for conflicting python package versions across components (related to chardet and requests packages).
- Added
--testnet
and--scaling-testnet
options forelectrumsv
component.NOTE 2/06/2022
: The SDK is now strictly only intended for RegTest usage). - Ensure multiple instances of the node do not conflict on the zmq port allocations.
- MacOS BigSur compatibility fixes. Uses OSAScript to launch new terminal windows.
- Remove http polling of subprocesses and instead check the exit returncode for status. This is more reliable and works for any arbitrary plugin component.
- Fix graceful shutdown of all child processes via
signal.CTRL_C_EVENT
on windows.
- Removed verbose help text as this information is better conveyed via the online documentation. The CLI should also now be self-describing.
- Added Dockerfiles for all components
- Add --rpchost and --rpcport optional args to the
node
command to connect to a node's RPC API that is not on localhost:18332.
- Minor bug fixes
- Removed intermediate step of generating shell scripts and instead directly launch applications
via
Popen
. - Now shows node logs when running in a new terminal or inline
- Added
install
command which decouples installation logic fromstart
logic. This results in faster startup times. - General refactoring of codebase for organisation and readability.
- Added a "base" Docker image that installs all pre-requisites for running the SDK.
- Allow configuration of ElectrumX via environment variables
- Allow change of node bind address (to 0.0.0.0) via environment variable to facilitate use within docker.
- Minor bug fix for merchant_api plugin
- Added Merchant API v1.1.0
- Replaced curio-based status monitor with aiohttp framework (more ubiquitous, production-ready framework).
- Added initial Sphinx documentation.
- Multiple minor bug fixes.
- Large refactoring towards a plugin model for each component.
- Introduced a python virtual environment for insulating python package dependencies from the system installation of python.
- Add basic cross platform testing in Azure pipeline
(
install
,start
,stop
,reset
command usage for each component) - Add whatsonchain component (requires node.js installation)
- Added
--background
flag for running components as background processes. Required for azure pipeline.
- Support multiple instances via the
--new
and--id
flags. - Allow passing arbitrary cli args to underlying
electrumsv
process electrumsv-sdk start
with no args starts all components similarly howelectrumsv-sdk stop
with no args stops all components.
- Add Azure pipeline builds and pip wheels for hosting on pypi
- Added a
status_monitor
component for real-time monitoring of the status of running servers (with the intention of later displaying this information in theelectrumsv-server
). Status can be 'Running', 'Stopped', 'Failed'. - Linux compatibility fixes (generally due to different file locations and python pip behaviour requiring different command flags).
electrumsv-server
extended the BIP270 REST API
- Move installation location to the user
LOCALAPPDATA
directory (platform dependent) in a directory calledElectrumSV-SDK
. - Fixed an issue where the pip wheel doesn't include all required source files.
- Add
node
subcommand for interacting with the running bitcoin node with RPC commands (standard bitcoin cli interface). Requires no configuration.
electrumsv-server
now has an interactive website and the beginnings of a supporting REST API forBIP270
payments.- Add subcommands
start
,stop
,reset
to theelectrumsv-sdk
commandline tool. - General Refactoring of code base file structure and minor bug fixing
- Fixed an issue to do with the python pip install process
which should allow for running the
electrumsv-sdk
command as a global system utility (on system PATH).
- Basic functionality for automated installation and running of:
node
,electrumsv
,electrumx
via theelectrumsv-sdk
commandline script. - Initial exploratory code for the
electrumsv-server
with faux API intended to eventually cover all of the public API requirements of ElectrumSV. The curio-based trinket framework was used for this initial implementation.