Workers Auto Approve
[$5000 DNAs] Build Idena Ethereum Relay
### Prize Title
- [$5000 DNAs] Idena Ethereum Relay: How the registry of validated cryptoidentities could be relayed from the Idena blockchain to Ethereum
### Prize Bounty
- $5k paid in DNAs
- The prize can be split into pieces according to the agreement of the collaborating hackers.
- Hackers receive prizes only if they meet the submission requirements.
### Challenge Description
We expect to see two parts of the project that can be implemented by different hackers in collaboration:
- An Idena Ethereum Relay smart contract on the Ethereum blockchain that mirrors the list of cryptoidentities validated on the Idena blockchain
- Idena node improvements to provide data for an Ethereum smart contract (see details below)
[Idena](https://idena.io) is a novel way to formalize people on the blockchain. It does not collect or store personally identifiable information. Idena proves the humanness and uniqueness of its participants by running an AI-hard Turing test at the same time for everyone around the globe. The Idena blockchain is driven by proof-of-person consensus: Every node is linked to a cryptoidentity, one single person with equal voting power.
The Idena validated participants registry is a list of addresses with proven semi-uniqueness of their owners (see examples in the Idena blockchain explorer). Each Idena participant can own one valid cryptoidentity address, it is difficult to have two or more.
The uniqueness of participants is proven by the fact that they provide answers for flip-puzzles synchronously. A single person is not able to validate herself multiple times because of a very limited timeframe for submission of the answers. The bigger the network is, the less frequently the validation sessions happen. The validation status of a participant is not forever. It expires when the next epoch starts. Participants should prolong their validation status for every new epoch. Read more in the Idena website [FAQ section](https://idena.io/?view=faq).
#### Possible implementation
The Idena cryptoidentity address is fully compatible with the Ethereum address. In order to use Idena cryptoidentities in the Ethereum blockchain, it is necessary to create a protocol to relay the list of Idena’s cryptoidentities into an Ethereum smart contract without trusted parties.
The relay can be done in two ways:
##### A. Trusted oracle (not considered)
A special agent/organization authorized to record information to a special smart contract on Ethereum acts as a trusted Oracle. Whenever the cryptoidentity list changes, the trusted Oracle updates the list of valid identities:
- When an identity in Idena is terminated (see Kill identity and Kill invitee methods)
- Upon the end of each validation (see validation results for epoch #0044)
- The Oracle does not provide any evidence of the changes’ accuracy and is a potential point of failure. We do not consider this approach for the challenge.
##### B. Trustless Idena Ethereum Relay
A possible alternative solution does not imply a trusted Oracle (or numerous Oracles).
Initially, an Idena Ethereum Relay smart contract has to be created, in which the current list of Idena validated identities’ addresses are included by the contract developer. This initial list of addresses is the genesis of the registry and is manually verified by other participants.
Anyone in the Ethereum network can change the identity list, while providing proof of correctness of the change to this contract:
- When an identity in Idena is terminated, a transaction taken from the Idena blockchain is provided as evidence into the Idena Ethereum Relay smart contract. The smart contract analyzes the signature of this transaction and the type of transaction. If the signature is valid the change is accepted by the contract.
- Upon the end of each validation, along with the list of newly validated participants, signatures of old validated participants confirming correctness of the new list are provided as evidence. These signatures are to be published automatically by Idena nodes.
- The Idena Ethereum Relay smart contract checks the provided list of new participants, calculates the hash of this list. Then it checks the provided signatures of the old participants. Each signature must match the hash of the new participant list. If there are more than 2/3 valid signatures provided to the contract, the contract goes into a new state with a new list of valid addresses.
#### Availability assumption
The mechanism will work only if a large share of participants of the old registry keep the nodes up and running after the validation and provide their signatures for the new state.
#### Possible problems: Relay costs
1. When validating 10,000 members in Idena, all the 10,000 entries must be provided to the contract. Relaying such an array of data to Ethereum smart contracts may be expensive.
Possible optimization: Only the difference between the new and the old lists are relayed to the contract.
2. In order to switch to a new state from the list of participants with 10,000 addresses, 6666 signatures must be relayed. Relaying such an array of data to an Ethereum smart contract and verifying signatures may be expensive.
As a list of signatories, a committee of a smaller size can be formed in a deterministic manner.
Using BLS signatures aggregation
3. Due to the high cost of the changes relay, there will be no economically motivated participants to transfer changes to the Idena Ethereum Relay smart contract.
Possible solution: socialization of transaction costs in the business models of participants paying for the relay of Idena identity registry changes.
### Submission Requirements
- All the code must be open source
- Idena Ethereum Relay smart contract requirements:
- The Idena Ethereum Relay smart contract should be deployed in the Ethereum testnet. A test set of cryptoidentities should be saved in the smart contract.
- The Idena Ethereum Relay smart contract should provide an up-to-date list of cryptoidentities
- The Idena Ethereum Relay smart contract should provide secure public methods of updating the list of valid cryptoidentities in case of registry changes on the side of the Idena blockchain
- The smart contract should consume the lowest possible amount of gas to solve the problem
- Required Idena Node improvements:
- To calculate the hash of the new list of participants as the Idena Ethereum Relay contract does it
- To produce a signature for the new set of cryptoidentities required for the Idena Ethereum Relay smart contract
### Submission Deadline
- Official end date of the hackathon
### Judging Criteria
- The following tests should be available:
- Test 1: The Idena Ethereum Relay smart contract should be robust and fully-functional. It must be deployed in the Ethereum testnet. Initial test set of cryptoidentities should be saved in the smart contract.
- Test 2: Pushing a new list of cryptoidentities into the smart contract
- Test 3: Pushing a set of signatures which is sufficient to change the smart contract state
- Test 4: Applying the new set of cryptoidentities in the Idena Ethereum Relay smart contract
- The Idena Ethereum Relay smart contract should consume the lowest possible amount of gas to solve the problem.
- The Idena node improved version should produce a signature for the new set of cryptoidentities required for the Idena Ethereum Relay smart contract
### Winner Announcement Date
- June 22nd, 2020
- https://idena.io Idena website
- https://idena.io/?view=faq Idena FAQ
- https://idena.io/?view=download Idena app and Idena node download page
- http://rpc.idena.io Idena node RPC
- https://scan.idena.io Idena blockchain explorer
- https://scan.idena.io/epoch/44 list of validated identities for epoch [#0044](https://scan.idena.io/epoch/44)
- https://github.com/idena-network/idena-go Idena node github repo
Setup your profile
Tell us a little about you:
Type to search skills..
[[ option.label ]]
Required [[totalcharacter]] / 240
Are you currently looking for work?
[[ option.string ]]
Setup your profile
Our tools are based on the principes of earn (💰), learn (📖), and meet (💬).
Select the ones you are interested in. You can change it later in your settings.
I'm also an organization manager looking for a great community.
Enable your organization profile
Gitcoin products can help grow community around your brand. Create your tribe, events, and incentivize your community with bounties. Announce new and upcoming events using townsquare. Find top-quality hackers and fund them to work with you on a grant.
These are the organizations you own. If you don't see your organization here please be sure that information is public on your GitHub profile. Gitcoin will sync this information for you.
Select the products you are interested in:
Out of the box you will receive Tribes Lite for your organization. Please provide us with a contact email: