See Bloom filter package!
This is a simulation of one aspect of SPV nodes. SPV nodes send a bloom to a full node and the full node responds with all transactions that match the bloom. Instead of transactions, this code uses simple string messages.
$ git clone https://github.com/nettijoe96/spv-bloom.git
$ cd spv-bloom
$ go run .
$ cd spv-bloom
$ docker build -t spv-bloom .
$ docker run -dp 8080:8080 --rm spv-bloom
After running, you can see the swagger docs in browser: http://127.0.0.1:8080/docs
POST 127.0.0.1:8080/publish
request:
{
"messages" = [
"hello",
"world",
"another message"
]
}
POST 127.0.0.1:8080/bloom-request
request:
{
"bloom": {
"filter": "00000000000000000001000001008000010000000000000100000000000000000000000000000001000000000000000000000100000000000000000000000040",
"k": 4
}
}
response:
{
"messages":[
"hello"
"world"
]
}
- Database to store messages on server side