Hi, I've been down a bit of a rabbit hole this morning. I'm trying to use the confidential.unblindOutput function but getting an error in my browser console:
liquidjs-lib.js:2628 Uncaught (in promise) ReferenceError: tempDouble is not defined
at Object.setValue (liquidjs-lib.js:2628)
at Object.rewind (liquidjs-lib.js:4583)
at Object.unblindOutput (liquidjs-lib.js:8969)
at unblind (wallet.js:73)
I think it may be related to this issue: emscripten-core/emscripten#8774
Possibly I'm just noticing this because I've bundled liquidjs-lib with rollup to use as an ES module and I guess that makes it run in strict mode.
I noticed the docker image FROM apiaryio/emcc:latest that's used to compile the secp lib into wasm is a few years old so I tried switching to the newer official image emscripten/emsdk but then got some errors when running the compile step:
emcc: warning: linking a library with `-shared` will emit a static object file. This is a form of emulation to support existing build systems. If you want to build a runti
me shared library use the SIDE_MODULE setting. [-Wemcc]
emcc: warning: ignoring unsupported linker flag: `-soname` [-Wlinkflags]
CCLD bench_verify
CCLD bench_sign
CCLD bench_generator
CCLD bench_ecdh
CCLD bench_rangeproof
wasm-ld: error: duplicate symbol: secp256k1_context_preallocated_size
emcc: warning: ignoring unsupported linker flag: `-soname` [-Wlinkflags]
CCLD bench_verify
CCLD bench_sign
CCLD bench_generator
CCLD bench_ecdh
CCLD bench_rangeproof
wasm-ld: error: duplicate symbol: secp256k1_context_preallocated_size
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_preallocated_clone_size
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_preallocated_create
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_create
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_preallocated_clone
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_clone
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_preallocated_destroy
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_no_precomp
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_clone
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_preallocated_destroy
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_no_precomp
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_destroy
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_set_illegal_callback
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_context_set_error_callback
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_scratch_space_create
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_scratch_space_destroy
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_ec_pubkey_parse
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_ecdsa_signature_parse_der
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_ecdsa_signature_parse_compact
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_ecdsa_signature_serialize_der
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_ecdsa_signature_serialize_compact
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: duplicate symbol: secp256k1_ecdsa_signature_normalize
>>> defined in secp256k1-zkp/.libs/libsecp256k1.a(libsecp256k1_la-secp256k1.o)
>>> defined in secp256k1-zkp/src/libsecp256k1_la-secp256k1.o
wasm-ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
emcc: error: '/emsdk/upstream/bin/wasm-ld -o ./dist/secp256k1-zkp.wasm -Lsecp256k1-zkp/.libs secp256k1-zkp/.libs/libsecp256k1.a /tmp/emscripten_temp_y56aozys/main_0.o secp256k1-zkp/src/libsecp256k1_la-secp256k1.o -L/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libgl.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libal.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libhtml5.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libc.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libcompiler_rt.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libc++-noexcept.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libc++abi-noexcept.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libdlmalloc.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libc_rt_wasm.a /emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libsockets.a -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --lto-legacy-pass-manager --allow-undefined --strip-debug --export free --export malloc --export ecdh --export generator_generate_blinded --export generator_parse --export generator_serialize --export pedersen_blind_generator_blind_sum --export pedersen_commitment_parse --export pedersen_commitment_serialize --export pedersen_commit --export pedersen_blind_sum --export pedersen_verify_tally --export rangeproof_sign --export rangeproof_info --export rangeproof_verify --export rangeproof_rewind --export surjectionproof_parse --export surjectionproof_serialize --export surjectionproof_initialize --export surjectionproof_generate --export surjectionproof_verify --export stackSave --export stackRestore --export stackAlloc --export __wasm_call_ctors --export __errno_location --export-table --export __start_em_asm --export __stop_em_asm -z stack-size=5242880 --initial-memory=16777216 --no-entry --max-memory=16777216 --global-base=1024' failed (1)
Error: No such container:path: linux-build:/build/dist/secp256k1-zkp.js
linux-build
linux-build
Anyone with more familiarity with emcc have suggestions or willing to take a crack at this?
Hi, I've been down a bit of a rabbit hole this morning. I'm trying to use the confidential.unblindOutput function but getting an error in my browser console:
I think it may be related to this issue: emscripten-core/emscripten#8774
Possibly I'm just noticing this because I've bundled liquidjs-lib with rollup to use as an ES module and I guess that makes it run in strict mode.
I noticed the docker image
FROM apiaryio/emcc:latestthat's used to compile the secp lib into wasm is a few years old so I tried switching to the newer official imageemscripten/emsdkbut then got some errors when running the compile step:Anyone with more familiarity with emcc have suggestions or willing to take a crack at this?