Signature exchange and transport
An escrow releases only when both robots have signed. Each robot signs inside
its own payment_node, so the two signatures have to meet somewhere. How they
travel is a transport question, and robopay keeps it separate.
Anywhere else
When robots are not on the same ROS network (different fleets, different sites, or one robot talking to a web service), move the signature any way you like: NFC, QR code, HTTP, a fleet dispatcher. Then hand it to the receiving node:
ros2 service call /escrow/submit_signature robopay_interfaces/srv/EscrowSubmitSignature \
"{escrow_id: '0x...', signer_address: '0x...', signature: '0x...'}"
The node verifies the signature against the escrow before accepting it.
Discovery
How two robots first learn each other’s address is also yours to choose. An address is a public identifier, safe to print on a QR code or broadcast. robopay works from whatever address that step produces.