Better Mantle Tx
In the current version the user indicates the storage gas price. This price is fixed anyway by the ledger and is fix for the entire epoch. Instead of being indicated it shouldn’t and just checked to match the current price on chain in the fees.
The current version also support an execution gas price. Because the market uses a base fee price, we could potentially remove this field too and suppose that if the balance of the transaction is positive, the left over is an execution tip.
Allow Private nodes to be discoverable
/nomos/circuit/relay/0.2.0/hop/nomos/circuit/relay/0.2.0/stopIf enabled via config, run a Circuit Relay v2 server and advertise, via Identify, support for the following protocols:
/nomos/circuit/relay/0.2.0/hop/nomos/circuit/relay/0.2.0/stopAdd a Private node to its discovered nodes set, if the Private node has secured a Circuit Relay reservation at the Public node’s Circuit Relay server. The Private node should be added with the following relayed multiaddress:
/{public_relay_ip}/udp/{port}/quic-v1/p2p/public_relay_peer_id/p2p-circuit/p2p/{private_peer_id}
If the Private node loses its reservation at the Circuit Relay server, the above relayed address should be removed from the discovered nodes set.
Dialing Private peers
A Private peer can only be dialed by other peers if it has at least one valid reservation at a Circuit Relay server. Its addresses then have the following relayed multiaddress form:
/{public_relay_ip}/udp/{port}/quic-v1/p2p/{public_relay_peer_id}/p2p-circuit/p2p/{private_peer_id}
The peer discovery protocol must provide information about publicly reachable addresses of peers. When dialing a peer, the libp2p stack will automatically determine if the connection should be direct or relayed, depending on the address of the dialed peer. If the dialed peer is a Private peer and both peers advertise support for the DCUtR protocol via Identify (/nomos/dcutr), NAT hole punching will be automatically attempted by the libp2p stack.
Better Inscriptions
In the current version, the signer of an inscription is a Ed25519PublicKey type. However the ChannelState already defines the list of accredited keys. For this reason the signer could be a type u16 instead (because the list of accredited keys is limites to 2^16). This would drop the signer field from 32 bytes to 2 bytes.