Comments (6)
I'm seriously leaning towards a basic proof variant: Proof of Bump - a simple algo that transaction anchoring nodes can use to pay more in fees for more ops. This is a far more benefitial strategy than Proof of Burn, and doesn't preclude later additions to operation-level proofing schemes.
from sidetree.
The first objective of the PoW is to prevent spamming, here is a simple article regarding a naive implementation, I think it would be helpful to name a simple naive approach and complete the integration and tests using that algo before attempting a more complicated one.
I don't understand the comment regarding fees.
As I understand it, PoW in sidetree is only about spam protection, there is no block reward or transaction fees for the miner (batch writer).
Is there a relationship between the blockchain native tokens (BTC, ETH) and sidetree PoW?
Or is the proof a pure function of powAlgo
, lastTransactionTimeHash
, operationHash
, and nonce
?
Will the PoW algorithm be geared towards existing hardware / miners or is it desirable for it to be asic resistant?
See also: https://swende.se/blog/Progpow.html
https://github.com/ifdefelse/ProgPOW
^ this complexity seems like a terrible idea for sidetree.
https://lhartikk.github.io/jekyll/update/2017/07/13/chapter2.html
^ this seems like a much better starting point.
I keep thinking about the case where a client wants to anchor their own operations, it costs them ETH or BTC to do this as well as compute time for PoW, additionally if their operations are invalid this is wasted.
The case is the same for sidetree nodes, but they are handling many operations, and doing much more work, so there is more chance for their work to become invalid while they try to complete a batch.
Can we walk through a simple case with block difficulty?
from sidetree.
from sidetree.
from sidetree.
@OR13 a few follow-ons to your response:
-
It is true that this does not prevent an attacker from anchoring a large batch of ops without paying the right corresponding fee, but nodes will know the correct fee before fetching and be able to cut off the processing if the file exceeds the expected size or is malformed after it is fully received. But as you mentioned, this is not introducing any new issue, given Writers can always attempt to violate the rules and observing nodes always need to apply them to minimize resource use and ensure they don't.
-
This does mean that at least this method of proof/anti-spam would need to be committed by the batch writer. However, this does not entirely preclude sender of an op from 'proving' the value of their included op by paying the writer through some out-of-band means. I had always hoped the long-run plan for Batch Writer cost deferral would be to integrate Lightning/Raiden, given repeated commits of small micropayments to a set of peer-writers you choose is a perfect use case for L2 payment channel utilities/protocols.
-
After thinking about the client POW, there just doesn't seem to be any feasible way to do it at this time that doesn't burden the user who must deal with the implied POW experience degradation on-device vs an attacker who has no such UX issue to manage. At this time, it seems like a better idea to just stack the chips against attackers economically and let them bang their head on the table.
from sidetree.
Another idea for not downloading a possibly invalid huge file is:
- The IPFS file has a maximum allowed size, if we can abort the download if that size is exceeded.
- A single ION transaction can likely have a maximum size (possibly an estimation?), using the transaction fee can allows to estimate the maximum number of ION transactions in the file, the download from IPFS can be aborted if that's exceeded.
If there is a reliable/trusted way to get the size of an IPFS file, aborting the download should not be necessary.
from sidetree.
Related Issues (20)
- Confusing wording for patch "id" properties HOT 2
- Unable to create -and- update a DID until anchoring of each operation? HOT 18
- How to we replace or recover the did if we lost the key or forgot the mnemonic phrase? HOT 6
- Editorial feedback
- Contexts need updated to produce valid JSON-LD DID Documents HOT 5
- API data model should support passing in the "controller" property
- Anchor tags in spec don't work HOT 2
- Run local node with IPFS write error HOT 4
- Update operations commit-reveal chain may lead to an unresolvable DID HOT 5
- Only the Provisional Proof File prunable? HOT 2
- Missing DID READ operation in Sidetree v1.0.0 spec. HOT 1
- Cannot write to IPFS v0.11 HOT 1
- Support ietf-json-patch HOT 3
- Sidetree doesn't allow array for serviceEndpoint property (incompatile with DIDComm) HOT 4
- Spec states "deltaHash" but all test vectors use "delta" HOT 1
- Base64URL needs to be more clearly specified
- Long-Form DID & Short-Form DID Identity ambiguity HOT 6
- Split sidetree implementation into a new repo HOT 1
- Chain-specific guidance (or even parameterization) should be spelled out in a mandatory section of each method's spec
- v1.1 features list HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sidetree.