4 ms·
Haskoin – Haskell implementation of the Bitcoin specifications
- Dewie 12y agoI guess the name is understandable since it is an implementation of a protocol in Haskell. But I wonder if the day Haskell becomes a mainstream language is the day when few of the apps and such built with Haskell aren't play on words or references to Haskell terminology. :)
- vertex-four 12y agoA lot of Python libraries contain "Py", are named after snakes, or are references to Monty Python, and that's certainly a mainstream language.
- Dewie 12y agoIt's certainly not weird for libraries to be references to the language or culture of the language itself. Not to mention that the name can refer to relevant technical details that are related to the language - for example, if a parser library uses applicative parsers, maybe the name of the library has some reference to applicative in the title. I was referring to using this kind of terminology in more user-facing applications - for example xmonad (I don't know what monads have to do with tiling window managers. Maybe it has something to do with how the configuration library of xmonad is structured). Admittedly, maybe Haskoin was a bad example in this regard.
- sanityinc 12y agoAt least xmonad starts with an "x". Alternatives like "ratpoison", "enlightenment", "metacity" or "sawfish" have names which are arguably even less meaningful to end users. In my view there's really no tension between naming things after implementation details and giving them abstract unrelated names -- all that really matters in the long term is that a name is memorable, and memorable names can and do come from either approach.
- tgkokk 12y agoMost JavaScript libraries end with .js: Angular.js, Ember.js, Backbone.js, Knockout.js... And yes, JavaScript is a mainstream language (in the browser, at least).
- espadrine 12y agoI wish there was a comparison in the performance benchmark. What was its purpose if we cannot compare it to the mainstream Bitcoin software's performance?
- tinco 12y agoWhy would performance be a concern for a bitcoin API? I think this projects main goal is tot provide an easily auditable typesafe implementation.
- DogeDogeDoge 12y agolooks nice. I wonder when we will be able to see a real type safe BTC exchange
- oakwhiz 12y agoThe part about this that interests me the most is that it makes the Bitcoin protocol more understandable. The code is very readable and it contains a lot of comments.
- ixmatus 12y agoIt's funny, strong type systems are really about explicit documentation. I'm sure the comments are good but translating a spec into Haskell types is a form of strong and explicit documentation that is also functional.
- smrtinsert 12y ago80 columns - I'm surprised to see this honestly.
- implr 12y agoAwesome library, but I'm a bit worried that they chose to implement their own crypto(mostly ECDSA), instead of using an existing implementation known to be correct.
- xenog 12y agoI am one of the authors of Haskoin. We have had internal discussions on this topic. It was agreed that we wanted to minimize dependencies to code written in another programming language, which was the reason we did not choose one of the existing C++ crypto libraries, such as OpenSSL. My colleague Philippe, who wrote the crypto code, deemed the existing Haskell crypto libraries unsuitable. Hence we rolled our own ECDSA.
- fragsworth 12y agoIt's not really a problem, as long as you've got extensive test cases (perhaps with millions of randomly generated samples) to show that the implementation always has the exact same results as OpenSSL's. Or even better, since ECDSA is used in bitcoin-qt, just show that the full bitcoin implementation has the same results as bitcoin-qt, with millions of samples. I don't see any of that in your package though.
- xenog 12y agoThe correctness of the implementation is not worrying me at this point. ECDSA is not too complex to implement. We have QuickCheck tests, and many others that make us confident that the code works well, or at least that it does what it intends. I'm more worried about more sophisticated attacks, like timing attacks, for example. But I don't see how that can be used to attack this particular application.
- xenog 12y agoBe careful when running the code in a way that can lead to an attacker finding a way to use a timing attack. Anywhere where signatures are done automatically could lead to potential problems. This is also true for Electrum, that implements its own crypto too, and browser-based clients.
- leoh 12y agoHow long did this take to write? How large is your team?
- plaprade 12y agoWe've been working on haskoin for about one year now. At the start we were two, and now we are three.