Market Messages¶
Market messages is used for exchange Demand and Offer information. It also used for delivery Result messages with liability execution reports.
Note
This is spec for Robonomics Generation 5
.
- Currently for message delivery is used IPFS PubSub broadcaster.
- IPFS PubSub topic is set according to Lighthouse ENS name.
Messages content¶
Robonomics market message use JSON data format.
Demand
Field ROS Type Description model ipfs_common/Multihash CPS behavioral model identifier objective ipfs_common/Multihash CPS behavioral model parameters in rosbag file token ethereum_common/Address Operational token address cost ethereum_common/UInt256 CPS behavioral model execution cost lighthouse ethereum_common/Address Lighthouse contract address validator ethereum_common/Address Observing network address validatorFee ethereum_common/UInt256 Observing network fee deadline ethereum_common/UInt256 Deadline block number nonce ethereum_common/UInt256 Robonomics message counter sender ethereum_common/Address Message sender address signature std_msgs/UInt8[] Sender’s Ethereum signature
Offer
Field ROS Type Description model ipfs_common/Multihash CPS behavioral model identifier objective ipfs_common/Multihash CPS behavioral model parameters in rosbag file token ethereum_common/Address Operational token address cost ethereum_common/UInt256 CPS behavioral model execution cost validator ethereum_common/Address Observing network address lighthouse ethereum_common/Address Lighthouse contract address lighthouseFee ethereum_common/UInt256 Liability creation fee deadline ethereum_common/UInt256 Deadline block number nonce ethereum_common/UInt256 Robonomics message counter sender ethereum_common/Address Message sender address signature std_msgs/UInt8[] Sender’s Ethereum signature
Result
Field ROS Type Description liability ethereum_common/Address Liability contract address result ipfs_common/Multihash Liability result multihash success std_msgs/Bool Is liability executed successful signature std_msgs/UInt8[] Sender’s Ethereum signature
Messages signing¶
Before signing the messages is packed using abi.encodePacked solidity finction and hashed by Keccak_256.
demandHash = keccak256(abi.encodePacked(
_model
, _objective
, _token
, _cost
, _lighthouse
, _validator
, _validator_fee
, _deadline
, IFactory(factory).nonceOf(_sender)
, _sender
));
Note
nonce
parameter is counted by factory smart contract and incremented for each created liability smart contract.
Message hash are signed using Ethereum secp256k1
signature.