-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
@todo
- rename stuff (see parameter naming below)
- change stuff (see change proposals below)
- other fixes (see Updates/Bug fixes #23 )
1. publisher registers new data
we get merkle root like this https://pastebin.com/QH7egWUX and then submit it to the chain
await API.tx.datVerify.registerData(merkleRoot)2. chain emits SomethingStored event
3. after the event is emitted, users can register for different roles: encoder, hoster, attestor
await API.tx.datVerify.registerEncoder()
await API.tx.datVerify.registerSeeder()
await API.tx.datVerify.registerAttestor()4. When users registers for any of the roles, chain will check if there is any data that needs hosting and if there is at least one hoster, one encoder and one attestor, then 'New Pin' is emitted
5. new event is emitted (NewPin) where encoder and hoster are notified about what feed needs hosting/encoding
const [encoderID, hosterID, datID] = event.data6. we pair hoster and encoder: encoder compresses data and passes them over to hoster
7. when encoder finishes its job, it notifies the chain (registerEncoding)
const args = [hosterID, datID, start, end]
// if more ranges, send same tx for each range separately8. when hoster gets all the data, it also notifies the chain (confirmHosting)
await API.tx.datVerify.confirmHosting(datID, index) // index = HostedMap.encoded[index] (get encoderID and then loop through to get position in the array)9. chain emits event: HostingStarted
const data = event.data // [hosterID, datID]10. Publisher can now submitChallenge
await API.tx.datVerify.submitChallenge(hosterID, datID)11. Challenge event is emitted where hoster is notified about the challenges
const [hosterKey, datKey] = event.data
// hostedMap => see which chunks are hosted by this hoster for this key (Rust API line 317)12. Hoster submits proof to the chain
//challengeID no longer exists -> use [datID, chunk] directly
await API.tx.datVerify.submitProof(challengeID, []) //challenge ID is parsed13. If challenges are successful, chain emits new event: AttestPhase
const [challengeID, expectedAttestors] = event.data
const attestorIDs = JSON.parse(expectedAttestors).expected_attestors
// change proposal:
// could we just pass an array of attestors instead of an object
const [challengeID, attestorIDs] = event.data14. random attester is selected to go grab data from the swarm
- currently we just hardcode the response, so no attester actually goes to the swarm
15. Attester reports back to the chain (submitAttestation)
function getAttestation () {
const location = 0
const latency = 0
return [location, latency]
}
const attestation = await getAttestation()
//challengeID no longer exists -> use [hosterId, datID, chunk] directly
const submit = await API.tx.datVerify.submitAttestation(challengeID, attestation)Metadata
Metadata
Assignees
Labels
No labels