Closed pipermerriam closed 2 months ago
We could implement the reputation system as it's own sub-protocol, possibly in a manner that keeps it entirely independent of the base data protocols needing to be aware of the reputation layer.
Here's a really messy sequence of events. Client and Server are both portal nodes. Reputation is the portal sub-protocol.
A
.A
in a buffer for later use.A
as well as a reference to the state data that was retrieved such as the trie path, state root, node_hash. The message needs to be signed with a key that can be cryptographically tied to the same account that signs the transaction. This will be message B
B
sitting around.I already see two ways to cheat the system. Depending on the details of how reputation scores would work, they can be more/less effective. I didn't think too much if there is a way to counter-measure them.
Ok, so the bigger problem here is that there isn't a check against the power this gives the Client. The Client is the one paying the transaction fees, which effectively works out to the client being the one that issues reputation, so in order for this to work, one would need some way to limit the power the client has...
Said differently, one would need a way to mitigate against:
Which I think puts us back to the beginning/starting point on this problem which is that it is fundamentally hard to attribute good behavior on the network because it is trivial to fake that behavior between two colluding nodes. Lame.
I want to spend time brainstorming on this subject in Prague.
Ok, more thoughts on this.
The concept of anchoring to transactions that are included on mainnet is maybe the new part here.
In all of my previous explorations into reputation systems related to Portal network, I've dead-ended on sybil attack problems. If reputation is regulated by a cryptographic anchor to transactions (and their underlying fees) then we get a scarcity mechanic that solves the problem of reputation being easily attacked by puppet nodes.
Under a naive implementation as I've laid it out above, a "client" could:
Under option C with the client cheating in some way, they could even go as far as to not use the portal network at all...
So problems that I'm looking at here...
Sorry if I somehow bike-shedding the discussion, or stating the obvious, but I believe we have at least two fundamental problems here: 1) reputation system must involve some kind of third-party or even (a weak) consensus. So, there's a problem of request multiplication. 2) since no one on the network knows "everything" or "how things should be", for the lack of better words. There's no way for us (with current network design) to prevent clients from gaming the system by serving only popular content.
Which leads us to, perhaps, the necessity to have some sort of arbiter nodes (like glados). Which is against the idea of portal network and leads to the whole new set of problems.
Given all that, perhaps we can start with simpler approach and just maintain distributed ledger of amounts of data served by each of the clients. Have a zero set to a running average of clients around you at some set distance. And have it as a part of routing table/algorithm.
not an active area of research.
Clarence is using the portal network to estimate the gas for a transaction and then sending a signed transaction which will get included in a block and recorded in the chain history.
During the gas estimation he will do some sequence of the following.
header.state_root
, incrementally fetch the state data needed to execute thetx.data
In many cases, the data that is fetched from the network will be modified by the execution of the transaction. For example an ERC20 token balance would be accessed during the gas estimation and it will then be modified when the transaction is included in a block as they send their tokens.
Suppose that the nodes in the portal network, that served Clarence their data also got a message from clarence that was signed by the same key as they signed their transaction. Those nodes could then "prove" that they were useful in an action that positively benefits the network, aka, serving data for users of the network.
Since transaction sending costs gas... that means that you can issue reputation for this in a quantifiable manner.
So.. the question is... can we cryptographically anchor these in sufficient manner....?