-
Notifications
You must be signed in to change notification settings - Fork 298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BDP data sets show up on OCEAN Acquarius instance #643
Comments
This is up to the marketplace owner, BDP decided to isolate their assets without forking the contracts, for which the DDO gets encrypted upon publishing. So on first look it seems the |
OK, but what I'd like to understand is the perspective here. What is Aquarius? And what is OP planning to do with it? When calling Aquarius with an encrypted BDP data set
The Aquarius request says:
What is the I quote you @kremalicious here:
In case though, the DDO is solely stored on Aquarius, I think it's quite important that any party interacting with "the ocean protocol" has the equal quality of access to its data, no? It's not a cache. It's the source of data. After all, I couldn't launch my own Aquarius instance to track OCEAN assets, right? I know that argument is now off-topic for oceanprotocl/market but I think the statement is anyways a valid concern. |
haha Aquarius watches the metadata contract events where the DDO is stored on-chain, and puts them in its database. You could remove Aquarius, and query the metadata contract directly from the client for various events but of course with lots of performance implications. From the Aquarius readme:
So the source of truth for the DDO is that In a perfect decentralized world Aquarius should not exist, but the best we have for a decentralized blockchain indexer is The Graph. Yet there were some blockers for using it for the metadata contract so we are left with Aquarius still. And In general, the market UI displays all assets published with our metadata contract. So by default assets published through different UIs will show up in all those UIs. But marketplaces can choose to encrypt that DDO with their own key upon publishing which only their Aquarius has, so only their Aquarius can decrypt the DDO. That is for use cases where forking and deploying contracts might not be desired. So going back to the dataset in question, BDP choose to define for their marketplace, which is a fork of the UI and Aquarius only:
And As for the assumption for your crawler, it is technically completely right. But now needs to account for what might have been user error or some bug. Either assuming it won't happen again and only deal with this asset, or cross-reference between the 2 different Aquarius instances. |
ah ok. I think it's great that you're putting the DDO on-chain. Since we're already on the topic and since I'm lazy: Is the message sender of a metadata contract transaction always the data set publisher via e.g. Metamask? I'm asking as another option could be that e.g. the Ocean market sends this data periodically to reduce gas. Anyways, since DDO is on-chain I agree that Aquarius is a cache then. With regards to encryption:
Do you mean like actual encryption, e.g. that other Aquarius instances cannot decypher what others have put as a DDO? And do I understand correctly that this encryption is set up between a user A and an Aquarius instance X (private key holder)? If so, why did you end up using encryption? To me, determining the responsibility of which Aquarius instance is supposed to index what DDO, could also be flagged otherwise (e.g. by adding a marketplace identifier (DDO: of "OCEAN protocol"). I assume all of this is not standardized. Anyways, if e.g. it should be the case that encryption was used to introduce a hard constraint for particular Aquarius instances to disallow crawling meta data, I think a flag should be favored in the future. If privacy of communication between Aquarius and a user is indeed of a concern, encryption makes sense.
This sounds rather unrealistic to me. If the metadata contract allows adding data points permissionless, I'll have to assume that users will put all sorts of things in there. As for now, I've taken the above-outlined problem as a case of precedent to adjust my crawler.
A work around for now could be to favor the DDO that includes price data... |
Another thought: Why do unencrypted DDOs show up on the Ocean Marketplace? What's the reason for taking that approach. I'm curious as in the situation where a third party wanted to also use the encryption logic with this hub and spokes model that was mentioned here, it wouldn't work as implicitly "unencrypted = ocean protocol market picks up meta data"? |
We had the same issue, noticed the dataset was on both BDP and OCEAN causing all problems. |
@yappy876 is doing https://oystershell.io/ |
Yes thank you for that. Forgot to mention... We are doing a work around in the meanwhile. I also spoke to Peter Chen from BDP about the issue, so they are informed. |
We (OysterShell) are curious to hear more about this. In addition, if this is being allowed going forward it would be of value to see what are the policies surrounding this so we can code appropriately |
As a market owner, you have 2 choices:
An aquarius instance can be configured to control what kind of DDO can cache. So, again, you have the following options:
|
Regarding BDP dataset, the following flow happend:
the 2nd parameter in event (called flags) is 0x2 -> means that the DDO is encrypted All good, but they wanted to edit the metadata:
but they forgot to encrypt (flags = 0x1 , means DDO is just lzma compressed, no encryption). |
the publisher calls the metadata contract via Metamask. And there is only one simple check: the publisher has to be the minter of the datatoken: https://github.com/oceanprotocol/contracts/blob/main/contracts/metadata/Metadata.sol#L32 for both create & update methods. Thus, we are preventing unauthorized access |
Imagine that you DO want your siloed marketplace. And instead of using encryption, you will use a flag: marketplace = "Tim". The flow right now is the following:
Of course, there is always the question: how can I protect my aquarius so others cannot use that endpoint? Simple: you can firewall your aquarius (makes sense for a siloed marketplace), or you can protect the encrypt endoint (nginx, etc) |
@alexcos20, thank you for such a detailed response. I appreciate it. Now, I found your arguments with regard to the encryption strategy quite interesting. Here are the facts we were able to gather so far:
Now, to the assumptions that may have lead to this design:
As someone that only has an external view of Ocean Protocol's development, these assumptions don't make sense to me. I haven't talked to the Big Data Protocol guys, but I don't believe that they are necessarily interested in encrypting their on-chain data. You've called it a "silo'ed" marketplace and I don't believe that this is their design intention. From their actions, they clearly want to distinguish themselves from OP. They have a different web design, community, etc. But IMO firewalling their Aquarius instance or firewalling access to the metadata of their data sets makes to me no economic sense. It's in BDP's interest to get as many eyes on their data sets as possible to find potential investors in their data tokens. It'd make no sense, hence, for them to lock down the metadata of any data set. I understand that there may be users of the OP marketplace code that I'm not aware of. But for public marketplaces, I'm failing to see a rational reason for encrypting metadata. In any case, given the current design that uses XHR requests from a browser to Aquarius, I anyways don't see a solid technical design for locking down an API. Unless you want to go full Twitter... Why am I making such a fuss about it? I do it, as I think this is a flawed implementation. As a heavy Aquarius user, I appreciate that someone is caching on-chain data. My long-term goal, however, is to observe the data closest to its source - that is on-chain. I'm happy to see that all metadata can be read from an on-chain contract and I'm planning to take advantage of this as soon as possible. But here are my concerns:
So now what should I do? Read on-chain contracts and for BDP and other marketplaces, hope that their Aquarius remains public? To me, a new feature seems appropriate here: Introduce an affiliation flag for marketplaces that want to reserve the ability to display the metadata on their marketplace while allowing others to see it on-chain. |
Re: GitHub labels: This is not a type: question. This is a bug. My assumptions/expectations as a user have been broken. |
My bad, I forgot to mention the 3rd option: Aquarius has a ENV var which specifies the allowed list of publishers.
Agreed, the keyword here is "public marketplaces"
I can point you to Aqua or help you with that in nodejs
It's up to the market owner. We have many use cases: public markets, markets that are controlling the list of publishers, siloed markets and private markets.
Yes, this is true. Again, the market owner decides this
That the point. You cannot do that.
But there are use cases where they DO NOT want others to see the data. |
We will deploy the next version soon. I can give a brief list of changes:
That's the feature list. No changes to the metadata contract. |
Hello,
for previous launches over at https://market.bigdataprotocol.com, those assets didn't show up on https://market.oceanprotocol.com. That's an assumption e.g. the crawler of rugpullindex.com was built on.
Since last night, however, VORSTA-2 is showing up both on BDP's market and OCEAN's.
For the crawler this is an issue, as I have UNIQUE constraints in my database on the DID. I'll do a workaround for now, but I'd like to know what perspective the Ocean team has. Is this a bug? Or will BDP data sets show up on the Ocean marketplace in the future? But then, why don't other BDP data sets show up yet?
The text was updated successfully, but these errors were encountered: