Adding Nodes or NodeTypes
The whole programming-model is based on the Bitcoin-Core API. So we need Bitcoin Core nodes or elements nodes or at least something which behaves like that. So for the Spectrum Integration, we made extending the node possible. This is a short description of how that has been done and which extensionpoints might be helpfull here.
So to create your own Node, derive from
from cryptoadvance.specter.node import AbstractNode class MyNode(AbstractNode): # [...] @classmethod def from_json(cls, node_dict, *args, **kwargs): [...] def node_info_template(self): return "spectrum/components/spectrum_info.jinja"
That class will need its own
fromJson method. Overwrite the
node_info_template method to specify your own template for the info-page which comes up if you click on a fully configured and functional node in the upper left corner. In order to smuggle your node into existence, you could potentially use the
callback_after_serverpy_init_app callback. Have a look how the spectrum-extension did it here. Alternatively, you could create your own frontend in your controller and maybe additionally adjust the
WelcomeVm model class as described in the frontend section.
node_settings are clicked for that node, we also expect that you have a
node_settings endpoint in your controller. Otherwise there will be errors. Something like:
@yourextension_endpoint.route("node/<node_alias>/", methods=["GET", "POST"])