-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Spike: On chain ledger #345
Comments
@jdutchak this is @mudler 's boilerplate blockchain implementation in EdgeVPN: https://github.com/mudler/edgevpn/tree/master/pkg/blockchain It stores data and maintains it consistency across all nodes on the network Take a look at it and kets talk more about this tomorrow |
@jdutchak in some of the data I sampled here: https://github.com/masa-finance/metrics/blob/main/data/node_data_v_0_0_7.json There was duplication of cid's. Question: Are cid's unique for each worker request?
|
@jdutchak this ticket should fix this ticket https://github.com/masa-finance/issues/issues/191 so we should have the time fix taken care of by completing the ledger ticket. @mudler putting https://github.com/masa-finance/issues/issues/191 on hold and marking it as blocked by this ticket. |
in regard to this, few notes (on how edgevpn works, and how a v0 could be "based" from some of the concepts in there):
Some additional points and consideration on the EdgeVPN architecture:
|
As from planning we decided that we should have a call/pairing session to understand the direction of this @jdutchak / @H34D cc @teslashibe |
Solution 1: Implement a Validation LayerOverview: Steps:
Solution 2: Implement a Consensus Mechanism for Data ValidationOverview: Steps:
Both solutions aim to address the problem of overwriting and volatile data in the nodeData object by introducing robust validation mechanisms. The first solution focuses on implementing a validation layer with strict rules and tamper resistance, while the second solution leverages a consensus mechanism to ensure collective agreement on data validity. Both approaches ensure that only validated data is written to the on-chain ledger by validators, thereby maintaining data integrity and trust in the protocol. |
From a data perspective these questions come to mind. Perhaps simplistic but trying to hit bedrock/common understanding for the train of thought:
Also, just a ping to keep it in mind, from a data science perspective failure is as important to understanding the network as success. On a practical economic level this also relates to slashing for misdeeds. Working through a couple other things at the moment but will try and add context to the above later this week. |
Proof of Work (PoW) ImplementationOverview: Implementation Steps:
Proof of Stake (PoS) ImplementationOverview: Implementation Steps:
Both PoW and PoS provide mechanisms to ensure the integrity and validity of nodeData before it is written to the on-chain ledger. PoW relies on computational effort and puzzle-solving, while PoS leverages stake and probabilistic selection to achieve consensus and maintain data integrity. |
cross-referencing #350 The PR looks promising, at least for a v0 implementation that would be directly in the oracle codebase. However we have to still decide if we want a blockchain implementation in the oracle or having it offloaded to a separate chain (e.g. Avalanche). As we discussed in the last call with @H34D @theMultitude @jdutchak - we want to have a list of all the options and implications with associated pro/cons to evaluate what's the best path forward. @jdutchak is going to present the options to the team in a call with some slides/agenda to encourage knowledge sharing on the topic as part of the spike. |
here are the main elements and their relationships
Key Components and Interactions
Initializes the blockchain.
Contains data, hash, link to the previous block, nonce, and consensus mechanism.
Runs the Proof of Work algorithm to find a valid nonce.
Runs the Proof of Stake algorithm to find a valid nonce.
Manages the storage and retrieval of blocks.
Init()
Build()
Run()
Run()
Init() Code ReferencesChain: pkg/chain/chain.go (startLine: 1, endLine: 114) Here is a textual representation of the diagram structure: |
What is the time boxing and status on this @jdutchak? |
We just discussed this today in a specific call and we have decided to go with the option to implement a ledger and blockchain by ourselves in the oracle, mainly for the following reasons:
|
* update swagger docs.go * updates to auth and docs * Discord Sentiment Analaysis * poc blockchain * comments ledger * latest sentiment * removed edgevpn blockchain tests * added block event tracker * ledger testing * blockchain tests * merge * node * bootnode data handling * txn logging * test foo struct for block topic * updating dht routing table and blocks * updated docs * linted docs * adjusting dht clustering options for optimization * discord sentiment doc * Feature/336 - depth fix on web scraper (#355) * default depth to 1 if 0 * depth 1 is working * Feature/336 (#359) * default depth to 1 if 0 * depth 1 is working * updated data catalog * merge * added claude sonnet 3.5 * bump protocol version * setting is actor to IsWorker for the node type Worker, Validator, Oracle * obsoleted notes * release notes wip * release notes: * ver update * updated makefile * parking 345 ledger work for releasing fixes on this PR * release * version tag fix --------- Co-authored-by: Nolan Jacobson <50815660+nolanjacobson@users.noreply.github.com>
Problem
We currently gossip nodeData from all nodes and all node self report, the validator then does not check to see if the self-reported data has already been received or if the data is valid. This leads to overwriting of nodeData and volatile data in the nodeData object and corruption of nodeData on the protocol. This has been an ongoing issue for some time and is blocking us from moving the protocol forward. We need to find a final solution to the problem that scales.
Specification
The text was updated successfully, but these errors were encountered: