Thanks, to answer your questions:
1. We didn't implement a specific mechanism for distributed an exchange offer, but streams can very easily be used for this purpose. If you publish the data off-chain, there will only be a minimal amount of space taken up on the blockchain itself. But the offer will be visible to everyone.
2. You could encrypt the hex blob for the offer if you want to, but this would be outside of MultiChain's responsibility. (And you would use a public key of the recipient.) You could also use read-permissions streams (requires MultiChain Enterprise) to make the offer only visible to certain parties.
3. If you use a normal offer of exchanges, yes anyone can accept it.
4. The blob is a partially signed partial transaction, in the usual transaction format. So if you know how to read MultiChain transactions (which are formatted as bitcoin transactions with extensions) you can read it.
5. The simplest way to make an exchange for a specific address is not to use createrawexchange but rather the following process on the side making the offer:
- preparelockunspent to put the asset quantity on offer in a single UTXO.
- createrawtransaction to create a transaction which takes that UTXO as its single input, and has two outputs: One sending the offered asset quantity to the other side's address, and one sending the desired asset quantity to your address. This transaction is currently unbalanced so cannot yet be accepted by the network.
- signrawtransaction to sign that transaction with the last parameter sighashtype set to ALL|ANYONECANPAY which signs (i.e. locks) your input and all outputs but allow additional inputs to be added.
- Send that signed transaction to the other side however you like.
- The other side can examine the transaction using decoderawtransaction to see what is going on, i.e. what outputs are going to which addresses.
- If they are happy, they can call preparelockunspent to put their asset quantity in a single transaction output, then use appendrawtransaction to add that UTXO to the transaction they received from you, with the last parameter action set to send to sign and send it in the same step.