diff --git a/libs/aarch64-linux-android/librln.a b/libs/aarch64-linux-android/librln.a new file mode 100644 index 0000000..92e697c Binary files /dev/null and b/libs/aarch64-linux-android/librln.a differ diff --git a/libs/aarch64-unknown-linux-gnu/librln.a b/libs/aarch64-unknown-linux-gnu/librln.a index 25f7af3..ad234a1 100644 Binary files a/libs/aarch64-unknown-linux-gnu/librln.a and b/libs/aarch64-unknown-linux-gnu/librln.a differ diff --git a/libs/arm-unknown-linux-gnueabi/librln.a b/libs/arm-unknown-linux-gnueabi/librln.a new file mode 100644 index 0000000..fd502c5 Binary files /dev/null and b/libs/arm-unknown-linux-gnueabi/librln.a differ diff --git a/libs/arm-unknown-linux-gnueabihf/librln.a b/libs/arm-unknown-linux-gnueabihf/librln.a new file mode 100644 index 0000000..2bb803b Binary files /dev/null and b/libs/arm-unknown-linux-gnueabihf/librln.a differ diff --git a/libs/armv7-linux-androideabi/librln.a b/libs/armv7-linux-androideabi/librln.a index 5f8ec47..2499281 100644 Binary files a/libs/armv7-linux-androideabi/librln.a and b/libs/armv7-linux-androideabi/librln.a differ diff --git a/rln/librln.h b/rln/librln.h index b7c6a71..60e4545 100644 --- a/rln/librln.h +++ b/rln/librln.h @@ -45,6 +45,11 @@ bool set_leaves_from(struct RLN *ctx, uintptr_t index, const struct Buffer *inpu bool init_tree_with_leaves(struct RLN *ctx, const struct Buffer *input_buffer); +bool atomic_operation(struct RLN *ctx, + uintptr_t index, + const struct Buffer *leaves_buffer, + const struct Buffer *indices_buffer); + bool get_root(const struct RLN *ctx, struct Buffer *output_buffer); bool get_proof(const struct RLN *ctx, uintptr_t index, struct Buffer *output_buffer); diff --git a/rln/wrapper.go b/rln/wrapper.go index 1a5e336..0d6c153 100644 --- a/rln/wrapper.go +++ b/rln/wrapper.go @@ -132,6 +132,12 @@ func (r *RLN) SetLeavesFrom(index uint, idcommitments []byte) bool { return bool(C.set_leaves_from(r.ptr, C.uintptr_t(index), idCommBuffer)) } +func (r *RLN) AtomicOperation(index uint, leaves []byte, indices []byte) bool { + leavesBuffer := toCBufferPtr(leaves) + indicesBuffer := toCBufferPtr(indices) + return bool(C.atomic_operation(r.ptr, C.uintptr_t(index), leavesBuffer, indicesBuffer)) +} + func (r *RLN) DeleteLeaf(index uint) bool { return bool(C.delete_leaf(r.ptr, C.uintptr_t(index))) } diff --git a/scripts/build.sh b/scripts/build.sh index 02abf19..a2a2259 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -4,26 +4,26 @@ export RUSTFLAGS="-Ccodegen-units=1" rustup default stable -cargo install cross --git https://github.com/cross-rs/cross --branch main +cargo install cross -pushd zerokit/rln +platforms=( +'aarch64-unknown-linux-gnu' +'armv7-linux-androideabi' +'arm-unknown-linux-gnueabi' +'arm-unknown-linux-gnueabihf' +'aarch64-linux-android' +) -cargo clean - -cross build --release --lib --target=aarch64-unknown-linux-gnu -cross build --release --lib --target=armv7-linux-androideabi -#cross build --release --lib --target=arm-unknown-linux-gnueabi -#cross build --release --lib --target=arm-unknown-linux-gnueabihf -#cross build --release --lib --target=aarch64-linux-android - -popd - -DIRECTORY=./libs -TOOLS_DIR=`dirname $0` -COMPILE_DIR=${TOOLS_DIR}/../zerokit/target -for platform in `ls ${COMPILE_DIR} | grep -v release | grep -v debug | grep -v CACHEDIR.TAG` +for platform in ${platforms[*]} do - PLATFORM_DIR=${DIRECTORY}/$platform - mkdir -p ${PLATFORM_DIR} - cp ${COMPILE_DIR}/$platform/release/librln.a ${PLATFORM_DIR} + mkdir -p ./libs/${platform} + pushd zerokit/rln + cargo clean + cross build --release --lib --target=${platform} + cp ../target/${platform}/release/librln.a ../../libs/${platform}/. + popd done + + + + diff --git a/zerokit b/zerokit index 2e868d6..c2d386c 160000 --- a/zerokit +++ b/zerokit @@ -1 +1 @@ -Subproject commit 2e868d6cbf68ee0f87975a89a25aa0333971d398 +Subproject commit c2d386cb749f551541bb34c4386a3849485356f9