* Add Consensus class with placeholders
* Implement Consensus constructor
* Move PubsubType to peer package
* Implement remaining methods in Consensus class
* Use existing consensus stream if it exists
* Setup send and receive pipes on consensus streams
* Refactor P2P and consensus setup in server command
* Add Nitro node initialization in server command
* Return objects from server initializations
* Use dynamic imports for ES modules in util package
* Fix util deps
* Change target to es6 to allow creating a Mokka instance
* Set moduleResolution to node16 in util for dynamic imports
* Upgrade @cerc-io/nitro-node package
* Implement retries while sending consensus messages
* Use bunyan for consensus logs and subscribe to state changes
* Use debug for logging state change events
* Handle empty watcher party file path
* Return object from initP2P
* Upgrade @cerc-io/nitro-node package
* Update package versions
* Replace floodsub with gossipsub
* Add a pubsub flag to support both floodsub and gossipsub
* Fix deps
* Handle empty string values
* Upgrade @cerc-io/libp2p dependency
* Upgrade package versions
* Avoid gasPrice while serializing tx in getRawTransaction
* Convert base fee to bigint when fetching block data
* Fix methods to get block data in rpc-eth-client
* Fix error checking in rpc-eth-client
* Continue processig after missing null block in FEVM
* Self review fix
* Upgrade package versions
---------
Co-authored-by: Nabarun <nabarun@deepstacksoft.com>
* Track amount paid on payment channels and charge as per query cost
* Add payments manager config
* Fix received payment checks
* Separate out payment not received and amount insufficient errors
* Serve a query for free if its rate is not configured
* Load open payment channels from the stored state
* Take list of free queries from config
* Take mutation rates from config
* Rename query rates config fields
* Take cache settings and request timeout from config
* Upgrade ts-nitro packages
* Upgrade package versions
* Add client address field to payments manager
* Use a single payment header in payments plugin
* Upgrade ts-nitro packages
* Rename method to authenticateVoucherForSender
* Upgrade package versions
---------
Co-authored-by: Nabarun <nabarun@deepstacksoft.com>
* Wait for receiving voucher on GQL query
* Add timeout while authenticating voucher and remove listener channel
* Clear timeout after payment received
* Rename variable to paymentListener
* Upgrade package versions
* Add rpcSupportsBlockHashParam flag in config
* Add a custom payments plugin in server process
* Fix voucher channel read in voucher subscription
* Use voucher hash and signature for payment authentication
* Use a LRU hash map for storing received vouchers
* Avoid hoisting level types to resolve build errors
* Upgrade ts-nitro packages
* Add payments related logs
* Upgrade package versions
* Always allow latestBlock query
* Upgrade ts-nitro packages
* Block connections from blacklisted multiaddrs in relay node
* Block connections from blacklisted multiaddrs in peer nodes
* Block dials for blacklisted multiaddrs
* Update package version
* Improve connection check with peers by retrying ping on failures
* Use DEFAULT_PING_INTERVAL in cli
* Log only error message
* Add config option to pass peer id file path
* Finish retrying pings before connection check interval duration
* Handle duplicate connections to relay nodes
* Increase default max dial retries from one relay to another
* Update connection manager config for relay nodes
* Use debug for logs in relay node
---------
Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
* Use browser metrics package
* Get latency from heartbeat check
* Use metrics in nodejs CLI
* Avoid disconnect from primary relay on reaching limit
* Fix relay connections count
* Refactor protocol change handler
* Refactor protocol stream creation
* Refactor Peer constructor
* Refactor peer CLIs to a separate cli folder
* Move peer node setup to a separate file
* Add a getter method for primary relay node mutiaddr
* Close new relay peer connection if limit already reached
* Add an option to use a domain name for a announce address
* Update chat CLI readme
* Set port range for relay node
* Add descriptive comment
* Upgrade webrtc-direct version
* Use webrtc-direct transport with pubsub based discovery
* Use changes to integrate signalling using relay node
* Add an indicator for peer connection type (direct/relayed)
* Catch errors while creting a libp2p node
* Catch errors while dialling peers
* Catch errors when dialling from relay node
* Pass CLI arg for port to listen on for relay node
* Subscribe chat CLI to pubsub topic
* Update yarn lockfile
* Update webrtc-direct dependency in package json
* Update webrtc-direct version
* Update yarn lockfile
* Upgrade js-libp2p and related dependencies
* Dial all multiaddr of a discovered peer in parallel
* Dial using peer id instead of dialling individual multiaddr
* Log peer id on discovery
* Pass relay node an optional list of relay peers to connect to
* Catch protocol selection failure on dialling to new relay nodes
* Restrict max number of connections for a peer
* Tag the relay node with a high value to avoid disconnects
* Use debug for connect/disconnect logs in relay nodes
* Ignore incomplete multiaddr on a peer discovery
* Increase max connections for a peer to 10
* Refactor and descriptive comments