New Proof-of-Individuality smart-contract. https://gist.github.com/resilience-me/08c6de3167ed04cb3ecc8f9a2170e2ee
Plus a new test net with a 24 hour round,
https://testnet.etherscan.io/address/0x4035adf6cd0c12f8ebb3f7ac37e1bb26f14930ff#code
What is Proof-of-Individuality ?
In 2008, Bryan Ford published a whitepaper on "pseudonym parties", events that happened all over the world at the exact same time, where the proof-of-individuality was that you could only be in one place at a time.
I had the idea in september two years ago to build a virtual version of his pseudonym parties, and it is now deployed on the Ethereum Ropsten test net.
Have a look at the whitepaper, Anti Sybil Protocol Using Virtual Pseudonym Parties
The new contract, Proof-of-Concept 3
There are two contracts, the main contract ProofOfIndividuality that creates the pseudonym period contract Registration (might rename it contract PseudonymRound
or contract PseudonymParty
), and does so each period. The test net uses a 24 hour cycle, and the idea is that the live system would use a 28 day cycle.
Use either Ethereum Wallet or MyEtherWallet.com to interact with the test POI system, and use http://appear.in/pseudonym-address for the pseudonym events. The Registration contract is on 0x8d4914cbdbdab9e6d0690abd275b55e00f86de1f and here is an ABI.
To register for a pseudonym party, use the register()
function, and include the deposit. The deposits protect the network against bots, as they make it so that n * depositSize
, where n
is number of users, would be required to control half the accounts, and to be able to attack the network, a bot would have to control at least 3 accounts in a pseudonym group.
Then once the registration period has ended, its 10 hours long on the test net, use the commit()
function to be assigned into a pseudonym group.
For the pseudonym event, get your pseudonym address with getPseudonymAddress()
, and then go to http://appear.in/your-pseudonym-address, where others from the test would join as well, and then use the NYM point system to give out points for being in the party.
The parties last 15 minutes, and each nym that has at least 4000 NYM after that gets a POI.
Below is some concept art
The test network has crowd-sourced the invocation of the next round, so someone, anyone, has to call countVotes()
before anyone can invoke submitVerifiedUsers()
,
function submitVerifiedUsers() atTime(issuePOIs, 0) {
if(newRoundDeployed == false) throw;
so its a few seconds of work, and 0.3 test ETH which is the cost to deploy the next Registration contract.
If no one uses the contract, or if its used and then abandoned, then it will stay put and be ready to be kicked back into action at any time by anyone with countVotes()
, and it will continue to live until the Ethereum Ropsten test net shuts down.