From f7970f82dd03e9b01b8e54ee2b77f6d09e97738c Mon Sep 17 00:00:00 2001 From: tiero <3596602+tiero@users.noreply.github.com> Date: Thu, 6 Mar 2025 03:12:33 +0100 Subject: [PATCH] feat: add elements opcodes Signed-off-by: tiero <3596602+tiero@users.noreply.github.com> --- Cargo.toml | 11 +- docs/interpreter.cpp | 3502 ++++++++++++++++++++++++++++++++ docs/interpreter.md | 191 ++ docs/opcodes.md | 146 ++ examples/bare.json | 2 +- examples/compile_all.rs | 1 + examples/extra_opcodes.json | 322 +++ examples/extra_opcodes.tap | 111 + examples/fuji_safe.json | 4 +- examples/fuji_safe.tap | 6 +- examples/htlc.json | 2 +- examples/interpreter_demo.rs | 88 + src/compiler/mod.rs | 282 ++- src/compiler/opcodes.rs | 281 +++ src/interpreter/mod.rs | 691 +++++++ src/lib.rs | 30 + src/models/mod.rs | 4 + src/models/opcodes.rs | 261 +++ src/parser/debug.rs | 3 +- src/parser/elements_opcodes.rs | 286 +++ src/parser/grammar.pest | 157 +- src/parser/mod.rs | 22 +- tapscript_opcodes.md | 86 - 23 files changed, 6340 insertions(+), 149 deletions(-) create mode 100644 docs/interpreter.cpp create mode 100644 docs/interpreter.md create mode 100644 docs/opcodes.md create mode 100644 examples/extra_opcodes.json create mode 100644 examples/extra_opcodes.tap create mode 100644 examples/interpreter_demo.rs create mode 100644 src/compiler/opcodes.rs create mode 100644 src/interpreter/mod.rs create mode 100644 src/models/opcodes.rs create mode 100644 src/parser/elements_opcodes.rs delete mode 100644 tapscript_opcodes.md diff --git a/Cargo.toml b/Cargo.toml index 7756ac5..562f131 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ serde = { version = "1.0.197", features = ["derive"] } serde_json = "1.0.114" clap = { version = "4.5.3", features = ["derive"] } chrono = "0.4.34" +hex = "0.4.3" [dev-dependencies] tempfile = "3.10.1" @@ -21,4 +22,12 @@ predicates = "3.1.0" [[bin]] name = "tapc" -path = "src/main.rs" \ No newline at end of file +path = "src/main.rs" + +[[example]] +name = "compile_all" +path = "examples/compile_all.rs" + +[[example]] +name = "interpreter_demo" +path = "examples/interpreter_demo.rs" \ No newline at end of file diff --git a/docs/interpreter.cpp b/docs/interpreter.cpp new file mode 100644 index 0000000..81b7288 --- /dev/null +++ b/docs/interpreter.cpp @@ -0,0 +1,3502 @@ +// Copyright (c) 2009-2010 Satoshi Nakamoto +// Copyright (c) 2009-2021 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include