Is there an online simulator that would allow me to step through, debug, or simulate the execution of a Bitcoin script?
9 Answers
I know of these two:
https://webbtc.com/scripthttp://www.cs.princeton.edu/~tongbinw/bitcoinIDE/build/editor.html- https://siminchen.github.io/bitcoinIDE/build/editor.html
- https://bitauth.com/ide/
The first one in particular I have found to be very useful.
-
The first one is more what I was imagining. The second one seems very useful, too. thank you– GeremiaJan 26, 2016 at 17:23
-
-
8
-
1
-
2bitcoinIDE can be now run from siminchen.github.io/bitcoinIDE/build/editor.html– Walter KJul 16, 2019 at 6:00
Highly recommend btcdeb by kallewoof. Among other things, you can step through scripts including verify signatures. It is written in c++ and compiles using autotools.
btcdeb
Bitcoin Script debugging utilities.
This is a set of tools used to debug or construct scripts for use in Bitcoin.
btcdeb> help
step Execute one instruction and iterate in the script.
rewind Go back in time one instruction.
stack Print stack content.
altstack Print altstack content.
vfexec Print vfexec content.
exec Execute command.
tf Transform a value using a given function.
print Print script.
help Show help information.
have a look at BitcoinIDE (on github.io, working as of Apr 2018)
p,s:
as @Samarth Hattangady mentioned, the source code can be found at this repo if you want to run it locally.
-
-
I don't think it knows what the transaction is, and what transaction you spend so it can't check the signature Sep 20, 2018 at 20:37
-
The UI is great, but basic script functionality seems broken, e.g.
OP_NOTIF
didn't work. Jan 16, 2021 at 19:38
I've been looking for a tool to experiment with bitcoin script for a while now, and I finally finished developing one myself.
BitAuth IDE is an open source project for designing advanced scripts for bitcoin and bitcoin-like cryptocurrencies. It’s both a learning sandbox and a tool for designing new kinds of wallets.
It includes a live-updating, interactive, line-by-line debugger, which visualizes that state of the stack over the entire execution of the program. There's also an entity and variable system for automatically generating private keys, public keys, and correct signatures across locking and unlocking scripts.
See here for a more detailed tour and a video walkthrough.
You can use the online demo of BitAuth IDE.
And the source is on GitHub.
I've also assembled a much longer Bitcoin Script Reading List, which you might find useful. It includes links to several more related tools and script testing environments.
The github repository for the first link posted by StephenM347 can be found here
If you want to run it locally, clone the repo and then,
cd
into/path/to/bitcoinIDE/build
Launch a server from here. This will launch a server on port 8000.
python -m SimpleHTTPServer 8000
From the browser, visit localhost:8000, and select the file
editor.html
-
1On playing with this a lot, there seem to be some bugs. I was trying to solve a pay to pubkey hash script, and it didn't seem able to load larger items onto the stack (the sig and pubkey, and they seemed to just get rounded off instead) and thus the OP_HASH160 function didn't give the desired results. Sep 30, 2017 at 10:31
I have a tool at http://www.bowmain.co.uk/BSV/ which may be use. Let me know what you think as I can make changes to it.
There is a "Script Playground": http://www.crmarsh.com/script-playground/
-
Yes, I saw that from the Bitcoin wiki page on Script, but it's a converter, not a debugger/simulator.– GeremiaJan 26, 2016 at 17:13
Online script IDE for Bitcoin and Liquid: https://scriptwiz.app/
-
Hi Burak, we're looking for long answers that explain why they're right. Link-only answers can quickly become obsolete when the page they link to stops serving the content, for example when it moves elsewhere or changes their internal structure. If this link does provide a tool that satisfies Geremia's request, please add more information to substantiate this.– Murch ♦Sep 15, 2021 at 11:23
Besides the Bitcoin Script editor you'll probably need an ECDSA generator.
Here's a simple online tool to create priv/pub key-pairs and sign with them using the Bitcoin Curve (secp256k1) https://kjur.github.io/jsrsasign/sample/sample-ecdsa.html