mirror of
https://github.com/logos-messaging/logos-messaging-python-bindings.git
synced 2026-01-02 14:03:12 +00:00
93 lines
2.6 KiB
Markdown
93 lines
2.6 KiB
Markdown
|
|
# Py-Waku
|
|
|
|
## Introduction
|
|
|
|
Py-Waku exposes a Waku module that can be used within Python projects.
|
|
It is fundamentally a wrapper around [nwaku](https://github.com/waku-org/nwaku)
|
|
|
|
This repo has been tested with Python3 in Ubuntu.
|
|
|
|
If need a different setup, don't hesitate con contact us on Discord. The Discord server can be found at https://docs.waku.org/.
|
|
|
|
## Prepare the development environment
|
|
|
|
Run the following commands from the root folder:
|
|
```bash
|
|
mkdir venv
|
|
python3 -m venv venv/
|
|
source venv/bin/activate
|
|
./venv/bin/python -m pip install -r requiremets.txt
|
|
```
|
|
|
|
## Create a Py-Waku package
|
|
|
|
Run the following commands from the root folder:
|
|
```bash
|
|
source venv/bin/activate
|
|
./venv/bin/python3 -m build
|
|
```
|
|
|
|
## Test the package
|
|
|
|
For that, we have a very simple example in `tests/waku_example.py`.
|
|
|
|
In order to use the waku module, please install it from the local `dist/` folder, that can be created by following the
|
|
instructions from the previous section.
|
|
|
|
The following command is an example on how to install the local
|
|
package to your local virtual env.
|
|
|
|
```bash
|
|
./venv/bin/python3 -m pip install dist/waku-0.0.1-cp310-cp310-linux_x86_64.whl
|
|
```
|
|
|
|
Current limitations of nwaku cbindings do not allow you to use DNS name in the multiaddress of a peer you want to connect to.
|
|
Due to that, we recommend to run another local node to connect to other peers and then connect to this local node from the py-waku.
|
|
|
|
```
|
|
docker run -i -t -p 60000:60000 -p 9000:9000/udp harbor.status.im/wakuorg/nwaku:v0.24.0 --dns-discovery:true --dns-discovery-url:enrtree://ANEDLO25QVUGJOUTQFRYKWX6P4Z4GKVESBMHML7DZ6YK4LGS5FC5O@prod.wakuv2.nodes.status.im --discv5-discovery --rest --rest-address=0.0.0.0
|
|
```
|
|
|
|
Once this node is up, get the multiaddress
|
|
|
|
```
|
|
LOCAL_PEER_MA=$(curl http://127.0.0.1:8646/debug/v1/info | jq -r ".listenAddresses[0]")
|
|
NODEKEY=$(openssl rand -hex 32)
|
|
```
|
|
|
|
You car run the `tests/waku_example.py` now as
|
|
|
|
```
|
|
./venv/bin/python3 tests/waku_example.py --peer ${LOCAL_PEER_MA} --key ${NODEKEY} -p 70000
|
|
```
|
|
|
|
## Update the libwaku.so library
|
|
|
|
Given that `Py-Waku` conforms a wrapper around `libwaku.so`,
|
|
it is likely that you would need to upgrade it.
|
|
For that, you will need to update the submodule pointer
|
|
to a more recent nwaku version:
|
|
|
|
1. ```cd vendor/nwaku```
|
|
2. Check out to the commit/tag as you wish
|
|
|
|
Then, follow the following steps from the root folder
|
|
to rebuild the `libwaku.so` library:
|
|
|
|
```bash
|
|
cd vendor/nwaku
|
|
```
|
|
```bash
|
|
make libwaku -j8
|
|
```
|
|
```bash
|
|
cd ../../
|
|
```
|
|
```bash
|
|
cp vendor/nwaku/build/libwaku.so lib/
|
|
```
|
|
|
|
Notice that the `libwaku.so` library is also distributed within
|
|
the `Py-Waku` package.
|