initial commit

This commit is contained in:
Richard Ramos 2022-09-29 10:22:23 -04:00
commit 6c00ae306c
No known key found for this signature in database
GPG Key ID: BD36D48BC9FFC88C
4 changed files with 2455 additions and 0 deletions

3
README.md Normal file
View File

@ -0,0 +1,3 @@
```
go run run.go
```

113
go.mod Normal file
View File

@ -0,0 +1,113 @@
module example.com/m
go 1.18
require (
github.com/libp2p/go-libp2p v0.21.0
github.com/libp2p/go-libp2p-core v0.19.1
github.com/multiformats/go-multiaddr v0.7.0
github.com/status-im/go-waku v0.2.2
)
require (
github.com/benbjohnson/clock v1.3.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/cheekybits/genny v1.0.0 // indirect
github.com/containerd/cgroups v1.0.4 // indirect
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
github.com/cruxic/go-hmac-drbg v0.0.0-20170206035330-84c46983886d // indirect
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
github.com/docker/go-units v0.4.0 // indirect
github.com/elastic/gosigar v0.14.2 // indirect
github.com/ethereum/go-ethereum v1.10.21 // indirect
github.com/flynn/noise v1.0.0 // indirect
github.com/francoispqt/gojay v1.2.13 // indirect
github.com/fsnotify/fsnotify v1.5.4 // indirect
github.com/go-stack/stack v1.8.0 // indirect
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-migrate/migrate/v4 v4.15.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/gopacket v1.1.19 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/huin/goupnp v1.0.3 // indirect
github.com/ipfs/go-cid v0.2.0 // indirect
github.com/ipfs/go-log/v2 v2.5.1 // indirect
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
github.com/klauspost/compress v1.15.1 // indirect
github.com/klauspost/cpuid/v2 v2.0.14 // indirect
github.com/koron/go-ssdp v0.0.3 // indirect
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
github.com/libp2p/go-cidranger v1.1.0 // indirect
github.com/libp2p/go-eventbus v0.2.1 // indirect
github.com/libp2p/go-flow-metrics v0.0.3 // indirect
github.com/libp2p/go-libp2p-asn-util v0.2.0 // indirect
github.com/libp2p/go-libp2p-peerstore v0.7.1 // indirect
github.com/libp2p/go-libp2p-resource-manager v0.5.1 // indirect
github.com/libp2p/go-mplex v0.7.0 // indirect
github.com/libp2p/go-msgio v0.2.0 // indirect
github.com/libp2p/go-nat v0.1.0 // indirect
github.com/libp2p/go-netroute v0.2.0 // indirect
github.com/libp2p/go-openssl v0.0.7 // indirect
github.com/libp2p/go-reuseport v0.2.0 // indirect
github.com/libp2p/go-yamux/v3 v3.1.2 // indirect
github.com/lucas-clemente/quic-go v0.28.0 // indirect
github.com/marten-seemann/qtls-go1-16 v0.1.5 // indirect
github.com/marten-seemann/qtls-go1-17 v0.1.2 // indirect
github.com/marten-seemann/qtls-go1-18 v0.1.2 // indirect
github.com/marten-seemann/qtls-go1-19 v0.1.0-beta.1 // indirect
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-sqlite3 v1.14.15 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
github.com/miekg/dns v1.1.50 // indirect
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
github.com/minio/sha256-simd v1.0.0 // indirect
github.com/mr-tron/base58 v1.2.0 // indirect
github.com/multiformats/go-base32 v0.0.4 // indirect
github.com/multiformats/go-base36 v0.1.0 // indirect
github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect
github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect
github.com/multiformats/go-multibase v0.1.1 // indirect
github.com/multiformats/go-multicodec v0.5.0 // indirect
github.com/multiformats/go-multihash v0.2.0 // indirect
github.com/multiformats/go-multistream v0.3.3 // indirect
github.com/multiformats/go-varint v0.0.6 // indirect
github.com/nxadm/tail v1.4.8 // indirect
github.com/onsi/ginkgo v1.16.5 // indirect
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 // indirect
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_golang v1.12.1 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.35.0 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
github.com/raulk/go-watchdog v1.3.0 // indirect
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/status-im/go-waku-rendezvous v0.0.0-20220817210730-9b9b02b1e880 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect
go.opencensus.io v0.23.0 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.8.0 // indirect
go.uber.org/zap v1.22.0 // indirect
golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/net v0.0.0-20220630215102-69896b714898 // indirect
golang.org/x/sync v0.0.0-20220513210516-0976fa681c29 // indirect
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
golang.org/x/tools v0.1.11 // indirect
google.golang.org/protobuf v1.28.0 // indirect
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
lukechampine.com/blake3 v1.1.7 // indirect
)

2243
go.sum Normal file

File diff suppressed because it is too large Load Diff

96
run.go Normal file
View File

@ -0,0 +1,96 @@
package main
import (
"bytes"
"context"
"fmt"
"time"
"github.com/libp2p/go-libp2p"
"github.com/libp2p/go-libp2p-core/peer"
"github.com/libp2p/go-libp2p/p2p/muxer/mplex"
"github.com/libp2p/go-libp2p/p2p/muxer/yamux"
"github.com/libp2p/go-libp2p/p2p/transport/tcp"
"github.com/multiformats/go-multiaddr"
"github.com/status-im/go-waku/waku/v2/protocol/pb"
"github.com/status-im/go-waku/waku/v2/protocol/store"
"github.com/status-im/go-waku/waku/v2/utils"
)
// Default options used in the libp2p node
var DefaultLibP2POptions = []libp2p.Option{
libp2p.ChainOptions(
libp2p.Transport(tcp.NewTCPTransport),
),
libp2p.ChainOptions(
libp2p.Muxer("/yamux/1.0.0", yamux.DefaultTransport),
libp2p.Muxer("/mplex/6.7.0", mplex.DefaultTransport),
),
libp2p.ListenAddrStrings("/ip4/0.0.0.0/tcp/0"),
}
func main() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
host1, err := libp2p.New(DefaultLibP2POptions...)
if err != nil {
panic(err)
}
s1 := store.NewWakuStore(host1, nil, nil, utils.Logger())
s1.Start(ctx)
defer s1.Stop()
p, err := multiaddr.NewMultiaddr("/dns4/node-02.do-ams3.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAmSve7tR5YZugpskMv2dmJAsMUKmfWYEKRXNUxRaTCnsXV")
if err != nil {
panic(err)
}
info, err := peer.AddrInfoFromP2pAddr(p)
if err != nil {
panic(err)
}
err = host1.Connect(ctx, *info)
if err != nil {
panic(err)
}
time.Sleep(3 * time.Second)
// Cursor for first query:
c1 := &pb.Index{
Digest: []byte{188, 194, 250, 11, 122, 9, 225, 198, 229, 26, 55, 76, 35, 21, 32, 89, 138, 224, 220, 79, 160, 27, 63, 239, 182, 158, 89, 19, 79, 54, 132, 38},
ReceiverTime: 1664302928000000000,
SenderTime: 1664302928245493000,
PubsubTopic: "/waku/2/default-waku/proto",
}
result, err := s1.Query(ctx, store.Query{
Topic: "/waku/2/default-waku/proto",
ContentTopics: []string{"/waku/1/0x53278eae/rfc26", "/waku/1/0xdfe5d73f/rfc26", "/waku/1/0xb5f68014/rfc26", "/waku/1/0xa0309f58/rfc26", "/waku/1/0x41238e4e/rfc26", "/waku/1/0xfacce554/rfc26", "/waku/1/0x5712b01d/rfc26", "/waku/1/0xca21b94e/rfc26", "/waku/1/0xf702b427/rfc26", "/waku/1/0x657a859c/rfc26"},
StartTime: 1664302919000000000,
EndTime: 1664460418000000000,
}, store.WithPeer(info.ID), store.WithPaging(false, 1000), store.WithCursor(c1))
if err != nil {
panic(err)
}
fmt.Println("MESSAGES RETRIEVED IN FIRST QUERY:", len(result.Messages))
fmt.Println("SAME CURSOR?", c1.PubsubTopic == result.Cursor().PubsubTopic && c1.ReceiverTime == result.Cursor().ReceiverTime && c1.SenderTime == result.Cursor().SenderTime && bytes.Equal(c1.Digest, result.Cursor().Digest))
result2, err := s1.Query(ctx, store.Query{
Topic: "/waku/2/default-waku/proto",
ContentTopics: []string{"/waku/1/0x53278eae/rfc26", "/waku/1/0xdfe5d73f/rfc26", "/waku/1/0xb5f68014/rfc26", "/waku/1/0xa0309f58/rfc26", "/waku/1/0x41238e4e/rfc26", "/waku/1/0xfacce554/rfc26", "/waku/1/0x5712b01d/rfc26", "/waku/1/0xca21b94e/rfc26", "/waku/1/0xf702b427/rfc26", "/waku/1/0x657a859c/rfc26"},
StartTime: 1664302919000000000,
EndTime: 1664460418000000000,
}, store.WithPeer(info.ID), store.WithPaging(false, 1000), store.WithCursor(result.Cursor()))
if err != nil {
panic(err)
}
fmt.Println("MESSAGES RETRIEVED IN SECOND QUERY:", len(result2.Messages))
}