How are Data Streams validated in Multichain ?

+2 votes
From what i understand, data streams allow you to publish data to onto the blockchain. And that too, in the form of transactions.

As far as blockchains like Bitcoin go, all the data is verified by mining nodes, BEFORE being inserted onto the blockchain. but i don't see any such mining activity present, for a data stream validation, in  multichain.

so, how does a node validate that the data being sent to the chain is the correct data ? how do we know some node is not publishing suspicious or erroneous data on to the data stream ?

is there some sort of mining mechanism for data streams ? are data stream transactions mined for the sake of validation ?

 

Please let me know about this as i have a project that is critically dependent on the Multichain platform and it uses data streams as a core feature.

 

Many thanks
asked Nov 13, 2018 by Yasir

1 Answer

0 votes
If you want to perform data stream validation, you should probably use stream filters which are available in MultiChain 2.0 (now in alpha, but fully functional):

https://www.multichain.com/developers/smart-filters/

Please note that stream filter validation is not performed by miners, but it is performed by both honest publisher and honest subscribers. So data that violates a stream filter will not be retrieved via the stream querying APIs.

If you need stricter stream data validation than this, you can use transaction filters. But this will only be effective for on-chain stream data, not off-chain data.
answered Nov 14, 2018 by MultiChain
If you want to absolutely prevent bad stream data being published on the blockchain by malicious users who have modified the MultiChain software, you need to use on-chain data and a transaction filter.

You can use a stream filter if you can be satisfied with a lower level of security, where an unmodified version of MultiChain prevents publishing data that violates the filter, and also would flag any bad data when retrieving from the stream.

Filters are stored inside the blockchain itself and compiled and run by every node, in order to verify transactions or stream items.
so lets say i am running my admin node and in interactive mode when i run any filter code then that will be apply for every other node in network.......because if i compare it to ethereum where smart contract will be compiled and then deployed in network that would be stored in every node and applied for every node
Yes, it's like Ethereum in this respect. Every transaction filter is installed in the blockchain and run by every node on every transaction. It's effectively an additional transaction rule.
Installed in blockchain means install in every node connected to chain right
and whenever transaction comes in network then every node takes it and run through filter which is installed in their node correct!!
Yes, that is correct.
...