Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Dutch governments builds alternative for Microsoft based on NixOS (dawo.community)
    343comments
  2. Platform-Independent SIMD in Go (go.dev)
    21comments
  3. Git-bug: Distributed, offline-first bug tracker embedded in Git (github.com/git-bug)
    20comments
  4. Allow Carriers on Planes (jefftk.com)
    1comments
  5. Pentium II at 600Mhz with Voodoo 3 Emulated on 86Box with M6 Mac Mini (nyaa.sh)
    63comments
  6. Ink and Switch Interactive Homepage (inkandswitch.com)
    15comments
  7. Topcoat is pushing the boundary of server applications with Rust (tokio.rs)
    41comments
  8. F-Droid 2.0 (f-droid.org)
    383comments
  9. ASML says it sold 'absolutely nothing' in Europe in 2026 (tomshardware.com)
    14comments
  10. Boards of Casio (ambionix.com)
    8comments
  11. CVE-2025-13032: Entering and Breaking the Avast Antivirus Sandbox Part 2 (safateam.com)
    18comments
  12. Show HN: Make cursed fonts like Times New Bastard (mitpit.com)
    102comments
  13. I'm Tired of Being on the Network (matduggan.com)
    77comments
  14. Amiga Screens: A Primer (datagubbe.se)
    9comments
  15. Nobody Asked for a Crab Chair (newmobility.com)
    27comments
  16. Show HN: Whiteboard (YC W26) – An open-source IDE for thoughtful software design (github.com/devdotfast)
    125comments
  17. The Test (tante.cc)
    5comments
  18. Special Projects (2016) (openai.com)
    27comments
  19. Why is the liver so weirdly regenerative? (dynomight.substack.com)
    239comments
  20. 2DWillNeverDie (2dwillneverdie.com)
    69comments
  21. What About Rails? (jardo.dev)
    84comments
  22. Oracle on the hook to pay data centre investors even if site has no electricity (ft.com)
    82comments
  23. Rails World 2026 Opening Keynote [video] (youtube.com)
    404comments
  24. Show HN: Agentic CUDA Kernel Optimizer (github.com/bertaye)
    4comments
  25. Fearless SIMD v1.0 (linebender.org)
    44comments
  26. Toyota is taking the Corolla electric (electrek.co)
    664comments
  27. My weird new hobby: Wandering around Tokyo on Google Maps (ahmedhossamdev.com)
    165comments
  28. Opus 5.5 is good at explainer videos (launchvideo.io)
    176comments
  29. The Mafia may be keeping fentanyl out of Italy (economist.com)
    172comments
  30. Using LLMs to trace alchemical knowledge and decode 17th century letters (resobscura.substack.com)
    32comments

Why Turing-complete smart contracts are doomed

2 pointsby 10y agoreddit.com
2 comments
10y agoHN ↗

This article overstates the problem quite a bit by saying, for example, "Only non-Turing-complete languages support formal reasoning and verification".

The point of Turing's result and related theorems is not that you can't reason formally about programs, or understand or predict what they do, or prove that they are correct. It's that no automated method is powerful enough to decide nontrivial properties for every program; there are always programs for which the decision procedure will either say it doesn't know, or be wrong (or the decision procedure will take an infinite amount of time).

However, there are automated methods that can decide nontrivial properties for many programs, and the existence of programs where a given property can't be decided doesn't mean that the answers, when they exist, have to be wrong.

We do have specific programs in Turing-complete languages whose behavior or whose correctness to a specification is proven, and formal methods that can be applicable to them.

I think the article's conclusion might still be right, though: having environments where you can't always determine correctness may be playing with fire, so it may be a better choice to avoid that kind of risk entirely. But that doesn't mean that, given a program, we're always going to be completely in the dark about what the program does!

10y agoHN ↗

A thing that you could do for smart contracts is have formal-methods analyzers that check properties that you care about in the contract. The analyzer can say, of a particular contract, "good", "bad", or "don't know". Then you can avoid (or even somehow ban?) contracts that get "bad" or "don't know".

Or, you could simplify things by having "bad" and "don't know" be in the same bucket! You could call it "can't be proven safe". Because of the halting problem issue, some safe contracts will always end up "can't be proven safe", but if the analyzer is good enough to allow for quite a lot of flexibility in the contracts, you can say that writing something that can't be proven safe is the contract author's fault or responsibility.

Then you can say that you will only use contracts that can be proven safe. There's no contradiction between this and Turing completeness or the halting problem, and there's no inherent reason to think that these contracts will be rare or hard to find. You do have to be careful about what particular properties you're checking for in your definition of "safety", though!