2017-01-30

Corda and the Distributed Ledger Technology

Recently I became involved with SCC's committee on "Blockchain and electronic distributed ledger technologies". During one of the discussions, I've learned about a new term that seems to have become very popular in the banking industry - "Distributed Ledger Technology" (DLT). Apparently companies like Deloitte or even the UK government have picked up on this new thing and seem to be abuzz with it.

Instantly this reminded me of 2015 when big companies like NASDAQ and Overstock expressed their interest with "the Bitcoin technology", but they didn't want to be associated with "Bitcoin", therefore decided to rename this whole thing as "blockchain technology". Maybe this was just another way for companies to invent a new five dollar word and charge a hefty sum to consult on it?

After doing some research, I couldn't find much on what exactly DLTs were - there doesn't seem to be a concrete definition floating around yet. However, a few people pointed me to one example of an actual implementation of a DLT - Corda. Lucky enough, someone coincidentally decided to organize a meetup about Corda around the time, so I had some good opportunity to learn what it's about.

Corda


Corda is a Distributed Ledger Technology implementation by the R3 consortium. It is open source, comes with a Slack, a whitepaper and all that.

Corda has been created from the grounds-up for the use by banks and other financial institutions, prioritising their needs first. This dictated a few important design choices:

  • Private transactions - transactions in the system are only disclosed to the parties involved. They are not globally broadcast for everyone to verify, instead only circulating in very limited circles as small as two peers.
  • No blockchain - since there is no need to let everyone know about every transaction that took place, there is also no need for a blockchain, be it public or permissioned
  • Legal smart contracts - much like a Ricardian Contract, the smart contracts executed on the Corda network have explicit legal prose attached to them.
  • Optional notaries - if two parties don't trust one another, they can bring in optional notaries to verify various aspects of the transaction (no double-spending, uniqueness of transaction, etc.)

Knowing these features, we can try figuring out what existing cryptocurrency project it resembles most. Looking at this chart comparing various projects in the space (provided funnily enough by Tim Swanson a few years back before he joined R3):

Tim Swanson's "Current Cryptoprotocol Infrastructure" from his "Great Chain of Numbers"

It looks like Corda can fall in only one spot, which is the "Ledgerless Crypto Suite", alongside Open-Transactions. Indeed, the resemblance is quite strong.

The following explanation is based on the "Introduction to Corda" presentation and other materials I managed to come by.

Corda's base building block is a cryptographic transaction. It can be a simple payment, or a more complex smart contract. The transactions specify which inputs they are spending and what outputs they are generating (this works just like Bitcoin and is different from an "account-balance" approach of say, Ripple). Each transaction has a hash of a legal prose attached to it which governs how the transaction should operate. The transaction is then signed by all of the participating parties that agree to execute it - it could only be one entity when it is a simple "send money" transaction, or span multiple parties if it is a more complex swap or financial agreement.

The transaction can also be notarised or verified by third parties as needed. This could be as simple as a server doing a blind signature to verify the transaction is unique, or perhaps the whole transaction could be disclosed to some auditors as needed.

After a transaction is signed, that's about it - every party that knows about the transaction records it in their ledgers and the financial contract is thus binding. There might be some follow-up on the smart contract as it matures or other trigger points execute it, but with no blockchain, block generation or the like, there isn't much else to it.

As it stands, Corda seems to fit in as a common middleware for banks and financial institutions to standardise their interactions with one another, especially in the realm of financial contracts. This puts the project in a similar space to Open Transactions or Interledger, not too far from Ripple or Ethereum.

Corda criticism


Due to its focus on catering to the financial institutions, Corda might be seen as "more of the same", rather than trying to revolutionise the field like Bitcoin. Some people might dismiss it out of principle for not fighting to make the banks more transparent.

A system built on private transactions will be easier to manipulate than a proper blockchain. Unless all of the transactions need to be accounted for by some independent auditor, you loose the option to have "negative proofs". Since the amount of parties involved is so small, they can easily conspire to rewrite or delete the past transactions to suit their present needs. This could be mitigated by using a proof of existence and anchoring the various hashes of transactions into something like Factom.

However, if properly maintained, the system can enforce accountability. While the transactions may not be a part of a blockchain, they do form a transaction chain - every transaction spending the previous output. Having any single transaction signed by the various parties could be used against them - they might be compelled to provide the full, unbroken chain of transactions leading up to that transaction. While this might not uncover all of the transaction branches, there is at least some cryptographic trace of what happened.

Linking the legal prose to the smart contract is also asking for trouble. Even now people can have legal disagreements as to which interpretation should take precedent when you have a contract written in two human languages. Woe to anyone who wishes to mix legal prose with a smart contract. This would either require a new profession of some lawyer-programmer, some sort of legalese language interpreter / compiler, or the smart contract will be just a farce that could be overturned so easily it might not even need to exist.

Corda's presentation seems to indicate the legal prose takes precedent over the code. This might mean that there would need to either be some backdoor for third parties to overwrite or amend the contract, or the parties involved would have to work around the code to achieve settlement in the end. All in all, this can lead to a lot of mess in the code down the line. Some might prefer the approach of "code is law", but then we have the story of the DAO as a cautionary tale.

Moreover, the contracts dealing with international law and regulations would be even more complicated. This could lead to fewer transactions taking place between various jurisdictions to avoid the legal hassle.

Beyond that, Corda seems to rely on a few known key actors common to the Crypto 2.0 space. Lack of native currency means the system will need gateways to issue assets. Some design documents mention Smart Oracles, etc.

Distributed Ledger Technologies


Based on the example of Corda and Open Transactions, we can try drawing some conclusions of what the Distributed Ledger Technologies might be as a general term.

  • The technology seems to be focused more on transactions and less on grouping them into blocks.
  • With the absence of blocks, we necessarily have to do away with any form of distributed, native currency - there is no way for that currency to be objectively generated. The system instead uses IOUs for currencies and assets.
  • The system relies on a number of key nodes / entities to operate - auditors, validators, legal authorities, banks, etc. This means the system would be at best "decentralised"
  • Cryptography is still used to authorise various transactions and move the money around.

Conclusions



Distributed Ledger Technologies seem to sound more impressive than they are in reality. Some have proposed to use this term to refer to things like Corda as well as the existing Blockchain Technologies, but it seems to be mostly an unnecessary buzzword. The existing DLTs are not really distributed, but decentralised. The word "ledger" correlates more closely to a block of transactions than what we have in Open Transactions (where you can discard old transactions as they are not needed once they are confirmed spent). So perhaps a more accurate term would be "decentralised set of transactions"? DSoTs? DSoTTs if you want to include "technology" at the end as well...

2017-01-02

Ideas for Reddit moderation improvements

Awhile back the /r/Bitcoin community got upset over Coinbase CEO talking with Reddit CEO about /r/Bitcoin's moderation and the possibility of removing the moderators of the subreddit. It has been a few months and luckily not much has come of it. However, this got me thinking about how we could improve the moderation of the subreddit, or at least what different approaches could be taken.

None of the points mentioned are meant to be an attack on anyone - thy are merely ideas worth considering in probably many communities, not just ours.

This can be viewed as a continuation from the "On /r/Bitcoin moderation - three years in review" blog post.

Head moderator responsibilities


Everyone has different approaches to moderation. Personally, I find myself starting with a lot of enthusiasm early on and later petering out over time as more people join the team and are able to take on the responsibilities. Being the second moderator on /r/Bitcoin for a long awhile and facing the community backlash at our top moderator gave me an opportunity to think about how I would run things. While this might not be an ideal solution for everyone, here is the approach I might take - focus on being the moderator of moderators and an arbitrator between them, rather than dictating the direction of the subreddit.

My personal approach is that everyone makes mistakes - moderators are no different and I'm no different. The best approach to take is to fill the moderator positions with people that aim to support the community and see it grow. Most importantly, however, those people should be open to discussing and challenging views held by themselves and other moderators as needed. One person might make a mistake, but if five people agree on something, it is less likely to be a mistake. If someone disagrees, it is important that they express their reasoning and let their peers come to a conclusion whether something needs to change or not. Many of the /r/Bitcoin moderators, both past and present luckily are able and do voice their opinions even if it's not in line with the current rules.

Being the top moderator on Reddit gives one the power to control everything in the given community, but in my opinion that power should be used very rarely. Ideally, the top moderator of the subreddit would perhaps only step in if the other moderators are acting against the community and need to be removed. This could mitigate the use of moderation to push one's agenda - if the top moderator doesn't actively moderate, they can't change much to suit their agenda. Other moderators know that if they usurp the community, they will be removed. Thus some balance of power could be reached for the betterment of the community, provided the top moderator could be trusted.

Anonymous discussions


At times the moderators might need to discuss some matter anonymously. Perhaps it would be an issue of removing a certain mod or other controversial topic. Unfortunately, Reddit doesn't leave many options for anonymizing one's conversations while still being certain you're talking with the same group of people. However, here is a simple solution to this problem:

Every moderator would create a random account. They would message someone saying they are a mod, but not reveal their original identity. That person would gather the list of all accounts that messaged them and present the list to the moderation group. Everyone would then acknowledge that the account they created is indeed on that list (without disclosing which account it is). If everyone acknowledges their account being present and the numbers match, you have a list of anonymous account that can be used to discuss anything without worrying about negative repercussions to your other account.

Mod removals


Having the anonymous discussions, it becomes much easier to discuss the removal of fellow moderators in an objective manner. You might want to call someone out on some actions they have taken or their general behaviour and see how other mods feel about the situation without becoming "that guy".

One of the responsibilities for the head mod would be to make sure the proper mods are removed (in case say, they are the second most senior mod that nobody else can remove). But perhaps the biggest mark of greatness for the top mod would be recognising if the community and other mods would not want them to continue at their position and step down like a true Roman Dictator, having put the power in the hands of the next worthy person chosen by the community and the moderators.

Community oversight


Another topic I've heard mentioned a few times comes in the form of insight into moderation logs. While those could probably be disclosed fully, they rarely tell the whole story - a good deal of moderation happens over modmail, which sometimes needs to remain private. It might be good practice to perhaps appoint a few representatives of the community to oversee the moderation process without being full moderators themselves. They would have insight into modmail and moderation logs, but shouldn't be acting as a full moderator. This could reassure some people that the mods aren't conspiring against someone or some company in particular, and it would also provide a good pool of candidates to pick from in case the moderation pool needs to be expanded.

Talking with the community


Communication with the community is important. Whether it's announcing policy changes or just having a general talk once a month, it might be useful to reach out to the community and hear what they have to say. This could boost the community's confidence in the moderators, help address some issues early on and hopefully make the relationships between mods and redditors better than what it sometimes becomes.

Conclusions


Those are some of my thoughts on how moderation in Reddit as a whole could be improved, or at least how I would try to improve it given the chance.