Comments (5)
We should leave this for now I think. The non-empty
library needs a bit of work before I would want to consider using it. The main issues are:
- No
Foldable
instances forData.NonEmpty.Set
- Unclear type naming: all the types are named
T
for some reason. I believe this is so we could make our own aliases for anything isomorphic, but still slightly odd. - Missing
Aeson
instances
We could contribute the missing instances and discuss naming with the library author, but that's a longer-term solution.
from cardano-ledger-byron.
Can't we just define something like data NESet e = NESet e (Set e)
and add instances for it?
from cardano-ledger-byron.
Yeah, we could do something like that, but I was hoping to have a library-based solution. We should still think about it though - maybe I'll reopen this.
from cardano-ledger-byron.
After some investigation it turns out that we cannot use a set in the OBFT era and will have to wait for Shelley to make that change. The reason is to do with transaction witnesses and matching them to specific transaction inputs. In the old implementation a transaction contained a list of transactions inputs. Another datatype TxAux
holds the transaction and a list of witnesses, one for each input. The only way to match these is the position in the list. If we turn the list of inputs into a set, we don't guarantee the same ordering, so finding the right witness becomes harder. We would have to try to verify against several witnesses until we found a matching one, which is wasteful.
Instead, we can wait until the Shelley implementaion to use a non-empty set.
from cardano-ledger-byron.
In Shelley we'll be working from the executable spec, so we'll deal with this when translating from that
from cardano-ledger-byron.
Related Issues (20)
- Unclear Implementation of Genesis Key Delegation HOT 3
- registeredSoftwareUpdatesProposals is supposed to be preserved HOT 2
- Add documentation for RequiresNetworkMagic and NetworkMagic (address discrimination)
- Synchronize data type, functions, and spec for (updatable) protocol parameters
- Incorrect comment on the `headerProtocolVersion` field HOT 3
- Prevent replay attacks with votes HOT 3
- Prevent replay attacks with Update proposals HOT 2
- Audit replay protection in Byron era delegation certs HOT 5
- Violation of `ts_chainTick` property HOT 3
- Reduce the window in which endorsements are counted HOT 1
- Update proposal clearance should not be tied to endorsements
- Decode EBB body proof
- Inconsistency in Fee calculation with old SL nodes HOT 1
- Null update proposals are ignored, not rejected
- Byron still reserialising some stuff
- Potential DoS Issue with Update Proposals HOT 1
- Odd property test output
- Stale comment in `applyChainTick`
- Use EpochInfo HOT 1
- Monotonically increasing Byron block header check
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 cardano-ledger-byron.