Hello!
When I was creating a CTF for a conference, I’ve finally got to learn about how blockchain and smart contracts actually works in practice, and the whole concept is simply brilliant. A quick introduction for those unfamiliar with it would be in this summary, but just to summarize how I basically understand it, blockchain is simply a VM that runs code (smart contracts) a both the code, and result of every execution of it is calculated by a bunch of users (so, mining is basically running a VM) and appended into the blockchain based on some kind of consensus and proof of work. This means that you get a single source of truth and history of every execution of a smart contract that is decentralized and you can rely on it.
But, almost every use of blockchain or smart contracts I have seen has pretty large issues either in sustainability in the long term, or in cases where you simply need some form of an authority to prevent and punish misuse. While I’m not really that much familiar with every use of blockchain so far, I will first list what I’ve already thought about or seen, and the main issues that I think are a deal-breaker for choosing blockchain for that kind of tasks. It’s possible that some of the issues are wrong or have already been solved, so please correct me if I’m wrong - my knowledge of blockchain isn’t really that in-depth.
First and the most common use is the one you are probably most aware of - cryptocurrencies. If I ignore the biggest and most unfortunate issue of cryptocurrencies turning into an investment-only product, with hugely volatile and inflated price that is not backed by any kind of real value (sure, you can pay with BTC, but it’s slow, expensive and super volatile to be useful, so the only real use is to literally sell it to others for a profit - which also basically means you are scamming someone out of their money down the line), I see the following problems with using blockchain for currencies:
- Longevity - The ledger size is already getting massive, only after a few year. It’s not sustainable, and it will eventually be really hard to keep the whole ledger at a large enough number of places to not run into problems of integrity. It’s growing exponentionally, and is at around 500Gb after around 10 years.
- Gas cost - It’s getting harder and harder to mine and confirm new transactions, which increases the cost while also making less people able to mine new transactions without being at a loss. This will only get worse, and eventually lead to the 50% problem (if someone controls 50%+ of mining nodes, he can confirm fake transactions or do whatever he wants with the blockchain) being a real issue.
- Lack of moderation - This may be one of the more controversial issues, because it goes directly against the whole idea of cryptocurrencies, but is one of the biggest problems I see that are in the way of crypto being able to be considered for wider use. We live in a world where some people are dicks that are not afraid to steal and cheat, and something like a currency simply has to be moderatable. You need to be able to punish criminals, and take back what they have stolen. If someone doesn’t pay their debts and owns me money, the government should be able to just take the money if they have them. If someone uses an account for scamming and stealing, it should be possible to freeze it.
The last issue will eventually show in most of the other uses of blockchain as well, and while I have included it, I’m still not sure how I feel bout it. In an ideal world, you would not have to deal with something like this. I would also really like to have an option to do my transactions privately, without anyone being able to profile my behavior and data, but such a system would have to allow for some safeguards against missuse to be widely adoptable. (Which is an interresting off-topic question - would it be possible to create a system that is private, but also has the possibility for trusted authorities to freeze accounts and force transactions?) And the more that I think about it, the more I’m certain that I’d rather have a centralized system where you can punish criminals and scammers, than a system where lives of people are regularly ruined by someone stealing all of their savings unpunished. But it is a thin line - I only say that because I live in a country that is all-right and I can trust my government - for now. But I definitely agree that such a private unmoderated option should exist - but can’t be considered for widespread use, which I’ve heard some people say that “crypto will replace cash in a few years”. And this is why it never will, IMO. But this discussion shouldn’t be about whether this is a good opinion or not - but more about “what blockchain is a good tool for”.
Next one are NFTs. I will just quickly gloss over them, because they are even bigger scam than crypto is. Ever heard someone say “Someone has copied and minted my NFT?”. Well, it’s a shame that there isn’t some kind of centralized authority that could, you know, not allow them to do that.
Another use I’ve heard someone praise as “the future” was lending money. I’m not sure what were they talking about, but the whole point was that you can… Escrow an amount you are borrowing, and then borrow the same amount? It didn’t make any sense, so I guess I’m missing something, but then again - we have the same issues as above, while also it being just a bizare idea - why simply not use the amount you already have? The person tried to explain it to me, but it just feels gimmicky. And if you escrow a lesser amount, you then have the same problem with moderation as above - nothing can force you to return the money (unless it is already escrowed, but then, why??)
So far, every use of blockchain I have heard about would be better done in a centralized fashion, especially as far as longevity is concerned. The growing ledger size and increasing gas cost, along with the 50% problem simply makes most of these kind of uses too impractical to work on a larger scale.
But I really like the concept and idea of smart contracts, and I’m sure there has to be some kind of use that is not as “revolutionary” or large scale. I’m just having hard time coming up with any.
I have only one - voting, and maybe transparent randomization (i.e lottery). Smart contracts are an amazing way to collect votes transparently but privately, since you can be sure that no-one can cheat, if you set it up properly. It’s also something that doesn’t suffer from the longevity problem, because it’s more of a one-shot use of blockchain, rather than something ongoing - which also justifies the price.
(tl;dr feel free to start here:) Which is what I’m interested in - does any of you have similar ideas for use of smart contracts and blockchain, that would be practical in a daily live? Be it one-shot smart contracts for a small task, such as voting or random winner selection, maybe some kind of escrow. It doesn’t have to be a “society changing system”, or something revolutionary. A common small code snippets or apps that would solve the trust issue inherent to a centralized task is what I’m after - but have hard time coming up with.
And just a disclaimer - I don’t plan on building anything and am not fishing for the next blockchain thing, I barely even understand it. I would just like to incorporate blockchain into my programming repertoire as a tool, because the concept feels so clever, but is also misused or misunderstood due to hype, but it has to have it’s uses that are overshadowed by people jumping on the blockchain bandwagon without considering whether it’s really the best tool for the job.
But is has to be a good tool for some kind of problems, right? And I would like to start a discussion about what would that be, without it being affected by the hype and reputation surrounding blockchain. I feel like that would be an interesting though exercise, and I’m sure we can come up with some interesting little uses here and there, without it being gimmicky but actually the best tool for the job.
Thank you!
EDIT: And I’d like to add that I never got into the blockchain hype, and my opinion on how it’s used so far is mostly negative. If a product mentions blockchain, I usually just avoid it as a gimmick. But that’s why I’m genuinely interested in this discussion - I don’t judge a tool about how people misuse it.
Audit logs and Access control paper trails.
Security event logging has to be:
These three requirements are tricky and often conflicting. Block-chain might be an inefficient way to achieve these, but the glove does fit quite neatly.
Logistical paperwork
These kinds of documents require multiple stages of matching and approval by untrusted 3rd parties. There are dozens of ecosystems of interacting systems that support processing these documents, but most people still use paper. Paper is more reliable when you need to deliver a container full of diapers from Poland to North Sudan. It’s more reliable but incredibly prone to fraud and forgery. Having all of these approvals and transactions tracked on a blockchain and letting different systems interact with the same chain, would make it possible without each ERP having a rest API to each other ERP.
I fail to see what blockchain can provide in the realm of audit logging?
Fundamentally, you need to trust the systems which are logging events to log the correct events at the correct time. How does blockchain change this?
Yeah the problem isn’t the veracity of the logs, it’s providing a mechanism for third parties of proving that the sequence of events in your log hasn’t been tampered with after the fact
Any system which publishes the log to third parties as they are written would do that.
Yeah you’re not wrong, that would be more efficient. Again a blockchain is not an efficient way to do it. But it would be effective.
In practice audit logs are used by and for auditors. Non-technicals that need evidence that would hold up to argument. Yes you could send your logs to a third party. Now you have to prove that third parties trustworthiness twice a year to the standards of each legal entity you operate in. And lawyers are more expensive than blockchain devs haha :p
Having a private blockchain that you can share with several changing parties that can subscribe to it. Without having to update anything about your infrastructure is a benefit.
Even though I’ve lived through several iso 27001 certifications, I’m still walking on thin ice when I say that it would probably easier to explain the blockchain in practice than any other proof of completeness method. Because the public is more aware of it. On the other hand the public is also more skeptical of crypto so it could also backfire :p
How does a private blockchain work? It is my impression that the security of the block chain comes from the difficulty of mining a new block. This in turns depends on having many entities competing for mining the next block because they get some type of financial incentive.
Wouldn’t a private block chain just essentially be like git? In git I can easily rewrite the entire history of my “log” by just rehashing everything. It is just git rebase. For anybody to verify I had not done this, they would always need the newest commit/log entry. So until the time I choose to publish a log entry, I am free to rewrite it and everything after it. Which is exactly the same as if I didn’t use a blockchain.
It just seems like the blockchain solution depends on publishing log entries to a third party as they happen, but once you do that, the problem is already solved and you don’t need a blockchain.
But I might not properly understand how private blockchains work?
The security comes from consensus. Everyone needs to agree about what the truth is. The burden of proof is proportional to the number of peers that need to agree. Public chains require a lot of work to create consensus amongst hundreds of thousands of peers. Let’s say your chain consists of 12 companies all using the same chain to validate and verify each other’s transactions so they are ready for an audit.
Yes, it’s easier to have 12 peers conspire to manipulate the chain than to have 200 000 peers. But making 12 businesses conspire to cook the books is already several orders of magnitude more difficult than the checks and balances we have in place now.
So it is not really private to one business, but shared between a couple handfuls. The consensus of this group is then trusted.
In that case, to write a log entry I would have to publish the log into some mempool shared among the group as it is logged. At this point, each member can just store the log entry and then later verify it of asked. Again, it seems like the entire block chain part of this system is redundant and what is really providing utility is the idea of storing your logs with someone else as you create them so you cannot later claim something didn’t happen.
But just to understand the idea of private blockchains better. Would this be some kind of hardcore “code is law” arrangement where each Company is competing on hash power with all the others to prevent them from rewriting the logs to their advantage (and in the best case being able to rewrite the log to their advantage).
Or is there some a priori agreement on what a reasonable amount of hash power is, that you just hope one company doesn’t choose to outspent by a factor 100 the day they really need to rewrite the log?
I guess in that case it will be clear to everybody what has happened. But if you choose to act on this common sense version of events instead of the “truth of the blockchain consensus” you are, once again, undermining the entire idea of using a block chain.
I’m sure the hardcore variant would have its uses. But the goal isn’t necessarily to make fraud impossible, just evident. So probably more towards the latter option. And you are correct that you don’t need a blockchain to create a distributed database that enforces consensus. It’s just a neat tool you could use that scales pretty well, is relatively low maintenance(SWE hours not GPU hours), can adapt to a lot of cases, and is affordable for small and mid-sized companies. You could do the same by broadcasting your events to all your peers and having each peer save everyone’s events to compare notes later. But this would be a hassle to setup and keep consistent.
It’s more about tampering with the audit log. “Company A provided their audit logs to prove their innocence.” Did they? Well. Maybe. How do we know it’s the full log. How do we know it wasn’t altered? Sure, the company can digitally sign it, but what does that prove?
Then sign and send the audit log in realtime to the authority which A provided their logs to. Same effect no blockchain.
You could also encrypt and publish it. But realistically there is always going to be some entity actually responsible for enacting the consequences for non-compliance and they are the only entity that really ever needs to check these logs.
I am not sure I understand what the incentives to “mine” this blockchain would be. Without a certain block difficulty, which requires many miners, it will be trivial to rewrite the entire chain.
Most auditing and insurance companies don’t have a webhook where you can arbitrarily send your logs to. They have humans with eyes and fingers holding risk management and law degrees called auditors. That you need to, with words and arguments,convince of your process integrity. And What happens if you switch insurer or certifier? You probably have to do a ton of IT work to change the format and destination of your logs. And how do you prove that your process was not manipulated during the transition?
What you describe are digital notary services and it’s billion-dollar industry. All they do is be a trusted third party that records process integrity. IAM, change logs, RFCs, financial transactions, incident detection, and response are all sent in real time so you are ready for certification or M&A. Most small and mid-sized enterprises can’t afford that kind of service and are often locked out of certain certifications or insurances or take a huge price cut when acquired.
Something like pooling together resources to a provable immutable log trail isn’t unreasonable.
I’ve given it some though and wouldn’t the fact that the blockchain is public by design be a problem in regard to forward secrecy (I’m not sure I’m using the term right here, but I suppose you get the idea)? If your keys would leak, you are then stuck with a lot of private data leaked without any way how to pull them back.
Not every log needs that kind of security and a chain does not need to be public. You download blocks from peers and do your own accounting.
Nothing is preventing you from only giving access to your chain to a trusted circle of peers.
Something you could do is encrypt your logs and push them to a chain shared by a number of peers who do they same with their own keys. Now you have a pool of accountability buddies, because if someone tries to tamper with the logs, you all hang together.
If you’re doing some spooky stuff and need to prove a high degree of integrity is you could push encrypted logs to a chain. The auditor then can appoint several independent parties whose only job it is to continuously prove the integrity of your logs. After that is proven you can release your keys to the auditor who can inspect your logs knowing that they have been complete and untampered during the audit period.
Again I understand it’s not the most efficient system, but there are less efficient and less flexible systems out there in enterprise land haha
I’m not really well versed in how private blockchains work, but wouldn’t that mean that you also have to mine it yourself (or create your own private mining network), thus making the 50% problem a lot more prominent?
Let’s say a country mandates their Telecom sector to audit it’s transactions. The idea would be to share the network with several peers, your telecoms. In this case “mining” would be verifying the integrity if the chain and can be done by anyone of the peers. The government or auditing authority could also be a peer in the network and they are all capable of verifying the integrity of the chain through “mining”. You are right that it’s easier to have a small group of peers conspire to manipulate the chain. But it’s a lot harder for several telecoms to conspire than for one rogue CFO to cook the books.
In this application you’re not generating ‘valuable’ tokens in the sense bitcoin does it, but the value is the integrity of the chain. People value the proof that no one has redacted or injected any transactions.
The audit logging sounds interesting. If you combine it with some kind of encryption, then I can imagine it working pretty well. Aside from the logistical problems/gas cost, that is.
There is no incentive for adding the friction of gas or PoW for these types of systems.
The parties involved can have a shared log and private keys for signing entries. Party A provides a thing and Party B signs an entry that says they were provided with the thing. Party A can wait for that signed entry before releasing the goods, etc. The problem with block chain to track physical stuff is that that handoffs are not instantaneous, so there’s always lag between the real state of the world and what the log says. In practice, this may be a few seconds, and a human might wait for confirmation before physically granting access to a recipient.
To put it another way, the party that is signing is not incentivized to forge that they have received an object from someone else, as that is effectively the fulfillment of the obligation. They’re only going to sign an entry if they get the object.
Yeah it’s not ideal, but you only need to pay the gas cost when you need to prove integrity and that’s alot cheaper than having to constantly be in sync with the world.