Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One limitation of Bitcoin script is that it's not turing complete. But there are sidechains like rsk with defi apps like sovryn that bring smart contracts and defi to BTC.


Bitcoin is deliberately and wisely not Turing complete. That gives a lot of power and mischief-making ability to anonymous entities in an adversarial environment.

It's partly why Bitcoin is 5x Ethereum's market cap, despite technically being less capable. It's less capable of losing money, of DAO attacks, or other serious failures too.


Bitcoin is five times the price of Etherium because it was the first cryptocurrency and everyone knows its name. It has nothing to do with the technical abilities of either.


I generally agree with this. But Ethereum is "less finished" than Bitcoin. I feel like this situation might be different in a year or two once ETH2 is fully rolled out. Right now, ETH is a bit more risky. There's no doubt that more economic activity is happening on the ETH chain, though


It'll take longer than a year or two for something as complex as ETH2 to mature to a point where it can be considered as finished as Bitcoin.


Turing completeness is an anti feature in financial system like bitcoin. And pretty much zero contracts currently deployed to ethereum require Turing completeness. It’s just a buzzword to sell you this gigantic pre-mine scam.


I can't think of a single Ethereum dapp that could be implemented without an expressive scripting language.


Well, you’re misguided. It’s not the language, it’s platform features like kv store attached to blockchain that make these dapps possible to implement. And none of them require Turing completeness.


They may not require turing completeness in the strictest sense, but they do require branching logic and loops.


Branching and looping are constructs that you can have in non-Turing complete language with some limitations that don’t matter in practice for the purpose of ethereum or bitcoin scripts.


a non-turing complete language can still be useful and "expressive" in a loose sense.

SPARK[0] isn't Turing complete but it's still pretty useful, and likely a better language than Solidity.

[0] https://en.wikipedia.org/wiki/SPARK_(programming_language)


I'm not an expert in Computer Theory but other people proved Bitcoin and Bitcoin Script are Turing Complete:

[1] https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3160279

[2] https://coingeek.com/bitcoin-script-is-turing-complete-scryp...

[3] https://www.youtube.com/watch?v=M6j-11H2O7c


These are deliberate redefinitions of the term "Turing complete". The reasonable interpretation is that evaluating a single block can involve an arbitrary computation (if given enough gas). Ethereum has this property, Bitcoin doesn't.

These redefinitions say that you can take a few computation steps per Bitcoin block and save their state such that a later block can take a few more steps, so over time, very slowly, spread out over many blocks, Bitcoin can also implement an arbitrary computation. This is theoretically cute but otherwise useless.


Ethereum blocks have a gas limit so it wouldn't be Turing complete under your definition either.


The universe is finite so no Turing complete computing devices can ever exist.

Ethereum has a Turing complete language that is only limited in practice by external constraints like the gas limit. Bitcoin doesn't have such a language.


The EVM is TC in that you cannot determine if a snippet of code will halt, given sufficient gas. EVM code is undecidable, whereas Bitcoin script is not.


Craig Wright is a moron and a fraud.


That's not a limitation. There is absolutely no reason to have a Turing-complete language in bitcoin.

This can even be proved from first principles: bitcoin, and blockchains generally exist to validate the execution of contracts which have already occurred in meat-space. Basically you and I agree to conditions under which some money is transferred from me to you and vice-versa, which is the actual contract, then write a program (the "smart" contract) which validates that those rules were faithfully executed. It can be shown though that any Turing-complete contract rules can be validated using a non-Turing-complete language like Bitcoin script (ignoring runtime limits). The block chain doesn't need to run every contract, it just needs to validate that every contract ran correctly. A different problem, for which Turing completeness is not required.

Edit: For the down-voters, show me a Turing-complete contract that can't have its execution trace validated in a non-Turing complete language. In the 10 years I've been in this space I've yet to encounter a single one.




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

Search: