Socialist Millionaire Problem
en.wikipedia.org
en.wikipedia.org
Otherwise you're guessing.
Also it is useful to balance the weight across the sides of a plane, not just get total weight.
https://gecscales.com/aircraft-weighing-systems/
Source: commercially-licensed pilot.
For example you could have a hat with pieces of paper in it each with a number. The numbers sum to 0 (some are positive, some are negative). Each person draws a piece of paper, adds his or her weight to it, then says that number. The numbers that each person says are summed and that's the total sum.
There might be behavioural issues here though - perhaps people would keep generating a random number until they are provided one that makes their weight look 'better' (and 'better' probably means 'smaller' for most people).
Edit: comicjk made a great point about large numbers. Perhaps using large random numbers (eg a normal distribution with a mean of 4550 and a std deviation of 20-30) would help reduce the behavioural issue.
E.g., say that the random numbers are uniformly distributed between -200 and 200. If somebody says a number like 425, then I know they weigh at least 225 pounds. And the probability they weigh more than 225 - k pounds is 1 - k/400.
Then you would probably get more information from looking at the person thank you could from hearing a weight number that could be +/-2000 pounds
Then knowing any individual number (weight + pad) mod n gives zero knowledge (I think. If all but one party reveal their pads, they can trivially determine the other's weight so it fails. Believe it to be secure if only 1 party is malicious, though. Cases for other numbers of bad actors are more complicated...)
The reason I say this is because you are not talking to machine parts or to secret financial players, in this problem, to you are talking to human beings. By reducing human beings to machine parts to solve a problem, you are losing information that is critical to your own humanity ! and to theirs ! super-bad results can happen when people in power and their adjuncts, are successfully rewarded for reducing human beings to machine parts in their solutions ! Junior programmers finish your studies, but all humans please take note -- no cryptography required here !
What is SMP?
Technically it can be done, and in an obfuscated way no less without relying on self-reporting, which is always going to skew things; consider the following:
- At boarding have a scale underneath a padded area when scanning each and every passenger (calibration required): this will create a unique ID that corresponds with the boarding pass and seat number and weight while the ticket is being scanned, how long this takes is anyone guess as I'm not an engineer.
- Upon acquiring the weight of each passenger, create a hash for that ID and measured weight, and use that to associate the measured weight rather than the ID, such that it creates an aggregate of each and every boarded passenger with info rather than Jane Doe 55Kg (ID/weight). Record that info into a DLT/blockchain held by a series of parties to validate independently.
- With that info you can discern individual weights, without actually having an identity attached to said weight measurement. And in real time, no less.
This, albeit crudely lined out as its a rather lengthy process to describe, is the basis for why blockchain technology/DLT could be useful for voting as it was used in Sierra Leone's 2018 election:
https://techcrunch.com/2018/03/14/sierra-leone-just-ran-the-...
PS: I don't think a token is necessary, simply having the hashed info recorded onto a blockchain is enough, assuming its held by independent parties to be able to validate.
Non-trust based verification/consensus requires that many parties, ideally opposing ones, have the same data/ledger to validate the information desired: in this case, real-time acquisition of passenger weight.
You could argue SQL does the same thing, and you're probably right at least on paper, but it cannot be independently validated as a blockchain can. The idea being, if all have a copy of the information then it isn't subject to custodial manipulation, and corruption.
I see it as having the same features that open-source software provides: in that it allows people to look through the source code to ensure it doesn't contain some malware or some bug in the software and can do so independently from the owner/company of said software.
The goal is to get the summed weight of all the passengers. In step 1 of your plan you weigh each and every passenger. If that really is your plan then step 2 is to sum them! Call the sum() function! How in the world did you turn that into 5 steps involving a blockchain?
It's the epitome of the blockchain obsessed. Create unrelated problems just to claim "see a blockchain fixed them."
You've already weighed the passengers! The way to get their summed weight is to sum them!
If the goal is only simply to get an accurate sum , then you're right; but I was alluding to how it can be done in a private obfuscated/trustless verifiable manner, and provided how that was done in a previous usecase.
I think this response/mindset is very telling of the Silicon Valley mindset FAANG vetts for and how it functions: get what data we need to repackage and sell off, consequences of privacy and disclosure responsibility be damned. When it blows up in our face we'll probably just have to sit in court and make this face [1] and pretend we didn't know better that we were doing creepy things with People's information, but promise to do a better job next time.
Requirements nobody asked for. Which is exactly what seems to be annoying about the blockchain "enthusiasts".
A: I'd like a salad for lunch
B: Here's a salad that takes 15 steps to deliver via blockchain
A: I don't need, nor asked for all of this blockchain'ed salad.
B: It's clearly superior, it's distributed and with a ledger, private and trustless. You just don't understand the superiority of it.
Use blockchain to solve problems that have requirements around the value it provides. Not find a way to force every problem to fit into a blockchain.
Whereas I'm coming form a position in which a middle ground can be met by all participants given the parameters; gathering what is deemed 'useful information' while understanding that it can and has been misused continuously to create a vastly dystopic industry that relies on such practices.
So to counteract said potential problem do so with the least amount of identifiable variables in the equation and have privacy an absolute.
Again, you can discount the need for privacy all you want; the FAANG types usually do and make billions from it: that's the playbook until you're sitting a testimony in front of congress (mainly for theatrics) and another billion dollar fine for misuse of private information.
> Use blockchain to solve problems that have requirements around the value it provides.
Agreed, which is why I referenced the voting usecase and how that would be a more apt use of this solution.
To put this into context, I think of your argument as: Why are you asking for these silly seatbelts and these overly complicated airbag balloons into this design, we were just asked for a box with 4 wheels!
Your Requirements: 1. Have the weight of every passenger while not uniquely identifying them.
2. Have the aggregate weight of all passengers on the plane
3. Have it independently verifiable
4. Trust that no additional data has been siphoned off.
What you proposed says that everyone step on a scale to be weighed. At this point #4 can be easily broken. Any company can easily split the data, send on through your complicated block chain system and send a copy to their on private DB. They've still captured the private info you wanted to not be private. A blockchain did nothing to solve this.
Ok so the solution: make this scale opensource and ensure via some signing method that the software scanning tickets and managing the scale are running this open source visually verified code. Fine that solve the problem because everyone can inspect the code and see what it's doing. So what's the next step? Write code that simply takes those numbers and sums them together and outputs the sum! Everyone can see that no privacy is being violated because they can see the code running on the scale. And they can see that it has no negative privacy implications it's simply an anonymous sum.
A blockchain to the solution I just discussed provides no value to this. It's not solving a problem that is present here. Signed & verified open sourced software is what's required.
The fact that Alice could guess Bob's wealth within a certain range, even if that range is "between $0 and $1 trillion," and then have a finite range to search for a collision could be mitigated with a sufficiently slow hashing algorithm and/or an absurd number of iterations.
This is the issue with your solution, it isn't really mitigated in such problems because the domain is too small.