- wrap libsnark tool for ourchain call function
sudo apt-get update
sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.8-dev libdb4.8++-dev
sudo apt-get install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev
sudo apt-get install git
git clone -b test_version https://bitbucket.org/lab408/ourchain-release.git /tmp/ourchain
cd /tmp/ourchain/
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
sudo apt-get install build-essential cmake git libgmp3-dev libprocps4-dev python-markdown libboost-all-dev libssl-dev
cd /tmp/ourchain/src
git clone https://github.com/strongshih/zk-tool.git
cd zk-tool/
git submodule update --init --force --remote --recursive
mkdir build && cd build/
cmake ..
make
-
replace
ourcontract.h
andlibourcontract.c
with files underlib
(just add addtional implementation for user to call)cp /tmp/ourchain/src/zk-tool/lib/ourcontract.h /tmp/ourchain/src/contract/ cp /tmp/ourchain/src/zk-tool/lib/libourcontract.c /tmp/ourchain/src/contract/
-
recompile ourchain
cd /tmp/ourchain make sudo make install sudo ldconfig
-
compile and prepare
cd /tmp/ourchain/src/zk-tool ourcontract-mkdll contracts_example test export OURZKLIB=/tmp/ourchain/src/zk-tool/build/src/libourzklib.so ourcontract-rt contracts_example test
-
call stack
ourcontract-rt contracts_example test | V main in ourcontract-rt.c | V start_runtime in libourcontract.c | V call_contract in libourcontract.c | V contract_main in contracts_example/test/code.so using dlsym | V // (1) develop function call for contract test_libsnark in libourcontract.c | V // (2) using dynamic library to call c++ code in libsnark and provide function simultaneously test_libsnark in zk-tool/src/test/test_libsnark.cpp (by using path to OURZKLIB) | V using any libsnark libraries
-
(1)
and(2)
are where we develop function call for user -
check out files under
ourchain/src/zk-tool/src
- only add function into
ourcontract.h
andlibourcontract.c
, and add addtional folderzk-tool
underourchain/src