I'm building a web platform that uses upvotes and downvotes on each piece of content to bring good content to the top. It's important that it's non-trivial for this voting to be rigged, and previously I've done this by only allowing one vote per content per IPv4. Obviously this is far from perfect, people can use VPNs, and multiple legitimate voters behind a LAN will only get one vote per content between them. But it's worked well enough.
My question is how do I treat IPv6 addresses to achieve the same goal, or better? My ISP doesn't give me one so it's hard to test, but it looks like a single user's IPv6 address changes very often, and it's the last 4 segments that change, and the first 4 that generally stay the same. Is it correct that the first 4 segments correspond to the modem entering the home/office, and then the last 4 segments are used to differentiate between devices below that?
If I allow one vote per unique first 4 segments, will that function about the same as my implementation before? If I allow one vote per unique 8 segments, is that one vote per unique hardware device, or is it easy to spoof/change the last 4 segments, in which case this rule could be heavily abused?