Hacker News new | comments | ask | show | jobs | submit login
RaiBlocks: A Feeless Distributed Cryptocurrency Network [pdf] (raiblocks.net)
91 points by onuryavuz on Jan 2, 2018 | hide | past | web | favorite | 42 comments

The RAIblocks whitepaper is worth reading just as a reference on how a technical paper should be written.

(Disclosure: I became interested in RAI on NYE and recently invested some money in it)

The RAI secret sauce is the "block lattice" design where each account is its own blockchain and you only need to care about the chains you want to do business with, unless you encounter conflicts. Conflicts are resolved by proof-of-stake voting. If you don't run a full node, you choose a representative to vote on your behalf.

Today I spent the afternoon playing around with a conceptual design in ClojureScript for a better desktop wallet: http://petrustheron.com/posts/xrb-wallet-concept/

From a contrarian investor point-of-view, RAIBlocks is interesting because it is at the juncture of a terrible wallet experience, a weird name, dubious exchanges (at least UI wise), an okay website - but an excellent whitepaper and a working protocol that's free to transact on.

If it scales, I predict it will do well. My biggest concern is C++ as an implementation language, compared to, say OCaml that is easier to verify. I also don't have a strong feel for the robustness of the conflict resolution mechanism. However, the author is proficient and the codebase is readable.

The closest DAG impl. AFAIC, is Hashgraph, based on supermajority consensus that counts transactions that were "strongly witnessed", but it is patented with no coin presently for sale.

One thing that I don't get is what is the incentive to vote on tx?

As I see it, if you don't vote the wrong president might win. Dirty txes jeopardise the asset value and you could be left with a tyrant in your chain who has even more voting stake. It's self-regulating in that way. But there may be another consistency issue I'm not aware of.

So there is a conflicting tx, your software is going to vote on it automatically. How do you pick which tx is the 'clean' one and which one is the 'dirty' one?

When your node encounters a conflict (a fork), where two signed blocks have the same parent (double spend attempt), it creates a vote referencing the block and broadcasts it to the network.

The nodes vote and the weighted majority (>51%) is taken as the real fork. The weight of a node's vote is the sum of the balances all accounts that have named that node as its representative.

The key thing here is that when a fork or missing block occurs, only the accounts referenced in the transaction are affected. The rest of the network proceeds with processing transactions for other accounts.

The voting mechanism is to wait for 4 voting periods (1 minute total) and keep a cumulative tally of incoming votes from the other representatives. The most popular block wins majority and is kept. The other block is discarded.

Refer to page 4 (bottom right) of the whitepaper: https://raiblocks.net/media/RaiBlocks_Whitepaper__English.pd...

As far as I am concerned, this is a great design (if you buy into proof-of-stake, which I do).

So - the currency is entirely "mined" and distributed already?

And that period is over? So is a small handful of a few developers/early-adopters that are trying to sell off a currency that they already own in its entirety?


RaiBlocks was distributed using a captcha faucet. https://bitcointalk.org/index.php?topic=1381323.msg14252334#...

The only people who would have solved the captcha faucet to get coins at virtually next to nothing value at that time would be the ones who believed in the project right from the start which to me is a fair distribution scheme. ICO based distribution is usually more greed driven. In this case the developers and team were more motivated in building a new innovative blockchain protocol as opposed to raising money by simply issuing ERC20 tokens. Speaks a lot about the project in itself. And the team has even succeeded in building a beautiful, disruptive scalable protocol and currency with no transaction fee. I've tried RaiBlocks and so far have been impressed.

Which in itself is a mechanism that just spreads the incentive to hype and post to all social media channels trying to pump a coin amongst a larger pool of individuals, many of whom are desperate enough to get rich that they are willing to sit and click through captchas for pennies.

Or in other words, just gets you a larger initial pool of astroturfers online.

I.e. indian captcha solving shops.

Is it really a currency if there isn't inflation? What prevents hyperdeflation and the inevitable death of the "currency" without inflation?

It's not about 'inflation' it's about hyperinflation. Nobody is treating crypto-currencies as currencies, they're treating them as investment vehicles so the current trend is to create a hyper-deflationary 'currency' so you can tell your original investors that they're 'in on the ground floor' and they have a reason to believe it. You get those guys in, they're incentivized to spread the word, they do so and boom we get what we keep seeing, the fear of missing out and greater fools driving speculation bubbles.

Sounds a lot like a fancier pyramid scam.

Inflationary currencies is a new development.

We've had deflationary and gold backed currencies for thousands of years and it worked out fine for people who used them.

fine is relative. There was a tremendous amount of lost productivity due to the rising cost of gold. Also gold is traditionally a commodity, not a currency. If the value of your thing is that it functions as a transfer medium, and everyone is incentivized not to transfer it, it certainly sounds like it's bad at what it does.

You think that people were sitting and doing nothing, because everyone was hording gold, because it would be worth 1% more in year? Really?

The main function of money is not transferring value. It's keeping track what society as a whole ows to whom. Transferring is just a secondary job. And there's absolutely no need to incentivize it. That's why some cultures used stuff like big rocks as money.

Money is a good money, when you don't want to part with it. And its crappy money, if everybody are just looking for a way to get rid of it.

All the speculative bubbles that we're seeing are caused by lack of real-money. People are trying to get rid of their fiat, and park the value anywhere else.

And it's not very productive when young famillies can't afford to live anywhere, because the houses are used as speculative investment and essentially.. money. It was actually much better when otherwise useless pet rock was taking a function of keeping track of debt in the society and inflated and deflated according to real market conditions.

Well you can't eat it and it doesn't keep you warm. At some point you'll have to spend it. I don't think people spend money because they are aware of inflation anyway. They spend it because they want something. If people are encouraged to think twice about what they need or want, is that really such a bad thing?

A word of caution: while DAG-only chains are a promising area of research for cryptocurrency data structures, there are many unresolved problems with them.

IOTA solves it with a centralized coordinator and claims to have decentralized solutions being planned. RaiBlocks is, in my opinion, more honest about its vulnerabilities and its progress in solving them (they say they're working on it). Since RaiBlocks has no centralized coordinator, it could come under attack as soon as a shorting market emerges for it.

Glad to see a coin that has it's own codebase (not some fork). And the lattice approach sure is innovative :)

For the curious, the repo is here: https://github.com/clemahieu/raiblocks

Looking at the commit stats, it looks like almost all the work so far is by clemahieu. It'll be interesting to see if his codebase is solid enough to allow more contributors to easily hop in.

I thought their wiki page listing potential attacks was also pretty interesting: https://github.com/clemahieu/raiblocks/wiki/Attacks

Can someone help me understand.

If a block chain (or whatever you want to call your token of choice) doesn't have any fees, how is it different from just having a database. No fees mean that every transaction has the same value so there is no transaction prioriization other than time. This seems like a glorified eventually consistent database synchronization algorithm. In a fee based blockchain, I can pay more to get my transactions through before someone else.

Again... I'm not a PHD, nor am I even that smart so can someone break this down.

The nodes are paid from "created coins", at the expense of everyone diluting. Could call it artificial inflation.

> This seems like a glorified eventually consistent database synchronization algorithm.

To some extend that is what a blockchain is. Also: immutable, no-need-to-trust-every-node, KV, and sometimes with the ability to perform smart contracts.

> In a fee based blockchain, I can pay more to get my transactions through before someone else.

Yes. Either way, as long as you tx comes through "quick enough"... :)

Ah okay thanks for helping. I guess in the case of RaiBlocks, since you're only transacting currency (not Turing complete smart contracts) there isn't really a need for fees to prevent the halting problem like you have with Ethereum.

I've made a list of tokens that I'm trying to categorize[1] so I think I've got RaiBlocks in the right place.

Is Bitcoin slightly over designed in how the fee structure is implemented for the problem it's solving?

[1] - https://cryptostream.com/token-utility/

In BTC land PoW = fee. In RaiBlocks they use it more like a Captcha before sending a transaction, effectively getting rid of Fees because it's just as useful anti-spam. (However, I think that fee transactions are actually quite important in a blockchain because you don't want nodes wasting resource adding and checking nonsense even if the captcha was computed.)

Where is it specified how much people get paid in created coins?

"RaiBlocks achieves consensus via a balance-weighted vote on conflicting transactions. This consensus system provides quicker, more deterministic transactions while still maintaining a strong, decentralized system. RaiBlocks continues this development and has positioned itself as one of the highest performing cryptocurrencies."

Which I would follow with more from the paper:

"H. Proof of Work All four transaction types have a work field that must be correctly populated. The work field allows the transaction creator to compute a nonce such that the hash of the nonce concatenated with the previous field in receive/send/change transactions or the account field in an open transaction is below a certain threshold value. Unlike Bitcoin, the PoW in RaiBlocks is simply used as an anti-spam tool, similar to Hashcash, and can be computed on the order of seconds [9]."

"B. Transaction Flooding A malicious entity could send many unnecessary but valid transactions between accounts under its control in an attempt to saturate the network. With no transaction fees they are able to continue this attack indefinitely. However, the PoW required for each transaction limits the transaction rate the malicious entity could generate without significantly investing in computational resources. Even under such an attack in an attempt to inflate the ledger, nodes that are not full historical nodes are able to prune old transactions from their chain; this clamps the storage usage from this type of attack for almost all users."

Blockchains (e.g. bitcoin) and block lattice (e.g. RaiBlocks) are two approaches to implementing distributed ledgers. A distributed ledger is a type of distributed database. This article from last year I think sums up nicely the distinction between a distributed ledger and a distributed database.


> Distributed Ledgers (DL) are DDBMS that leverage cryptography to provide a decentralized multi-version concurrency control mechanism and to maintain consensus about the existence and status of shared facts in trustless environments (i.e. when the participants hosting the shared database are independent actors that don’t trust each other). Consensus is not a unique feature of DL per se: other distributed databases also use consensus algorithms such as Paxos or Raft. Same for immutability: immutable databases exist outside DL (Google HDFS, Zebra, CouchDB, Datomic, etc.). The two differentiators of DL in my opinion: (a) the control of the read/write access is truly decentralized and not logically centralized as for other distributed databases, and corollary (b) the ability to secure transactions in competing environments, without trusted third parties.

> This seems like a glorified eventually consistent database synchronization algorithm.

It is a form of eventually consistent databases. One that also solves the problem of nefarious actors trying to cheat.

It's more like a tsunami of Running Balances vying for event horizon. I'm not sure how this is ever supposed to be "consistent" unless you're talking about full historical nodes, in which case yes definitely, but non historical nodes are able to prune transactions after a while. Still a lot to dig out of this gem of a paper, any error in interpretation is my own.

You are using the wrong unit. In a database a unit is a key. In a blockchain a unit is an address. It is entirely consistent from this point of view.

I would love to see a balanced discussion of pros and cons of the unusual lattice design used by raiblocks.

I often find myself judging cryptocurrency whitepapers by the number and breath of citations. Has the author's read previous attack papers and developed appropriate countermeasures. How does it compare to other schemes? Are the authors aware of the definitions and methods used in distributed systems?

However this approach should be tempered by the fact that the Bitcoin whitepaper would score poorly on this metric.

BTC was also closer to the ground floor of this research, you wouldn't expect it to be able to cite too many papers in similar subjects.

I would too, but this is the Cryptocurrency space; When has anything ever been balanced?

Bitcoin was pretty balanced in the beginning, then money took over. Lets hope we can one day disentangle the technology from its potential for speculation.

I feel stupid cause I brushed this one aside in the summer in favor of iota... If only I'd found out about the faucet!

Same. Even though HackerNews despises IOTA for rolling their own crypto, building on ternary and having a centralized coordinator, I still think that IF IOTA manages to solve their issues and can establish themselves as an IOT powerhouse, they'll be absolutely enormous.

Also IOTA and Rai aren't really competitors. So for the time being, I hold both.

Cryptocurrency is about new, exciting ways of applying cryptography. People idolize the blockchain, but I think what's cooler than that is coming up with new ways to use crypto. DAGs are very cool. They can be used to compress volumetric data down to less than 1 bit/voxel! So its exciting to me that people are exploring DAGs + cryptography.

Anyway, the lesson for me was too look past the hype just a little deeper. At the time raiblocks was an underdog, so I closed the slack and forgot about it. At the very least, I could have learned a little more about it.

Lately I've really been curious about pascalcoin's approach. Its blockchain is trimmed constantly, acting as a short term, working memory. Its supposed to be very fast. Unfortunately, it's written in pascal, which has very crusty tools! Someone should clone pascalcoin in another obscure but modern language with cross platform tools. I think it'd be a hit. Haskellcoin? That rhymes with Pascal coin and Haskell is cooler. Ocamlcoin? Doesn't rhyme but Ocaml is cool too.

the concept seems cool but the creator doesn’t inspire much hope to me

why's that?

How is that an issue? It looks like they are trying to help.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact