You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@resilientdb.apache.org by ju...@apache.org on 2024/08/31 13:45:14 UTC

(incubator-resilientdb) branch poc created (now e38815c5)

This is an automated email from the ASF dual-hosted git repository.

junchao pushed a change to branch poc
in repository https://gitbox.apache.org/repos/asf/incubator-resilientdb.git


      at e38815c5 add poc

This branch includes the following new commits:

     new e38815c5 add poc

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(incubator-resilientdb) 01/01: add poc

Posted by ju...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

junchao pushed a commit to branch poc
in repository https://gitbox.apache.org/repos/asf/incubator-resilientdb.git

commit e38815c5e8299205dab28163bd31d8c55913c318
Author: Ubuntu <ub...@ip-172-31-46-144.ec2.internal>
AuthorDate: Sat Aug 31 13:44:17 2024 +0000

    add poc
---
 BUILD.bazel                                        |   19 -
 CHANGELOG.md                                       |  160 --
 CNAME                                              |    1 -
 CODE_OF_CONDUCT.md                                 |   95 -
 DISCLAIMER-WIP                                     |   22 -
 Docker/Dockerfile                                  |   56 -
 Docker/Dockerfile_mac                              |   53 -
 INSTALL.sh                                         |   52 +-
 INSTALL/README.md                                  |   62 -
 INSTALL/bazel/install_bazel.sh                     |   27 -
 INSTALL/protobuf/install_protobuf.sh               |   20 -
 LICENSE                                            |  235 --
 LICENSE.md                                         |    5 +
 NOTICE                                             |    6 -
 README.md                                          |  362 +--
 WORKSPACE                                          |  170 +-
 api/BUILD                                          |   38 -
 api/README.md                                      |   66 -
 api/ip_address.config                              |    1 -
 api/kv_operation.py                                |   46 -
 api/pybind_kv_service.cpp                          |   66 -
 application/poc/BUILD                              |   41 +
 application/poc/pbft.config                        |    4 +
 .../poc/pbft_client.config                         |    0
 application/poc/pbft_client.cpp                    |   15 +
 application/poc/pbft_client.h                      |   15 +
 application/poc/pbft_client_main.cpp               |   21 +
 application/poc/pbft_server.cpp                    |   29 +
 application/poc/pow.config                         |    4 +
 application/poc/pow_server.cpp                     |   55 +
 application/poc/tools/feed_local.sh                |    1 +
 application/poc/tools/pow_cert/cert_1.cert         |    7 +
 application/poc/tools/pow_cert/cert_2.cert         |    7 +
 application/poc/tools/pow_cert/cert_3.cert         |    7 +
 application/poc/tools/pow_cert/cert_4.cert         |    6 +
 application/poc/tools/start_pbft_server.sh         |   17 +
 application/poc/tools/start_pow_server.sh          |   20 +
 application/utils/BUILD                            |   12 +
 application/utils/server_factory.cpp               |   32 +
 application/utils/server_factory.h                 |   21 +
 benchmark/pbft/BUILD                               |   45 +
 benchmark/pbft/benchmark_client.cpp                |   20 +
 benchmark/pbft/benchmark_client.h                  |   15 +
 benchmark/pbft/benchmark_client_main.cpp           |   29 +
 benchmark/pbft/benchmark_server.config             |    4 +
 benchmark/pbft/benchmark_server.cpp                |   30 +
 benchmark/pbft/benchmark_server_impl.cpp           |   19 +
 benchmark/pbft/benchmark_server_impl.h             |   23 +
 benchmark/pbft/kv_server_impl_test.cpp             |   62 +
 benchmark/pbft/local_benchark.sh                   |   14 +
 benchmark/pbft/proto/BUILD                         |   14 +
 benchmark/pbft/proto/benchmark.proto               |   11 +
 benchmark/pbft/start_benchmark_server.sh           |   16 +
 benchmark/poc/pow/BUILD                            |   10 +
 benchmark/poc/pow/benchmark_client.cpp             |   49 +
 benchmark/protocols/pbft/BUILD                     |   43 -
 benchmark/protocols/pbft/kv_server_performance.cpp |   81 -
 benchmark/protocols/pbft/kv_service_tools.cpp      |   51 -
 benchmark/protocols/poe/BUILD                      |   33 -
 benchmark/protocols/poe/kv_server_performance.cpp  |   83 -
 {platform/test/test_data => cert}/admin.key.pri    |    0
 {platform/test/test_data => cert}/admin.key.pub    |    0
 {scripts/deploy/data/cert => cert}/cert_1.cert     |  Bin
 {scripts/deploy/data/cert => cert}/cert_2.cert     |    0
 {scripts/deploy/data/cert => cert}/cert_3.cert     |    0
 {scripts/deploy/data/cert => cert}/cert_4.cert     |    0
 {scripts/deploy/data/cert => cert}/cert_5.cert     |    0
 {platform/test/test_data => cert}/cert_6.cert      |    0
 {platform/test/test_data => cert}/node1.key.pri    |    0
 {platform/test/test_data => cert}/node1.key.pub    |    0
 {platform/test/test_data => cert}/node2.key.pri    |    0
 {platform/test/test_data => cert}/node2.key.pub    |    0
 {platform/test/test_data => cert}/node3.key.pri    |  Bin
 {platform/test/test_data => cert}/node3.key.pub    |    0
 {platform/test/test_data => cert}/node4.key.pri    |  Bin
 {platform/test/test_data => cert}/node4.key.pub    |    0
 {platform/test/test_data => cert}/node5.key.pri    |    0
 {platform/test/test_data => cert}/node5.key.pub    |    0
 chain/state/BUILD                                  |   38 -
 chain/state/chain_state.cpp                        |   44 -
 chain/state/chain_state.h                          |   42 -
 chain/state/chain_state_test.cpp                   |   65 -
 chain/storage/BUILD                                |   67 -
 chain/storage/kv_storage_test.cpp                  |  226 --
 chain/storage/leveldb.cpp                          |  290 --
 chain/storage/leveldb.h                            |   81 -
 chain/storage/memory_db.cpp                        |  170 --
 chain/storage/memory_db.h                          |   88 -
 chain/storage/mock_storage.h                       |   56 -
 chain/storage/proto/BUILD                          |   44 -
 chain/storage/proto/kv.proto                       |   32 -
 chain/storage/proto/leveldb_config.proto           |   28 -
 chain/storage/setting/BUILD                        |   35 -
 chain/storage/storage.h                            |   60 -
 client/BUILD                                       |  112 +
 client/mock_resdb_client.h                         |   23 +
 client/mock_resdb_txn_client.h                     |   17 +
 client/resdb_client.cpp                            |  212 ++
 client/resdb_client.h                              |   89 +
 client/resdb_client_test.cpp                       |  195 ++
 client/resdb_state_client.cpp                      |   67 +
 client/resdb_state_client.h                        |   28 +
 client/resdb_state_client_test.cpp                 |  139 +
 client/resdb_txn_client.cpp                        |   97 +
 client/resdb_txn_client.h                          |   31 +
 client/resdb_txn_client_test.cpp                   |  140 +
 client/resdb_user_client.cpp                       |   73 +
 client/resdb_user_client.h                         |   44 +
 client/resdb_user_client_test.cpp                  |  141 +
 client1.config                                     |    2 +
 client2.config                                     |    2 +
 common/BUILD                                       |   47 -
 common/crypto/BUILD                                |  104 -
 common/crypto/hash.cpp                             |   48 -
 common/crypto/hash.h                               |   31 -
 common/crypto/hash_test.cpp                        |   50 -
 common/crypto/key_generator.cpp                    |  156 --
 common/crypto/key_generator.h                      |   31 -
 common/crypto/mock_signature_verifier.h            |   35 -
 common/crypto/signature_utils.cpp                  |  147 -
 common/crypto/signature_utils.h                    |   40 -
 common/crypto/signature_verifier.cpp               |  279 --
 common/crypto/signature_verifier.h                 |   83 -
 common/crypto/signature_verifier_interface.cpp     |   29 -
 common/crypto/signature_verifier_interface.h       |   37 -
 common/crypto/signature_verifier_test.cpp          |  160 --
 common/data_comm/BUILD                             |    8 +
 common/data_comm/data_comm.h                       |   18 +
 common/logging/BUILD                               |   26 +
 common/logging/logging.cpp                         |   55 +
 common/logging/logging.h                           |   26 +
 common/logging/logging_test.cpp                    |   68 +
 common/network/BUILD                               |   37 +
 common/network/mock_socket.h                       |   24 +
 common/network/network_utils.cpp                   |   31 +
 common/network/network_utils.h                     |   13 +
 common/network/network_utils_test.cpp              |   24 +
 common/network/socket.h                            |   32 +
 common/network/tcp_socket.cpp                      |  218 ++
 common/network/tcp_socket.h                        |   40 +
 common/network/tcp_socket_test.cpp                 |   75 +
 common/proto/BUILD                                 |   38 -
 common/proto/signature_info.proto                  |   80 -
 common/queue/BUILD                                 |   47 +
 common/queue/batch_queue.h                         |   67 +
 common/queue/batch_queue_test.cpp                  |   79 +
 common/queue/blocking_queue.h                      |   87 +
 common/queue/lock_free_queue.h                     |   58 +
 common/queue/lock_free_queue_test.cpp              |   31 +
 common/test/BUILD                                  |   43 -
 common/test/json_test.cpp                          |   55 -
 common/test/test.proto                             |   34 -
 common/test/test_macros.h                          |   33 -
 common/utils/BUILD                                 |   18 -
 common/utils/utils.cpp                             |   49 +-
 common/utils/utils.h                               |   23 +-
 config/BUILD                                       |   38 +
 config/resdb_config.cpp                            |  125 +
 config/resdb_config.h                              |  108 +
 config/resdb_config_test.cpp                       |  107 +
 config/resdb_config_utils.cpp                      |  119 +
 config/resdb_config_utils.h                        |   22 +
 config/resdb_poc_config.cpp                        |   55 +
 config/resdb_poc_config.h                          |   52 +
 crypto/BUILD                                       |   42 +
 crypto/key_generator.cpp                           |  109 +
 crypto/key_generator.h                             |   12 +
 crypto/mock_signature_verifier.h                   |   14 +
 crypto/signature_verifier.cpp                      |  301 ++
 crypto/signature_verifier.h                        |   60 +
 crypto/signature_verifier_test.cpp                 |  140 +
 database/BUILD                                     |   20 +
 database/leveldb/BUILD                             |    8 +
 database/leveldb/leveldb_sample.cpp                |   52 +
 database/rocksdb/BUILD                             |    8 +
 database/rocksdb/rocksdb_sample.cpp                |   91 +
 database/txn_memory_db.cpp                         |   25 +
 database/txn_memory_db.h                           |   23 +
 database/txn_memory_db_test.cpp                    |   46 +
 dev/.rat-excludes                                  |   19 -
 dev/check-license                                  |   86 -
 documents/doxygen/.gitignore                       |    2 -
 documents/doxygen/Doxyfile                         | 2780 -------------------
 documents/doxygen/DoxygenLayout.xml                |  256 --
 documents/doxygen/doxygen_html_style.css           |   20 -
 documents/doxygen/header                           |   60 -
 documents/doxygen/logo.png                         |  Bin 71672 -> 0 bytes
 documents/file/Nexres-1654906717062.json           | 2893 --------------------
 documents/file/prometheus.yml                      |   66 -
 documents/image/dashboard/import.png               |  Bin 11682 -> 0 bytes
 documents/image/dashboard/resolution.png           |  Bin 38037 -> 0 bytes
 documents/image/dashboard/target list.png          |  Bin 138486 -> 0 bytes
 documents/image/dashboard/target.png               |  Bin 40734 -> 0 bytes
 documents/image/dashboard/yml_config.png           |  Bin 61559 -> 0 bytes
 documents/image/dashboard/yml_interval.png         |  Bin 17770 -> 0 bytes
 entrypoint.sh                                      |   21 -
 example/BUILD                                      |   11 +
 .../kv_client_config.config                        |    0
 example/kv_config.config                           |    4 +
 example/kv_server_tools.cpp                        |   48 +
 example/start_kv_server.sh                         |   13 +
 execution/BUILD                                    |   63 +
 execution/mock_transaction_executor_impl.h         |   14 +
 execution/system_info.cpp                          |   52 +
 execution/system_info.h                            |   34 +
 execution/system_info_test.cpp                     |   56 +
 execution/transaction_executor.cpp                 |  148 +
 execution/transaction_executor.h                   |   62 +
 execution/transaction_executor_impl.cpp            |   10 +
 execution/transaction_executor_impl.h              |   14 +
 execution/transaction_executor_test.cpp            |  177 ++
 executor/common/BUILD                              |   44 -
 executor/common/custom_query.h                     |   36 -
 executor/common/mock_transaction_manager.h         |   43 -
 executor/common/transaction_manager.cpp            |   54 -
 executor/common/transaction_manager.h              |   56 -
 executor/contract/executor/BUILD                   |   45 -
 executor/contract/executor/contract_executor.cpp   |  121 -
 executor/contract/executor/contract_executor.h     |   50 -
 .../contract/executor/contract_executor_test.cpp   |  264 --
 executor/contract/executor/test_data/BUILD         |   19 -
 executor/contract/executor/test_data/contract.json |   19 -
 executor/contract/manager/BUILD                    |   71 -
 executor/contract/manager/address_manager.cpp      |   54 -
 executor/contract/manager/address_manager.h        |   47 -
 executor/contract/manager/address_manager_test.cpp |   51 -
 executor/contract/manager/contract_manager.cpp     |  148 -
 executor/contract/manager/contract_manager.h       |   60 -
 .../contract/manager/contract_manager_test.cpp     |  252 --
 executor/contract/manager/test_data/BUILD          |   19 -
 executor/contract/manager/test_data/contract.json  |   19 -
 executor/contract/manager/utils.h                  |   30 -
 executor/kv/BUILD                                  |   44 -
 executor/kv/kv_executor.cpp                        |  147 -
 executor/kv/kv_executor.h                          |   59 -
 executor/kv/kv_executor_test.cpp                   |  343 ---
 executor/utxo/executor/BUILD                       |   46 -
 executor/utxo/executor/utxo_executor.cpp           |   79 -
 executor/utxo/executor/utxo_executor.h             |   57 -
 executor/utxo/executor/utxo_executor_test.cpp      |   80 -
 executor/utxo/manager/BUILD                        |   82 -
 executor/utxo/manager/transaction.cpp              |  190 --
 executor/utxo/manager/transaction.h                |   56 -
 executor/utxo/manager/transaction_test.cpp         |  117 -
 executor/utxo/manager/tx_mempool.cpp               |  128 -
 executor/utxo/manager/tx_mempool.h                 |   55 -
 executor/utxo/manager/tx_mempool_test.cpp          |  196 --
 executor/utxo/manager/wallet.cpp                   |   38 -
 executor/utxo/manager/wallet.h                     |   41 -
 executor/utxo/manager/wallet_test.cpp              |   40 -
 feed.sh                                            |    4 +
 format.sh                                          |    2 +
 hooks/pre-push                                     |   15 +
 img/apache-incubator.png                           |  Bin 30207 -> 0 bytes
 img/apache-resdb.png                               |  Bin 98785 -> 0 bytes
 img/nexres.jpg                                     |  Bin 71181 -> 0 bytes
 img/nexres.pdf                                     |  Bin 35993 -> 0 bytes
 img/nexres.png                                     |  Bin 72738 -> 0 bytes
 img/resdb-v2.png                                   |  Bin 41784 -> 0 bytes
 img/resdb.png                                      |  Bin 36015 -> 0 bytes
 influxdb-cxx-0.5.1/.codecov.yml                    |   21 +
 influxdb-cxx-0.5.1/.gitignore                      |    2 +
 influxdb-cxx-0.5.1/.travis.yml                     |   42 +
 influxdb-cxx-0.5.1/CMakeCache.txt                  |  482 ++++
 .../CMakeFiles/3.16.3/CMakeCXXCompiler.cmake       |   88 +
 .../3.16.3/CMakeDetermineCompilerABI_CXX.bin       |  Bin 0 -> 16560 bytes
 .../CMakeFiles/3.16.3/CMakeSystem.cmake            |   15 +
 .../3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp    |  660 +++++
 .../CMakeFiles/3.16.3/CompilerIdCXX/a.out          |  Bin 0 -> 16720 bytes
 .../CMakeFiles/CMakeDirectoryInformation.cmake     |   16 +
 .../InfluxDB/InfluxDBTargets-relwithdebinfo.cmake  |   19 +
 .../lib/cmake/InfluxDB/InfluxDBTargets.cmake       |   95 +
 .../CMakeFiles/InfluxDB.dir/CXX.includecache       |  146 +
 .../CMakeFiles/InfluxDB.dir/DependInfo.cmake       |   30 +
 .../CMakeFiles/InfluxDB.dir/build.make             |  144 +
 .../CMakeFiles/InfluxDB.dir/cmake_clean.cmake      |   13 +
 .../CMakeFiles/InfluxDB.dir/depend.internal        |   28 +
 .../CMakeFiles/InfluxDB.dir/depend.make            |   28 +
 .../CMakeFiles/InfluxDB.dir/flags.make             |   10 +
 .../CMakeFiles/InfluxDB.dir/link.txt               |    1 +
 .../CMakeFiles/InfluxDB.dir/progress.make          |    6 +
 .../CMakeFiles/InfluxDB.dir/src/HTTP.cxx.o         |  Bin 0 -> 644968 bytes
 .../CMakeFiles/InfluxDB.dir/src/InfluxDB.cxx.o     |  Bin 0 -> 1112344 bytes
 .../InfluxDB.dir/src/InfluxDBFactory.cxx.o         |  Bin 0 -> 1800312 bytes
 .../CMakeFiles/InfluxDB.dir/src/Point.cxx.o        |  Bin 0 -> 775312 bytes
 influxdb-cxx-0.5.1/CMakeFiles/Makefile.cmake       |   56 +
 influxdb-cxx-0.5.1/CMakeFiles/Makefile2            |  106 +
 .../CMakeFiles/TargetDirectories.txt               |    7 +
 influxdb-cxx-0.5.1/CMakeFiles/cmake.check_cache    |    1 +
 influxdb-cxx-0.5.1/CMakeFiles/progress.marks       |    1 +
 influxdb-cxx-0.5.1/CMakeLists.txt                  |  202 ++
 influxdb-cxx-0.5.1/LICENSE                         |   21 +
 influxdb-cxx-0.5.1/Makefile                        |  318 +++
 influxdb-cxx-0.5.1/README.md                       |   88 +
 influxdb-cxx-0.5.1/cmake/FindCURL.cmake            |   67 +
 influxdb-cxx-0.5.1/cmake/InfluxDBConfig.cmake      |   39 +
 influxdb-cxx-0.5.1/cmake/InfluxDBConfig.cmake.in   |   15 +
 .../cmake/InfluxDBConfigVersion.cmake              |   37 +
 influxdb-cxx-0.5.1/cmake_install.cmake             |   98 +
 influxdb-cxx-0.5.1/include/InfluxDB.h              |   76 +
 influxdb-cxx-0.5.1/include/InfluxDBFactory.h       |   40 +
 influxdb-cxx-0.5.1/include/Point.h                 |   71 +
 influxdb-cxx-0.5.1/include/Transport.h             |   33 +
 influxdb-cxx-0.5.1/lib/libInfluxDB.so              |  Bin 0 -> 1809944 bytes
 influxdb-cxx-0.5.1/src/HTTP.cxx                    |  126 +
 influxdb-cxx-0.5.1/src/HTTP.h                      |   64 +
 influxdb-cxx-0.5.1/src/InfluxDB.cxx                |  128 +
 influxdb-cxx-0.5.1/src/InfluxDBException.h         |   24 +
 influxdb-cxx-0.5.1/src/InfluxDBFactory.cxx         |   78 +
 influxdb-cxx-0.5.1/src/Point.cxx                   |   89 +
 influxdb-cxx-0.5.1/src/UDP.cxx                     |   33 +
 influxdb-cxx-0.5.1/src/UDP.h                       |   47 +
 influxdb-cxx-0.5.1/src/UnixSocket.cxx              |   32 +
 influxdb-cxx-0.5.1/src/UnixSocket.h                |   45 +
 influxdb-cxx-0.5.1/src/UriParser.h                 |  101 +
 influxdb-cxx-0.5.1/test/benchmark.cxx              |   38 +
 influxdb-cxx-0.5.1/test/testFactory.cxx            |   28 +
 influxdb-cxx-0.5.1/test/testHttp.cxx               |   40 +
 influxdb-cxx-0.5.1/test/testPoint.cxx              |   66 +
 influxdb-cxx-0.5.1/test/testQuery.cxx              |   57 +
 influxdb-cxx-0.5.1/test/testUdp.cxx                |   34 +
 interface/common/BUILD                             |   74 -
 interface/common/mock_resdb_txn_accessor.h         |   37 -
 interface/common/resdb_state_accessor.cpp          |   59 -
 interface/common/resdb_state_accessor.h            |   47 -
 interface/common/resdb_state_accessor_test.cpp     |  106 -
 interface/common/resdb_txn_accessor.cpp            |  191 --
 interface/common/resdb_txn_accessor.h              |   54 -
 interface/common/resdb_txn_accessor_test.cpp       |  162 --
 interface/contract/BUILD                           |   32 -
 interface/contract/contract_client.cpp             |  121 -
 interface/contract/contract_client.h               |   47 -
 interface/kv/BUILD                                 |   29 -
 interface/kv/kv_client.cpp                         |  148 -
 interface/kv/kv_client.h                           |   66 -
 interface/rdbc/BUILD                               |   77 -
 interface/rdbc/mock_net_channel.h                  |   42 -
 interface/rdbc/mock_resdb_txn_accessor.h           |   37 -
 interface/rdbc/net_channel.cpp                     |  231 --
 interface/rdbc/net_channel.h                       |  109 -
 interface/rdbc/net_channel_test.cpp                |  214 --
 interface/rdbc/transaction_constructor.cpp         |   89 -
 interface/rdbc/transaction_constructor.h           |   51 -
 interface/rdbc/transaction_constructor_test.cpp    |  160 --
 interface/utxo/BUILD                               |   30 -
 interface/utxo/utxo_client.cpp                     |   98 -
 interface/utxo/utxo_client.h                       |   40 -
 kv_client/BUILD                                    |   11 +
 kv_client/resdb_kv_client.cpp                      |   33 +
 kv_client/resdb_kv_client.h                        |   16 +
 kv_server/BUILD                                    |   30 +
 kv_server/kv_server.cpp                            |   31 +
 kv_server/kv_server_executor.cpp                   |   43 +
 kv_server/kv_server_executor.h                     |   23 +
 kv_server/kv_server_executor_test.cpp              |   62 +
 monitoring/README.md                               |   53 -
 monitoring/prometheus/prometheus.yml               |   74 -
 oracle_script/.ready_result.py.swp                 |  Bin 0 -> 12288 bytes
 oracle_script/cert/cert_1.cert                     |    6 +
 oracle_script/cert/cert_10.cert                    |    7 +
 oracle_script/cert/cert_100.cert                   |    6 +
 oracle_script/cert/cert_101.cert                   |    7 +
 oracle_script/cert/cert_102.cert                   |    7 +
 oracle_script/cert/cert_103.cert                   |    6 +
 oracle_script/cert/cert_104.cert                   |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_105.cert                   |    6 +
 oracle_script/cert/cert_106.cert                   |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_107.cert                   |    7 +
 oracle_script/cert/cert_108.cert                   |    6 +
 oracle_script/cert/cert_109.cert                   |    7 +
 oracle_script/cert/cert_11.cert                    |    6 +
 oracle_script/cert/cert_110.cert                   |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_111.cert                   |    6 +
 oracle_script/cert/cert_112.cert                   |    6 +
 oracle_script/cert/cert_113.cert                   |    6 +
 oracle_script/cert/cert_114.cert                   |    6 +
 oracle_script/cert/cert_115.cert                   |    6 +
 oracle_script/cert/cert_116.cert                   |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_117.cert                   |    6 +
 oracle_script/cert/cert_118.cert                   |    6 +
 oracle_script/cert/cert_119.cert                   |    6 +
 oracle_script/cert/cert_12.cert                    |    6 +
 oracle_script/cert/cert_120.cert                   |    7 +
 oracle_script/cert/cert_121.cert                   |  Bin 0 -> 169 bytes
 oracle_script/cert/cert_122.cert                   |    6 +
 oracle_script/cert/cert_123.cert                   |    6 +
 oracle_script/cert/cert_13.cert                    |    6 +
 oracle_script/cert/cert_14.cert                    |    6 +
 oracle_script/cert/cert_15.cert                    |    6 +
 oracle_script/cert/cert_16.cert                    |    7 +
 oracle_script/cert/cert_17.cert                    |    6 +
 oracle_script/cert/cert_18.cert                    |    7 +
 oracle_script/cert/cert_19.cert                    |    6 +
 oracle_script/cert/cert_2.cert                     |    6 +
 oracle_script/cert/cert_20.cert                    |    6 +
 oracle_script/cert/cert_21.cert                    |    6 +
 oracle_script/cert/cert_22.cert                    |    6 +
 oracle_script/cert/cert_23.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_24.cert                    |    6 +
 oracle_script/cert/cert_25.cert                    |    6 +
 oracle_script/cert/cert_26.cert                    |    6 +
 oracle_script/cert/cert_27.cert                    |    6 +
 oracle_script/cert/cert_28.cert                    |    6 +
 oracle_script/cert/cert_29.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_3.cert                     |    6 +
 oracle_script/cert/cert_30.cert                    |    6 +
 oracle_script/cert/cert_31.cert                    |    7 +
 oracle_script/cert/cert_32.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_33.cert                    |    6 +
 oracle_script/cert/cert_34.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_35.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_36.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_37.cert                    |    8 +
 oracle_script/cert/cert_38.cert                    |    8 +
 oracle_script/cert/cert_39.cert                    |    6 +
 oracle_script/cert/cert_4.cert                     |    7 +
 oracle_script/cert/cert_40.cert                    |    6 +
 oracle_script/cert/cert_41.cert                    |    6 +
 oracle_script/cert/cert_42.cert                    |    6 +
 oracle_script/cert/cert_43.cert                    |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_44.cert                    |    6 +
 oracle_script/cert/cert_45.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_46.cert                    |    6 +
 oracle_script/cert/cert_47.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_48.cert                    |    6 +
 oracle_script/cert/cert_49.cert                    |    6 +
 oracle_script/cert/cert_5.cert                     |    7 +
 oracle_script/cert/cert_50.cert                    |    7 +
 oracle_script/cert/cert_51.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_52.cert                    |    8 +
 oracle_script/cert/cert_53.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_54.cert                    |    6 +
 oracle_script/cert/cert_55.cert                    |    6 +
 oracle_script/cert/cert_56.cert                    |    6 +
 oracle_script/cert/cert_57.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_58.cert                    |    6 +
 oracle_script/cert/cert_59.cert                    |    6 +
 oracle_script/cert/cert_6.cert                     |    6 +
 oracle_script/cert/cert_60.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_61.cert                    |    6 +
 oracle_script/cert/cert_62.cert                    |    6 +
 oracle_script/cert/cert_63.cert                    |    6 +
 oracle_script/cert/cert_64.cert                    |    6 +
 oracle_script/cert/cert_65.cert                    |    6 +
 oracle_script/cert/cert_66.cert                    |    6 +
 oracle_script/cert/cert_67.cert                    |    6 +
 oracle_script/cert/cert_68.cert                    |    6 +
 oracle_script/cert/cert_69.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_7.cert                     |    6 +
 oracle_script/cert/cert_70.cert                    |    6 +
 oracle_script/cert/cert_71.cert                    |    6 +
 oracle_script/cert/cert_72.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_73.cert                    |    6 +
 oracle_script/cert/cert_74.cert                    |    6 +
 oracle_script/cert/cert_75.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_76.cert                    |    7 +
 oracle_script/cert/cert_77.cert                    |    7 +
 oracle_script/cert/cert_78.cert                    |    7 +
 oracle_script/cert/cert_79.cert                    |    8 +
 oracle_script/cert/cert_8.cert                     |    7 +
 oracle_script/cert/cert_80.cert                    |  Bin 0 -> 172 bytes
 oracle_script/cert/cert_81.cert                    |    6 +
 oracle_script/cert/cert_82.cert                    |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_83.cert                    |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_84.cert                    |    6 +
 oracle_script/cert/cert_85.cert                    |    7 +
 oracle_script/cert/cert_86.cert                    |    6 +
 oracle_script/cert/cert_87.cert                    |    8 +
 oracle_script/cert/cert_88.cert                    |    8 +
 oracle_script/cert/cert_89.cert                    |    7 +
 oracle_script/cert/cert_9.cert                     |    6 +
 oracle_script/cert/cert_90.cert                    |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_91.cert                    |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_92.cert                    |    6 +
 oracle_script/cert/cert_93.cert                    |    6 +
 oracle_script/cert/cert_94.cert                    |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_95.cert                    |    7 +
 oracle_script/cert/cert_96.cert                    |    7 +
 oracle_script/cert/cert_97.cert                    |    6 +
 oracle_script/cert/cert_98.cert                    |  Bin 0 -> 171 bytes
 oracle_script/cert/cert_99.cert                    |    6 +
 oracle_script/cert/node_1.key.pri                  |    2 +
 oracle_script/cert/node_1.key.pub                  |    2 +
 oracle_script/cert/node_10.key.pri                 |    2 +
 oracle_script/cert/node_10.key.pub                 |    2 +
 oracle_script/cert/node_100.key.pri                |    2 +
 oracle_script/cert/node_100.key.pub                |    2 +
 oracle_script/cert/node_101.key.pri                |    2 +
 oracle_script/cert/node_101.key.pub                |    2 +
 oracle_script/cert/node_102.key.pri                |    2 +
 oracle_script/cert/node_102.key.pub                |    2 +
 oracle_script/cert/node_103.key.pri                |    2 +
 oracle_script/cert/node_103.key.pub                |    2 +
 oracle_script/cert/node_104.key.pri                |    2 +
 oracle_script/cert/node_104.key.pub                |    2 +
 oracle_script/cert/node_105.key.pri                |    2 +
 oracle_script/cert/node_105.key.pub                |    2 +
 oracle_script/cert/node_106.key.pri                |    2 +
 oracle_script/cert/node_106.key.pub                |    2 +
 oracle_script/cert/node_107.key.pri                |    2 +
 oracle_script/cert/node_107.key.pub                |    2 +
 oracle_script/cert/node_108.key.pri                |    2 +
 oracle_script/cert/node_108.key.pub                |    2 +
 oracle_script/cert/node_109.key.pri                |    2 +
 oracle_script/cert/node_109.key.pub                |    2 +
 oracle_script/cert/node_11.key.pri                 |    2 +
 oracle_script/cert/node_11.key.pub                 |    2 +
 oracle_script/cert/node_110.key.pri                |    2 +
 oracle_script/cert/node_110.key.pub                |    2 +
 oracle_script/cert/node_111.key.pri                |    2 +
 oracle_script/cert/node_111.key.pub                |    2 +
 oracle_script/cert/node_112.key.pri                |    2 +
 oracle_script/cert/node_112.key.pub                |    2 +
 oracle_script/cert/node_113.key.pri                |    2 +
 oracle_script/cert/node_113.key.pub                |    2 +
 oracle_script/cert/node_114.key.pri                |    2 +
 oracle_script/cert/node_114.key.pub                |    2 +
 oracle_script/cert/node_115.key.pri                |    2 +
 oracle_script/cert/node_115.key.pub                |    2 +
 oracle_script/cert/node_116.key.pri                |    2 +
 oracle_script/cert/node_116.key.pub                |    2 +
 oracle_script/cert/node_117.key.pri                |    2 +
 oracle_script/cert/node_117.key.pub                |    2 +
 oracle_script/cert/node_118.key.pri                |    2 +
 oracle_script/cert/node_118.key.pub                |    2 +
 oracle_script/cert/node_119.key.pri                |    2 +
 oracle_script/cert/node_119.key.pub                |    2 +
 oracle_script/cert/node_12.key.pri                 |    2 +
 oracle_script/cert/node_12.key.pub                 |    2 +
 oracle_script/cert/node_120.key.pri                |    2 +
 oracle_script/cert/node_120.key.pub                |    2 +
 oracle_script/cert/node_121.key.pri                |    2 +
 oracle_script/cert/node_121.key.pub                |    2 +
 oracle_script/cert/node_122.key.pri                |    2 +
 oracle_script/cert/node_122.key.pub                |    2 +
 oracle_script/cert/node_123.key.pri                |    2 +
 oracle_script/cert/node_123.key.pub                |    2 +
 oracle_script/cert/node_13.key.pri                 |    2 +
 oracle_script/cert/node_13.key.pub                 |    2 +
 oracle_script/cert/node_14.key.pri                 |    2 +
 oracle_script/cert/node_14.key.pub                 |    2 +
 oracle_script/cert/node_15.key.pri                 |    2 +
 oracle_script/cert/node_15.key.pub                 |    2 +
 oracle_script/cert/node_16.key.pri                 |    2 +
 oracle_script/cert/node_16.key.pub                 |    2 +
 oracle_script/cert/node_17.key.pri                 |    2 +
 oracle_script/cert/node_17.key.pub                 |    2 +
 oracle_script/cert/node_18.key.pri                 |    2 +
 oracle_script/cert/node_18.key.pub                 |    2 +
 oracle_script/cert/node_19.key.pri                 |    2 +
 oracle_script/cert/node_19.key.pub                 |    2 +
 oracle_script/cert/node_2.key.pri                  |    2 +
 oracle_script/cert/node_2.key.pub                  |    2 +
 oracle_script/cert/node_20.key.pri                 |    2 +
 oracle_script/cert/node_20.key.pub                 |    2 +
 oracle_script/cert/node_21.key.pri                 |    2 +
 oracle_script/cert/node_21.key.pub                 |    2 +
 oracle_script/cert/node_22.key.pri                 |    2 +
 oracle_script/cert/node_22.key.pub                 |    2 +
 oracle_script/cert/node_23.key.pri                 |    2 +
 oracle_script/cert/node_23.key.pub                 |    2 +
 oracle_script/cert/node_24.key.pri                 |    2 +
 oracle_script/cert/node_24.key.pub                 |    2 +
 oracle_script/cert/node_25.key.pri                 |    2 +
 oracle_script/cert/node_25.key.pub                 |    2 +
 oracle_script/cert/node_26.key.pri                 |    2 +
 oracle_script/cert/node_26.key.pub                 |    2 +
 oracle_script/cert/node_27.key.pri                 |    2 +
 oracle_script/cert/node_27.key.pub                 |    2 +
 oracle_script/cert/node_28.key.pri                 |    2 +
 oracle_script/cert/node_28.key.pub                 |    2 +
 oracle_script/cert/node_29.key.pri                 |    2 +
 oracle_script/cert/node_29.key.pub                 |    2 +
 oracle_script/cert/node_3.key.pri                  |    2 +
 oracle_script/cert/node_3.key.pub                  |    2 +
 oracle_script/cert/node_30.key.pri                 |    2 +
 oracle_script/cert/node_30.key.pub                 |    2 +
 oracle_script/cert/node_31.key.pri                 |    2 +
 oracle_script/cert/node_31.key.pub                 |    2 +
 oracle_script/cert/node_32.key.pri                 |    2 +
 oracle_script/cert/node_32.key.pub                 |    2 +
 oracle_script/cert/node_33.key.pri                 |    2 +
 oracle_script/cert/node_33.key.pub                 |    2 +
 oracle_script/cert/node_34.key.pri                 |    2 +
 oracle_script/cert/node_34.key.pub                 |    2 +
 oracle_script/cert/node_35.key.pri                 |    2 +
 oracle_script/cert/node_35.key.pub                 |    2 +
 oracle_script/cert/node_36.key.pri                 |    2 +
 oracle_script/cert/node_36.key.pub                 |    2 +
 oracle_script/cert/node_37.key.pri                 |    2 +
 oracle_script/cert/node_37.key.pub                 |    2 +
 oracle_script/cert/node_38.key.pri                 |    2 +
 oracle_script/cert/node_38.key.pub                 |    2 +
 oracle_script/cert/node_39.key.pri                 |    2 +
 oracle_script/cert/node_39.key.pub                 |    2 +
 oracle_script/cert/node_4.key.pri                  |    2 +
 oracle_script/cert/node_4.key.pub                  |    2 +
 oracle_script/cert/node_40.key.pri                 |    2 +
 oracle_script/cert/node_40.key.pub                 |    2 +
 oracle_script/cert/node_41.key.pri                 |    2 +
 oracle_script/cert/node_41.key.pub                 |    2 +
 oracle_script/cert/node_42.key.pri                 |    2 +
 oracle_script/cert/node_42.key.pub                 |    2 +
 oracle_script/cert/node_43.key.pri                 |    2 +
 oracle_script/cert/node_43.key.pub                 |    2 +
 oracle_script/cert/node_44.key.pri                 |    2 +
 oracle_script/cert/node_44.key.pub                 |    2 +
 oracle_script/cert/node_45.key.pri                 |    2 +
 oracle_script/cert/node_45.key.pub                 |    2 +
 oracle_script/cert/node_46.key.pri                 |    2 +
 oracle_script/cert/node_46.key.pub                 |    2 +
 oracle_script/cert/node_47.key.pri                 |    2 +
 oracle_script/cert/node_47.key.pub                 |    2 +
 oracle_script/cert/node_48.key.pri                 |    2 +
 oracle_script/cert/node_48.key.pub                 |    2 +
 oracle_script/cert/node_49.key.pri                 |    2 +
 oracle_script/cert/node_49.key.pub                 |    2 +
 oracle_script/cert/node_5.key.pri                  |    2 +
 oracle_script/cert/node_5.key.pub                  |    2 +
 oracle_script/cert/node_50.key.pri                 |    2 +
 oracle_script/cert/node_50.key.pub                 |    2 +
 oracle_script/cert/node_51.key.pri                 |    2 +
 oracle_script/cert/node_51.key.pub                 |    2 +
 oracle_script/cert/node_52.key.pri                 |    2 +
 oracle_script/cert/node_52.key.pub                 |    2 +
 oracle_script/cert/node_53.key.pri                 |    2 +
 oracle_script/cert/node_53.key.pub                 |    2 +
 oracle_script/cert/node_54.key.pri                 |    2 +
 oracle_script/cert/node_54.key.pub                 |    2 +
 oracle_script/cert/node_55.key.pri                 |    2 +
 oracle_script/cert/node_55.key.pub                 |    2 +
 oracle_script/cert/node_56.key.pri                 |    2 +
 oracle_script/cert/node_56.key.pub                 |    2 +
 oracle_script/cert/node_57.key.pri                 |    2 +
 oracle_script/cert/node_57.key.pub                 |    2 +
 oracle_script/cert/node_58.key.pri                 |    2 +
 oracle_script/cert/node_58.key.pub                 |    2 +
 oracle_script/cert/node_59.key.pri                 |    2 +
 oracle_script/cert/node_59.key.pub                 |    2 +
 oracle_script/cert/node_6.key.pri                  |    2 +
 oracle_script/cert/node_6.key.pub                  |    2 +
 oracle_script/cert/node_60.key.pri                 |    2 +
 oracle_script/cert/node_60.key.pub                 |    2 +
 oracle_script/cert/node_61.key.pri                 |    2 +
 oracle_script/cert/node_61.key.pub                 |    2 +
 oracle_script/cert/node_62.key.pri                 |    2 +
 oracle_script/cert/node_62.key.pub                 |    2 +
 oracle_script/cert/node_63.key.pri                 |    2 +
 oracle_script/cert/node_63.key.pub                 |    2 +
 oracle_script/cert/node_64.key.pri                 |    2 +
 oracle_script/cert/node_64.key.pub                 |    2 +
 oracle_script/cert/node_65.key.pri                 |    2 +
 oracle_script/cert/node_65.key.pub                 |    2 +
 oracle_script/cert/node_66.key.pri                 |    2 +
 oracle_script/cert/node_66.key.pub                 |    2 +
 oracle_script/cert/node_67.key.pri                 |    2 +
 oracle_script/cert/node_67.key.pub                 |    2 +
 oracle_script/cert/node_68.key.pri                 |    2 +
 oracle_script/cert/node_68.key.pub                 |    2 +
 oracle_script/cert/node_69.key.pri                 |    2 +
 oracle_script/cert/node_69.key.pub                 |    2 +
 oracle_script/cert/node_7.key.pri                  |    2 +
 oracle_script/cert/node_7.key.pub                  |    2 +
 oracle_script/cert/node_70.key.pri                 |    2 +
 oracle_script/cert/node_70.key.pub                 |    2 +
 oracle_script/cert/node_71.key.pri                 |    2 +
 oracle_script/cert/node_71.key.pub                 |    2 +
 oracle_script/cert/node_72.key.pri                 |    2 +
 oracle_script/cert/node_72.key.pub                 |    2 +
 oracle_script/cert/node_73.key.pri                 |    2 +
 oracle_script/cert/node_73.key.pub                 |    2 +
 oracle_script/cert/node_74.key.pri                 |    2 +
 oracle_script/cert/node_74.key.pub                 |    2 +
 oracle_script/cert/node_75.key.pri                 |    2 +
 oracle_script/cert/node_75.key.pub                 |    2 +
 oracle_script/cert/node_76.key.pri                 |    2 +
 oracle_script/cert/node_76.key.pub                 |    2 +
 oracle_script/cert/node_77.key.pri                 |    2 +
 oracle_script/cert/node_77.key.pub                 |    2 +
 oracle_script/cert/node_78.key.pri                 |    2 +
 oracle_script/cert/node_78.key.pub                 |    2 +
 oracle_script/cert/node_79.key.pri                 |    2 +
 oracle_script/cert/node_79.key.pub                 |    2 +
 oracle_script/cert/node_8.key.pri                  |    2 +
 oracle_script/cert/node_8.key.pub                  |    2 +
 oracle_script/cert/node_80.key.pri                 |    2 +
 oracle_script/cert/node_80.key.pub                 |    2 +
 oracle_script/cert/node_81.key.pri                 |    2 +
 oracle_script/cert/node_81.key.pub                 |    2 +
 oracle_script/cert/node_82.key.pri                 |    2 +
 oracle_script/cert/node_82.key.pub                 |    2 +
 oracle_script/cert/node_83.key.pri                 |    2 +
 oracle_script/cert/node_83.key.pub                 |    2 +
 oracle_script/cert/node_84.key.pri                 |    2 +
 oracle_script/cert/node_84.key.pub                 |    2 +
 oracle_script/cert/node_85.key.pri                 |    2 +
 oracle_script/cert/node_85.key.pub                 |    2 +
 oracle_script/cert/node_86.key.pri                 |    2 +
 oracle_script/cert/node_86.key.pub                 |    2 +
 oracle_script/cert/node_87.key.pri                 |    2 +
 oracle_script/cert/node_87.key.pub                 |    2 +
 oracle_script/cert/node_88.key.pri                 |    2 +
 oracle_script/cert/node_88.key.pub                 |    2 +
 oracle_script/cert/node_89.key.pri                 |    2 +
 oracle_script/cert/node_89.key.pub                 |    2 +
 oracle_script/cert/node_9.key.pri                  |    2 +
 oracle_script/cert/node_9.key.pub                  |    2 +
 oracle_script/cert/node_90.key.pri                 |    2 +
 oracle_script/cert/node_90.key.pub                 |    2 +
 oracle_script/cert/node_91.key.pri                 |    2 +
 oracle_script/cert/node_91.key.pub                 |    2 +
 oracle_script/cert/node_92.key.pri                 |    2 +
 oracle_script/cert/node_92.key.pub                 |    2 +
 oracle_script/cert/node_93.key.pri                 |    2 +
 oracle_script/cert/node_93.key.pub                 |    2 +
 oracle_script/cert/node_94.key.pri                 |    2 +
 oracle_script/cert/node_94.key.pub                 |    2 +
 oracle_script/cert/node_95.key.pri                 |    2 +
 oracle_script/cert/node_95.key.pub                 |    2 +
 oracle_script/cert/node_96.key.pri                 |    2 +
 oracle_script/cert/node_96.key.pub                 |    2 +
 oracle_script/cert/node_97.key.pri                 |    2 +
 oracle_script/cert/node_97.key.pub                 |    2 +
 oracle_script/cert/node_98.key.pri                 |    2 +
 oracle_script/cert/node_98.key.pub                 |    2 +
 oracle_script/cert/node_99.key.pri                 |    2 +
 oracle_script/cert/node_99.key.pub                 |    2 +
 oracle_script/cli_list.txt                         |    1 +
 oracle_script/comm/BUILD                           |   14 +
 oracle_script/comm/cli_list.txt                    |    1 +
 oracle_script/comm/comm_config.py                  |    1 +
 oracle_script/comm/iplist.txt                      |   33 +
 oracle_script/comm/svr_list.txt                    |   33 +
 oracle_script/comm/utils.py                        |   72 +
 oracle_script/generate_config.sh                   |   40 +
 oracle_script/generate_key.sh                      |    6 +
 oracle_script/iplist.txt                           |  120 +
 oracle_script/pbft/BUILD                           |   10 +
 oracle_script/pbft/benchmark.conf                  |   14 +
 oracle_script/pbft/benchmark_result.py             |   26 +
 oracle_script/pbft/cli_list.txt                    |    2 +
 oracle_script/pbft/iplist.txt                      |   65 +
 oracle_script/pbft/poc.conf                        |   13 +
 oracle_script/pbft/pow_server.config               |    4 +
 oracle_script/pbft/ready_result.py                 |   19 +
 oracle_script/pbft/rep_100/benchmark.conf          |   16 +
 oracle_script/pbft/rep_100/cert/cert_1.cert        |    6 +
 oracle_script/pbft/rep_100/cert/cert_10.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_100.cert      |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_101.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_102.cert      |    8 +
 oracle_script/pbft/rep_100/cert/cert_103.cert      |    8 +
 oracle_script/pbft/rep_100/cert/cert_104.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_105.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_106.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_107.cert      |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_108.cert      |    8 +
 oracle_script/pbft/rep_100/cert/cert_109.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_11.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_110.cert      |    6 +
 oracle_script/pbft/rep_100/cert/cert_111.cert      |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_112.cert      |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_113.cert      |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_114.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_115.cert      |    8 +
 oracle_script/pbft/rep_100/cert/cert_116.cert      |    8 +
 oracle_script/pbft/rep_100/cert/cert_117.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_118.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_119.cert      |    6 +
 oracle_script/pbft/rep_100/cert/cert_12.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_120.cert      |    6 +
 oracle_script/pbft/rep_100/cert/cert_121.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_122.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_123.cert      |    7 +
 oracle_script/pbft/rep_100/cert/cert_13.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_14.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_15.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_16.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_17.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_18.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_19.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_2.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_20.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_21.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_22.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_23.cert       |    9 +
 oracle_script/pbft/rep_100/cert/cert_24.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_25.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_26.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_27.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_28.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_29.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_3.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_30.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_31.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_32.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_33.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_34.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_35.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_36.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_37.cert       |    8 +
 oracle_script/pbft/rep_100/cert/cert_38.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_39.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_4.cert        |    7 +
 oracle_script/pbft/rep_100/cert/cert_40.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_41.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_42.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_43.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_44.cert       |    8 +
 oracle_script/pbft/rep_100/cert/cert_45.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_46.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_47.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_48.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_49.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_5.cert        |    7 +
 oracle_script/pbft/rep_100/cert/cert_50.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_51.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_52.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_53.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_54.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_55.cert       |    8 +
 oracle_script/pbft/rep_100/cert/cert_56.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_57.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_58.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_59.cert       |    8 +
 oracle_script/pbft/rep_100/cert/cert_6.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_60.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_61.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_62.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_63.cert       |    8 +
 oracle_script/pbft/rep_100/cert/cert_64.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_65.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_66.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_67.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_68.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_69.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_7.cert        |    7 +
 oracle_script/pbft/rep_100/cert/cert_70.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_71.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_72.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_73.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_74.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_75.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_76.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_77.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_78.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_79.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_8.cert        |    6 +
 oracle_script/pbft/rep_100/cert/cert_80.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_81.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_82.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_83.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_84.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_85.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_86.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_87.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_88.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_89.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_9.cert        |    8 +
 oracle_script/pbft/rep_100/cert/cert_90.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_91.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_92.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_100/cert/cert_93.cert       |    8 +
 oracle_script/pbft/rep_100/cert/cert_94.cert       |    6 +
 oracle_script/pbft/rep_100/cert/cert_95.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_96.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_97.cert       |    7 +
 oracle_script/pbft/rep_100/cert/cert_98.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_100/cert/cert_99.cert       |    7 +
 oracle_script/pbft/rep_100/cert/node_1.key.pri     |    2 +
 oracle_script/pbft/rep_100/cert/node_1.key.pub     |    2 +
 oracle_script/pbft/rep_100/cert/node_10.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_10.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_100.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_100.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_101.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_101.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_102.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_102.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_103.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_103.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_104.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_104.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_105.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_105.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_106.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_106.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_107.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_107.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_108.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_108.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_109.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_109.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_11.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_11.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_110.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_110.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_111.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_111.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_112.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_112.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_113.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_113.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_114.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_114.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_115.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_115.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_116.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_116.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_117.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_117.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_118.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_118.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_119.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_119.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_12.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_12.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_120.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_120.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_121.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_121.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_122.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_122.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_123.key.pri   |    2 +
 oracle_script/pbft/rep_100/cert/node_123.key.pub   |    2 +
 oracle_script/pbft/rep_100/cert/node_13.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_13.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_14.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_14.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_15.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_15.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_16.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_16.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_17.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_17.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_18.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_18.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_19.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_19.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_2.key.pri     |    2 +
 oracle_script/pbft/rep_100/cert/node_2.key.pub     |    2 +
 oracle_script/pbft/rep_100/cert/node_20.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_20.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_21.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_21.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_22.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_22.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_23.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_23.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_24.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_24.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_25.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_25.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_26.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_26.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_27.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_27.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_28.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_28.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_29.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_29.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_3.key.pri     |    2 +
 oracle_script/pbft/rep_100/cert/node_3.key.pub     |    2 +
 oracle_script/pbft/rep_100/cert/node_30.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_30.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_31.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_31.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_32.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_32.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_33.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_33.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_34.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_34.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_35.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_35.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_36.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_36.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_37.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_37.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_38.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_38.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_39.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_39.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_4.key.pri     |    2 +
 oracle_script/pbft/rep_100/cert/node_4.key.pub     |    2 +
 oracle_script/pbft/rep_100/cert/node_40.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_40.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_41.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_41.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_42.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_42.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_43.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_43.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_44.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_44.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_45.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_45.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_46.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_46.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_47.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_47.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_48.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_48.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_49.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_49.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_5.key.pri     |    2 +
 oracle_script/pbft/rep_100/cert/node_5.key.pub     |    2 +
 oracle_script/pbft/rep_100/cert/node_50.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_50.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_51.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_51.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_52.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_52.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_53.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_53.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_54.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_54.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_55.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_55.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_56.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_56.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_57.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_57.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_58.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_58.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_59.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_59.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_6.key.pri     |    2 +
 oracle_script/pbft/rep_100/cert/node_6.key.pub     |    2 +
 oracle_script/pbft/rep_100/cert/node_60.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_60.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_61.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_61.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_62.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_62.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_63.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_63.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_64.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_64.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_65.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_65.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_66.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_66.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_67.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_67.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_68.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_68.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_69.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_69.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_7.key.pri     |    2 +
 oracle_script/pbft/rep_100/cert/node_7.key.pub     |    2 +
 oracle_script/pbft/rep_100/cert/node_70.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_70.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_71.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_71.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_72.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_72.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_73.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_73.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_74.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_74.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_75.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_75.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_76.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_76.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_77.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_77.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_78.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_78.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_79.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_79.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_8.key.pri     |    2 +
 oracle_script/pbft/rep_100/cert/node_8.key.pub     |    2 +
 oracle_script/pbft/rep_100/cert/node_80.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_80.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_81.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_81.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_82.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_82.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_83.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_83.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_84.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_84.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_85.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_85.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_86.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_86.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_87.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_87.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_88.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_88.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_89.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_89.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_9.key.pri     |    2 +
 oracle_script/pbft/rep_100/cert/node_9.key.pub     |    2 +
 oracle_script/pbft/rep_100/cert/node_90.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_90.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_91.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_91.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_92.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_92.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_93.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_93.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_94.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_94.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_95.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_95.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_96.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_96.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_97.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_97.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_98.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_98.key.pub    |    2 +
 oracle_script/pbft/rep_100/cert/node_99.key.pri    |    2 +
 oracle_script/pbft/rep_100/cert/node_99.key.pub    |    2 +
 oracle_script/pbft/rep_100/cli_list.txt            |    2 +
 oracle_script/pbft/rep_100/client.config           |    1 +
 oracle_script/pbft/rep_100/iplist.txt              |  101 +
 oracle_script/pbft/rep_100/poc.conf                |    9 +
 oracle_script/pbft/rep_100/run_cli.sh              |    4 +
 oracle_script/pbft/rep_100/run_svr.sh              |    3 +
 oracle_script/pbft/rep_100/server.config           |  100 +
 oracle_script/pbft/rep_100/svr_list.txt            |  101 +
 oracle_script/pbft/rep_123/benchmark.conf          |   16 +
 oracle_script/pbft/rep_123/cert/cert_1.cert        |    6 +
 oracle_script/pbft/rep_123/cert/cert_10.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_100.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_101.cert      |    6 +
 oracle_script/pbft/rep_123/cert/cert_102.cert      |    8 +
 oracle_script/pbft/rep_123/cert/cert_103.cert      |    8 +
 oracle_script/pbft/rep_123/cert/cert_104.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_105.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_106.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_107.cert      |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_108.cert      |    8 +
 oracle_script/pbft/rep_123/cert/cert_109.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_11.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_110.cert      |    6 +
 oracle_script/pbft/rep_123/cert/cert_111.cert      |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_112.cert      |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_113.cert      |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_114.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_115.cert      |    8 +
 oracle_script/pbft/rep_123/cert/cert_116.cert      |    8 +
 oracle_script/pbft/rep_123/cert/cert_117.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_118.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_119.cert      |    6 +
 oracle_script/pbft/rep_123/cert/cert_12.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_120.cert      |    6 +
 oracle_script/pbft/rep_123/cert/cert_121.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_122.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_123.cert      |    7 +
 oracle_script/pbft/rep_123/cert/cert_13.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_14.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_15.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_16.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_17.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_18.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_19.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_2.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_20.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_21.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_22.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_23.cert       |    9 +
 oracle_script/pbft/rep_123/cert/cert_24.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_25.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_26.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_27.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_28.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_29.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_3.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_30.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_31.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_32.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_33.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_34.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_35.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_36.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_37.cert       |    8 +
 oracle_script/pbft/rep_123/cert/cert_38.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_39.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_4.cert        |    7 +
 oracle_script/pbft/rep_123/cert/cert_40.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_41.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_42.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_43.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_44.cert       |    8 +
 oracle_script/pbft/rep_123/cert/cert_45.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_46.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_47.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_48.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_49.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_5.cert        |    7 +
 oracle_script/pbft/rep_123/cert/cert_50.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_51.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_52.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_53.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_54.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_55.cert       |    8 +
 oracle_script/pbft/rep_123/cert/cert_56.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_57.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_58.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_59.cert       |    8 +
 oracle_script/pbft/rep_123/cert/cert_6.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_60.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_61.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_62.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_63.cert       |    8 +
 oracle_script/pbft/rep_123/cert/cert_64.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_65.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_66.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_67.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_68.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_69.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_7.cert        |    7 +
 oracle_script/pbft/rep_123/cert/cert_70.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_71.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_72.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_73.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_74.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_75.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_76.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_77.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_78.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_79.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_8.cert        |    6 +
 oracle_script/pbft/rep_123/cert/cert_80.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_81.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_82.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_83.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_84.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_85.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_86.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_87.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_88.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_89.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_9.cert        |    8 +
 oracle_script/pbft/rep_123/cert/cert_90.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_91.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_92.cert       |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_123/cert/cert_93.cert       |    8 +
 oracle_script/pbft/rep_123/cert/cert_94.cert       |    6 +
 oracle_script/pbft/rep_123/cert/cert_95.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_96.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_97.cert       |    7 +
 oracle_script/pbft/rep_123/cert/cert_98.cert       |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_123/cert/cert_99.cert       |    7 +
 oracle_script/pbft/rep_123/cert/node_1.key.pri     |    2 +
 oracle_script/pbft/rep_123/cert/node_1.key.pub     |    2 +
 oracle_script/pbft/rep_123/cert/node_10.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_10.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_100.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_100.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_101.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_101.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_102.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_102.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_103.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_103.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_104.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_104.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_105.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_105.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_106.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_106.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_107.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_107.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_108.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_108.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_109.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_109.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_11.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_11.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_110.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_110.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_111.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_111.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_112.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_112.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_113.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_113.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_114.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_114.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_115.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_115.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_116.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_116.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_117.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_117.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_118.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_118.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_119.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_119.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_12.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_12.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_120.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_120.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_121.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_121.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_122.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_122.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_123.key.pri   |    2 +
 oracle_script/pbft/rep_123/cert/node_123.key.pub   |    2 +
 oracle_script/pbft/rep_123/cert/node_13.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_13.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_14.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_14.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_15.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_15.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_16.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_16.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_17.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_17.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_18.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_18.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_19.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_19.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_2.key.pri     |    2 +
 oracle_script/pbft/rep_123/cert/node_2.key.pub     |    2 +
 oracle_script/pbft/rep_123/cert/node_20.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_20.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_21.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_21.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_22.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_22.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_23.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_23.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_24.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_24.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_25.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_25.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_26.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_26.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_27.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_27.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_28.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_28.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_29.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_29.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_3.key.pri     |    2 +
 oracle_script/pbft/rep_123/cert/node_3.key.pub     |    2 +
 oracle_script/pbft/rep_123/cert/node_30.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_30.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_31.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_31.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_32.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_32.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_33.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_33.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_34.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_34.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_35.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_35.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_36.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_36.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_37.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_37.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_38.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_38.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_39.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_39.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_4.key.pri     |    2 +
 oracle_script/pbft/rep_123/cert/node_4.key.pub     |    2 +
 oracle_script/pbft/rep_123/cert/node_40.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_40.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_41.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_41.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_42.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_42.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_43.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_43.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_44.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_44.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_45.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_45.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_46.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_46.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_47.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_47.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_48.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_48.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_49.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_49.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_5.key.pri     |    2 +
 oracle_script/pbft/rep_123/cert/node_5.key.pub     |    2 +
 oracle_script/pbft/rep_123/cert/node_50.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_50.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_51.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_51.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_52.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_52.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_53.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_53.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_54.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_54.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_55.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_55.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_56.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_56.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_57.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_57.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_58.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_58.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_59.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_59.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_6.key.pri     |    2 +
 oracle_script/pbft/rep_123/cert/node_6.key.pub     |    2 +
 oracle_script/pbft/rep_123/cert/node_60.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_60.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_61.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_61.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_62.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_62.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_63.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_63.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_64.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_64.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_65.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_65.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_66.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_66.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_67.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_67.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_68.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_68.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_69.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_69.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_7.key.pri     |    2 +
 oracle_script/pbft/rep_123/cert/node_7.key.pub     |    2 +
 oracle_script/pbft/rep_123/cert/node_70.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_70.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_71.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_71.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_72.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_72.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_73.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_73.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_74.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_74.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_75.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_75.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_76.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_76.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_77.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_77.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_78.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_78.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_79.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_79.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_8.key.pri     |    2 +
 oracle_script/pbft/rep_123/cert/node_8.key.pub     |    2 +
 oracle_script/pbft/rep_123/cert/node_80.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_80.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_81.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_81.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_82.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_82.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_83.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_83.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_84.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_84.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_85.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_85.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_86.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_86.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_87.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_87.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_88.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_88.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_89.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_89.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_9.key.pri     |    2 +
 oracle_script/pbft/rep_123/cert/node_9.key.pub     |    2 +
 oracle_script/pbft/rep_123/cert/node_90.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_90.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_91.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_91.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_92.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_92.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_93.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_93.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_94.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_94.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_95.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_95.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_96.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_96.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_97.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_97.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_98.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_98.key.pub    |    2 +
 oracle_script/pbft/rep_123/cert/node_99.key.pri    |    2 +
 oracle_script/pbft/rep_123/cert/node_99.key.pub    |    2 +
 oracle_script/pbft/rep_123/cli_list.txt            |    2 +
 oracle_script/pbft/rep_123/client.config           |    1 +
 oracle_script/pbft/rep_123/iplist.txt              |  122 +
 oracle_script/pbft/rep_123/poc.conf                |    9 +
 oracle_script/pbft/rep_123/run_cli.sh              |    4 +
 oracle_script/pbft/rep_123/run_svr.sh              |    3 +
 oracle_script/pbft/rep_123/server.config           |  121 +
 oracle_script/pbft/rep_123/svr_list.txt            |  122 +
 oracle_script/pbft/rep_16/benchmark.conf           |   16 +
 oracle_script/pbft/rep_16/cert/cert_1.cert         |    6 +
 oracle_script/pbft/rep_16/cert/cert_10.cert        |   11 +
 oracle_script/pbft/rep_16/cert/cert_11.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_16/cert/cert_12.cert        |    6 +
 oracle_script/pbft/rep_16/cert/cert_13.cert        |    8 +
 oracle_script/pbft/rep_16/cert/cert_14.cert        |    7 +
 oracle_script/pbft/rep_16/cert/cert_15.cert        |    7 +
 oracle_script/pbft/rep_16/cert/cert_16.cert        |    7 +
 oracle_script/pbft/rep_16/cert/cert_17.cert        |    7 +
 oracle_script/pbft/rep_16/cert/cert_2.cert         |    8 +
 oracle_script/pbft/rep_16/cert/cert_3.cert         |    7 +
 oracle_script/pbft/rep_16/cert/cert_4.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_16/cert/cert_5.cert         |    6 +
 oracle_script/pbft/rep_16/cert/cert_6.cert         |    7 +
 oracle_script/pbft/rep_16/cert/cert_7.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_16/cert/cert_8.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_16/cert/cert_9.cert         |    7 +
 oracle_script/pbft/rep_16/cert/node_1.key.pri      |    2 +
 oracle_script/pbft/rep_16/cert/node_1.key.pub      |    2 +
 oracle_script/pbft/rep_16/cert/node_10.key.pri     |    2 +
 oracle_script/pbft/rep_16/cert/node_10.key.pub     |    2 +
 oracle_script/pbft/rep_16/cert/node_11.key.pri     |    2 +
 oracle_script/pbft/rep_16/cert/node_11.key.pub     |    2 +
 oracle_script/pbft/rep_16/cert/node_12.key.pri     |    2 +
 oracle_script/pbft/rep_16/cert/node_12.key.pub     |    2 +
 oracle_script/pbft/rep_16/cert/node_13.key.pri     |    2 +
 oracle_script/pbft/rep_16/cert/node_13.key.pub     |    2 +
 oracle_script/pbft/rep_16/cert/node_14.key.pri     |    2 +
 oracle_script/pbft/rep_16/cert/node_14.key.pub     |    2 +
 oracle_script/pbft/rep_16/cert/node_15.key.pri     |    2 +
 oracle_script/pbft/rep_16/cert/node_15.key.pub     |    2 +
 oracle_script/pbft/rep_16/cert/node_16.key.pri     |    2 +
 oracle_script/pbft/rep_16/cert/node_16.key.pub     |    2 +
 oracle_script/pbft/rep_16/cert/node_17.key.pri     |    2 +
 oracle_script/pbft/rep_16/cert/node_17.key.pub     |    2 +
 oracle_script/pbft/rep_16/cert/node_2.key.pri      |    2 +
 oracle_script/pbft/rep_16/cert/node_2.key.pub      |    2 +
 oracle_script/pbft/rep_16/cert/node_3.key.pri      |    2 +
 oracle_script/pbft/rep_16/cert/node_3.key.pub      |    2 +
 oracle_script/pbft/rep_16/cert/node_4.key.pri      |    2 +
 oracle_script/pbft/rep_16/cert/node_4.key.pub      |    2 +
 oracle_script/pbft/rep_16/cert/node_5.key.pri      |    2 +
 oracle_script/pbft/rep_16/cert/node_5.key.pub      |    2 +
 oracle_script/pbft/rep_16/cert/node_6.key.pri      |    2 +
 oracle_script/pbft/rep_16/cert/node_6.key.pub      |    2 +
 oracle_script/pbft/rep_16/cert/node_7.key.pri      |    2 +
 oracle_script/pbft/rep_16/cert/node_7.key.pub      |    2 +
 oracle_script/pbft/rep_16/cert/node_8.key.pri      |    2 +
 oracle_script/pbft/rep_16/cert/node_8.key.pub      |    2 +
 oracle_script/pbft/rep_16/cert/node_9.key.pri      |    2 +
 oracle_script/pbft/rep_16/cert/node_9.key.pub      |    2 +
 oracle_script/pbft/rep_16/cli_list.txt             |    2 +
 oracle_script/pbft/rep_16/client.config            |    1 +
 oracle_script/pbft/rep_16/iplist.txt               |   17 +
 oracle_script/pbft/rep_16/poc.conf                 |    9 +
 oracle_script/pbft/rep_16/run_cli.sh               |    4 +
 oracle_script/pbft/rep_16/run_svr.sh               |    3 +
 oracle_script/pbft/rep_16/server.config            |   16 +
 oracle_script/pbft/rep_16/svr_list.txt             |   17 +
 oracle_script/pbft/rep_32/benchmark.conf           |   16 +
 oracle_script/pbft/rep_32/cert/cert_1.cert         |    6 +
 oracle_script/pbft/rep_32/cert/cert_10.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_11.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_32/cert/cert_12.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_13.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_14.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_32/cert/cert_15.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_16.cert        |    6 +
 oracle_script/pbft/rep_32/cert/cert_17.cert        |    6 +
 oracle_script/pbft/rep_32/cert/cert_18.cert        |    8 +
 oracle_script/pbft/rep_32/cert/cert_19.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_32/cert/cert_2.cert         |    8 +
 oracle_script/pbft/rep_32/cert/cert_20.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_21.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_22.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_23.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_24.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_25.cert        |    8 +
 oracle_script/pbft/rep_32/cert/cert_26.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_27.cert        |    8 +
 oracle_script/pbft/rep_32/cert/cert_28.cert        |    6 +
 oracle_script/pbft/rep_32/cert/cert_29.cert        |  Bin 0 -> 166 bytes
 oracle_script/pbft/rep_32/cert/cert_3.cert         |    7 +
 oracle_script/pbft/rep_32/cert/cert_30.cert        |    8 +
 oracle_script/pbft/rep_32/cert/cert_31.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_32.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_33.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_34.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_35.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_36.cert        |   10 +
 oracle_script/pbft/rep_32/cert/cert_37.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_38.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_39.cert        |    9 +
 oracle_script/pbft/rep_32/cert/cert_4.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_40.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_41.cert        |    6 +
 oracle_script/pbft/rep_32/cert/cert_42.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_43.cert        |    6 +
 oracle_script/pbft/rep_32/cert/cert_44.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_32/cert/cert_45.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_32/cert/cert_46.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_47.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_48.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_49.cert        |  Bin 0 -> 154 bytes
 oracle_script/pbft/rep_32/cert/cert_5.cert         |    6 +
 oracle_script/pbft/rep_32/cert/cert_50.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_51.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_52.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_53.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_54.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_55.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_56.cert        |    6 +
 oracle_script/pbft/rep_32/cert/cert_57.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_58.cert        |    8 +
 oracle_script/pbft/rep_32/cert/cert_59.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_6.cert         |    7 +
 oracle_script/pbft/rep_32/cert/cert_60.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_61.cert        |    6 +
 oracle_script/pbft/rep_32/cert/cert_62.cert        |    8 +
 oracle_script/pbft/rep_32/cert/cert_63.cert        |    8 +
 oracle_script/pbft/rep_32/cert/cert_64.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_65.cert        |    7 +
 oracle_script/pbft/rep_32/cert/cert_7.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_32/cert/cert_8.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_32/cert/cert_9.cert         |    7 +
 .../pbft/rep_32/cert/node_1 \"AES\".key.pri"       |  Bin 0 -> 36 bytes
 .../pbft/rep_32/cert/node_1 \"AES\".key.pub"       |    2 +
 oracle_script/pbft/rep_32/cert/node_1.key.pri      |    2 +
 oracle_script/pbft/rep_32/cert/node_1.key.pub      |    2 +
 .../pbft/rep_32/cert/node_10 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_10 \"AES\".key.pub"      |  Bin 0 -> 36 bytes
 oracle_script/pbft/rep_32/cert/node_10.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_10.key.pub     |    2 +
 .../pbft/rep_32/cert/node_11 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_11 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_11.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_11.key.pub     |    2 +
 .../pbft/rep_32/cert/node_12 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_12 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_12.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_12.key.pub     |    2 +
 .../pbft/rep_32/cert/node_13 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_13 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_13.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_13.key.pub     |    2 +
 .../pbft/rep_32/cert/node_14 \"AES\".key.pri"      |  Bin 0 -> 36 bytes
 .../pbft/rep_32/cert/node_14 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_14.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_14.key.pub     |    2 +
 .../pbft/rep_32/cert/node_15 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_15 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_15.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_15.key.pub     |    2 +
 .../pbft/rep_32/cert/node_16 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_16 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_16.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_16.key.pub     |    2 +
 .../pbft/rep_32/cert/node_17 \"AES\".key.pri"      |    3 +
 .../pbft/rep_32/cert/node_17 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_17.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_17.key.pub     |    2 +
 .../pbft/rep_32/cert/node_18 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_18 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_18.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_18.key.pub     |    2 +
 .../pbft/rep_32/cert/node_19 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_19 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_19.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_19.key.pub     |    2 +
 .../pbft/rep_32/cert/node_2 \"AES\".key.pri"       |    2 +
 .../pbft/rep_32/cert/node_2 \"AES\".key.pub"       |    2 +
 oracle_script/pbft/rep_32/cert/node_2.key.pri      |    2 +
 oracle_script/pbft/rep_32/cert/node_2.key.pub      |    2 +
 .../pbft/rep_32/cert/node_20 \"AES\".key.pri"      |    3 +
 .../pbft/rep_32/cert/node_20 \"AES\".key.pub"      |    3 +
 oracle_script/pbft/rep_32/cert/node_20.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_20.key.pub     |    2 +
 .../pbft/rep_32/cert/node_21 \"AES\".key.pri"      |    3 +
 .../pbft/rep_32/cert/node_21 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_21.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_21.key.pub     |    2 +
 .../pbft/rep_32/cert/node_22 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_22 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_22.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_22.key.pub     |    2 +
 .../pbft/rep_32/cert/node_23 \"AES\".key.pri"      |    3 +
 .../pbft/rep_32/cert/node_23 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_23.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_23.key.pub     |    2 +
 .../pbft/rep_32/cert/node_24 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_24 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_24.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_24.key.pub     |    2 +
 .../pbft/rep_32/cert/node_25 \"AES\".key.pri"      |    3 +
 .../pbft/rep_32/cert/node_25 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_25.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_25.key.pub     |    2 +
 .../pbft/rep_32/cert/node_26 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_26 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_26.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_26.key.pub     |    2 +
 .../pbft/rep_32/cert/node_27 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_27 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_27.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_27.key.pub     |    2 +
 .../pbft/rep_32/cert/node_28 \"AES\".key.pri"      |    3 +
 .../pbft/rep_32/cert/node_28 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_28.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_28.key.pub     |    2 +
 .../pbft/rep_32/cert/node_29 \"AES\".key.pri"      |  Bin 0 -> 36 bytes
 .../pbft/rep_32/cert/node_29 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_29.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_29.key.pub     |    2 +
 .../pbft/rep_32/cert/node_3 \"AES\".key.pri"       |    2 +
 .../pbft/rep_32/cert/node_3 \"AES\".key.pub"       |  Bin 0 -> 36 bytes
 oracle_script/pbft/rep_32/cert/node_3.key.pri      |    2 +
 oracle_script/pbft/rep_32/cert/node_3.key.pub      |    2 +
 .../pbft/rep_32/cert/node_30 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_30 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_30.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_30.key.pub     |    2 +
 .../pbft/rep_32/cert/node_31 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_31 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_31.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_31.key.pub     |    2 +
 .../pbft/rep_32/cert/node_32 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_32 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_32.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_32.key.pub     |    2 +
 .../pbft/rep_32/cert/node_33 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_33 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_33.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_33.key.pub     |    2 +
 .../pbft/rep_32/cert/node_34 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_34 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_34.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_34.key.pub     |    2 +
 .../pbft/rep_32/cert/node_35 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_35 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_35.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_35.key.pub     |    2 +
 .../pbft/rep_32/cert/node_36 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_36 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_36.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_36.key.pub     |    2 +
 .../pbft/rep_32/cert/node_37 \"AES\".key.pri"      |  Bin 0 -> 36 bytes
 .../pbft/rep_32/cert/node_37 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_37.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_37.key.pub     |    2 +
 .../pbft/rep_32/cert/node_38 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_38 \"AES\".key.pub"      |  Bin 0 -> 36 bytes
 oracle_script/pbft/rep_32/cert/node_38.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_38.key.pub     |    2 +
 .../pbft/rep_32/cert/node_39 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_39 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_39.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_39.key.pub     |    2 +
 .../pbft/rep_32/cert/node_4 \"AES\".key.pri"       |    2 +
 .../pbft/rep_32/cert/node_4 \"AES\".key.pub"       |    2 +
 oracle_script/pbft/rep_32/cert/node_4.key.pri      |    2 +
 oracle_script/pbft/rep_32/cert/node_4.key.pub      |    2 +
 .../pbft/rep_32/cert/node_40 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_40 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_40.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_40.key.pub     |    2 +
 .../pbft/rep_32/cert/node_41 \"AES\".key.pri"      |  Bin 0 -> 36 bytes
 .../pbft/rep_32/cert/node_41 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_41.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_41.key.pub     |    2 +
 .../pbft/rep_32/cert/node_42 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_42 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_42.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_42.key.pub     |    2 +
 .../pbft/rep_32/cert/node_43 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_43 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_43.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_43.key.pub     |    2 +
 .../pbft/rep_32/cert/node_44 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_44 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_44.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_44.key.pub     |    2 +
 .../pbft/rep_32/cert/node_45 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_45 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_45.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_45.key.pub     |    2 +
 .../pbft/rep_32/cert/node_46 \"AES\".key.pri"      |    3 +
 .../pbft/rep_32/cert/node_46 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_46.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_46.key.pub     |    2 +
 .../pbft/rep_32/cert/node_47 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_47 \"AES\".key.pub"      |    3 +
 oracle_script/pbft/rep_32/cert/node_47.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_47.key.pub     |    2 +
 .../pbft/rep_32/cert/node_48 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_48 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_48.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_48.key.pub     |    2 +
 .../pbft/rep_32/cert/node_49 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_49 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_49.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_49.key.pub     |    2 +
 .../pbft/rep_32/cert/node_5 \"AES\".key.pri"       |    2 +
 .../pbft/rep_32/cert/node_5 \"AES\".key.pub"       |  Bin 0 -> 36 bytes
 oracle_script/pbft/rep_32/cert/node_5.key.pri      |    2 +
 oracle_script/pbft/rep_32/cert/node_5.key.pub      |    2 +
 .../pbft/rep_32/cert/node_50 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_50 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_50.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_50.key.pub     |    2 +
 .../pbft/rep_32/cert/node_51 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_51 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_51.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_51.key.pub     |    2 +
 .../pbft/rep_32/cert/node_52 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_52 \"AES\".key.pub"      |    3 +
 oracle_script/pbft/rep_32/cert/node_52.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_52.key.pub     |    2 +
 .../pbft/rep_32/cert/node_53 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_53 \"AES\".key.pub"      |    3 +
 oracle_script/pbft/rep_32/cert/node_53.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_53.key.pub     |    2 +
 .../pbft/rep_32/cert/node_54 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_54 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_54.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_54.key.pub     |    2 +
 .../pbft/rep_32/cert/node_55 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_55 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_55.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_55.key.pub     |    2 +
 .../pbft/rep_32/cert/node_56 \"AES\".key.pri"      |  Bin 0 -> 36 bytes
 .../pbft/rep_32/cert/node_56 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_56.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_56.key.pub     |    2 +
 .../pbft/rep_32/cert/node_57 \"AES\".key.pri"      |  Bin 0 -> 36 bytes
 .../pbft/rep_32/cert/node_57 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_57.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_57.key.pub     |    2 +
 .../pbft/rep_32/cert/node_58 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_58 \"AES\".key.pub"      |  Bin 0 -> 36 bytes
 oracle_script/pbft/rep_32/cert/node_58.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_58.key.pub     |    2 +
 .../pbft/rep_32/cert/node_59 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_59 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_59.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_59.key.pub     |    2 +
 .../pbft/rep_32/cert/node_6 \"AES\".key.pri"       |    3 +
 .../pbft/rep_32/cert/node_6 \"AES\".key.pub"       |    2 +
 oracle_script/pbft/rep_32/cert/node_6.key.pri      |    2 +
 oracle_script/pbft/rep_32/cert/node_6.key.pub      |    2 +
 .../pbft/rep_32/cert/node_60 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_60 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_60.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_60.key.pub     |    2 +
 .../pbft/rep_32/cert/node_61 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_61 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_61.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_61.key.pub     |    2 +
 .../pbft/rep_32/cert/node_62 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_62 \"AES\".key.pub"      |    3 +
 oracle_script/pbft/rep_32/cert/node_62.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_62.key.pub     |    2 +
 .../pbft/rep_32/cert/node_63 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_63 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_63.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_63.key.pub     |    2 +
 .../pbft/rep_32/cert/node_64 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_64 \"AES\".key.pub"      |  Bin 0 -> 36 bytes
 oracle_script/pbft/rep_32/cert/node_64.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_64.key.pub     |    2 +
 .../pbft/rep_32/cert/node_65 \"AES\".key.pri"      |    2 +
 .../pbft/rep_32/cert/node_65 \"AES\".key.pub"      |    2 +
 oracle_script/pbft/rep_32/cert/node_65.key.pri     |    2 +
 oracle_script/pbft/rep_32/cert/node_65.key.pub     |    2 +
 .../pbft/rep_32/cert/node_7 \"AES\".key.pri"       |    2 +
 .../pbft/rep_32/cert/node_7 \"AES\".key.pub"       |    2 +
 oracle_script/pbft/rep_32/cert/node_7.key.pri      |    2 +
 oracle_script/pbft/rep_32/cert/node_7.key.pub      |    2 +
 .../pbft/rep_32/cert/node_8 \"AES\".key.pri"       |    2 +
 .../pbft/rep_32/cert/node_8 \"AES\".key.pub"       |    2 +
 oracle_script/pbft/rep_32/cert/node_8.key.pri      |    2 +
 oracle_script/pbft/rep_32/cert/node_8.key.pub      |    2 +
 .../pbft/rep_32/cert/node_9 \"AES\".key.pri"       |    2 +
 .../pbft/rep_32/cert/node_9 \"AES\".key.pub"       |    2 +
 oracle_script/pbft/rep_32/cert/node_9.key.pri      |    2 +
 oracle_script/pbft/rep_32/cert/node_9.key.pub      |    2 +
 oracle_script/pbft/rep_32/cli_list.txt             |    2 +
 oracle_script/pbft/rep_32/client.config            |    1 +
 oracle_script/pbft/rep_32/iplist.txt               |   33 +
 oracle_script/pbft/rep_32/poc.conf                 |    9 +
 oracle_script/pbft/rep_32/run_cli.sh               |    4 +
 oracle_script/pbft/rep_32/run_svr.sh               |    3 +
 oracle_script/pbft/rep_32/server.config            |   32 +
 oracle_script/pbft/rep_32/svr_list.txt             |   33 +
 oracle_script/pbft/rep_4/benchmark.conf            |   15 +
 oracle_script/pbft/rep_4/cert/cert_1.cert          |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_4/cert/cert_10.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_4/cert/cert_100.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_101.cert        |    8 +
 oracle_script/pbft/rep_4/cert/cert_102.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_103.cert        |    8 +
 oracle_script/pbft/rep_4/cert/cert_104.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_105.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_106.cert        |    8 +
 oracle_script/pbft/rep_4/cert/cert_107.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_108.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_109.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_11.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_110.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_4/cert/cert_111.cert        |    8 +
 oracle_script/pbft/rep_4/cert/cert_112.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_113.cert        |    6 +
 oracle_script/pbft/rep_4/cert/cert_114.cert        |    8 +
 oracle_script/pbft/rep_4/cert/cert_115.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_116.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_117.cert        |    6 +
 oracle_script/pbft/rep_4/cert/cert_118.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_119.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_12.cert         |    8 +
 oracle_script/pbft/rep_4/cert/cert_120.cert        |    7 +
 oracle_script/pbft/rep_4/cert/cert_13.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_14.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_15.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_16.cert         |    8 +
 oracle_script/pbft/rep_4/cert/cert_17.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_18.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_19.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_2.cert          |    7 +
 oracle_script/pbft/rep_4/cert/cert_20.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_21.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_22.cert         |    8 +
 oracle_script/pbft/rep_4/cert/cert_23.cert         |    8 +
 oracle_script/pbft/rep_4/cert/cert_24.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_25.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_26.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_27.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_28.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_29.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_3.cert          |    7 +
 oracle_script/pbft/rep_4/cert/cert_30.cert         |    8 +
 oracle_script/pbft/rep_4/cert/cert_31.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_32.cert         |    8 +
 oracle_script/pbft/rep_4/cert/cert_33.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_34.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_35.cert         |    8 +
 oracle_script/pbft/rep_4/cert/cert_36.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_37.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_38.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_39.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_4.cert          |    6 +
 oracle_script/pbft/rep_4/cert/cert_40.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_41.cert         |  Bin 0 -> 166 bytes
 oracle_script/pbft/rep_4/cert/cert_42.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_43.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_44.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_4/cert/cert_45.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_46.cert         |    8 +
 oracle_script/pbft/rep_4/cert/cert_47.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_48.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_49.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_5.cert          |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_50.cert         |    8 +
 oracle_script/pbft/rep_4/cert/cert_51.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_4/cert/cert_52.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_53.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_4/cert/cert_54.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_55.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_56.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_57.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_58.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_59.cert         |    8 +
 oracle_script/pbft/rep_4/cert/cert_61.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_62.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_63.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_64.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_65.cert         |    9 +
 oracle_script/pbft/rep_4/cert/cert_71.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_72.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_73.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_74.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_4/cert/cert_75.cert         |    9 +
 oracle_script/pbft/rep_4/cert/cert_81.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_82.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_83.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_84.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_4/cert/cert_85.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_4/cert/cert_91.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_92.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_93.cert         |    7 +
 oracle_script/pbft/rep_4/cert/cert_94.cert         |    6 +
 oracle_script/pbft/rep_4/cert/cert_95.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_4/cert/cli_list.txt         |    1 +
 oracle_script/pbft/rep_4/cert/iplist.txt           |    6 +
 oracle_script/pbft/rep_4/cert/node_1.key.pri       |    2 +
 oracle_script/pbft/rep_4/cert/node_1.key.pub       |    2 +
 oracle_script/pbft/rep_4/cert/node_10.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_10.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_100.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_100.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_101.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_101.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_102.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_102.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_103.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_103.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_104.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_104.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_105.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_105.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_106.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_106.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_107.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_107.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_108.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_108.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_109.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_109.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_11.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_11.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_110.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_110.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_111.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_111.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_112.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_112.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_113.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_113.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_114.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_114.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_115.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_115.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_116.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_116.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_117.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_117.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_118.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_118.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_119.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_119.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_12.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_12.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_120.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_120.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_121.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_121.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_122.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_122.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_123.key.pri     |    2 +
 oracle_script/pbft/rep_4/cert/node_123.key.pub     |    2 +
 oracle_script/pbft/rep_4/cert/node_13.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_13.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_14.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_14.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_15.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_15.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_16.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_16.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_17.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_17.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_18.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_18.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_19.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_19.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_2.key.pri       |    2 +
 oracle_script/pbft/rep_4/cert/node_2.key.pub       |    2 +
 oracle_script/pbft/rep_4/cert/node_20.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_20.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_21.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_21.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_22.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_22.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_23.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_23.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_24.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_24.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_25.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_25.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_26.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_26.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_27.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_27.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_28.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_28.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_29.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_29.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_3.key.pri       |    2 +
 oracle_script/pbft/rep_4/cert/node_3.key.pub       |    2 +
 oracle_script/pbft/rep_4/cert/node_30.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_30.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_31.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_31.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_32.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_32.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_33.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_33.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_34.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_34.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_35.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_35.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_36.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_36.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_37.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_37.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_38.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_38.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_39.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_39.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_4.key.pri       |    2 +
 oracle_script/pbft/rep_4/cert/node_4.key.pub       |    2 +
 oracle_script/pbft/rep_4/cert/node_40.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_40.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_41.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_41.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_42.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_42.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_43.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_43.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_44.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_44.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_45.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_45.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_46.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_46.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_47.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_47.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_48.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_48.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_49.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_49.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_5.key.pri       |    2 +
 oracle_script/pbft/rep_4/cert/node_5.key.pub       |    2 +
 oracle_script/pbft/rep_4/cert/node_50.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_50.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_51.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_51.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_52.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_52.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_53.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_53.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_54.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_54.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_55.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_55.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_56.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_56.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_57.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_57.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_58.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_58.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_59.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_59.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_61.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_61.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_62.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_62.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_63.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_63.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_64.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_64.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_65.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_65.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_66.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_66.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_67.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_67.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_68.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_68.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_69.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_69.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_70.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_70.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_71.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_71.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_72.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_72.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_73.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_73.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_74.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_74.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_75.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_75.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_76.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_76.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_77.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_77.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_78.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_78.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_79.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_79.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_80.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_80.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_81.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_81.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_82.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_82.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_83.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_83.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_84.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_84.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_85.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_85.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_86.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_86.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_87.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_87.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_88.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_88.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_89.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_89.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_90.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_90.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_91.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_91.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_92.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_92.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_93.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_93.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_94.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_94.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_95.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_95.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_96.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_96.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_97.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_97.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_98.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_98.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/node_99.key.pri      |    2 +
 oracle_script/pbft/rep_4/cert/node_99.key.pub      |    2 +
 oracle_script/pbft/rep_4/cert/svr_list.txt         |    6 +
 oracle_script/pbft/rep_4/cli_list.txt              |    2 +
 oracle_script/pbft/rep_4/client.config             |    1 +
 oracle_script/pbft/rep_4/iplist.txt                |    6 +
 oracle_script/pbft/rep_4/poc.conf                  |    9 +
 oracle_script/pbft/rep_4/run_cli.sh                |    4 +
 oracle_script/pbft/rep_4/run_poc.sh                |    3 +
 oracle_script/pbft/rep_4/run_svr.sh                |    3 +
 oracle_script/pbft/rep_4/server.config             |    4 +
 oracle_script/pbft/rep_4/svr_list.txt              |    5 +
 oracle_script/pbft/rep_64/benchmark.conf           |   16 +
 oracle_script/pbft/rep_64/cert/cert_1.cert         |    6 +
 oracle_script/pbft/rep_64/cert/cert_10.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_11.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_12.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_13.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_14.cert        |    6 +
 oracle_script/pbft/rep_64/cert/cert_15.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_16.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_17.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_18.cert        |    8 +
 oracle_script/pbft/rep_64/cert/cert_19.cert        |    6 +
 oracle_script/pbft/rep_64/cert/cert_2.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_20.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_21.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_64/cert/cert_22.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_23.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_24.cert        |    6 +
 oracle_script/pbft/rep_64/cert/cert_25.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_64/cert/cert_26.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_27.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_28.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_29.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_3.cert         |    7 +
 oracle_script/pbft/rep_64/cert/cert_30.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_31.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_32.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_64/cert/cert_33.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_64/cert/cert_34.cert        |    6 +
 oracle_script/pbft/rep_64/cert/cert_35.cert        |    8 +
 oracle_script/pbft/rep_64/cert/cert_36.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_37.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_38.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_39.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_4.cert         |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_64/cert/cert_40.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_41.cert        |    6 +
 oracle_script/pbft/rep_64/cert/cert_42.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_43.cert        |    6 +
 oracle_script/pbft/rep_64/cert/cert_44.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_45.cert        |    6 +
 oracle_script/pbft/rep_64/cert/cert_46.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_47.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_48.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_49.cert        |    8 +
 oracle_script/pbft/rep_64/cert/cert_5.cert         |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_50.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_51.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_52.cert        |    8 +
 oracle_script/pbft/rep_64/cert/cert_53.cert        |    6 +
 oracle_script/pbft/rep_64/cert/cert_54.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_55.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_56.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_57.cert        |  Bin 0 -> 168 bytes
 oracle_script/pbft/rep_64/cert/cert_58.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_59.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_6.cert         |    7 +
 oracle_script/pbft/rep_64/cert/cert_60.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_61.cert        |    6 +
 oracle_script/pbft/rep_64/cert/cert_62.cert        |    7 +
 oracle_script/pbft/rep_64/cert/cert_63.cert        |    8 +
 oracle_script/pbft/rep_64/cert/cert_64.cert        |  Bin 0 -> 167 bytes
 oracle_script/pbft/rep_64/cert/cert_65.cert        |    8 +
 oracle_script/pbft/rep_64/cert/cert_7.cert         |    6 +
 oracle_script/pbft/rep_64/cert/cert_8.cert         |    7 +
 oracle_script/pbft/rep_64/cert/cert_9.cert         |    6 +
 oracle_script/pbft/rep_64/cert/node_1.key.pri      |    2 +
 oracle_script/pbft/rep_64/cert/node_1.key.pub      |    2 +
 oracle_script/pbft/rep_64/cert/node_10.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_10.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_11.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_11.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_12.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_12.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_13.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_13.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_14.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_14.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_15.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_15.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_16.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_16.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_17.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_17.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_18.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_18.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_19.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_19.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_2.key.pri      |    2 +
 oracle_script/pbft/rep_64/cert/node_2.key.pub      |    2 +
 oracle_script/pbft/rep_64/cert/node_20.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_20.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_21.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_21.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_22.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_22.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_23.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_23.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_24.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_24.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_25.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_25.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_26.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_26.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_27.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_27.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_28.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_28.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_29.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_29.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_3.key.pri      |    2 +
 oracle_script/pbft/rep_64/cert/node_3.key.pub      |    2 +
 oracle_script/pbft/rep_64/cert/node_30.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_30.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_31.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_31.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_32.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_32.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_33.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_33.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_34.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_34.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_35.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_35.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_36.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_36.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_37.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_37.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_38.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_38.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_39.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_39.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_4.key.pri      |    2 +
 oracle_script/pbft/rep_64/cert/node_4.key.pub      |    2 +
 oracle_script/pbft/rep_64/cert/node_40.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_40.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_41.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_41.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_42.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_42.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_43.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_43.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_44.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_44.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_45.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_45.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_46.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_46.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_47.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_47.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_48.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_48.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_49.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_49.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_5.key.pri      |    2 +
 oracle_script/pbft/rep_64/cert/node_5.key.pub      |    2 +
 oracle_script/pbft/rep_64/cert/node_50.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_50.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_51.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_51.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_52.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_52.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_53.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_53.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_54.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_54.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_55.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_55.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_56.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_56.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_57.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_57.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_58.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_58.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_59.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_59.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_6.key.pri      |    2 +
 oracle_script/pbft/rep_64/cert/node_6.key.pub      |    2 +
 oracle_script/pbft/rep_64/cert/node_60.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_60.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_61.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_61.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_62.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_62.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_63.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_63.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_64.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_64.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_65.key.pri     |    2 +
 oracle_script/pbft/rep_64/cert/node_65.key.pub     |    2 +
 oracle_script/pbft/rep_64/cert/node_7.key.pri      |    2 +
 oracle_script/pbft/rep_64/cert/node_7.key.pub      |    2 +
 oracle_script/pbft/rep_64/cert/node_8.key.pri      |    2 +
 oracle_script/pbft/rep_64/cert/node_8.key.pub      |    2 +
 oracle_script/pbft/rep_64/cert/node_9.key.pri      |    2 +
 oracle_script/pbft/rep_64/cert/node_9.key.pub      |    2 +
 oracle_script/pbft/rep_64/cli_list.txt             |    2 +
 oracle_script/pbft/rep_64/client.config            |    1 +
 oracle_script/pbft/rep_64/iplist.txt               |   65 +
 oracle_script/pbft/rep_64/poc.conf                 |    9 +
 oracle_script/pbft/rep_64/run_cli.sh               |    4 +
 oracle_script/pbft/rep_64/run_svr.sh               |    3 +
 oracle_script/pbft/rep_64/server.config            |   64 +
 oracle_script/pbft/rep_64/svr_list.txt             |   65 +
 oracle_script/pbft/run_cli.sh                      |    5 +
 oracle_script/pbft/run_poc.sh                      |    5 +
 oracle_script/pbft/run_svr.sh                      |    5 +
 oracle_script/pbft/script/BUILD                    |   37 +
 oracle_script/pbft/script/benchmark_result.py      |   28 +
 oracle_script/pbft/script/killall.sh               |   22 +
 oracle_script/pbft/script/ready_result.py          |   19 +
 oracle_script/pbft/script/run_cli.py               |   48 +
 oracle_script/pbft/script/run_server.sh            |   24 +
 oracle_script/pbft/script/run_svr.py               |   81 +
 oracle_script/pbft/script/shell_cmd.sh             |   14 +
 oracle_script/pbft/server.config                   |   16 +
 oracle_script/pbft/start_benchmark.sh              |   10 +
 oracle_script/pbft/svr_list.txt                    |   17 +
 oracle_script/pow/BUILD                            |   28 +
 oracle_script/pow/benchmark_result.py              |  131 +
 oracle_script/pow/bft_server.config                |    4 +
 oracle_script/pow/cli_list.txt                     |    2 +
 oracle_script/pow/cmd.sh                           |   22 +
 oracle_script/pow/killall.sh                       |   22 +
 oracle_script/pow/poc.conf                         |   15 +
 oracle_script/pow/pow_server.config                |  120 +
 oracle_script/pow/remote_shell_cmd.sh              |   15 +
 oracle_script/pow/rep_120/cert/cert_1.cert         |    6 +
 oracle_script/pow/rep_120/cert/cert_10.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_100.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_101.cert       |    7 +
 oracle_script/pow/rep_120/cert/cert_102.cert       |    7 +
 oracle_script/pow/rep_120/cert/cert_103.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_104.cert       |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_105.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_106.cert       |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_107.cert       |    7 +
 oracle_script/pow/rep_120/cert/cert_108.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_109.cert       |    7 +
 oracle_script/pow/rep_120/cert/cert_11.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_110.cert       |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_111.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_112.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_113.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_114.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_115.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_116.cert       |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_117.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_118.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_119.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_12.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_120.cert       |    7 +
 oracle_script/pow/rep_120/cert/cert_121.cert       |  Bin 0 -> 169 bytes
 oracle_script/pow/rep_120/cert/cert_122.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_123.cert       |    6 +
 oracle_script/pow/rep_120/cert/cert_13.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_14.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_15.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_16.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_17.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_18.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_19.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_2.cert         |    6 +
 oracle_script/pow/rep_120/cert/cert_20.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_21.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_22.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_23.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_24.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_25.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_26.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_27.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_28.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_29.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_3.cert         |    6 +
 oracle_script/pow/rep_120/cert/cert_30.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_31.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_32.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_33.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_34.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_35.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_36.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_37.cert        |    8 +
 oracle_script/pow/rep_120/cert/cert_38.cert        |    8 +
 oracle_script/pow/rep_120/cert/cert_39.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_4.cert         |    7 +
 oracle_script/pow/rep_120/cert/cert_40.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_41.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_42.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_43.cert        |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_44.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_45.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_46.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_47.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_48.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_49.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_5.cert         |    7 +
 oracle_script/pow/rep_120/cert/cert_50.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_51.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_52.cert        |    8 +
 oracle_script/pow/rep_120/cert/cert_53.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_54.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_55.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_56.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_57.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_58.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_59.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_6.cert         |    6 +
 oracle_script/pow/rep_120/cert/cert_60.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_61.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_62.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_63.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_64.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_65.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_66.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_67.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_68.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_69.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_7.cert         |    6 +
 oracle_script/pow/rep_120/cert/cert_70.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_71.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_72.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_73.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_74.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_75.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_76.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_77.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_78.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_79.cert        |    8 +
 oracle_script/pow/rep_120/cert/cert_8.cert         |    7 +
 oracle_script/pow/rep_120/cert/cert_80.cert        |  Bin 0 -> 172 bytes
 oracle_script/pow/rep_120/cert/cert_81.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_82.cert        |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_83.cert        |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_84.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_85.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_86.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_87.cert        |    8 +
 oracle_script/pow/rep_120/cert/cert_88.cert        |    8 +
 oracle_script/pow/rep_120/cert/cert_89.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_9.cert         |    6 +
 oracle_script/pow/rep_120/cert/cert_90.cert        |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_91.cert        |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_92.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_93.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_94.cert        |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_95.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_96.cert        |    7 +
 oracle_script/pow/rep_120/cert/cert_97.cert        |    6 +
 oracle_script/pow/rep_120/cert/cert_98.cert        |  Bin 0 -> 171 bytes
 oracle_script/pow/rep_120/cert/cert_99.cert        |    6 +
 oracle_script/pow/rep_120/cert/node_1.key.pri      |    2 +
 oracle_script/pow/rep_120/cert/node_1.key.pub      |    2 +
 oracle_script/pow/rep_120/cert/node_10.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_10.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_100.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_100.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_101.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_101.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_102.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_102.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_103.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_103.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_104.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_104.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_105.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_105.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_106.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_106.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_107.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_107.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_108.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_108.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_109.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_109.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_11.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_11.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_110.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_110.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_111.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_111.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_112.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_112.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_113.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_113.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_114.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_114.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_115.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_115.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_116.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_116.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_117.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_117.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_118.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_118.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_119.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_119.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_12.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_12.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_120.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_120.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_121.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_121.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_122.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_122.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_123.key.pri    |    2 +
 oracle_script/pow/rep_120/cert/node_123.key.pub    |    2 +
 oracle_script/pow/rep_120/cert/node_13.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_13.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_14.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_14.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_15.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_15.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_16.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_16.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_17.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_17.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_18.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_18.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_19.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_19.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_2.key.pri      |    2 +
 oracle_script/pow/rep_120/cert/node_2.key.pub      |    2 +
 oracle_script/pow/rep_120/cert/node_20.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_20.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_21.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_21.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_22.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_22.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_23.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_23.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_24.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_24.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_25.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_25.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_26.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_26.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_27.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_27.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_28.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_28.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_29.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_29.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_3.key.pri      |    2 +
 oracle_script/pow/rep_120/cert/node_3.key.pub      |    2 +
 oracle_script/pow/rep_120/cert/node_30.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_30.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_31.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_31.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_32.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_32.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_33.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_33.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_34.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_34.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_35.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_35.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_36.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_36.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_37.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_37.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_38.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_38.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_39.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_39.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_4.key.pri      |    2 +
 oracle_script/pow/rep_120/cert/node_4.key.pub      |    2 +
 oracle_script/pow/rep_120/cert/node_40.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_40.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_41.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_41.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_42.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_42.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_43.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_43.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_44.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_44.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_45.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_45.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_46.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_46.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_47.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_47.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_48.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_48.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_49.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_49.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_5.key.pri      |    2 +
 oracle_script/pow/rep_120/cert/node_5.key.pub      |    2 +
 oracle_script/pow/rep_120/cert/node_50.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_50.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_51.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_51.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_52.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_52.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_53.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_53.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_54.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_54.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_55.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_55.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_56.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_56.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_57.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_57.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_58.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_58.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_59.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_59.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_6.key.pri      |    2 +
 oracle_script/pow/rep_120/cert/node_6.key.pub      |    2 +
 oracle_script/pow/rep_120/cert/node_60.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_60.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_61.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_61.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_62.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_62.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_63.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_63.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_64.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_64.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_65.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_65.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_66.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_66.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_67.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_67.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_68.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_68.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_69.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_69.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_7.key.pri      |    2 +
 oracle_script/pow/rep_120/cert/node_7.key.pub      |    2 +
 oracle_script/pow/rep_120/cert/node_70.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_70.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_71.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_71.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_72.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_72.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_73.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_73.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_74.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_74.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_75.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_75.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_76.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_76.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_77.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_77.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_78.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_78.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_79.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_79.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_8.key.pri      |    2 +
 oracle_script/pow/rep_120/cert/node_8.key.pub      |    2 +
 oracle_script/pow/rep_120/cert/node_80.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_80.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_81.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_81.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_82.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_82.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_83.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_83.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_84.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_84.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_85.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_85.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_86.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_86.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_87.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_87.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_88.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_88.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_89.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_89.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_9.key.pri      |    2 +
 oracle_script/pow/rep_120/cert/node_9.key.pub      |    2 +
 oracle_script/pow/rep_120/cert/node_90.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_90.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_91.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_91.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_92.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_92.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_93.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_93.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_94.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_94.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_95.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_95.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_96.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_96.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_97.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_97.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_98.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_98.key.pub     |    2 +
 oracle_script/pow/rep_120/cert/node_99.key.pri     |    2 +
 oracle_script/pow/rep_120/cert/node_99.key.pub     |    2 +
 oracle_script/pow/rep_120/cli_list.txt             |    1 +
 oracle_script/pow/rep_120/iplist.txt               |  120 +
 oracle_script/pow/rep_120/lat.sh                   |  125 +
 oracle_script/pow/rep_120/poc.conf                 |   13 +
 oracle_script/pow/rep_120/run_poc.sh               |    3 +
 oracle_script/pow/rep_120/svr_list.txt             |  121 +
 oracle_script/pow/rep_16/cert/cert_1.cert          |    6 +
 oracle_script/pow/rep_16/cert/cert_10.cert         |    8 +
 oracle_script/pow/rep_16/cert/cert_11.cert         |    6 +
 oracle_script/pow/rep_16/cert/cert_12.cert         |  Bin 0 -> 166 bytes
 oracle_script/pow/rep_16/cert/cert_13.cert         |    8 +
 oracle_script/pow/rep_16/cert/cert_14.cert         |    7 +
 oracle_script/pow/rep_16/cert/cert_15.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_16/cert/cert_16.cert         |    7 +
 oracle_script/pow/rep_16/cert/cert_2.cert          |    6 +
 oracle_script/pow/rep_16/cert/cert_3.cert          |    6 +
 oracle_script/pow/rep_16/cert/cert_4.cert          |    7 +
 oracle_script/pow/rep_16/cert/cert_5.cert          |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_16/cert/cert_6.cert          |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_16/cert/cert_7.cert          |    6 +
 oracle_script/pow/rep_16/cert/cert_8.cert          |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_16/cert/cert_9.cert          |    8 +
 oracle_script/pow/rep_16/cert/node_1.key.pri       |    2 +
 oracle_script/pow/rep_16/cert/node_1.key.pub       |    2 +
 oracle_script/pow/rep_16/cert/node_10.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_10.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_100.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_100.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_101.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_101.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_102.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_102.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_103.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_103.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_104.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_104.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_105.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_105.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_106.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_106.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_107.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_107.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_108.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_108.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_109.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_109.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_11.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_11.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_110.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_110.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_111.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_111.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_112.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_112.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_113.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_113.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_114.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_114.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_115.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_115.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_116.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_116.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_117.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_117.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_118.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_118.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_119.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_119.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_12.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_12.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_120.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_120.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_121.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_121.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_122.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_122.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_123.key.pri     |    2 +
 oracle_script/pow/rep_16/cert/node_123.key.pub     |    2 +
 oracle_script/pow/rep_16/cert/node_13.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_13.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_14.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_14.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_15.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_15.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_16.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_16.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_2.key.pri       |    2 +
 oracle_script/pow/rep_16/cert/node_2.key.pub       |    2 +
 oracle_script/pow/rep_16/cert/node_3.key.pri       |    2 +
 oracle_script/pow/rep_16/cert/node_3.key.pub       |    2 +
 oracle_script/pow/rep_16/cert/node_4.key.pri       |    2 +
 oracle_script/pow/rep_16/cert/node_4.key.pub       |    2 +
 oracle_script/pow/rep_16/cert/node_5.key.pri       |    2 +
 oracle_script/pow/rep_16/cert/node_5.key.pub       |    2 +
 oracle_script/pow/rep_16/cert/node_6.key.pri       |    2 +
 oracle_script/pow/rep_16/cert/node_6.key.pub       |    2 +
 oracle_script/pow/rep_16/cert/node_66.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_66.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_67.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_67.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_68.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_68.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_69.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_69.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_7.key.pri       |    2 +
 oracle_script/pow/rep_16/cert/node_7.key.pub       |    2 +
 oracle_script/pow/rep_16/cert/node_70.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_70.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_71.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_71.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_72.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_72.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_73.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_73.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_74.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_74.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_75.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_75.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_76.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_76.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_77.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_77.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_78.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_78.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_79.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_79.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_8.key.pri       |    2 +
 oracle_script/pow/rep_16/cert/node_8.key.pub       |    2 +
 oracle_script/pow/rep_16/cert/node_80.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_80.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_81.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_81.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_82.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_82.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_83.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_83.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_84.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_84.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_85.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_85.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_86.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_86.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_87.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_87.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_88.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_88.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_89.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_89.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_9.key.pri       |    2 +
 oracle_script/pow/rep_16/cert/node_9.key.pub       |    2 +
 oracle_script/pow/rep_16/cert/node_90.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_90.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_91.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_91.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_92.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_92.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_93.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_93.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_94.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_94.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_95.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_95.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_96.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_96.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_97.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_97.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_98.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_98.key.pub      |    2 +
 oracle_script/pow/rep_16/cert/node_99.key.pri      |    2 +
 oracle_script/pow/rep_16/cert/node_99.key.pub      |    2 +
 oracle_script/pow/rep_16/cli_list.txt              |    1 +
 oracle_script/pow/rep_16/iplist.txt                |   16 +
 oracle_script/pow/rep_16/lat.sh                    |   27 +
 oracle_script/pow/rep_16/poc.conf                  |   13 +
 oracle_script/pow/rep_16/run_poc.sh                |    3 +
 oracle_script/pow/rep_16/svr_list.txt              |   17 +
 oracle_script/pow/rep_32/cert/cert_1.cert          |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_32/cert/cert_10.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_32/cert/cert_11.cert         |    6 +
 oracle_script/pow/rep_32/cert/cert_12.cert         |    8 +
 oracle_script/pow/rep_32/cert/cert_13.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_32/cert/cert_14.cert         |    6 +
 oracle_script/pow/rep_32/cert/cert_15.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_32/cert/cert_16.cert         |    8 +
 oracle_script/pow/rep_32/cert/cert_17.cert         |    6 +
 oracle_script/pow/rep_32/cert/cert_18.cert         |    7 +
 oracle_script/pow/rep_32/cert/cert_19.cert         |    6 +
 oracle_script/pow/rep_32/cert/cert_2.cert          |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_32/cert/cert_20.cert         |    7 +
 oracle_script/pow/rep_32/cert/cert_21.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_32/cert/cert_22.cert         |    8 +
 oracle_script/pow/rep_32/cert/cert_23.cert         |    8 +
 oracle_script/pow/rep_32/cert/cert_24.cert         |    6 +
 oracle_script/pow/rep_32/cert/cert_25.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_32/cert/cert_26.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_32/cert/cert_27.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_32/cert/cert_28.cert         |    6 +
 oracle_script/pow/rep_32/cert/cert_29.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_32/cert/cert_3.cert          |    6 +
 oracle_script/pow/rep_32/cert/cert_30.cert         |    7 +
 oracle_script/pow/rep_32/cert/cert_31.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_32/cert/cert_32.cert         |    7 +
 oracle_script/pow/rep_32/cert/cert_4.cert          |    7 +
 oracle_script/pow/rep_32/cert/cert_5.cert          |    7 +
 oracle_script/pow/rep_32/cert/cert_6.cert          |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_32/cert/cert_7.cert          |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_32/cert/cert_8.cert          |    8 +
 oracle_script/pow/rep_32/cert/cert_9.cert          |    6 +
 oracle_script/pow/rep_32/cert/node_1.key.pri       |    2 +
 oracle_script/pow/rep_32/cert/node_1.key.pub       |    2 +
 oracle_script/pow/rep_32/cert/node_10.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_10.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_100.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_100.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_101.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_101.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_102.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_102.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_103.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_103.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_104.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_104.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_105.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_105.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_106.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_106.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_107.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_107.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_108.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_108.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_109.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_109.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_11.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_11.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_110.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_110.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_111.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_111.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_112.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_112.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_113.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_113.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_114.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_114.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_115.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_115.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_116.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_116.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_117.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_117.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_118.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_118.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_119.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_119.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_12.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_12.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_120.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_120.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_121.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_121.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_122.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_122.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_123.key.pri     |    2 +
 oracle_script/pow/rep_32/cert/node_123.key.pub     |    2 +
 oracle_script/pow/rep_32/cert/node_13.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_13.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_14.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_14.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_15.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_15.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_16.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_16.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_17.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_17.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_18.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_18.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_19.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_19.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_2.key.pri       |    2 +
 oracle_script/pow/rep_32/cert/node_2.key.pub       |    2 +
 oracle_script/pow/rep_32/cert/node_20.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_20.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_21.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_21.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_22.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_22.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_23.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_23.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_24.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_24.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_25.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_25.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_26.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_26.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_27.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_27.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_28.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_28.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_29.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_29.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_3.key.pri       |    2 +
 oracle_script/pow/rep_32/cert/node_3.key.pub       |    2 +
 oracle_script/pow/rep_32/cert/node_30.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_30.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_31.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_31.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_32.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_32.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_4.key.pri       |    2 +
 oracle_script/pow/rep_32/cert/node_4.key.pub       |    2 +
 oracle_script/pow/rep_32/cert/node_5.key.pri       |    2 +
 oracle_script/pow/rep_32/cert/node_5.key.pub       |    2 +
 oracle_script/pow/rep_32/cert/node_6.key.pri       |    2 +
 oracle_script/pow/rep_32/cert/node_6.key.pub       |    2 +
 oracle_script/pow/rep_32/cert/node_66.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_66.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_67.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_67.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_68.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_68.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_69.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_69.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_7.key.pri       |    2 +
 oracle_script/pow/rep_32/cert/node_7.key.pub       |    2 +
 oracle_script/pow/rep_32/cert/node_70.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_70.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_71.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_71.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_72.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_72.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_73.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_73.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_74.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_74.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_75.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_75.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_76.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_76.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_77.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_77.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_78.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_78.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_79.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_79.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_8.key.pri       |    2 +
 oracle_script/pow/rep_32/cert/node_8.key.pub       |    2 +
 oracle_script/pow/rep_32/cert/node_80.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_80.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_81.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_81.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_82.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_82.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_83.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_83.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_84.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_84.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_85.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_85.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_86.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_86.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_87.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_87.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_88.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_88.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_89.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_89.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_9.key.pri       |    2 +
 oracle_script/pow/rep_32/cert/node_9.key.pub       |    2 +
 oracle_script/pow/rep_32/cert/node_90.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_90.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_91.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_91.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_92.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_92.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_93.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_93.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_94.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_94.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_95.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_95.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_96.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_96.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_97.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_97.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_98.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_98.key.pub      |    2 +
 oracle_script/pow/rep_32/cert/node_99.key.pri      |    2 +
 oracle_script/pow/rep_32/cert/node_99.key.pub      |    2 +
 oracle_script/pow/rep_32/cli_list.txt              |    1 +
 oracle_script/pow/rep_32/iplist.txt                |   32 +
 oracle_script/pow/rep_32/poc.conf                  |   13 +
 oracle_script/pow/rep_32/run_poc.sh                |    3 +
 oracle_script/pow/rep_32/svr_list.txt              |   33 +
 oracle_script/pow/rep_4/cert/cert_1.cert           |    6 +
 oracle_script/pow/rep_4/cert/cert_10.cert          |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_4/cert/cert_11.cert          |    6 +
 oracle_script/pow/rep_4/cert/cert_12.cert          |    8 +
 oracle_script/pow/rep_4/cert/cert_13.cert          |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_4/cert/cert_14.cert          |    6 +
 oracle_script/pow/rep_4/cert/cert_15.cert          |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_4/cert/cert_16.cert          |    8 +
 oracle_script/pow/rep_4/cert/cert_17.cert          |    6 +
 oracle_script/pow/rep_4/cert/cert_18.cert          |    7 +
 oracle_script/pow/rep_4/cert/cert_19.cert          |    6 +
 oracle_script/pow/rep_4/cert/cert_2.cert           |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_4/cert/cert_20.cert          |    7 +
 oracle_script/pow/rep_4/cert/cert_21.cert          |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_4/cert/cert_22.cert          |    8 +
 oracle_script/pow/rep_4/cert/cert_23.cert          |    8 +
 oracle_script/pow/rep_4/cert/cert_24.cert          |    6 +
 oracle_script/pow/rep_4/cert/cert_25.cert          |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_4/cert/cert_26.cert          |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_4/cert/cert_27.cert          |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_4/cert/cert_28.cert          |    6 +
 oracle_script/pow/rep_4/cert/cert_29.cert          |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_4/cert/cert_3.cert           |    7 +
 oracle_script/pow/rep_4/cert/cert_30.cert          |    7 +
 oracle_script/pow/rep_4/cert/cert_31.cert          |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_4/cert/cert_32.cert          |    7 +
 oracle_script/pow/rep_4/cert/cert_4.cert           |    6 +
 oracle_script/pow/rep_4/cert/cert_5.cert           |    7 +
 oracle_script/pow/rep_4/cert/cert_6.cert           |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_4/cert/cert_7.cert           |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_4/cert/cert_8.cert           |    8 +
 oracle_script/pow/rep_4/cert/cert_9.cert           |    6 +
 oracle_script/pow/rep_4/cert/node_1.key.pri        |    2 +
 oracle_script/pow/rep_4/cert/node_1.key.pub        |    2 +
 oracle_script/pow/rep_4/cert/node_10.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_10.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_100.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_100.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_101.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_101.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_102.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_102.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_103.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_103.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_104.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_104.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_105.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_105.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_106.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_106.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_107.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_107.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_108.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_108.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_109.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_109.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_11.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_11.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_110.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_110.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_111.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_111.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_112.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_112.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_113.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_113.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_114.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_114.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_115.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_115.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_116.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_116.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_117.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_117.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_118.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_118.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_119.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_119.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_12.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_12.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_120.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_120.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_121.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_121.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_122.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_122.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_123.key.pri      |    2 +
 oracle_script/pow/rep_4/cert/node_123.key.pub      |    2 +
 oracle_script/pow/rep_4/cert/node_13.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_13.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_14.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_14.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_15.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_15.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_16.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_16.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_17.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_17.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_18.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_18.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_19.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_19.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_2.key.pri        |    2 +
 oracle_script/pow/rep_4/cert/node_2.key.pub        |    2 +
 oracle_script/pow/rep_4/cert/node_20.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_20.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_21.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_21.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_22.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_22.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_23.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_23.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_24.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_24.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_25.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_25.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_26.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_26.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_27.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_27.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_28.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_28.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_29.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_29.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_3.key.pri        |    2 +
 oracle_script/pow/rep_4/cert/node_3.key.pub        |    2 +
 oracle_script/pow/rep_4/cert/node_30.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_30.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_31.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_31.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_32.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_32.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_4.key.pri        |    2 +
 oracle_script/pow/rep_4/cert/node_4.key.pub        |    2 +
 oracle_script/pow/rep_4/cert/node_5.key.pri        |    2 +
 oracle_script/pow/rep_4/cert/node_5.key.pub        |    2 +
 oracle_script/pow/rep_4/cert/node_6.key.pri        |    2 +
 oracle_script/pow/rep_4/cert/node_6.key.pub        |    2 +
 oracle_script/pow/rep_4/cert/node_66.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_66.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_67.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_67.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_68.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_68.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_69.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_69.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_7.key.pri        |    2 +
 oracle_script/pow/rep_4/cert/node_7.key.pub        |    2 +
 oracle_script/pow/rep_4/cert/node_70.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_70.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_71.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_71.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_72.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_72.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_73.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_73.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_74.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_74.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_75.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_75.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_76.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_76.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_77.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_77.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_78.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_78.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_79.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_79.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_8.key.pri        |    2 +
 oracle_script/pow/rep_4/cert/node_8.key.pub        |    2 +
 oracle_script/pow/rep_4/cert/node_80.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_80.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_81.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_81.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_82.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_82.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_83.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_83.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_84.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_84.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_85.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_85.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_86.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_86.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_87.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_87.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_88.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_88.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_89.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_89.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_9.key.pri        |    2 +
 oracle_script/pow/rep_4/cert/node_9.key.pub        |    2 +
 oracle_script/pow/rep_4/cert/node_90.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_90.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_91.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_91.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_92.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_92.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_93.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_93.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_94.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_94.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_95.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_95.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_96.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_96.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_97.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_97.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_98.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_98.key.pub       |    2 +
 oracle_script/pow/rep_4/cert/node_99.key.pri       |    2 +
 oracle_script/pow/rep_4/cert/node_99.key.pub       |    2 +
 oracle_script/pow/rep_4/cli_list.txt               |    1 +
 oracle_script/pow/rep_4/iplist.txt                 |    4 +
 oracle_script/pow/rep_4/poc.conf                   |   13 +
 oracle_script/pow/rep_4/run_poc.sh                 |    3 +
 oracle_script/pow/rep_4/svr_list.txt               |    5 +
 oracle_script/pow/rep_64/cert/cert_1.cert          |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_10.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_100.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_101.cert        |    8 +
 oracle_script/pow/rep_64/cert/cert_102.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_103.cert        |    8 +
 oracle_script/pow/rep_64/cert/cert_104.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_105.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_106.cert        |    8 +
 oracle_script/pow/rep_64/cert/cert_107.cert        |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_108.cert        |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_109.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_11.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_110.cert        |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_111.cert        |    8 +
 oracle_script/pow/rep_64/cert/cert_112.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_113.cert        |    6 +
 oracle_script/pow/rep_64/cert/cert_114.cert        |    8 +
 oracle_script/pow/rep_64/cert/cert_115.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_116.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_117.cert        |    6 +
 oracle_script/pow/rep_64/cert/cert_118.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_119.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_12.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_120.cert        |    7 +
 oracle_script/pow/rep_64/cert/cert_13.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_14.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_15.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_16.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_17.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_18.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_19.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_2.cert          |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_20.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_21.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_22.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_23.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_24.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_25.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_26.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_27.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_28.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_29.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_3.cert          |    6 +
 oracle_script/pow/rep_64/cert/cert_30.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_31.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_32.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_33.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_34.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_35.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_36.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_37.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_38.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_39.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_4.cert          |    7 +
 oracle_script/pow/rep_64/cert/cert_40.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_41.cert         |  Bin 0 -> 166 bytes
 oracle_script/pow/rep_64/cert/cert_42.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_43.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_44.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_45.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_46.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_47.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_48.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_49.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_5.cert          |    7 +
 oracle_script/pow/rep_64/cert/cert_50.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_51.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_52.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_53.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_54.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_55.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_56.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_57.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_58.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_59.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_6.cert          |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_60.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_61.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_62.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_63.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_64.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_65.cert         |    9 +
 oracle_script/pow/rep_64/cert/cert_66.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_67.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_68.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_69.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_7.cert          |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_70.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_71.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_72.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_73.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_74.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_75.cert         |    9 +
 oracle_script/pow/rep_64/cert/cert_76.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_77.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_78.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_79.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_8.cert          |    8 +
 oracle_script/pow/rep_64/cert/cert_80.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_81.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_82.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_83.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_84.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_85.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_86.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_87.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_88.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_89.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_9.cert          |    6 +
 oracle_script/pow/rep_64/cert/cert_90.cert         |    8 +
 oracle_script/pow/rep_64/cert/cert_91.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_92.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_93.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_94.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_95.cert         |  Bin 0 -> 167 bytes
 oracle_script/pow/rep_64/cert/cert_96.cert         |  Bin 0 -> 168 bytes
 oracle_script/pow/rep_64/cert/cert_97.cert         |    7 +
 oracle_script/pow/rep_64/cert/cert_98.cert         |    6 +
 oracle_script/pow/rep_64/cert/cert_99.cert         |    7 +
 oracle_script/pow/rep_64/cert/node_1.key.pri       |    2 +
 oracle_script/pow/rep_64/cert/node_1.key.pub       |    2 +
 oracle_script/pow/rep_64/cert/node_10.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_10.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_100.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_100.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_101.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_101.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_102.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_102.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_103.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_103.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_104.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_104.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_105.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_105.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_106.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_106.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_107.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_107.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_108.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_108.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_109.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_109.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_11.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_11.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_110.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_110.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_111.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_111.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_112.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_112.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_113.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_113.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_114.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_114.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_115.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_115.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_116.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_116.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_117.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_117.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_118.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_118.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_119.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_119.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_12.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_12.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_120.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_120.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_121.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_121.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_122.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_122.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_123.key.pri     |    2 +
 oracle_script/pow/rep_64/cert/node_123.key.pub     |    2 +
 oracle_script/pow/rep_64/cert/node_13.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_13.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_14.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_14.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_15.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_15.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_16.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_16.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_17.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_17.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_18.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_18.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_19.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_19.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_2.key.pri       |    2 +
 oracle_script/pow/rep_64/cert/node_2.key.pub       |    2 +
 oracle_script/pow/rep_64/cert/node_20.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_20.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_21.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_21.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_22.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_22.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_23.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_23.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_24.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_24.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_25.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_25.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_26.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_26.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_27.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_27.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_28.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_28.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_29.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_29.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_3.key.pri       |    2 +
 oracle_script/pow/rep_64/cert/node_3.key.pub       |    2 +
 oracle_script/pow/rep_64/cert/node_30.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_30.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_31.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_31.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_32.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_32.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_33.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_33.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_34.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_34.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_35.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_35.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_36.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_36.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_37.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_37.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_38.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_38.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_39.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_39.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_4.key.pri       |    2 +
 oracle_script/pow/rep_64/cert/node_4.key.pub       |    2 +
 oracle_script/pow/rep_64/cert/node_40.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_40.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_41.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_41.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_42.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_42.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_43.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_43.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_44.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_44.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_45.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_45.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_46.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_46.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_47.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_47.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_48.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_48.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_49.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_49.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_5.key.pri       |    2 +
 oracle_script/pow/rep_64/cert/node_5.key.pub       |    2 +
 oracle_script/pow/rep_64/cert/node_50.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_50.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_51.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_51.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_52.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_52.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_53.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_53.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_54.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_54.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_55.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_55.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_56.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_56.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_57.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_57.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_58.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_58.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_59.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_59.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_6.key.pri       |    2 +
 oracle_script/pow/rep_64/cert/node_6.key.pub       |    2 +
 oracle_script/pow/rep_64/cert/node_60.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_60.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_61.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_61.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_62.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_62.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_63.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_63.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_64.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_64.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_65.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_65.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_66.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_66.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_67.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_67.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_68.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_68.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_69.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_69.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_7.key.pri       |    2 +
 oracle_script/pow/rep_64/cert/node_7.key.pub       |    2 +
 oracle_script/pow/rep_64/cert/node_70.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_70.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_71.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_71.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_72.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_72.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_73.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_73.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_74.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_74.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_75.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_75.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_76.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_76.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_77.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_77.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_78.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_78.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_79.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_79.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_8.key.pri       |    2 +
 oracle_script/pow/rep_64/cert/node_8.key.pub       |    2 +
 oracle_script/pow/rep_64/cert/node_80.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_80.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_81.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_81.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_82.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_82.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_83.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_83.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_84.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_84.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_85.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_85.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_86.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_86.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_87.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_87.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_88.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_88.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_89.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_89.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_9.key.pri       |    2 +
 oracle_script/pow/rep_64/cert/node_9.key.pub       |    2 +
 oracle_script/pow/rep_64/cert/node_90.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_90.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_91.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_91.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_92.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_92.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_93.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_93.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_94.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_94.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_95.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_95.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_96.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_96.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_97.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_97.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_98.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_98.key.pub      |    2 +
 oracle_script/pow/rep_64/cert/node_99.key.pri      |    2 +
 oracle_script/pow/rep_64/cert/node_99.key.pub      |    2 +
 oracle_script/pow/rep_64/cli_list.txt              |    1 +
 oracle_script/pow/rep_64/iplist.txt                |   64 +
 oracle_script/pow/rep_64/poc.conf                  |   13 +
 oracle_script/pow/rep_64/run_poc.sh                |    3 +
 oracle_script/pow/rep_64/svr_list.txt              |   65 +
 oracle_script/pow/rep_8/cert/cert_1.cert           |    6 +
 oracle_script/pow/rep_8/cert/cert_2.cert           |    7 +
 oracle_script/pow/rep_8/cert/cert_3.cert           |    7 +
 oracle_script/pow/rep_8/cert/cert_4.cert           |    6 +
 oracle_script/pow/rep_8/cert/cert_5.cert           |    7 +
 oracle_script/pow/rep_8/cert/cert_6.cert           |    7 +
 oracle_script/pow/rep_8/cert/cert_7.cert           |    7 +
 oracle_script/pow/rep_8/cert/cert_8.cert           |    6 +
 oracle_script/pow/rep_8/cert/cert_9.cert           |    7 +
 oracle_script/pow/rep_8/cert/node_1.key.pri        |    2 +
 oracle_script/pow/rep_8/cert/node_1.key.pub        |    2 +
 oracle_script/pow/rep_8/cert/node_10.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_10.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_100.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_100.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_101.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_101.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_102.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_102.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_103.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_103.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_104.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_104.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_105.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_105.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_106.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_106.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_107.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_107.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_108.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_108.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_109.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_109.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_11.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_11.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_110.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_110.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_111.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_111.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_112.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_112.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_113.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_113.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_114.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_114.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_115.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_115.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_116.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_116.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_117.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_117.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_118.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_118.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_119.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_119.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_12.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_12.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_120.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_120.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_121.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_121.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_122.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_122.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_123.key.pri      |    2 +
 oracle_script/pow/rep_8/cert/node_123.key.pub      |    2 +
 oracle_script/pow/rep_8/cert/node_13.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_13.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_14.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_14.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_15.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_15.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_16.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_16.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_2.key.pri        |    2 +
 oracle_script/pow/rep_8/cert/node_2.key.pub        |    2 +
 oracle_script/pow/rep_8/cert/node_3.key.pri        |    2 +
 oracle_script/pow/rep_8/cert/node_3.key.pub        |    2 +
 oracle_script/pow/rep_8/cert/node_4.key.pri        |    2 +
 oracle_script/pow/rep_8/cert/node_4.key.pub        |    2 +
 oracle_script/pow/rep_8/cert/node_5.key.pri        |    2 +
 oracle_script/pow/rep_8/cert/node_5.key.pub        |    2 +
 oracle_script/pow/rep_8/cert/node_6.key.pri        |    2 +
 oracle_script/pow/rep_8/cert/node_6.key.pub        |    2 +
 oracle_script/pow/rep_8/cert/node_66.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_66.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_67.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_67.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_68.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_68.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_69.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_69.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_7.key.pri        |    2 +
 oracle_script/pow/rep_8/cert/node_7.key.pub        |    2 +
 oracle_script/pow/rep_8/cert/node_70.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_70.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_71.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_71.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_72.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_72.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_73.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_73.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_74.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_74.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_75.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_75.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_76.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_76.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_77.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_77.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_78.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_78.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_79.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_79.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_8.key.pri        |    2 +
 oracle_script/pow/rep_8/cert/node_8.key.pub        |    2 +
 oracle_script/pow/rep_8/cert/node_80.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_80.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_81.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_81.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_82.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_82.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_83.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_83.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_84.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_84.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_85.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_85.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_86.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_86.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_87.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_87.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_88.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_88.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_89.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_89.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_9.key.pri        |    2 +
 oracle_script/pow/rep_8/cert/node_9.key.pub        |    2 +
 oracle_script/pow/rep_8/cert/node_90.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_90.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_91.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_91.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_92.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_92.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_93.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_93.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_94.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_94.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_95.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_95.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_96.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_96.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_97.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_97.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_98.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_98.key.pub       |    2 +
 oracle_script/pow/rep_8/cert/node_99.key.pri       |    2 +
 oracle_script/pow/rep_8/cert/node_99.key.pub       |    2 +
 oracle_script/pow/rep_8/cli_list.txt               |    2 +
 oracle_script/pow/rep_8/iplist.txt                 |    9 +
 oracle_script/pow/rep_8/poc.conf                   |   13 +
 oracle_script/pow/rep_8/run_poc.sh                 |    3 +
 oracle_script/pow/rep_8/svr_list.txt               |    9 +
 oracle_script/pow/run_cli.py                       |   46 +
 oracle_script/pow/run_cli.sh                       |    2 +
 oracle_script/pow/run_poc.sh                       |    9 +
 oracle_script/pow/run_server.sh                    |   25 +
 oracle_script/pow/run_svr.py                       |   60 +
 oracle_script/pow/shell_cmd.sh                     |   14 +
 oracle_script/pow/shutdown.sh                      |   22 +
 oracle_script/pow/svr_list.txt                     |    4 +
 oracle_script/ssh-2022-03-24.key                   |   27 +
 oracle_script/svr_list.txt                         |  121 +
 ordering/pbft/BUILD                                |  199 ++
 ordering/pbft/checkpoint.cpp                       |   62 +
 ordering/pbft/checkpoint.h                         |   32 +
 ordering/pbft/checkpoint_collector.cpp             |   88 +
 ordering/pbft/checkpoint_collector.h               |   36 +
 ordering/pbft/commitment.cpp                       |  137 +
 ordering/pbft/commitment.h                         |   42 +
 ordering/pbft/commitment_test.cpp                  |  299 ++
 ordering/pbft/consensus_service_pbft.cpp           |   82 +
 ordering/pbft/consensus_service_pbft.h             |   41 +
 ordering/pbft/lock_free_collector_pool.cpp         |   51 +
 ordering/pbft/lock_free_collector_pool.h           |   27 +
 ordering/pbft/lock_free_collector_pool_test.cpp    |   45 +
 ordering/pbft/query.cpp                            |   61 +
 ordering/pbft/query.h                              |   23 +
 ordering/pbft/query_test.cpp                       |  166 ++
 ordering/pbft/recovery.cpp                         |  193 ++
 ordering/pbft/recovery.h                           |   37 +
 ordering/pbft/response_manager.cpp                 |  244 ++
 ordering/pbft/response_manager.h                   |   60 +
 ordering/pbft/response_manager_test.cpp            |  181 ++
 ordering/pbft/transaction_collector.cpp            |  128 +
 ordering/pbft/transaction_collector.h              |  103 +
 ordering/pbft/transaction_collector_test.cpp       |  378 +++
 ordering/pbft/transaction_manager.cpp              |  239 ++
 ordering/pbft/transaction_manager.h                |  113 +
 ordering/pbft/transaction_utils.cpp                |   13 +
 ordering/pbft/transaction_utils.h                  |   15 +
 ordering/poc/pow/BUILD                             |  201 ++
 ordering/poc/pow/block_manager.cpp                 |  271 ++
 ordering/poc/pow/block_manager.h                   |   86 +
 ordering/poc/pow/block_manager_test.cpp            |  400 +++
 ordering/poc/pow/consensus_service_pow.cpp         |   54 +
 ordering/poc/pow/consensus_service_pow.h           |   29 +
 ordering/poc/pow/consensus_service_pow_test.cpp    |  330 +++
 ordering/poc/pow/merkle.cpp                        |   28 +
 ordering/poc/pow/merkle.h                          |   12 +
 ordering/poc/pow/merkle_test.cpp                   |   46 +
 ordering/poc/pow/miner.cpp                         |  161 ++
 ordering/poc/pow/miner.h                           |   44 +
 ordering/poc/pow/miner_manager.cpp                 |   12 +
 ordering/poc/pow/miner_manager.h                   |   18 +
 ordering/poc/pow/miner_test.cpp                    |  170 ++
 ordering/poc/pow/miner_utils.cpp                   |  102 +
 ordering/poc/pow/miner_utils.h                     |   30 +
 ordering/poc/pow/miner_utils_test.cpp              |   76 +
 ordering/poc/pow/mock_transaction_accessor.h       |   15 +
 ordering/poc/pow/pow_manager.cpp                   |  271 ++
 ordering/poc/pow/pow_manager.h                     |   78 +
 ordering/poc/pow/pow_manager_test.cpp              |  482 ++++
 ordering/poc/pow/shift_manager.cpp                 |   33 +
 ordering/poc/pow/shift_manager.h                   |   24 +
 ordering/poc/pow/transaction_accessor.cpp          |  155 ++
 ordering/poc/pow/transaction_accessor.h            |   48 +
 ordering/poc/pow/transaction_accessor_test.cpp     |  121 +
 ordering/poc/proto/BUILD                           |   28 +
 ordering/poc/proto/pow.proto                       |   52 +
 ordering/poc/proto/transaction.proto               |   12 +
 ordering/status/checkpoint/BUILD                   |   15 +
 ordering/status/checkpoint/check_point_info.cpp    |   85 +
 ordering/status/checkpoint/check_point_info.h      |   43 +
 package-lock.json                                  |   11 -
 platform/common/data_comm/BUILD                    |   35 -
 platform/common/data_comm/data_comm.h              |   39 -
 platform/common/data_comm/network_comm.h           |   32 -
 platform/common/network/BUILD                      |   58 -
 platform/common/network/mock_socket.h              |   43 -
 platform/common/network/network_utils.cpp          |   50 -
 platform/common/network/network_utils.h            |   32 -
 platform/common/network/network_utils_test.cpp     |   43 -
 platform/common/network/socket.h                   |   51 -
 platform/common/network/tcp_socket.cpp             |  237 --
 platform/common/network/tcp_socket.h               |   59 -
 platform/common/network/tcp_socket_test.cpp        |   94 -
 platform/common/queue/BUILD                        |   65 -
 platform/common/queue/batch_queue.h                |   79 -
 platform/common/queue/batch_queue_test.cpp         |   98 -
 platform/common/queue/blocking_queue.h             |  106 -
 platform/common/queue/lock_free_queue.h            |   78 -
 platform/common/queue/lock_free_queue_test.cpp     |   50 -
 platform/config/BUILD                              |   56 -
 platform/config/resdb_config.cpp                   |  253 --
 platform/config/resdb_config.h                     |  149 -
 platform/config/resdb_config_test.cpp              |  126 -
 platform/config/resdb_config_utils.cpp             |  157 --
 platform/config/resdb_config_utils.h               |   43 -
 platform/config/resdb_poc_config.cpp               |   74 -
 platform/config/resdb_poc_config.h                 |   71 -
 platform/consensus/checkpoint/BUILD                |   36 -
 platform/consensus/checkpoint/checkpoint.h         |   32 -
 platform/consensus/checkpoint/mock_checkpoint.h    |   33 -
 platform/consensus/execution/BUILD                 |  132 -
 platform/consensus/execution/duplicate_manager.cpp |  143 -
 platform/consensus/execution/duplicate_manager.h   |   69 -
 .../consensus/execution/geo_global_executor.cpp    |  131 -
 platform/consensus/execution/geo_global_executor.h |   70 -
 .../execution/geo_global_executor_test.cpp         |   95 -
 .../execution/geo_transaction_executor.cpp         |  127 -
 .../consensus/execution/geo_transaction_executor.h |   58 -
 .../execution/geo_transaction_executor_test.cpp    |  150 -
 .../consensus/execution/mock_geo_global_executor.h |   37 -
 platform/consensus/execution/system_info.cpp       |   75 -
 platform/consensus/execution/system_info.h         |   54 -
 platform/consensus/execution/system_info_test.cpp  |   75 -
 .../consensus/execution/transaction_executor.cpp   |  248 --
 .../consensus/execution/transaction_executor.h     |  101 -
 .../execution/transaction_executor_test.cpp        |  282 --
 platform/consensus/ordering/common/BUILD           |   29 -
 platform/consensus/ordering/common/algorithm/BUILD |   29 -
 .../ordering/common/algorithm/protocol_base.cpp    |   65 -
 .../ordering/common/algorithm/protocol_base.h      |   87 -
 platform/consensus/ordering/common/framework/BUILD |   66 -
 .../ordering/common/framework/consensus.cpp        |  168 --
 .../ordering/common/framework/consensus.h          |   78 -
 .../common/framework/performance_manager.cpp       |  276 --
 .../common/framework/performance_manager.h         |   97 -
 .../ordering/common/framework/response_manager.cpp |  236 --
 .../ordering/common/framework/response_manager.h   |   79 -
 .../common/framework/transaction_utils.cpp         |   43 -
 .../ordering/common/framework/transaction_utils.h  |   39 -
 .../ordering/common/transaction_utils.cpp          |   41 -
 .../consensus/ordering/common/transaction_utils.h  |   33 -
 platform/consensus/ordering/geo_pbft/BUILD         |   68 -
 platform/consensus/ordering/geo_pbft/README.md     |   23 -
 .../geo_pbft/consensus_manager_geo_pbft.cpp        |   45 -
 .../ordering/geo_pbft/consensus_manager_geo_pbft.h |   43 -
 .../ordering/geo_pbft/geo_pbft_commitment.cpp      |  142 -
 .../ordering/geo_pbft/geo_pbft_commitment.h        |   68 -
 .../ordering/geo_pbft/geo_pbft_commitment_test.cpp |  216 --
 platform/consensus/ordering/geo_pbft/hash_set.h    |   70 -
 platform/consensus/ordering/img/GeoBFT_1.png       |  Bin 95131 -> 0 bytes
 platform/consensus/ordering/img/PBFT_1.png         |  Bin 28505 -> 0 bytes
 platform/consensus/ordering/img/PBFT_2.png         |  Bin 40103 -> 0 bytes
 platform/consensus/ordering/img/PBFT_3.png         |  Bin 49651 -> 0 bytes
 platform/consensus/ordering/img/PBFT_4.png         |  Bin 50363 -> 0 bytes
 platform/consensus/ordering/img/PBFT_5.png         |  Bin 49507 -> 0 bytes
 platform/consensus/ordering/img/PBFT_6.png         |  Bin 20268 -> 0 bytes
 platform/consensus/ordering/pbft/BUILD             |  268 --
 platform/consensus/ordering/pbft/README.md         |   50 -
 .../consensus/ordering/pbft/checkpoint_manager.cpp |  381 ---
 .../consensus/ordering/pbft/checkpoint_manager.h   |  118 -
 .../ordering/pbft/checkpoint_manager_test.cpp      |  307 ---
 platform/consensus/ordering/pbft/commitment.cpp    |  333 ---
 platform/consensus/ordering/pbft/commitment.h      |   79 -
 .../consensus/ordering/pbft/commitment_test.cpp    |  370 ---
 .../ordering/pbft/consensus_manager_pbft.cpp       |  266 --
 .../ordering/pbft/consensus_manager_pbft.h         |   88 -
 .../ordering/pbft/lock_free_collector_pool.cpp     |   70 -
 .../ordering/pbft/lock_free_collector_pool.h       |   46 -
 .../pbft/lock_free_collector_pool_test.cpp         |   64 -
 .../consensus/ordering/pbft/message_manager.cpp    |  293 --
 platform/consensus/ordering/pbft/message_manager.h |  144 -
 .../ordering/pbft/mock_checkpoint_manager.h        |   47 -
 .../ordering/pbft/performance_manager.cpp          |  407 ---
 .../consensus/ordering/pbft/performance_manager.h  |  118 -
 .../pbft/pre_very_consensus_service_pbft.h         |   55 -
 platform/consensus/ordering/pbft/query.cpp         |  148 -
 platform/consensus/ordering/pbft/query.h           |   48 -
 platform/consensus/ordering/pbft/query_test.cpp    |  205 --
 .../consensus/ordering/pbft/response_manager.cpp   |  410 ---
 .../consensus/ordering/pbft/response_manager.h     |  109 -
 .../ordering/pbft/response_manager_test.cpp        |  208 --
 .../ordering/pbft/transaction_collector.cpp        |  238 --
 .../ordering/pbft/transaction_collector.h          |  141 -
 .../ordering/pbft/transaction_collector_test.cpp   |  397 ---
 .../consensus/ordering/pbft/transaction_utils.cpp  |   41 -
 .../consensus/ordering/pbft/transaction_utils.h    |   38 -
 .../consensus/ordering/pbft/viewchange_manager.cpp |  618 -----
 .../consensus/ordering/pbft/viewchange_manager.h   |  160 --
 .../ordering/pbft/viewchange_manager_test.cpp      |  124 -
 platform/consensus/ordering/poe/algorithm/BUILD    |   33 -
 platform/consensus/ordering/poe/algorithm/poe.cpp  |   91 -
 platform/consensus/ordering/poe/algorithm/poe.h    |   59 -
 platform/consensus/ordering/poe/framework/BUILD    |   33 -
 .../consensus/ordering/poe/framework/consensus.cpp |   98 -
 .../consensus/ordering/poe/framework/consensus.h   |   53 -
 platform/consensus/ordering/poe/proto/BUILD        |   34 -
 .../consensus/ordering/poe/proto/proposal.proto    |   46 -
 platform/consensus/recovery/BUILD                  |   47 -
 platform/consensus/recovery/recovery.cpp           |  530 ----
 platform/consensus/recovery/recovery.h             |  106 -
 platform/consensus/recovery/recovery_test.cpp      |  462 ----
 platform/networkstrate/BUILD                       |  196 --
 platform/networkstrate/README.md                   |   36 -
 platform/networkstrate/async_acceptor.cpp          |  162 --
 platform/networkstrate/async_acceptor.h            |   76 -
 platform/networkstrate/async_acceptor_test.cpp     |  135 -
 platform/networkstrate/async_replica_client.cpp    |  112 -
 platform/networkstrate/async_replica_client.h      |   63 -
 .../networkstrate/async_replica_client_test.cpp    |  170 --
 platform/networkstrate/consensus_manager.cpp       |  373 ---
 platform/networkstrate/consensus_manager.h         |  114 -
 platform/networkstrate/consensus_manager_test.cpp  |  303 --
 platform/networkstrate/mock_async_replica_client.h |   35 -
 platform/networkstrate/mock_replica_communicator.h |   49 -
 platform/networkstrate/mock_service_interface.h    |   37 -
 platform/networkstrate/replica_communicator.cpp    |  270 --
 platform/networkstrate/replica_communicator.h      |   98 -
 .../networkstrate/replica_communicator_test.cpp    |  139 -
 platform/networkstrate/server_comm.h               |   32 -
 platform/networkstrate/service_interface.cpp       |   38 -
 platform/networkstrate/service_interface.h         |   47 -
 platform/networkstrate/service_network.cpp         |  141 -
 platform/networkstrate/service_network.h           |   68 -
 platform/networkstrate/service_network_test.cpp    |  116 -
 platform/proto/BUILD                               |  151 -
 platform/proto/broadcast.proto                     |   26 -
 platform/proto/checkpoint_info.proto               |   44 -
 platform/proto/client_test.proto                   |   30 -
 platform/proto/logging.proto                       |   37 -
 platform/proto/network_type.proto                  |   29 -
 platform/proto/replica_info.proto                  |   77 -
 platform/proto/resdb.proto                         |  208 --
 platform/proto/system_info_data.proto              |   27 -
 platform/proto/viewchange_message.proto            |   49 -
 platform/rdbc/BUILD                                |   34 -
 platform/rdbc/acceptor.cpp                         |   98 -
 platform/rdbc/acceptor.h                           |   57 -
 platform/statistic/BUILD                           |   56 -
 platform/statistic/README.md                       |  188 --
 platform/statistic/prometheus_handler.cpp          |  108 -
 platform/statistic/prometheus_handler.h            |   79 -
 platform/statistic/set_random_data.cpp             |   86 -
 platform/statistic/stats.cpp                       |  536 ----
 platform/statistic/stats.h                         |  155 --
 platform/test/BUILD                                |   38 -
 platform/test/proto/BUILD                          |   33 -
 platform/test/proto/resdb_test.proto               |   29 -
 platform/test/resdb_test.cpp                       |  168 --
 platform/test/test_data/BUILD                      |   25 -
 platform/test/test_data/kv_config.config           |   27 -
 platform/test/test_data/server.config              |   27 -
 proto/BUILD                                        |  109 +
 proto/broadcast.proto                              |    7 +
 proto/checkpoint_info.proto                        |   14 +
 proto/client_test.proto                            |   11 +
 proto/contract/BUILD                               |   68 -
 proto/contract/account.proto                       |   28 -
 proto/contract/contract.proto                      |   30 -
 proto/contract/func_params.proto                   |   40 -
 proto/contract/rpc.proto                           |   50 -
 proto/kv/BUILD                                     |   32 -
 proto/kv/kv.proto                                  |   72 -
 proto/kv_server.proto                              |   20 +
 proto/logging.proto                                |   18 +
 proto/network_type.proto                           |   10 +
 proto/replica_info.proto                           |   22 +
 proto/resdb.proto                                  |  146 +
 proto/signature_info.proto                         |   60 +
 proto/utxo/BUILD                                   |   55 -
 proto/utxo/config.proto                            |   34 -
 proto/utxo/rpc.proto                               |   44 -
 proto/utxo/utxo.proto                              |   42 -
 repositories.bzl                                   |   90 -
 script.js                                          |  123 -
 scripts/deploy/README.md                           |   65 -
 scripts/deploy/config/key_example.conf             |    2 -
 scripts/deploy/config/kv_performance_server.conf   |    8 -
 scripts/deploy/config/kv_server.conf               |    8 -
 scripts/deploy/config/poe.config                   |   10 -
 scripts/deploy/config/template.config              |    6 -
 scripts/deploy/data/cert/cert_6.cert               |  Bin 166 -> 0 bytes
 scripts/deploy/data/cert/cert_7.cert               |    6 -
 scripts/deploy/data/cert/cert_8.cert               |  Bin 166 -> 0 bytes
 scripts/deploy/data/cert/cert_9.cert               |    7 -
 scripts/deploy/data/cert/node6.key.key.pri         |    2 -
 scripts/deploy/data/cert/node6.key.key.pub         |    2 -
 scripts/deploy/data/cert/node6.key.pri             |    2 -
 scripts/deploy/data/cert/node6.key.pub             |    2 -
 scripts/deploy/data/cert/node7.key.key.pri         |    2 -
 scripts/deploy/data/cert/node7.key.key.pub         |    2 -
 scripts/deploy/data/cert/node7.key.pri             |    2 -
 scripts/deploy/data/cert/node7.key.pub             |    2 -
 scripts/deploy/data/cert/node8.key.key.pri         |    2 -
 scripts/deploy/data/cert/node8.key.key.pub         |    2 -
 scripts/deploy/data/cert/node8.key.pri             |    2 -
 scripts/deploy/data/cert/node8.key.pub             |    2 -
 scripts/deploy/data/cert/node9.key.key.pri         |    2 -
 scripts/deploy/data/cert/node9.key.key.pub         |    2 -
 scripts/deploy/data/cert/node9.key.pri             |    2 -
 scripts/deploy/data/cert/node9.key.pub             |    2 -
 scripts/deploy/performance/calculate_result.py     |   71 -
 scripts/deploy/performance/pbft_performance.sh     |   21 -
 scripts/deploy/performance/poe_performance.sh      |   23 -
 scripts/deploy/performance/run_performance.sh      |   56 -
 scripts/deploy/script/deploy.sh                    |  166 --
 scripts/deploy/script/env.sh                       |   44 -
 scripts/deploy/script/generate_config.sh           |   82 -
 scripts/deploy/script/generate_key.sh              |   33 -
 scripts/deploy/script/load_config.sh               |   26 -
 scripts/format.sh                                  |   22 -
 server/BUILD                                       |  171 ++
 server/async_acceptor.cpp                          |  134 +
 server/async_acceptor.h                            |   57 +
 server/async_acceptor_test.cpp                     |  116 +
 server/async_replica_client.cpp                    |   94 +
 server/async_replica_client.h                      |   43 +
 server/async_replica_client_test.cpp               |  151 +
 server/consensus_service.cpp                       |  279 ++
 server/consensus_service.h                         |   90 +
 server/consensus_service_test.cpp                  |  226 ++
 server/mock_async_replica_client.h                 |   16 +
 server/mock_resdb_replica_client.h                 |   23 +
 server/mock_resdb_service.h                        |   18 +
 server/resdb_replica_client.cpp                    |  223 ++
 server/resdb_replica_client.h                      |   73 +
 server/resdb_replica_client_test.cpp               |  120 +
 server/resdb_server.cpp                            |  165 ++
 server/resdb_server.h                              |   51 +
 server/resdb_server_test.cpp                       |   97 +
 server/resdb_service.cpp                           |   19 +
 server/resdb_service.h                             |   28 +
 server/server_comm.h                               |   13 +
 service/contract/BUILD                             |   30 -
 service/contract/contract_service.cpp              |   70 -
 service/kv/BUILD                                   |   42 -
 service/kv/kv_service.cpp                          |   81 -
 service/tools/config/interface/service.config      |    3 -
 service/tools/config/interface/service0.config     |    3 -
 service/tools/config/server/server.config          |   36 -
 service/tools/config/server/utxo_config.config     |   12 -
 service/tools/contract/README.md                   |   38 -
 service/tools/contract/api_tools/BUILD             |   31 -
 .../contract/api_tools/config/server_config.config |   28 -
 .../tools/contract/api_tools/contract_tools.cpp    |  141 -
 .../contract/api_tools/example_contract/compile.sh |   20 -
 .../contract/api_tools/example_contract/token.json |   15 -
 .../contract/api_tools/example_contract/token.sol  |   31 -
 .../service_tools/start_contract_service.sh        |   32 -
 service/tools/data/cert/admin.key.pri              |    2 -
 service/tools/data/cert/admin.key.pub              |    2 -
 service/tools/data/cert/cert_1.cert                |  Bin 166 -> 0 bytes
 service/tools/data/cert/cert_2.cert                |    7 -
 service/tools/data/cert/cert_3.cert                |    7 -
 service/tools/data/cert/cert_4.cert                |    6 -
 service/tools/data/cert/cert_5.cert                |    8 -
 service/tools/data/cert/cert_6.cert                |  Bin 166 -> 0 bytes
 service/tools/data/cert/cert_7.cert                |    6 -
 service/tools/data/cert/cert_8.cert                |  Bin 166 -> 0 bytes
 service/tools/data/cert/cert_9.cert                |    7 -
 service/tools/data/cert/node1.key.pri              |    2 -
 service/tools/data/cert/node1.key.pub              |    3 -
 service/tools/data/cert/node2.key.pri              |    2 -
 service/tools/data/cert/node2.key.pub              |    2 -
 service/tools/data/cert/node3.key.pri              |  Bin 36 -> 0 bytes
 service/tools/data/cert/node3.key.pub              |    3 -
 service/tools/data/cert/node4.key.pri              |  Bin 36 -> 0 bytes
 service/tools/data/cert/node4.key.pub              |    2 -
 service/tools/data/cert/node5.key.pri              |    2 -
 service/tools/data/cert/node5.key.pub              |    3 -
 service/tools/data/cert/node6.key.key.pri          |    2 -
 service/tools/data/cert/node6.key.key.pub          |    2 -
 service/tools/data/cert/node6.key.pri              |    2 -
 service/tools/data/cert/node6.key.pub              |    2 -
 service/tools/data/cert/node7.key.key.pri          |    2 -
 service/tools/data/cert/node7.key.key.pub          |    2 -
 service/tools/data/cert/node7.key.pri              |    2 -
 service/tools/data/cert/node7.key.pub              |    2 -
 service/tools/data/cert/node8.key.key.pri          |    2 -
 service/tools/data/cert/node8.key.key.pub          |    2 -
 service/tools/data/cert/node8.key.pri              |    2 -
 service/tools/data/cert/node8.key.pub              |    2 -
 service/tools/data/cert/node9.key.key.pri          |    2 -
 service/tools/data/cert/node9.key.key.pub          |    2 -
 service/tools/data/cert/node9.key.pri              |    2 -
 service/tools/data/cert/node9.key.pub              |    2 -
 service/tools/kv/api_tools/BUILD                   |   40 -
 service/tools/kv/api_tools/kv_client_txn_tools.cpp |   67 -
 service/tools/kv/api_tools/kv_service_tools.cpp    |  280 --
 service/tools/kv/server_tools/start_kv_service.sh  |   32 -
 .../kv/server_tools/start_kv_service_monitoring.sh |   33 -
 service/tools/utxo/README.md                       |   54 -
 .../tools/utxo/service_tools/start_utxo_service.sh |   34 -
 service/tools/utxo/wallet_tool/cpp/BUILD           |   48 -
 service/tools/utxo/wallet_tool/cpp/addr_utils.cpp  |   41 -
 service/tools/utxo/wallet_tool/cpp/addr_utils.h    |   32 -
 service/tools/utxo/wallet_tool/cpp/key_utils.cpp   |   36 -
 service/tools/utxo/wallet_tool/cpp/key_utils.h     |   30 -
 .../utxo/wallet_tool/cpp/server_config0.config     |    1 -
 .../utxo/wallet_tool/cpp/utxo_client_tools.cpp     |  182 --
 service/tools/utxo/wallet_tool/py/BUILD            |   40 -
 service/tools/utxo/wallet_tool/py/addr.py          |   32 -
 service/tools/utxo/wallet_tool/py/keys.py          |   26 -
 service/tools/utxo/wallet_tool/pybind/BUILD        |   38 -
 .../utxo/wallet_tool/pybind/wallet_tools_py.cpp    |   38 -
 service/tools/utxo/wallet_tool/test/BUILD          |   48 -
 service/tools/utxo/wallet_tool/test/key_tester.py  |   26 -
 .../utxo/wallet_tool/test/key_tester_utils.cpp     |   47 -
 service/utils/BUILD                                |   31 -
 service/utils/server_factory.cpp                   |   48 -
 service/utils/server_factory.h                     |  124 -
 service/utxo/BUILD                                 |   30 -
 service/utxo/config/server_config.config           |   28 -
 service/utxo/config/utxo_config.config             |   12 -
 service/utxo/start_contract_server.sh              |   32 -
 service/utxo/utxo_service.cpp                      |   96 -
 statistic/BUILD                                    |   31 +
 statistic/influxdb.hpp                             |  314 +++
 statistic/influxdb_handler.cpp                     |   27 +
 statistic/influxdb_handler.h                       |   17 +
 statistic/prometheus_handler.cpp                   |  165 ++
 statistic/prometheus_handler.h                     |   67 +
 statistic/stats.cpp                                |  227 ++
 statistic/stats.h                                  |   77 +
 sun.sh                                             |    2 +
 test/BUILD                                         |   19 +
 test/proto/BUILD                                   |   14 +
 test/proto/resdb_test.proto                        |   10 +
 test/resdb_test.cpp                                |  148 +
 test/test_data/BUILD                               |    7 +
 .../data/cert => test/test_data}/admin.key.pri     |    0
 .../data/cert => test/test_data}/admin.key.pub     |    0
 {platform/test => test}/test_data/cert_1.cert      |    0
 {platform/test => test}/test_data/cert_2.cert      |  Bin
 {platform/test => test}/test_data/cert_3.cert      |    0
 {platform/test => test}/test_data/cert_4.cert      |    0
 {platform/test => test}/test_data/cert_5.cert      |    0
 {platform/test => test}/test_data/cert_6.cert      |    0
 .../data/cert => test/test_data}/node1.key.pri     |    0
 .../data/cert => test/test_data}/node1.key.pub     |    0
 .../data/cert => test/test_data}/node2.key.pri     |    0
 .../data/cert => test/test_data}/node2.key.pub     |    0
 .../data/cert => test/test_data}/node3.key.pri     |  Bin
 .../data/cert => test/test_data}/node3.key.pub     |    0
 .../data/cert => test/test_data}/node4.key.pri     |  Bin
 .../data/cert => test/test_data}/node4.key.pub     |    0
 .../data/cert => test/test_data}/node5.key.pri     |    0
 .../data/cert => test/test_data}/node5.key.pub     |    0
 test/test_data/server.config                       |    4 +
 third_party/BUILD                                  |   70 +-
 third_party/asio.BUILD                             |   38 -
 third_party/civetweb.BUILD                         |   52 -
 third_party/crow.BUILD                             |   38 -
 third_party/date.BUILD                             |   30 -
 third_party/eEVM.BUILD                             |   55 -
 third_party/json.BUILD                             |   29 -
 third_party/leveldb.BUILD                          |   35 +-
 third_party/loc_script/action.yml                  |   72 -
 third_party/loc_script/src/index.js                |  109 -
 third_party/prometheus.BUILD                       |   33 -
 third_party/rapidjson.BUILD                        |   30 -
 third_party/rocksdb.BUILD                          |   94 +
 third_party/snappy.BUILD                           |   25 +-
 third_party/z.BUILD                                |   26 +-
 third_party/zlib.BUILD                             |   25 +-
 third_party/zstd.BUILD                             |    5 +
 tools/BUILD                                        |   61 +-
 tools/certificate_tools.cpp                        |   23 +-
 tools/certificate_tools_test.cpp                   |   21 +-
 tools/generate_certificate.sh                      |   18 -
 tools/generate_client.sh                           |   18 -
 tools/generate_cluster.sh                          |   19 +-
 tools/generate_key.sh                              |   18 -
 tools/generate_mulregion_config.py                 |   69 -
 tools/generate_region_config.py                    |   84 -
 tools/key_generator_tools.cpp                      |   21 +-
 tools/kv_client_txn_tools.cpp                      |   50 +
 tools/resdb_state_accessor_tools.cpp               |   43 -
 tools/resdb_status_client_tools.cpp                |   34 +
 tools/resdb_txn_accessor_tools.cpp                 |   58 -
 tools/resdb_txn_client_tools.cpp                   |   39 +
 4450 files changed, 33843 insertions(+), 40837 deletions(-)

diff --git a/BUILD.bazel b/BUILD.bazel
index a2966540..ef108781 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -1,22 +1,3 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
 package(default_visibility = ["//visibility:public"])
 
 load("@rules_foreign_cc//foreign_cc:defs.bzl", "make")
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index b7d0c1fd..00000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,160 +0,0 @@
-<!--
-  - Licensed to the Apache Software Foundation (ASF) under one
-  - or more contributor license agreements.  See the NOTICE file
-  - distributed with this work for additional information
-  - regarding copyright ownership.  The ASF licenses this file
-  - to you under the Apache License, Version 2.0 (the
-  - "License"); you may not use this file except in compliance
-  - with the License.  You may obtain a copy of the License at
-  -
-  -   http://www.apache.org/licenses/LICENSE-2.0
-  -
-  - Unless required by applicable law or agreed to in writing,
-  - software distributed under the License is distributed on an
-  - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  - KIND, either express or implied.  See the License for the
-  - specific language governing permissions and limitations
-  - under the License.
-  -->
-
-# Change Log
-
-### Apache ResilientDB v1.10.0 ([2024-4-16](https://github.com/resilientdb/resilientdb/releases/tag/v1.10.0-rc01))
-
-Add the prototype of PoE. ([Junchao Chen](https://github.com/cjcchen))
-
-* Implement the base version of the Proof-of-Execution (PoE) Consensus Protocol [EDBT 2011].
-
-Add ResView Data Collection and APIs ([Saipranav-Kotamreddy](https://github.com/Saipranav-Kotamreddy))
-
-* Consensus data such as PBFT messages and states is now collected and stored
-* Added APIs to query consensus data and progress of replicas
-* Added APIs to trigger faultiness and test view change
-
-### NexRes v1.9.0 ([2023-11-29](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v1.9.0))
-
-Support Multi-version Key-Value Interface. ([Junchao Chen](https://github.com/cjcchen))
-
-* Get and Set need to provide a version number to fetch the correct version of the data (if exists) or write to the correct version of data (if not overwritten already), respectively.
-* Provide interfaces to obtain historical data with a specific version or a range of versions.
-
-
-### NexRes v1.8.0 ([2023-08-21](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v1.8.0))
-
-**Implemented Enhancements:** The view-change recovery protocol was extensively expanded to support the following Byzantine failures through primary/leader replacement and replica recovery. ([Dakai Kang](https://github.com/DakaiKang))
-
-* Byzantine primary becomes non-responsive, stopping proposing any new Pre-Prepare messages.
-* Byzantine primary equivocates, proposing two different client requests to two subsets of replicas.
-* Byzantine replicas try to keep some non-faulty replicas in the dark.
-* Byzantine new primary becomes non-responsive, refusing to broadcast New-View messages.
-
-### NexRes v1.7.0 ([2023-08-04](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v1.7.0))
-
-**Implemented Enhancements:** For each replica local recovery from durable storage upon system restart was added.([Junchao Chen](https://github.com/cjcchen))
-
-
-### NexRes v1.6.0 ([2023-05-30](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v1.6.0))
-
-**Implemented Enhancements:** Refactoring and enhancement of the codebase to highlight the entire software stack of ResilientDB consisting of the following layers ([Junchao Chen](https://github.com/cjcchen))
-
-* SDK Layer (C++, Python, Go, Solidity)
-* Interface Layer (key-value, smart contract, UTXO)
-* ResilientDB Database Connectivity (RDBC) API
-* Platform Layer (consensus, chain, network, notary)
-* Transaction Layer (execution runtime and in-memory chain state)
-* Storage Layer (chain and chain state durability)
-
-
-### NexRes v1.5.0 ([2023-04-04](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v1.5.0))
-
-**Implemented Enhancements:** 
-* A complete refactoring of the codebase such that (1) the core engine code is now moved to the platform folder, including the formwork architectures and protocols implementations; (2) the API/interface-related code is moved to the service folder, including UTXO, smart contract, and key-value interface;  (3) the python SDK code is moved to a different repository [here](https://github.com/resilientdb/sdk) ([Junchao Chen](https://github.com/cjcchen)).
-
-### NexRes v1.4.0 ([2023-02-28](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v.1.4.0))
-Major Changes
-* Support of UTXO model and wallet integration: [Detailed Documentation](https://blog.resilientdb.com/2023/02/12/GettingStartedOnUtxo.html) ([Junchao Chen](https://github.com/cjcchen))
-
-
-### NexRes v1.3.0 ([2023-02-22](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v1.3.0))
-
-**Implemented Enhancements:** 
-* Added Python SDK that supports UTXO-like transactions such as asset creation, transfer, and multi-party validations. ([Arindaam Roy](https://github.com/royari), [Glenn Chen](https://github.com/glenn-chen), and [Julieta Duarte](https://github.com/juduarte00))
-* Added REST CROW endpoints to interface with the on-chain KV service. ([Glenn Chen](https://github.com/glenn-chen) and [Julieta Duarte](https://github.com/juduarte00))
-* Extended KV service range queries. ([Glenn Chen](https://github.com/glenn-chen) and [Julieta Duarte](https://github.com/juduarte00))
-
-**Fixed Bugs:**
-* Fixed KV service queries on all values retrieving empty placeholder values ([Glenn Chen](https://github.com/glenn-chen))
-
-### NexRes v1.2.0 ([2023-01-29](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v1.2.0))
-
-**Implemented Enhancements:** 
-* Support smart contract compiled from Solidity. ([Junchao Chen](https://github.com/cjcchen)) 
-* Use eEVM as a back-end service to execute the contract functions. ([Junchao Chen](https://github.com/cjcchen))
-
-### NexRes v1.1.0 ([2023-01-03](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v1.1.0))
-
-**Implemented Enhancements:** 
-
-* Added Geo-Scale Byzantine Fault-tolerant consensus protocol, referred to as GeoBFT. It is designed for excellent scalability by using a topological-aware grouping of replicas in local clusters, giving rise to parallelization of consensus at the local level and by minimizing communication between clusters. ([WayneWang](https://github.com/WayneJa))
-
-ResilientDB: Global Scale Resilient Blockchain Fabric, VLDB 2020
-
-### NexRes v1.0.1 ([2022-10-13](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v1.0.1))
-
-**Implemented Enhancements:** 
-
-* Add node manager backend for resilientdb.com to launch NexRes locally. ([Vishnu](https://github.com/sheshavpd) and [Junchao Chen](https://github.com/cjcchen))
-
-### NexRes v1.0.0 ([2022-09-30](https://github.com/resilientdb/resilientdb/releases/tag/nexres-v1.0.0))
-
-**Implemented Enhancements:** 
-
-* Release the next generation of RelisientDB referred to as NexRes. ([Junchao Chen](https://github.com/cjcchen))
-* NexRes supports PBFT as the default core protocol and provides a KV-Server as a service. ([Junchao Chen](https://github.com/cjcchen))
-* NexRes also supports LevelDB and RocksDB as the durable storage layer. ([Junchao Chen](https://github.com/cjcchen))
-* Add SDK endpoints. ([Junchao Chen](https://github.com/cjcchen))
-* Add implementation of Dashboard. ([Jianxio](https://github.com/jyu25utk))
-* Add the recovery protocol and checkpoint on PBFT. ([Junchao Chen](https://github.com/cjcchen) and [Vishnu](https://github.com/sheshavpd))
-
-
-### NexRes v1.0.0-alpha ([2022-09-22](https://github.com/resilientdb/resilientdb/releases/tag/nexres-alpha))
-
-**Implemented Enhancements:** 
-* Release the next generation of RelisientDB, a complete rewrite and re-architecting, referred to as NexRes. ([Junchao Chen](https://github.com/cjcchen))
-* NexRes supports PBFT as the default core protocol and provides a KV-Server as a service. ([Junchao Chen](https://github.com/cjcchen))
-* NexRes also supports LevelDB and RocksDB as the durable storage layer. ([Glenn Chen](https://github.com/glenn-chen), [Julieta Duarte](https://github.com/juduarte00), and [Junchao Chen](https://github.com/cjcchen))
-
-
-### v3.0 ([2021-09-30](https://github.com/resilientdb/resilientdb/releases/tag/v3.0))
-
-**Implemented Enhancements:** 
-* GeoBFT Protocol Added ([Sajjad Rahnama](https://github.com/sajjadrahnama))
-* Work Queue structure changed ([Sajjad Rahnama](https://github.com/sajjadrahnama))
-* Refactoring, and added Statistics and Scripts ([Sajjad Rahnama](https://github.com/sajjadrahnama))
-
-
-### v2.0 ([2020-02-29](https://github.com/resilientdb/resilientdb/releases/tag/v2.0))
-
-**Implemented Enhancements:** 
-* A GUI display for ResilientDB to ease user interaction and analysis. [#9](https://github.com/resilientdb/resilientdb/issues/9) ([Sajjad Rahnama](https://github.com/sajjadrahnama) and [RohanSogani](https://github.com/RohanSogani))
-* Added support for Smart Contracts with a Banking use case. [#7](https://github.com/resilientdb/resilientdb/issues/7) ([Sajjad Rahnama](https://github.com/sajjadrahnama))
-* Monitoring results for visualizing graphs using influxdb. [#8](https://github.com/resilientdb/resilientdb/issues/8) ([Sajjad Rahnama](https://github.com/sajjadrahnama), [Dhruv Krishnan](https://github.com/DhruvKrish) and [Priya Holani](https://github.com/Holani))
-* Added support for SQLite and provided a new representation for in-memory storage. [#6](https://github.com/resilientdb/resilientdb/issues/6) ([Sajjad Rahnama](https://github.com/sajjadrahnama))
-
-**Fixed Bugs:**
-* Bug in the Chain Initialization [#5](https://github.com/resilientdb/resilientdb/issues/5) ([Sajjad Rahnama](https://github.com/sajjadrahnama))
-
-
-### v1.1 ([2019-12-05](https://github.com/resilientdb/resilientdb/releases/tag/v1.1)) 
-
-**Implemented Enhancements:**
-* Defined class to represent ledger. [6b0fdc5](https://github.com/resilientdb/resilientdb/commit/56f500fe5e4749c45f57dc8e62d12bc7a218ce69) ([Suyash Gupta](https://github.com/gupta-suyash))
-
-**Fixed Bugs:**
-* Docker script fails to run for multiple client [#1](https://github.com/resilientdb/resilientdb/issues/1) ([RohanSogani](https://github.com/RohanSogani))	
-
-### v1.0 ([2019-11-24](https://github.com/resilientdb/resilientdb/releases/tag/v1.0)) 
-
-Launched ResilientDB ([Suyash Gupta](https://github.com/gupta-suyash) and [Sajjad Rahnama](https://github.com/sajjadrahnama))
-
-
diff --git a/CNAME b/CNAME
deleted file mode 100644
index f53fa6a9..00000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-api.resilientdb.com
\ No newline at end of file
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index f53ce4f0..00000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,95 +0,0 @@
-<!--
-  - Licensed to the Apache Software Foundation (ASF) under one
-  - or more contributor license agreements.  See the NOTICE file
-  - distributed with this work for additional information
-  - regarding copyright ownership.  The ASF licenses this file
-  - to you under the Apache License, Version 2.0 (the
-  - "License"); you may not use this file except in compliance
-  - with the License.  You may obtain a copy of the License at
-  -
-  -   http://www.apache.org/licenses/LICENSE-2.0
-  -
-  - Unless required by applicable law or agreed to in writing,
-  - software distributed under the License is distributed on an
-  - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  - KIND, either express or implied.  See the License for the
-  - specific language governing permissions and limitations
-  - under the License.
-  -->
-
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers pledge to making participation in our project and
-our community a harassment-free experience for everyone, regardless of age, body
-size, disability, ethnicity, sex characteristics, gender identity and expression,
-level of experience, education, socio-economic status, nationality, personal
-appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment
-include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or
- advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable
-behavior and are expected to take appropriate and fair corrective action in
-response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or
-reject comments, commits, code, wiki edits, issues, and other contributions
-that are not aligned to this Code of Conduct, or to ban temporarily or
-permanently any contributor for other behaviors that they deem inappropriate,
-threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces
-when an individual is representing the project or its community. Examples of
-representing a project or community include using an official project e-mail
-address, posting via an official social media account, or acting as an appointed
-representative at an online or offline event. Representation of a project may be
-further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by contacting the project team at support@resilientdb.com. All
-complaints will be reviewed and investigated and will result in a response that
-is deemed necessary and appropriate to the circumstances. The project team is
-obligated to maintain confidentiality with regard to the reporter of an incident.
-Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good
-faith may face temporary or permanent repercussions as determined by other
-members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
-available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
-
-[homepage]: https://www.contributor-covenant.org
-
-For answers to common questions about this code of conduct, see
-https://www.contributor-covenant.org/faq
diff --git a/DISCLAIMER-WIP b/DISCLAIMER-WIP
deleted file mode 100644
index d94e089d..00000000
--- a/DISCLAIMER-WIP
+++ /dev/null
@@ -1,22 +0,0 @@
-Apache ResilientDB is an effort undergoing incubation at the Apache Software
-Foundation (ASF), sponsored by the Apache Incubator PMC.
-
-Incubation is required of all newly accepted projects until a further review
-indicates that the infrastructure, communications, and decision making process
-have stabilized in a manner consistent with other successful ASF projects.
-
-While incubation status is not necessarily a reflection of the completeness
-or stability of the code, it does indicate that the project has yet to be
-fully endorsed by the ASF.
-
-Some of the incubating project’s releases may not be fully compliant with ASF policy.
-For example, releases may have incomplete or un-reviewed licensing conditions.
-What follows is a list of known issues the project is currently aware of
-(note that this list, by definition, is likely to be incomplete):
-
-If you are planning to incorporate this work into your product/project, please
-be aware that you will need to conduct a thorough licensing review to determine
-the overall implications of including this work. For the current status of this
-project through the Apache Incubator visit:
-https://incubator.apache.org/projects/resilientdb.html
-
diff --git a/Docker/Dockerfile b/Docker/Dockerfile
deleted file mode 100644
index c5f82544..00000000
--- a/Docker/Dockerfile
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-FROM ubuntu:20.04
-
-ARG DEBIAN_FRONTEND=noninteractive
-
-# Update package lists and install required dependencies
-RUN apt-get update && apt-get install -y \
-    apt-transport-https \
-    curl \
-    gnupg \
-    protobuf-compiler \
-    rapidjson-dev \
-    build-essential \
-    openjdk-11-jdk \
-    zip \
-    unzip \
-    clang-format
-
-# Install Bazel
-RUN curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg \
-    && mv bazel.gpg /etc/apt/trusted.gpg.d/ \
-    && echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list \
-    && curl https://bazel.build/bazel-release.pub.gpg | apt-key add - \
-    && apt-get update && apt-get install -y bazel=5.0.0 \
-    && rm /etc/apt/sources.list.d/bazel.list
-
-# Set the working directory
-WORKDIR /app
-
-# Copy your project files to the container
-COPY . /app
-
-# Build the project with Bazel 
-RUN bazel --version
-RUN bazel build @com_github_bazelbuild_buildtools//buildifier:buildifier
-RUN bazel build service/tools/kv/api_tools/kv_service_tools
-
-ENTRYPOINT ["./entrypoint.sh"]
diff --git a/Docker/Dockerfile_mac b/Docker/Dockerfile_mac
deleted file mode 100644
index fb629b39..00000000
--- a/Docker/Dockerfile_mac
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-# Use a base image for ARM64 architecture
-FROM arm64v8/ubuntu:20.04
-
-ARG DEBIAN_FRONTEND=noninteractive
-
-# Update package lists and install required dependencies
-RUN apt-get update && apt-get install -y \
-    apt-transport-https \
-    curl \
-    gnupg \
-    protobuf-compiler \
-    rapidjson-dev \
-    build-essential \
-    openjdk-11-jdk \
-    zip \
-    unzip \
-    clang-format
-
-# Install Bazelisk
-RUN curl -Lo /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-arm64 \
-    && chmod +x /usr/local/bin/bazel
-
-# Set the working directory
-WORKDIR /app
-
-# Copy your project files to the container
-COPY . /app
-
-# Build the project with Bazel
-RUN bazel --version
-RUN bazel build @com_github_bazelbuild_buildtools//buildifier:buildifier
-RUN bazel build service/tools/kv/api_tools/kv_service_tools
-
-ENTRYPOINT ["./entrypoint.sh"]
diff --git a/INSTALL.sh b/INSTALL.sh
old mode 100755
new mode 100644
index c4fdcff3..91666d32
--- a/INSTALL.sh
+++ b/INSTALL.sh
@@ -1,61 +1,19 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
+!/bin/sh
 
-sudo apt update
 sudo apt install apt-transport-https curl gnupg -y
-sudo apt-get install protobuf-compiler -y
-sudo apt-get install rapidjson-dev -y
+sudo apt install protobuf-compiler -y
 
 curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
 sudo mv bazel.gpg /etc/apt/trusted.gpg.d/ 
 echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
 curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
-sudo apt update && sudo apt install bazel=6.0.0 -y
+sudo apt update && sudo apt install bazel=5.0.0 -y
 sudo apt install clang-format -y
 rm $PWD/.git/hooks/pre-push
 ln -s $PWD/hooks/pre-push $PWD/.git/hooks/pre-push
 
-bazel --version
-ret=$?
-
-if [[ $ret != "0" ]]; then
-
-sudo apt-get install build-essential openjdk-11-jdk zip unzip -y
-rm bazel-6.0.0-dist.zip
-rm -rf bazel_build
-wget wget https://releases.bazel.build/6.0.0/release/bazel-6.0.0-dist.zip
-mkdir -p bazel_build
-mv bazel-6.0.0-dist.zip bazel_build/
-cd bazel_build
-
-unzip bazel-6.0.0-dist.zip
-
-export JAVA_HOME='/usr/lib/jvm/java-1.11.0-openjdk-arm64/'
-env EXTRA_BAZEL_ARGS="--host_javabase=@local_jdk//:jdk" bash ./compile.sh
-sudo cp output/bazel /usr/local/bin/
-cd ..
-rm -rf bazel_build
-
-fi
-
 # install buildifier
 bazel build @com_github_bazelbuild_buildtools//buildifier:buildifier
 
-sudo apt-get install python3.10-dev -y
-sudo apt-get install python3-dev -y
+# for jemalloc
+sudo apt-get install autoconf automake libtool -y
diff --git a/INSTALL/README.md b/INSTALL/README.md
deleted file mode 100755
index 969142a2..00000000
--- a/INSTALL/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-<!--
-  - Licensed to the Apache Software Foundation (ASF) under one
-  - or more contributor license agreements.  See the NOTICE file
-  - distributed with this work for additional information
-  - regarding copyright ownership.  The ASF licenses this file
-  - to you under the Apache License, Version 2.0 (the
-  - "License"); you may not use this file except in compliance
-  - with the License.  You may obtain a copy of the License at
-  -
-  -   http://www.apache.org/licenses/LICENSE-2.0
-  -
-  - Unless required by applicable law or agreed to in writing,
-  - software distributed under the License is distributed on an
-  - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  - KIND, either express or implied.  See the License for the
-  - specific language governing permissions and limitations
-  - under the License.
-  -->
-
-# Prerequire 
-python3.10
-
-pip
-
-```
-sudo apt update
-sudo apt-get install python3.10-dev -y
-sudo apt-get install python3-dev -y
-sudo apt-get install python3-pip -y
-```
-
-# Install Protobuf
-```
-cd protobuf
-./install_protobuf.sh
-```
-
-# Install Bazel
-```
-cd bazel
-wget https://github.com/bazelbuild/bazelisk/releases/download/v1.8.1/bazelisk-darwin-amd64
-chmod +x bazelisk-darwin-amd64
-mkdir -p bin
-mv bazelisk-darwin-amd64 bin/bazel
-
-bin/bazel --version
-echo "export PATH="$PATH:$PWD/bin"" >> ~/.bashrc
-. ~/.bashrc
-```
-or
-```
-cd bazel
-./install_bazel.sh
-echo "export PATH="$PATH:$PWD/bin"" >> ~/.bashrc
-. ~/.bashrc
-```
-
-
-test bazel
-```
-bazel --version
-```
diff --git a/INSTALL/bazel/install_bazel.sh b/INSTALL/bazel/install_bazel.sh
deleted file mode 100755
index 499de820..00000000
--- a/INSTALL/bazel/install_bazel.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-wget wget https://github.com/bazelbuild/bazelisk/releases/download/v1.8.1/bazelisk-linux-amd64
-chmod +x bazelisk-linux-amd64
-mkdir -p bin
-mv bazelisk-linux-amd64 bin/bazel
-
-bin/bazel --version
-echo "export PATH="$PATH:$PWD/bin"" >> ~/.bashrc
-. ~/.bashrc
diff --git a/INSTALL/protobuf/install_protobuf.sh b/INSTALL/protobuf/install_protobuf.sh
deleted file mode 100755
index 66edc5ac..00000000
--- a/INSTALL/protobuf/install_protobuf.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-pip install protobuf
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index ad9b5c8b..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,235 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-================================================================
-
-This product includes a number of dependencies with separate copyright notices
-and license terms. Your use of these submodules is subject to the terms and
-conditions of the following licenses.
-
-================================================================
-MIT licenses
-================================================================
-
-third_party/loc_script/src/index.js files from  https://github.com/shadowmoose/GHA-LoC-Badge/blob/1.0.0/src/index.js
-
-MIT License
-
-Copyright (c) 2020 Mike
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 00000000..20a7ec61
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,5 @@
+Trade Secret License
+
+Copyright (c) 2018 ExpoLab, ResilientDB
+
+This is a strictly confidential repo, please do not fork, share, or distribute any part of the code.
diff --git a/NOTICE b/NOTICE
deleted file mode 100644
index 2acdbb2a..00000000
--- a/NOTICE
+++ /dev/null
@@ -1,6 +0,0 @@
-Apache ResilientDB
-Copyright 2023-2024 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/README.md b/README.md
index e46106b7..2c3288f7 100644
--- a/README.md
+++ b/README.md
@@ -1,359 +1,51 @@
-<!--
-  - Licensed to the Apache Software Foundation (ASF) under one
-  - or more contributor license agreements.  See the NOTICE file
-  - distributed with this work for additional information
-  - regarding copyright ownership.  The ASF licenses this file
-  - to you under the Apache License, Version 2.0 (the
-  - "License"); you may not use this file except in compliance
-  - with the License.  You may obtain a copy of the License at
-  -
-  -   http://www.apache.org/licenses/LICENSE-2.0
-  -
-  - Unless required by applicable law or agreed to in writing,
-  - software distributed under the License is distributed on an
-  - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  - KIND, either express or implied.  See the License for the
-  - specific language governing permissions and limitations
-  - under the License.
-  -->
+# ResilientDB: A High-throughput yielding Permissioned Blockchain Fabric.
 
-![](https://img.shields.io/github/v/release/resilientdb/resilientdb)
-![](https://img.shields.io/badge/language-c++-orange.svg)
-![](https://img.shields.io/badge/platform-Ubuntu20.0+-lightgrey.svg)
-![GitHub](https://img.shields.io/github/license/resilientdb/resilientdb)
-![Generated Button](https://raw.githubusercontent.com/resilientdb/resilientdb/image-data/badge.svg)
-![build](https://github.com/resilientdb/resilientdb/workflows/bazel-build%20CI/badge.svg)
-![build](https://github.com/resilientdb/resilientdb/workflows/Unite%20Test/badge.svg)
+ ResilientDB aims at *Making Permissioned Blockchain Systems Fast Again*. ResilientDB makes *system-centric* design decisions by adopting a *multi-thread architecture* that encompasses *deep-pipelines*. Further, we *separate* the ordering of client transactions from their execution, which allows us to perform *out-of-order processing of messages*.
 
 
+## System Design:
 
-# ResilientDB: Global-Scale Sustainable Blockchain Fabric
+High Level Design: 
 
-**[ResilientDB](https://resilientdb.com/)** is a **High Throughput Yielding Permissioned Blockchain Fabric** founded by **[ExpoLab](https://expolab.org/)** at **[UC Davis](https://www.ucdavis.edu/)** in 2018. ResilientDB advocates a **system-centric** design by adopting a **multi-threaded architecture** that encompasses **deep pipelines**. Further, ResilientDB **separates** the ordering of client transactions from their execution, which allows it to **process messages out-of-order**.
+[ResDBServer](https://docs.google.com/presentation/d/1i5sKocV4LQrngwNVLTTLRtshVIKICt3_tqMH4e5QgYQ/edit#slide=id.p)
 
-# Downloads:
-Download address for run-directly software package: https://downloads.apache.org/incubator/resilientdb/
+[ConsensusService-PBFT](https://docs.google.com/presentation/d/1HjXVlCGbjkSzs6d7o4bT_wT-cllSCx1RkvVUskTaZJA/edit#slide=id.p)
 
-### Quick Facts on ResilientDB
-1. ResilientDB orders client transactions through a highly optimized implementation of the  **[PBFT](https://pmg.csail.mit.edu/papers/osdi99.pdf)** [Castro and Liskov, 1998] protocol, which helps to achieve consensus among its replicas. ResilientDB also supports deploying other state-of-the-art consensus protocols *[release are planned]* such as **[GeoBFT](http://www.vldb.org/pvldb/vol13/p868-gupta.pdf)** [**[blog](https://blog.resilientdb.com/2023/03/07/GeoBFT.html), [released](https:// [...]
-2. ResilientDB requires deploying at least **3f+1** replicas, where **f (f > 0)** is the maximum number of arbitrary (or malicious) replicas.
-3. ResilientDB supports primary-backup architecture, which designates one of the replicas as the **primary** (replica with identifier **0**). The primary replica initiates consensus on a client transaction, while backups agree to follow a non-malicious primary.
-4. ResilientDB exposes a wide range of interfaces such as a **Key-Value** store, **Smart Contracts**, **UTXO**, and **Python SDK**. Following are some of the decentralized applications (DApps) built on top of ResilientDB: **[NFT Marketplace](https://nft.resilientdb.com/)** and **[Debitable](https://debitable.resilientdb.com/)**.
-5. To persist blockchain, chain state, and metadata, ResilientDB provides durability through  **LevelDB**.
-6. ResilientDB provides access to a seamless **GUI display** for deployment and maintenance, and supports  **Grafana** for plotting monitoring data. 
-7. **[Historial Facts]** The ResilientDB project was founded by **[Mohammad Sadoghi](https://expolab.org/)** along with his students ([Suyash Gupta](https://gupta-suyash.github.io/index.html) as the lead Architect, [Sajjad Rahnama](https://sajjadrahnama.com/) as the lead System Designer, and [Jelle Hellings](https://www.jhellings.nl/)) at **[UC Davis](https://www.ucdavis.edu/)** in 2018 and was open-sourced in late 2019. On September 30, 2021, we released ResilientDB v-3.0. In 2022, Resi [...]
+[Full Design Doc](https://docs.google.com/document/d/1YA-vIMhSUnq6necRPY3t3thh4Zc2OuP9_GUwwuzSo-w/edit#)
 
-<div align = "center">
-<img src="./img/resdb-v2.png" width="220">
-<img src="./img/apache-resdb.png" width="80">
-<img src="./img/apache-incubator.png" width="250">
-</div>
+## User Development guide
+https://docs.google.com/presentation/d/1YIX6dG6cuc5EhXdytrJXoxMhGLP2BxLCmnVMhiC4WBc/edit#slide=id.p
 
 ---
 
+## Steps to Run KVServer
 
-## Online Documentation:
+Install dependences.
 
-The latest ResilientDB documentation, including a programming guide, is available on our **[blog repository](https://blog.resilientdb.com/archive.html?tag=NexRes)**. This README file provides basic setup instructions.
+    sh INSTALL
 
-#### Table of Contents
-1. Software Stack Architecture 
-   - SDK, Interface/API, Platform, Execution, and Chain Layers 
-   - Detailed API Documentation: **[Core](https://api.resilientdb.com/)** and **[SDK](https://sdk.resilientdb.com/)**
-2. **SDK Layer:** **[Python SDK](https://blog.resilientdb.com/2023/02/01/UsingPythonSDK.html)** and **[Wallet - ResVault](https://blog.resilientdb.com/2023/09/21/ResVault.html)**
-3. **Interface Layer:** **[Key-Value](https://blog.resilientdb.com/2022/09/28/GettingStartedNexRes.html)**, **[Solidity Smart Contract](https://blog.resilientdb.com/2023/01/15/GettingStartedSmartContract.html)**, **[Unspent Transaction Output (UTXO) Model](https://blog.resilientdb.com/2023/02/12/UtxoOnNexres.html)**, ResilientDB Database Connectivity (RDBC) API
-4. **Platform Layer:** **[Consensus Manager Architecture (ordering, recovery, network, chain management)](https://blog.resilientdb.com/2022/09/27/What_Is_NexRes.html)**
-   - **[Recovery & Checkpoint Design](https://blog.resilientdb.com/2023/08/22/ViewChangeInNexRes.html)**
-5. **Execution Layer:** Transaction Manager Design (Runtime) 
-6. **Chain Layer:** Chain State & Storage Manager Design (**[durability](https://blog.resilientdb.com/2023/02/15/NexResDurabilityLayer.html)**) 
-7. **[Installing & Deploying ResilientDB](https://blog.resilientdb.com/2022/09/28/GettingStartedNexRes.html)**
-   - Build Your First Application: **[KV Service](https://blog.resilientdb.com/2022/09/28/StartYourApplication.html)**, **[UTXO](https://blog.resilientdb.com/2023/02/12/GettingStartedOnUtxo.html)**
-   - Dashboard: **[Monitoring](https://blog.resilientdb.com/2022/12/06/NexResGrafanaDashboardInstallation.html)**, **[Deployment](https://blog.resilientdb.com/2022/12/06/DeployGrafanaDashboardOnOracleCloud.html)**, **[Data Pipeline](https://blog.resilientdb.com/2022/12/12/NexResGrafanaDashboardPipeline.html)**
-   - System Parameters & Configuration   
-   - Continuous Integration & Testing 
 
-<div align = "center">
-<img src="./img/nexres.png" width="600">
-</div>
+Start local KVServers:
 
-## OS Requirements
-Ubuntu 20+
+    sh example/start_kv_server.sh
+- This script will start 4 local kv servers and 1 local client proxy. The client proxy is the proxy transferring the messages between servers and the user client.
 
----
-
-## Build and Deploy ResilientDB
-
-Next, we show how to quickly build ResilientDB and deploy 4 replicas and 1 client proxy on your local machine. The proxy acts as an interface for all the clients. It batches client requests and forwards these batches to the replica designated as the leader. The 4 replicas participate in the PBFT consensus to order and execute these batches. Post execution, they return the response to the leader.
-
-Install dependencies:
-
-    ./INSTALL.sh
+Build KVServer Toos:
 
-For non-root users, see [INSTALL/README.md](https://github.com/apache/incubator-resilientdb/blob/master/INSTALL/README.md)
-
-Run ResilientDB (Providing a Key-Value Service):
-
-    ./service/tools/kv/server_tools/start_kv_service.sh
+    bazel build example/kv_server_tools
     
-- This script starts 4 replicas and 1 client. Each replica instantiates a key-value store.
-
-Build Interactive Tools:
-
-    bazel build service/tools/kv/api_tools/kv_service_tools
-
-## Functions ##
-ResilientDB supports two types of functions: version-based and non-version-based.
-Version-based functions will leverage versions to protect each update, versions must be obtained before updating a key.
-
-***Note***: Version-based functions are not compatible with non-version-based functions. Do not use both in your applications.
-
-We show the functions below and show how to use [kv_service_tools](service/tools/kv/api_tools/kv_service_tools.cpp) to test the function.
-
-### Version-Based Functions ###
-#### Get ####
-Obtain the value of `key` with a specific version `v`.
-
-      kv_service_tools --config config_file --cmd get_with_version --key key --version v
-
-|  parameters   |  descriptions |
-|  ----  | ----  |
-| config  | the path of the client config which points to the db entrance |
-| cmd  | get_with_version |
-| key  | the key you want to obtain |
-| version | the version you want to obtain. (If the `v` is 0, it will return the latest version |
-
-
-Example:
-
-      bazel-bin/service/tools/kv/api_tools/kv_service_tools --config service/tools/config/interface/service.config --cmd get_with_version --key key1 --version 0
-
-Results:
-> get key = key1, value = value: "v2"
-> version: 2
-
-#### Set ####
-Set `value` to the key `key` based on version `v`.
-
-      kv_service_tools --config config_file --cmd set_with_version --key key --version v --value value
-
-|  parameters   |  descriptions |
-|  ----  | ----  |
-| config  | the path of the client config which points to the db entrance |
-| cmd  | set_with_version |
-| key  | the key you want to set |
-| version | the version you have obtained. (If the version has been changed during the update, the transaction will be ignored) |
-| value | the new value |
-
-Example:
-
-      bazel-bin/service/tools/kv/api_tools/kv_service_tools --config service/tools/config/interface/service.config --cmd set_with_version --key key1 --version 0 --value v1
-
-Results:
-> set key = key1, value = v3, version = 2 done, ret = 0
-> 
-> current value = value: "v3"
-> version: 3
-
-#### Get Key History ####
-Obtain the update history of key `key` within the versions [`v1`, `v2`].
-
-      kv_service_tools --config config_file --cmd get_history --key key --min_version v1 --max_version v2
-
-
-|  parameters   |  descriptions |
-|  ----  | ----  |
-| config  | the path of the client config which points to the db entrance |
-| cmd  | get_history |
-| key  | the key you want to obtain |
-| min_version | the minimum version you want to obtain |
-| max_version | the maximum version you want to obtain |
-
-Example:
-
-      bazel-bin/service/tools/kv/api_tools/kv_service_tools --config service/tools/config/interface/service.config --cmd get_history --key key1 --min_version 1 --max_version 2
-
-Results:
-
-> get history key = key1, min version = 1, max version = 2 <br>
->  value = <br>
-> item { <br>
->  &ensp; key: "key1" <br>
->  &ensp; value_info { <br>
->  &ensp;&ensp; value: "v1" <br>
->  &ensp;&ensp; version: 2 <br>
-> &ensp;} <br>
-> } <br>
-> item { <br>
-> &ensp; key: "key1" <br>
-> &ensp; value_info { <br>
-> &ensp;&ensp; value: "v0" <br>
-> &ensp;&ensp; version: 1 <br>
-> &ensp;} <br>
-> } 
-
-#### Get Top ####
-Obtain the recent `top_number` history of the key `key`.
-
-      kv_service_tools --config config_path --cmd get_top --key key --top top_number
-
-|  parameters   |  descriptions |
-|  ----  | ----  |
-| config  | the path of the client config which points to the db entrance |
-| cmd  | get_top |
-| key  | the key you want to obtain |
-| top | the number of the recent updates |
-
-Example:
-
-      bazel-bin/service/tools/kv/api_tools/kv_service_tools --config service/tools/config/interface/service.config --cmd get_top --key key1 --top 1
-
-Results:
+Run tools to get value by key(for example, get the value with key "test"):
 
->key = key1, top 1 <br>
-> value = <br>
-> item { <br>
->&ensp;key: "key1" <br>
->  &ensp;value_info { <br>
->  &ensp;&ensp;  value: "v2" <br>
->  &ensp;&ensp;  version: 3 <br>
->  &ensp;} <br>
->}
-
-#### Get Key Range ####
-Obtain the values of the keys in the ranges [`key1`, `key2`]. Do not use this function in your practice code
-
-      kv_service_tools --config config_file --cmd get_key_range_with_version --min_key key1 --max_key key2
-
-|  parameters   |  descriptions |
-|  ----  | ----  |
-| config  | the path of the client config which points to the db entrance |
-| cmd  | get_key_range_with_version |
-| min_key  | the minimum key  |
-| max_key | the maximum key |
-
-Example:
-
-      bazel-bin/service/tools/kv/api_tools/kv_service_tools --config service/tools/config/interface/service.config --cmd get_key_range_with_version --min_key key1 --max_key key3
-
-Results:
-
->min key = key1 max key = key2 <br>
-> getrange value = <br>
-> item { <br>
-> &ensp; key: "key1" <br>
-> &ensp; value_info { <br>
-> &ensp;&ensp;   value: "v0" <br>
-> &ensp;&ensp;   version: 1 <br>
-> &ensp; } <br>
-> } <br>
-> item { <br>
-> &ensp; key: "key2" <br>
-> &ensp; value_info { <br>
-> &ensp;&ensp;   value: "v1" <br>
-> &ensp;&ensp;   version: 1 <br>
-> &ensp; } <br>
->}
-
-
-### Non-Version-Based Function ###
-#### Set #####
-Set `value` to the key `key`.
-
-      kv_service_tools --config config_file --cmd set --key key --value value
-
-|  parameters   |  descriptions |
-|  ----  | ----  |
-| config  | the path of the client config which points to the db entrance |
-| cmd  | set |
-| key  | the key you want to set |
-| value | the new value |
-
-Example:
-
-      bazel-bin/service/tools/kv/api_tools/kv_service_tools --config service/tools/config/interface/service.config --cmd set --key key1 --value value1
-
-Results:
-> set key = key1, value = v1, done, ret = 0
-
-#### Get ####
-Obtain the value of `key`.
-
-      kv_service_tools --config config_file --cmd get --key key
-
-|  parameters   |  descriptions |
-|  ----  | ----  |
-| config  | the path of the client config which points to the db entrance |
-| cmd  | get |
-| key  | the key you want to obtain |
-
-Example:
-
-      bazel-bin/service/tools/kv/api_tools/kv_service_tools --config service/tools/config/interface/service.config --cmd get --key key1
-
-Results:
-> get key = key1, value = "v2"
-
-
-#### Get Key Range ####
-Obtain the values of the keys in the ranges [`key1`, `key2`]. Do not use this function in your practice code
-
-      kv_service_tools --config config_path --cmd get_key_range --min_key key1 --max_key key2
-
-|  parameters   |  descriptions |
-|  ----  | ----  |
-| config  | the path of the client config which points to the db entrance |
-| cmd  | get_key_range |
-| min_key  | the minimum key  |
-| max_key | the maximum key |
-
-Example:
-
-      bazel-bin/service/tools/kv/api_tools/kv_service_tools --config service/tools/config/interface/service.config --cmd get_key_range --min_key key1 --max_key key3
-
-Results:
-> getrange min key = key1, max key = key3 <br>
-> value = [v3,v2,v1]
-
-
-## Deployment Script
-
-We also provide access to a [deployment script](https://github.com/resilientdb/resilientdb/tree/master/scripts/deploy) that allows deployment on distinct machines.
-
-## Deploy via Docker
-
-1. **Install Docker**  
-   Before getting started, make sure you have Docker installed on your system. If you don't have Docker already, you can download and install it from the official [Docker website](https://www.docker.com/products/docker-desktop/).
-
-2. **Pull the Latest ResilientDB Image**  
-   Choose the appropriate [ResilientDB image](https://hub.docker.com/repository/docker/expolab/resdb/general) for your machine's architecture:
-
-   - For amd architecture, run:
-     ```shell
-     docker pull expolab/resdb:amd64
-     ```
-
-   - For Apple Silicon (M1/M2) architecture, run:
-     ```shell
-     docker pull expolab/resdb:arm64
-     ```
-
-3. **Run a Container with the Pulled Image**  
-   Launch a Docker container using the ResilientDB image you just pulled:
+    bazel-bin/example/kv_server_tools example/kv_client_config.config get test
+    
+You will see this if success:
 
-   - For amd architecture, run:
-     ```shell
-     docker run -d --name myserver expolab/resdb:amd64
-     ```
+    client get value = xxx
 
-   - For Apple Silicon (M1/M2) architecture, run:
-     ```shell
-     docker run -d --name myserver expolab/resdb:arm64
-     ```
+Run tools to set value by key(for example, set the value with key "test" and value "test_value"):
 
-4. **Test with Set and Get Commands**
-   Exec into the running server:
-   ```shell
-   docker exec -it myserver bash
-   ```
+    bazel-bin/example/kv_server_tools example/kv_client_config.config set test test_value
+    
+You will see this if success:
 
-   Verify the functionality of the service by performing set and get operations provided above [functions](README.md#functions).
+    client set ret = 0
diff --git a/WORKSPACE b/WORKSPACE
index 93a66164..244b59c6 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -1,15 +1,13 @@
-workspace(name = "com_resdb_nexres")
-
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-load("//:repositories.bzl", "nexres_repositories")
-
-nexres_repositories()
 
 http_archive(
     name = "rules_foreign_cc",
-    sha256 = "69023642d5781c68911beda769f91fcbc8ca48711db935a75da7f6536b65047f",
-    strip_prefix = "rules_foreign_cc-0.6.0",
-    url = "https://github.com/bazelbuild/rules_foreign_cc/archive/0.6.0.tar.gz",
+    # TODO: Get the latest sha256 value from a bazel debug message or the latest
+    #       release on the releases page: https://github.com/bazelbuild/rules_foreign_cc/releases
+    #
+    # sha256 = "...",
+    strip_prefix = "rules_foreign_cc-50ee9979e60e8db38e10de45d2c60873a210bf55",
+    url = "https://github.com/bazelbuild/rules_foreign_cc/archive/50ee9979e60e8db38e10de45d2c60873a210bf55.tar.gz",
 )
 
 load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")
@@ -32,31 +30,24 @@ rules_proto_dependencies()
 
 rules_proto_toolchains()
 
-http_archive(
-    name = "rules_python",
-    sha256 = "ffc7b877c95413c82bfd5482c017edcf759a6250d8b24e82f41f3c8b8d9e287e",
-    strip_prefix = "rules_python-0.19.0",
-    url = "https://github.com/bazelbuild/rules_python/releases/download/0.19.0/rules_python-0.19.0.tar.gz",
-)
-
-load("@rules_python//python:pip.bzl", "pip_install")
-load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
-
-rules_proto_dependencies()
-
-rules_proto_toolchains()
-
-load("@rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_repos", "rules_proto_grpc_toolchains")
-
-rules_proto_grpc_toolchains()
-
-rules_proto_grpc_repos()
-
 bind(
     name = "gtest",
     actual = "@com_google_googletest//:gtest",
 )
 
+http_archive(
+    name = "com_google_googletest",
+    strip_prefix = "googletest-609281088cfefc76f9d0ce82e1ff6c30cc3591e5",
+    urls = ["https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip"],
+)
+
+http_archive(
+    name = "com_github_gflags_gflags",
+    sha256 = "34af2f15cf7367513b352bdcd2493ab14ce43692d2dcd9dfc499492966c64dcf",
+    strip_prefix = "gflags-2.2.2",
+    urls = ["https://github.com/gflags/gflags/archive/v2.2.2.tar.gz"],
+)
+
 bind(
     name = "glog",
     actual = "@com_github_google_glog//:glog",
@@ -69,19 +60,20 @@ http_archive(
     urls = ["https://github.com/google/glog/archive/v0.5.0.zip"],
 )
 
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
+all_content = """filegroup(name = "all_srcs", srcs = glob(["**"]), visibility = ["//visibility:public"])"""
 
-git_repository(
-    name = "com_google_protobuf",
-    remote = "https://github.com/protocolbuffers/protobuf",
-    tag = "v3.10.0",
+http_archive(
+    name = "cryptopp",
+    build_file_content = all_content,
+    strip_prefix = "cryptopp-CRYPTOPP_8_6_0",
+    urls = ["https://github.com/weidai11/cryptopp/archive/refs/tags/CRYPTOPP_8_6_0.zip"],
 )
 
-load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
-
-protobuf_deps()
-
-all_content = """filegroup(name = "all_srcs", srcs = glob(["**"]), visibility = ["//visibility:public"])"""
+http_archive(
+    name = "com_google_absl",
+    strip_prefix = "abseil-cpp-20211102.0",
+    urls = ["https://github.com/abseil/abseil-cpp/archive/refs/tags/20211102.0.zip"],
+)
 
 # buildifier is written in Go and hence needs rules_go to be built.
 # See https://github.com/bazelbuild/rules_go for the up to date setup instructions.
@@ -100,7 +92,7 @@ go_rules_dependencies()
 
 load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains")
 
-go_register_toolchains(version = "1.19.5")
+go_register_toolchains(version = "1.17.2")
 
 http_archive(
     name = "bazel_gazelle",
@@ -125,24 +117,25 @@ http_archive(
 )
 
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-load("@com_github_nelhage_rules_boost//:boost/boost.bzl", "boost_deps")
 
-boost_deps()
+_RULES_BOOST_COMMIT = "652b21e35e4eeed5579e696da0facbe8dba52b1f"
 
 http_archive(
-    name = "net_zlib_zlib",
-    build_file = "@com_resdb_nexres//third_party:z.BUILD",
-    sha256 = "91844808532e5ce316b3c010929493c0244f3d37593afd6de04f71821d5136d9",
-    strip_prefix = "zlib-1.2.12",
+    name = "com_github_nelhage_rules_boost",
+    sha256 = "c1b8b2adc3b4201683cf94dda7eef3fc0f4f4c0ea5caa3ed3feffe07e1fb5b15",
+    strip_prefix = "rules_boost-%s" % _RULES_BOOST_COMMIT,
     urls = [
-        "https://zlib.net/zlib-1.2.12.tar.gz",
-        "https://storage.googleapis.com/bazel-mirror/zlib.net/zlib-1.2.12.tar.gz",
+        "https://github.com/nelhage/rules_boost/archive/%s.tar.gz" % _RULES_BOOST_COMMIT,
     ],
 )
 
+load("@com_github_nelhage_rules_boost//:boost/boost.bzl", "boost_deps")
+
+boost_deps()
+
 http_archive(
     name = "com_google_leveldb",
-    build_file = "@com_resdb_nexres//third_party:leveldb.BUILD",
+    build_file = "//third_party:leveldb.BUILD",
     sha256 = "a6fa7eebd11de709c46bf1501600ed98bf95439d6967963606cc964931ce906f",
     strip_prefix = "leveldb-1.23",
     url = "https://github.com/google/leveldb/archive/refs/tags/1.23.zip",
@@ -155,7 +148,7 @@ bind(
 
 http_archive(
     name = "com_google_snappy",
-    build_file = "@com_resdb_nexres//third_party:snappy.BUILD",
+    build_file = "//third_party:snappy.BUILD",
     sha256 = "e170ce0def2c71d0403f5cda61d6e2743373f9480124bcfcd0fa9b3299d428d9",
     strip_prefix = "snappy-1.1.9",
     url = "https://github.com/google/snappy/archive/refs/tags/1.1.9.zip",
@@ -168,58 +161,73 @@ bind(
 
 http_archive(
     name = "com_zlib",
-    build_file = "@com_resdb_nexres//third_party:zlib.BUILD",
+    build_file = "//third_party:zlib.BUILD",
     sha256 = "629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff",
     strip_prefix = "zlib-1.2.11",
     url = "https://github.com/madler/zlib/archive/v1.2.11.tar.gz",
 )
 
-http_archive(
-    name = "pybind11_bazel",
-    strip_prefix = "pybind11_bazel-2.11.1.bzl.1",
-    urls = ["https://github.com/pybind/pybind11_bazel/archive/refs/tags/v2.11.1.bzl.1.zip"],
+bind(
+    name = "zstd",
+    actual = "//third_party:zstd",
 )
 
 http_archive(
-    name = "pybind11",
-    build_file = "@pybind11_bazel//:pybind11.BUILD",
-    sha256 = "8ff2fff22df038f5cd02cea8af56622bc67f5b64534f1b83b9f133b8366acff2",
-    strip_prefix = "pybind11-2.6.2",
-    urls = ["https://github.com/pybind/pybind11/archive/v2.6.2.tar.gz"],
+    name = "com_facebook_zstd",
+    build_file_content = all_content,
+    strip_prefix = "zstd-1.5.2",
+    url = "https://github.com/facebook/zstd/archive/refs/tags/v1.5.2.zip",
 )
 
-load("@pybind11_bazel//:python_configure.bzl", "python_configure")
+bind(
+    name = "jemalloc",
+    actual = "//third_party:jemalloc",
+)
 
-python_configure(
-    name = "local_config_python",
-    python_version = "3",
+http_archive(
+    name = "com_jemalloc",
+    build_file_content = all_content,
+    sha256 = "1f35888bad9fd331f5a03445bc1bff808a59378be61fef01e9736179d76f2fab",
+    strip_prefix = "jemalloc-5.3.0",
+    url = "https://github.com/jemalloc/jemalloc/archive/refs/tags/5.3.0.zip",
 )
 
 http_archive(
-    name = "nlohmann_json",
-    build_file = "@com_resdb_nexres//third_party:json.BUILD",  # see below
-    sha256 = "4cf0df69731494668bdd6460ed8cb269b68de9c19ad8c27abc24cd72605b2d5b",
-    strip_prefix = "json-3.9.1",
-    urls = ["https://github.com/nlohmann/json/archive/v3.9.1.tar.gz"],
+    name = "com_github_facebook_rocksdb",
+    build_file = "//third_party:rocksdb.BUILD",
+    sha256 = "928cbd416c0531e9b2e7fa74864ce0d7097dca3f5a8c31f31459772a28dbfcba",
+    strip_prefix = "rocksdb-7.2.2",
+    url = "https://github.com/facebook/rocksdb/archive/refs/tags/v7.2.2.zip",
 )
 
 http_archive(
-    name = "com_crowcpp_crow",
-    build_file = "//third_party:crow.BUILD",
-    sha256 = "f95128a8976fae6f2922823e07da59edae277a460776572a556a4b663ff5ee4b",
-    strip_prefix = "Crow-1.0-5",
-    url = "https://github.com/CrowCpp/Crow/archive/refs/tags/v1.0+5.zip",
+    name = "net_zlib_zlib",
+    build_file = "//third_party:z.BUILD",
+    sha256 = "91844808532e5ce316b3c010929493c0244f3d37593afd6de04f71821d5136d9",
+    strip_prefix = "zlib-1.2.12",
+    urls = [
+        "https://zlib.net/zlib-1.2.12.tar.gz",
+        "https://storage.googleapis.com/bazel-mirror/zlib.net/zlib-1.2.12.tar.gz",
+    ],
 )
 
-bind(
-    name = "asio",
-    actual = "@com_chriskohlhoff_asio//:asio",
+
+http_archive(
+    name = "com_github_jupp0r_prometheus_cpp",
+    sha256 = "281b6d9a26da35375c9958954e03616d71ea28d57ec193b0e75c3e10ff3da55d",
+    strip_prefix = "prometheus-cpp-1.0.1",
+    url = "https://github.com/jupp0r/prometheus-cpp/archive/refs/tags/v1.0.1.zip",
 )
 
+load("@com_github_jupp0r_prometheus_cpp//bazel:repositories.bzl", "prometheus_cpp_repositories")
+
+prometheus_cpp_repositories()
+
+
 http_archive(
-    name = "com_chriskohlhoff_asio",
-    build_file = "//third_party:asio.BUILD",
-    sha256 = "babcdfd2c744905a73d20de211b51367bda0d5200f11d654c4314b909d8c963c",
-    strip_prefix = "asio-asio-1-26-0",
-    url = "https://github.com/chriskohlhoff/asio/archive/refs/tags/asio-1-26-0.zip",
+    name = "com_github_influxdb_cxx",
+    build_file_content = all_content,
+    strip_prefix = "influxdb-cxx-0.5.1",
+    url = "https://github.com/awegrzyn/influxdb-cxx/archive/refs/tags/v0.5.1.zip"
 )
+
diff --git a/api/BUILD b/api/BUILD
deleted file mode 100644
index 5bad893b..00000000
--- a/api/BUILD
+++ /dev/null
@@ -1,38 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-package(default_visibility = ["//visibility:public"])
-
-cc_binary(
-    name = "pybind_kv.so",
-    srcs = ["pybind_kv_service.cpp"],
-    linkshared = 1,
-    linkstatic = 1,
-    deps = [
-        "@//common/proto:signature_info_cc_proto",
-        "@//interface/kv:kv_client",
-        "@//platform/config:resdb_config_utils",
-        "@pybind11",
-    ],
-)
-
-py_library(
-    name = "pybind_kv_so",
-    data = [":pybind_kv.so"],
-    imports = ["."],
-)
diff --git a/api/README.md b/api/README.md
deleted file mode 100644
index d25474f3..00000000
--- a/api/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-  - Licensed to the Apache Software Foundation (ASF) under one
-  - or more contributor license agreements.  See the NOTICE file
-  - distributed with this work for additional information
-  - regarding copyright ownership.  The ASF licenses this file
-  - to you under the Apache License, Version 2.0 (the
-  - "License"); you may not use this file except in compliance
-  - with the License.  You may obtain a copy of the License at
-  -
-  -   http://www.apache.org/licenses/LICENSE-2.0
-  -
-  - Unless required by applicable law or agreed to in writing,
-  - software distributed under the License is distributed on an
-  - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  - KIND, either express or implied.  See the License for the
-  - specific language governing permissions and limitations
-  - under the License.
-  -->
-
-# ResilientDB kv-Service Python API(Get and Set Command)
-
-## Description
-This API allows users to use kv-service of the ResilientDB in Python directly.
-
-## How to Run
-1. Make sure to run `./INSTALL.sh` in advance.
-1. cd to `incubator-resilientdb/api` folder.
-2. Run command `bazel build :pybind_kv_so`.
-3. From `kv_operation.py`, import `get_value` and `set_value` functions into your Python file to use it (Make sure to use the same Python version when running `bazel build` command and calling the functions).
-
-## Parameters
-### `set_value`:
-1. `key`: The key user wants to store in a key-value pair. Acceptable types are `str`, `int`, `float`.
-2. `value`: The corresponding value to `key` in the key-value pair. Acceptable types are `str`, `int`, `float`.
-3. config_path (optional): The path to the user's blockchain config file (IP addresses). If the user does not specify this parameter, the system will default to the address located in "ip.address.config." The acceptable type is `str`.
-4. `return`: `True` if `value` has been set successfully; otherwise, `value` has not been set successfully.
-### `get_value`:
-1. `key`: The key user wants to get in a key-value pair. Acceptable types are `str`, `int`, `float`.
-2. `return`: `\n` if the corresponding value of `key` is empty, otherwise is the corresponding value of `key`.
-
-
-## Example
-```angular2html
-import sys
-# Your path to ResilientDB api folder
-sys.path.append("/home/ubuntu/Desktop/incubator-resilientdb/api")
-from kv_operation import set_value, get_value
-
-set_value("test", "111222")
-get_value("test")
-```
-
-If having set up the environment parameter, "sys.path" can be ignorred.
-```
-export PYTHON_PATH="/home/ubuntu/Desktop/incubator-resilientdb/api":PYTHON_PATH
-```
-```angular2html
-from kv_operation import set_value, get_value
-
-set_value("test", "111222")
-get_value("test")
-```
-
-
-
-
diff --git a/api/ip_address.config b/api/ip_address.config
deleted file mode 100644
index e119673e..00000000
--- a/api/ip_address.config
+++ /dev/null
@@ -1 +0,0 @@
-5 44.193.63.142 17005
\ No newline at end of file
diff --git a/api/kv_operation.py b/api/kv_operation.py
deleted file mode 100644
index f18c8460..00000000
--- a/api/kv_operation.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#
- # Licensed to the Apache Software Foundation (ASF) under one
- # or more contributor license agreements.  See the NOTICE file
- # distributed with this work for additional information
- # regarding copyright ownership.  The ASF licenses this file
- # to you under the Apache License, Version 2.0 (the
- # "License"); you may not use this file except in compliance
- # with the License.  You may obtain a copy of the License at
- #
- #   http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing,
- # software distributed under the License is distributed on an
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- # KIND, either express or implied.  See the License for the
- # specific language governing permissions and limitations
- # under the License.
- #
-
-import os
-import sys
-current_file_path = os.path.abspath(__file__)
-current_dir = os.path.dirname(current_file_path)
-parent_dir = os.path.dirname(current_dir)
-new_path_dir = os.path.join(parent_dir, "bazel-out", "k8-fastbuild", "bin", "api")
-sys.path.insert(0, new_path_dir)
-import pybind_kv
-
-
-def set_value(key: str or int or float, value: str or int or float, config_path: str = current_dir + "/ip_address.config") -> bool:
-    """
-    :param key: The key you want to set your value to.
-    :param value: The key's corresponding value in key value pair.
-    :param config_path: Default is connect to the main chain, users can specify the path to connect to their local blockchain.
-    :return: True if value has been set successfully.
-    """
-    return pybind_kv.set(str(key), str(value), os.path.abspath(config_path))
-
-
-def get_value(key: str or int or float, config_path: str = current_dir + "/ip_address.config") -> str:
-    """
-    :param key: The key of the value you want to get in key value pair.
-    :param config_path: Default is connect to the main chain, users can specify the path to connect to their local blockchain.
-    :return: A string of the key's corresponding value.
-    """
-    return pybind_kv.get(str(key), os.path.abspath(config_path))
diff --git a/api/pybind_kv_service.cpp b/api/pybind_kv_service.cpp
deleted file mode 100644
index 013683fb..00000000
--- a/api/pybind_kv_service.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include <fcntl.h>
-#include <getopt.h>
-#include <pybind11/pybind11.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <fstream>
-
-#include "common/proto/signature_info.pb.h"
-#include "interface/kv/kv_client.h"
-#include "platform/config/resdb_config_utils.h"
-
-using resdb::GenerateReplicaInfo;
-using resdb::GenerateResDBConfig;
-using resdb::KVClient;
-using resdb::ReplicaInfo;
-using resdb::ResDBConfig;
-
-std::string get(std::string key, std::string config_path) {
-  ResDBConfig config = GenerateResDBConfig(config_path);
-  config.SetClientTimeoutMs(100000);
-  KVClient client(config);
-  auto result_ptr = client.Get(key);
-  if (result_ptr) {
-    return *result_ptr;
-  } else {
-    return "";
-  }
-}
-
-bool set(std::string key, std::string value, std::string config_path) {
-  ResDBConfig config = GenerateResDBConfig(config_path);
-  config.SetClientTimeoutMs(100000);
-  KVClient client(config);
-  int result = client.Set(key, value);
-  if (result == 0) {
-    return true;
-  } else {
-    return false;
-  }
-}
-
-PYBIND11_MODULE(pybind_kv, m) {
-  m.def("get", &get, "A function that gets a value from the key-value store");
-  m.def("set", &set, "A function that sets a value in the key-value store");
-}
diff --git a/application/poc/BUILD b/application/poc/BUILD
new file mode 100644
index 00000000..d105e1b6
--- /dev/null
+++ b/application/poc/BUILD
@@ -0,0 +1,41 @@
+package(default_visibility = ["//visibility:public"])
+
+cc_binary(
+    name = "pow_server",
+    srcs = ["pow_server.cpp"],
+    deps = [
+        "//config:resdb_config_utils",
+        "//ordering/poc/pow:consensus_service_pow",
+        "//server:resdb_server",
+	"//statistic:stats"
+    ],
+)
+
+cc_binary(
+    name = "pbft_server",
+    srcs = ["pbft_server.cpp"],
+    deps = [
+        "//config:resdb_config_utils",
+        "//ordering/pbft:consensus_service_pbft",
+        "//server:resdb_server",
+    ],
+)
+
+cc_library(
+    name = "pbft_client",
+    srcs = ["pbft_client.cpp"],
+    hdrs = ["pbft_client.h"],
+    deps = [
+        "//client:resdb_user_client",
+        "//ordering/poc/proto:transaction_cc_proto",
+    ],
+)
+
+cc_binary(
+    name = "pbft_client_main",
+    srcs = ["pbft_client_main.cpp"],
+    deps = [
+        ":pbft_client",
+        "//config:resdb_config_utils",
+    ],
+)
diff --git a/application/poc/pbft.config b/application/poc/pbft.config
new file mode 100644
index 00000000..d5755a7f
--- /dev/null
+++ b/application/poc/pbft.config
@@ -0,0 +1,4 @@
+1 127.0.0.1 10001
+2 127.0.0.1 10002
+3 127.0.0.1 10003
+4 127.0.0.1 10004
diff --git a/service/tools/contract/api_tools/client_config.config b/application/poc/pbft_client.config
similarity index 100%
rename from service/tools/contract/api_tools/client_config.config
rename to application/poc/pbft_client.config
diff --git a/application/poc/pbft_client.cpp b/application/poc/pbft_client.cpp
new file mode 100644
index 00000000..8839fef9
--- /dev/null
+++ b/application/poc/pbft_client.cpp
@@ -0,0 +1,15 @@
+#include "application/poc/pbft_client.h"
+
+#include "ordering/poc/proto/transaction.pb.h"
+
+namespace resdb {
+
+PBFTClient::PBFTClient(const ResDBConfig& config) : ResDBUserClient(config) {}
+
+int PBFTClient::Set(const std::string& data) {
+  Transaction txn;
+  txn.set_data(data);
+  return SendRequest(txn);
+}
+
+}  // namespace resdb
diff --git a/application/poc/pbft_client.h b/application/poc/pbft_client.h
new file mode 100644
index 00000000..545eb507
--- /dev/null
+++ b/application/poc/pbft_client.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include "client/resdb_user_client.h"
+
+namespace resdb {
+
+// PBFTClient to send data to the pbft cluster.
+class PBFTClient : public ResDBUserClient {
+ public:
+  PBFTClient(const ResDBConfig& config);
+
+  int Set(const std::string& data);
+};
+
+}  // namespace resdb
diff --git a/application/poc/pbft_client_main.cpp b/application/poc/pbft_client_main.cpp
new file mode 100644
index 00000000..fb5a1a51
--- /dev/null
+++ b/application/poc/pbft_client_main.cpp
@@ -0,0 +1,21 @@
+#include "application/poc/pbft_client.h"
+#include "config/resdb_config_utils.h"
+
+using resdb::GenerateResDBConfig;
+using resdb::PBFTClient;
+using resdb::ResDBConfig;
+
+int main(int argc, char** argv) {
+  if (argc < 3) {
+    printf("<config path> data\n");
+    return 0;
+  }
+  std::string config_file = argv[1];
+  std::string value = argv[2];
+
+  ResDBConfig config = GenerateResDBConfig(config_file);
+
+  PBFTClient client(config);
+  int ret = client.Set(value);
+  printf("client set ret = %d\n", ret);
+}
diff --git a/application/poc/pbft_server.cpp b/application/poc/pbft_server.cpp
new file mode 100644
index 00000000..e0d04683
--- /dev/null
+++ b/application/poc/pbft_server.cpp
@@ -0,0 +1,29 @@
+#include "config/resdb_config_utils.h"
+#include "ordering/pbft/consensus_service_pbft.h"
+#include "server/resdb_server.h"
+
+using resdb::ConsensusServicePBFT;
+using resdb::GenerateResDBConfig;
+using resdb::ResDBConfig;
+using resdb::ResDBServer;
+
+void ShowUsage() { printf("<config> <private_key> <cert_file>\n"); }
+
+int main(int argc, char** argv) {
+  if (argc < 3) {
+    ShowUsage();
+    exit(0);
+  }
+
+  char* config_file = argv[1];
+  char* private_key_file = argv[2];
+  char* cert_file = argv[3];
+
+  std::unique_ptr<ResDBConfig> config =
+      GenerateResDBConfig(config_file, private_key_file, cert_file);
+
+  ResDBServer server(*config,
+                     std::make_unique<ConsensusServicePBFT>(*config, nullptr));
+  server.Run();
+}
+
diff --git a/application/poc/pow.config b/application/poc/pow.config
new file mode 100644
index 00000000..884038ad
--- /dev/null
+++ b/application/poc/pow.config
@@ -0,0 +1,4 @@
+1 127.0.0.1 30001
+2 127.0.0.1 30002
+3 127.0.0.1 30003
+4 127.0.0.1 30004
diff --git a/application/poc/pow_server.cpp b/application/poc/pow_server.cpp
new file mode 100644
index 00000000..7260adf7
--- /dev/null
+++ b/application/poc/pow_server.cpp
@@ -0,0 +1,55 @@
+#include "config/resdb_config_utils.h"
+#include "ordering/poc/pow/consensus_service_pow.h"
+#include "server/resdb_server.h"
+#include "statistic/stats.h"
+
+using resdb::CertificateInfo;
+using resdb::ConsensusServicePoW;
+using resdb::GenerateReplicaInfo;
+using resdb::GenerateResDBConfig;
+using resdb::KeyInfo;
+using resdb::ReadConfig;
+using resdb::Stats;
+using resdb::ReplicaInfo;
+using resdb::ResDBConfig;
+using resdb::ResDBPoCConfig;
+using resdb::ResDBServer;
+
+void ShowUsage() { printf("<bft config> <pow config>\n"); }
+
+int main(int argc, char** argv) {
+  if (argc < 5) {
+    ShowUsage();
+    exit(0);
+  }
+
+  std::string bft_config_file = argv[1];
+  std::string pow_config_file = argv[2];
+  std::string private_key_file = argv[3];
+  std::string cert_file = argv[4];
+  LOG(ERROR) << "pow_config:" << pow_config_file;
+
+  ResDBConfig bft_config = GenerateResDBConfig(bft_config_file);
+
+  std::unique_ptr<ResDBConfig> pow_config = GenerateResDBConfig(
+      pow_config_file, private_key_file, cert_file, std::nullopt,
+      [&](const std::vector<ReplicaInfo>& replicas,
+          const ReplicaInfo& self_info, const KeyInfo& private_key,
+          const CertificateInfo& public_key_cert_info) {
+        return std::make_unique<ResDBPoCConfig>(
+            bft_config, replicas, self_info, private_key, public_key_cert_info);
+      });
+
+  LOG(ERROR)<<"elf ip:"<<pow_config->GetSelfInfo().ip();
+  Stats::InitGlobalPrometheus("0.0.0.0:8091");
+  ResDBPoCConfig* pow_config_ptr =
+      static_cast<ResDBPoCConfig*>(pow_config.get());
+
+  pow_config_ptr->SetMaxNonceBit(42);
+  pow_config_ptr->SetDifficulty(36);
+  
+  ResDBServer server(*pow_config_ptr,
+                     std::make_unique<ConsensusServicePoW>(*pow_config_ptr));
+  server.Run();
+}
+
diff --git a/application/poc/tools/feed_local.sh b/application/poc/tools/feed_local.sh
new file mode 100644
index 00000000..ab8db592
--- /dev/null
+++ b/application/poc/tools/feed_local.sh
@@ -0,0 +1 @@
+bazel-bin/application/poc/pbft_client_main application/poc/pbft_client.config test1234
diff --git a/application/poc/tools/pow_cert/cert_1.cert b/application/poc/tools/pow_cert/cert_1.cert
new file mode 100644
index 00000000..e8317c3a
--- /dev/null
+++ b/application/poc/tools/pow_cert/cert_1.cert
@@ -0,0 +1,7 @@
+
+$
+ u>��,����Nb+R�m����.�dQ|;V;݅}
+7
+$
+ A/��{�?"XU,����lErI
+#���A"	127.0.0.1(��B@�!&�ks�ld;hay6�{������v��8��e��u"�fF���lIɡHJ�v��(�5VA| 
\ No newline at end of file
diff --git a/application/poc/tools/pow_cert/cert_2.cert b/application/poc/tools/pow_cert/cert_2.cert
new file mode 100644
index 00000000..d19c9630
--- /dev/null
+++ b/application/poc/tools/pow_cert/cert_2.cert
@@ -0,0 +1,7 @@
+
+$
+ u>��,����Nb+R�m����.�dQ|;V;݅}
+7
+$
+ 󗑉���Ej�K'=��zp�@r����E�����"	127.0.0.1(��B@�+��hC�3�l�t7g��k��k�������5�G�� �p�
+��D@Y�C����R��\� 
\ No newline at end of file
diff --git a/application/poc/tools/pow_cert/cert_3.cert b/application/poc/tools/pow_cert/cert_3.cert
new file mode 100644
index 00000000..9e119928
--- /dev/null
+++ b/application/poc/tools/pow_cert/cert_3.cert
@@ -0,0 +1,7 @@
+
+$
+ u>��,����Nb+R�m����.�dQ|;V;݅}
+7
+$
+ |�a9�	#��Y��<g�6_��"g!M���
+��"	127.0.0.1(��B@�$��$�O(��xX�2.��ҘSr�G^Cg���5U\7�8\���y�k�k×�y����#�	 
\ No newline at end of file
diff --git a/application/poc/tools/pow_cert/cert_4.cert b/application/poc/tools/pow_cert/cert_4.cert
new file mode 100644
index 00000000..e89c2e35
--- /dev/null
+++ b/application/poc/tools/pow_cert/cert_4.cert
@@ -0,0 +1,6 @@
+
+$
+ u>��,����Nb+R�m����.�dQ|;V;݅}
+7
+$
+ {aLx2٢�<�jQf+S�b��֐�±��2"	127.0.0.1(��B@��K�������2�E��&��c�䜥�Ĺx�"�����χ�2��>t�\\�Y&�ʳo4 
\ No newline at end of file
diff --git a/application/poc/tools/start_pbft_server.sh b/application/poc/tools/start_pbft_server.sh
new file mode 100644
index 00000000..18ba6e29
--- /dev/null
+++ b/application/poc/tools/start_pbft_server.sh
@@ -0,0 +1,17 @@
+BIN=pbft_server
+WORK_PATH=$PWD
+
+SERVER_SRC_PATH=application/poc
+SERVER_BIN_PATH=$WORK_PATH/bazel-bin/${SERVER_SRC_PATH}/${BIN}
+LOG_PATH=$WORK_PATH/log/pbft
+SERVER_CONFIG=$SERVER_SRC_PATH/pbft.config
+mkdir -p $LOG_PATH
+
+killall -9 $BIN
+bazel build ${SERVER_SRC_PATH}:${BIN}
+
+nohup $SERVER_BIN_PATH $SERVER_CONFIG $WORK_PATH/cert/node1.key.pri $WORK_PATH/cert/cert_1.cert > $LOG_PATH/server0.log &
+nohup $SERVER_BIN_PATH $SERVER_CONFIG $WORK_PATH/cert/node2.key.pri $WORK_PATH/cert/cert_2.cert > $LOG_PATH/server1.log &
+nohup $SERVER_BIN_PATH $SERVER_CONFIG $WORK_PATH/cert/node3.key.pri $WORK_PATH/cert/cert_3.cert > $LOG_PATH/server2.log &
+nohup $SERVER_BIN_PATH $SERVER_CONFIG $WORK_PATH/cert/node4.key.pri $WORK_PATH/cert/cert_4.cert > $LOG_PATH/server3.log &
+nohup $SERVER_BIN_PATH $SERVER_CONFIG $WORK_PATH/cert/node5.key.pri $WORK_PATH/cert/cert_5.cert > $LOG_PATH/client.log &
diff --git a/application/poc/tools/start_pow_server.sh b/application/poc/tools/start_pow_server.sh
new file mode 100644
index 00000000..6ef6a1c7
--- /dev/null
+++ b/application/poc/tools/start_pow_server.sh
@@ -0,0 +1,20 @@
+BIN=pow_server
+WORK_PATH=$PWD
+
+SERVER_SRC_PATH=application/poc
+SERVER_BIN_PATH=$WORK_PATH/bazel-bin/${SERVER_SRC_PATH}/${BIN}
+CERT_PATH=$WORK_PATH/$SERVER_SRC_PATH/tools/pow_cert
+LOG_PATH=$WORK_PATH/log/poc/pow
+BFT_CONFIG_PATH=$SERVER_SRC_PATH/pbft.config
+POW_CONFIG_PATH=$SERVER_SRC_PATH/pow.config
+
+set -x
+mkdir -p $LOG_PATH
+
+killall -9 $BIN
+
+bazel build ${SERVER_SRC_PATH}:${BIN}
+nohup $SERVER_BIN_PATH $BFT_CONFIG_PATH $POW_CONFIG_PATH $WORK_PATH/cert/node1.key.pri $CERT_PATH/cert_1.cert > $LOG_PATH/server0.log &
+nohup $SERVER_BIN_PATH $BFT_CONFIG_PATH $POW_CONFIG_PATH $WORK_PATH/cert/node2.key.pri $CERT_PATH/cert_2.cert > $LOG_PATH/server1.log &
+nohup $SERVER_BIN_PATH $BFT_CONFIG_PATH $POW_CONFIG_PATH $WORK_PATH/cert/node3.key.pri $CERT_PATH/cert_3.cert > $LOG_PATH/server2.log &
+nohup $SERVER_BIN_PATH $BFT_CONFIG_PATH $POW_CONFIG_PATH $WORK_PATH/cert/node4.key.pri $CERT_PATH/cert_4.cert > $LOG_PATH/server3.log &
diff --git a/application/utils/BUILD b/application/utils/BUILD
new file mode 100644
index 00000000..9544cca8
--- /dev/null
+++ b/application/utils/BUILD
@@ -0,0 +1,12 @@
+package(default_visibility = ["//visibility:public"])
+
+cc_library(
+    name = "server_factory",
+    srcs = ["server_factory.cpp"],
+    hdrs = ["server_factory.h"],
+    deps = [
+        "//config:resdb_config_utils",
+        "//ordering/pbft:consensus_service_pbft",
+        "//server:resdb_server",
+    ],
+)
diff --git a/application/utils/server_factory.cpp b/application/utils/server_factory.cpp
new file mode 100644
index 00000000..80f395a5
--- /dev/null
+++ b/application/utils/server_factory.cpp
@@ -0,0 +1,32 @@
+#include "application/utils/server_factory.h"
+
+#include "config/resdb_config_utils.h"
+#include "ordering/pbft/consensus_service_pbft.h"
+
+namespace resdb {
+
+std::unique_ptr<ResDBServer> ServerFactory::CreateResDBServer(
+    char* config_file, char* private_key_file, char* cert_file,
+    std::unique_ptr<TransactionExecutorImpl> executor, char* logging_dir,
+    std::function<void(ResDBConfig* config)> config_handler) {
+  std::unique_ptr<ResDBConfig> config =
+      GenerateResDBConfig(config_file, private_key_file, cert_file);
+
+  if (config_handler) {
+    config_handler(config.get());
+  }
+  return std::make_unique<ResDBServer>(
+      *config,
+      std::make_unique<ConsensusServicePBFT>(*config, std::move(executor)));
+}
+
+std::unique_ptr<ResDBServer> GenerateResDBServer(
+    char* config_file, char* private_key_file, char* cert_file,
+    std::unique_ptr<TransactionExecutorImpl> executor, char* logging_dir,
+    std::function<void(ResDBConfig* config)> config_handler) {
+  return ServerFactory().CreateResDBServer(config_file, private_key_file,
+                                           cert_file, std::move(executor),
+                                           logging_dir, config_handler);
+}
+
+}  // namespace resdb
diff --git a/application/utils/server_factory.h b/application/utils/server_factory.h
new file mode 100644
index 00000000..c75c848c
--- /dev/null
+++ b/application/utils/server_factory.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "execution/transaction_executor_impl.h"
+#include "server/resdb_server.h"
+
+namespace resdb {
+
+class ServerFactory {
+ public:
+  std::unique_ptr<ResDBServer> CreateResDBServer(
+      char* config_file, char* private_key_file, char* cert_file,
+      std::unique_ptr<TransactionExecutorImpl> executor, char* logging_dir,
+      std::function<void(ResDBConfig* config)> config_handler);
+};
+
+std::unique_ptr<ResDBServer> GenerateResDBServer(
+    char* config_file, char* private_key_file, char* cert_file,
+    std::unique_ptr<TransactionExecutorImpl> executor,
+    char* logging_dir = nullptr,
+    std::function<void(ResDBConfig* config)> config_handler = nullptr);
+}  // namespace resdb
diff --git a/benchmark/pbft/BUILD b/benchmark/pbft/BUILD
new file mode 100644
index 00000000..f84b7e2e
--- /dev/null
+++ b/benchmark/pbft/BUILD
@@ -0,0 +1,45 @@
+package(default_visibility = ["//visibility:public"])
+
+cc_library(
+    name = "benchmark_server_impl",
+    srcs = ["benchmark_server_impl.cpp"],
+    hdrs = ["benchmark_server_impl.h"],
+    deps = [
+        "//benchmark/pbft/proto:benchmark_cc_proto",
+        "//common:comm",
+        "//execution:transaction_executor_impl",
+    ],
+)
+
+cc_binary(
+    name = "benchmark_server",
+    srcs = ["benchmark_server.cpp"],
+    deps = [
+        ":benchmark_server_impl",
+        "//application/utils:server_factory",
+        "//config:resdb_config_utils",
+        "//ordering/pbft:consensus_service_pbft",
+        "//server:resdb_server",
+    ],
+)
+
+cc_library(
+    name = "benchmark_client",
+    srcs = ["benchmark_client.cpp"],
+    hdrs = ["benchmark_client.h"],
+    deps = [
+        "//benchmark/pbft/proto:benchmark_cc_proto",
+        "//client:resdb_user_client",
+        "//config:resdb_config_utils",
+    ],
+)
+
+cc_binary(
+    name = "benchmark_client_main",
+    srcs = ["benchmark_client_main.cpp"],
+    deps = [
+        ":benchmark_client",
+        "//common/utils",
+        "//config:resdb_config_utils",
+    ],
+)
diff --git a/benchmark/pbft/benchmark_client.cpp b/benchmark/pbft/benchmark_client.cpp
new file mode 100644
index 00000000..582b28ec
--- /dev/null
+++ b/benchmark/pbft/benchmark_client.cpp
@@ -0,0 +1,20 @@
+#include "benchmark/pbft/benchmark_client.h"
+
+#include <glog/logging.h>
+
+#include "benchmark/pbft/proto/benchmark.pb.h"
+
+namespace resdb {
+
+BenchmarkClient::BenchmarkClient(const ResDBConfig& config)
+    : ResDBUserClient(config) {}
+
+int BenchmarkClient::Set(const std::string& data) {
+  BenchmarkMessage request;
+  request.set_data(data);
+  return SendRequest(request);
+  //  BenchmarkResponse response;
+  //  return SendRequest(request, &response);
+}
+
+}  // namespace resdb
diff --git a/benchmark/pbft/benchmark_client.h b/benchmark/pbft/benchmark_client.h
new file mode 100644
index 00000000..e4e84d1b
--- /dev/null
+++ b/benchmark/pbft/benchmark_client.h
@@ -0,0 +1,15 @@
+#pragma once
+
+#include "client/resdb_user_client.h"
+
+namespace resdb {
+
+// BenchmarkClient to send data to the pbft cluster.
+class BenchmarkClient : public ResDBUserClient {
+ public:
+  BenchmarkClient(const ResDBConfig& config);
+
+  int Set(const std::string& data);
+};
+
+}  // namespace resdb
diff --git a/benchmark/pbft/benchmark_client_main.cpp b/benchmark/pbft/benchmark_client_main.cpp
new file mode 100644
index 00000000..27419f1c
--- /dev/null
+++ b/benchmark/pbft/benchmark_client_main.cpp
@@ -0,0 +1,29 @@
+#include <glog/logging.h>
+
+#include "benchmark/pbft/benchmark_client.h"
+#include "common/utils/utils.h"
+#include "config/resdb_config_utils.h"
+
+using resdb::BenchmarkClient;
+using resdb::GenerateResDBConfig;
+using resdb::get_sys_clock;
+using resdb::ReplicaInfo;
+using resdb::ResDBConfig;
+
+int main(int argc, char** argv) {
+  if (argc < 5) {
+    printf("<config path> <data_size> <request num> <thread num> \n");
+    return 0;
+  }
+  std::string config_file = argv[1];
+  int value_size = std::stoi(argv[2]);
+
+  ResDBConfig config = GenerateResDBConfig(config_file);
+
+  config.SetClientTimeoutMs(10000000);
+  BenchmarkClient client(config);
+  int ret = client.Set(std::string(value_size, 't'));
+  if (ret != 0) {
+    printf("client set fail ret = %d\n", ret);
+  }
+}
diff --git a/benchmark/pbft/benchmark_server.config b/benchmark/pbft/benchmark_server.config
new file mode 100644
index 00000000..d5755a7f
--- /dev/null
+++ b/benchmark/pbft/benchmark_server.config
@@ -0,0 +1,4 @@
+1 127.0.0.1 10001
+2 127.0.0.1 10002
+3 127.0.0.1 10003
+4 127.0.0.1 10004
diff --git a/benchmark/pbft/benchmark_server.cpp b/benchmark/pbft/benchmark_server.cpp
new file mode 100644
index 00000000..7cf9f033
--- /dev/null
+++ b/benchmark/pbft/benchmark_server.cpp
@@ -0,0 +1,30 @@
+#include "application/utils/server_factory.h"
+#include "benchmark/pbft/benchmark_server_impl.h"
+#include "statistic/stats.h"
+
+using resdb::BenchmarkServerImpl;
+using resdb::GenerateResDBServer;
+using resdb::ResDBConfig;
+using resdb::Stats;
+
+void ShowUsage() { printf("<config> <private_key> <cert_file>\n"); }
+
+int main(int argc, char** argv) {
+  if (argc < 3) {
+    ShowUsage();
+    exit(0);
+  }
+
+  char* config_file = argv[1];
+  char* private_key_file = argv[2];
+  char* cert_file = argv[3];
+
+  Stats::GetGlobalStats(/*int sleep_seconds = */ 5);
+
+  auto server = GenerateResDBServer(
+      config_file, private_key_file, cert_file,
+      std::make_unique<BenchmarkServerImpl>(), nullptr,
+      [&](ResDBConfig* config) { config->RunningPerformance(true); });
+
+  server->Run();
+}
diff --git a/benchmark/pbft/benchmark_server_impl.cpp b/benchmark/pbft/benchmark_server_impl.cpp
new file mode 100644
index 00000000..be70078b
--- /dev/null
+++ b/benchmark/pbft/benchmark_server_impl.cpp
@@ -0,0 +1,19 @@
+#include "benchmark/pbft/benchmark_server_impl.h"
+
+#include <glog/logging.h>
+
+#include "benchmark/pbft/proto/benchmark.pb.h"
+
+namespace resdb {
+
+BenchmarkServerImpl::BenchmarkServerImpl() {}
+std::unique_ptr<std::string> BenchmarkServerImpl::ExecuteData(
+    const std::string& request) {
+  BenchmarkResponse response;
+  response.set_data(std::string('b', 17));
+  std::unique_ptr<std::string> resp = std::make_unique<std::string>();
+  response.SerializeToString(resp.get());
+  return resp;
+}
+
+}  // namespace resdb
diff --git a/benchmark/pbft/benchmark_server_impl.h b/benchmark/pbft/benchmark_server_impl.h
new file mode 100644
index 00000000..095ce637
--- /dev/null
+++ b/benchmark/pbft/benchmark_server_impl.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include <chrono>
+#include <future>
+#include <map>
+
+#include "execution/transaction_executor_impl.h"
+
+namespace resdb {
+
+class BenchmarkServerImpl : public TransactionExecutorImpl {
+ public:
+  BenchmarkServerImpl();
+  virtual ~BenchmarkServerImpl() = default;
+
+  std::unique_ptr<std::string> ExecuteData(const std::string& request) override;
+
+ private:
+  std::thread thread_;
+  std::promise<bool> begin_;
+};
+
+}  // namespace resdb
diff --git a/benchmark/pbft/kv_server_impl_test.cpp b/benchmark/pbft/kv_server_impl_test.cpp
new file mode 100644
index 00000000..2f91caf1
--- /dev/null
+++ b/benchmark/pbft/kv_server_impl_test.cpp
@@ -0,0 +1,62 @@
+#include "kv_server/kv_server_impl.h"
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#include "proto/kv_server.pb.h"
+
+namespace resdb {
+namespace {
+
+using ::testing::Test;
+
+class KVServerImplTest : public Test {
+ public:
+  int Set(const std::string& key, const std::string& value) {
+    KVRequest request;
+    request.set_cmd(KVRequest::SET);
+    request.set_key(key);
+    request.set_value(value);
+
+    std::string str;
+    if (!request.SerializeToString(&str)) {
+      return -1;
+    }
+    impl_.ExecuteData(str);
+    return 0;
+  }
+
+  std::string Get(const std::string& key) {
+    KVRequest request;
+    request.set_cmd(KVRequest::GET);
+    request.set_key(key);
+
+    std::string str;
+    if (!request.SerializeToString(&str)) {
+      return "";
+    }
+    auto resp = impl_.ExecuteData(str);
+    if (resp == nullptr) {
+      return "";
+    }
+    KVResponse kv_response;
+    if (!kv_response.ParseFromString(*resp)) {
+      return "";
+    }
+    return kv_response.value();
+  }
+
+ private:
+  KVServerImpl impl_;
+};
+
+TEST_F(KVServerImplTest, SetValue) {
+  EXPECT_EQ(Set("test_key", "test_value"), 0);
+  EXPECT_EQ(Get("test_key"), "test_value");
+}
+
+TEST_F(KVServerImplTest, GetValue) { EXPECT_EQ(Get("test_key"), ""); }
+
+}  // namespace
+
+}  // namespace resdb
diff --git a/benchmark/pbft/local_benchark.sh b/benchmark/pbft/local_benchark.sh
new file mode 100644
index 00000000..af1e4371
--- /dev/null
+++ b/benchmark/pbft/local_benchark.sh
@@ -0,0 +1,14 @@
+BIN=benchmark_client_main
+ROOT_PATH=$PWD/
+PBFT_BM_SRC=//benchmark/pbft
+PBFT_BM_BIN=${ROOT_PATH}/bazel-bin/benchmark/pbft/${BIN}
+
+value_size=10
+req_num=10
+thd_num=2
+client_ip=127.0.0.1
+
+bazel build $PBFT_BM_SRC:${BIN}
+
+$PBFT_BM_BIN ${ROOT_PATH}/benchmark/poc/pbft/benchmark_server.config  ${ROOT_PATH}/cert/node5.key.pri ${ROOT_PATH}/cert/cert_5.cert ${value_size} ${req_num} ${thd_num} ${client_ip}
+
diff --git a/benchmark/pbft/proto/BUILD b/benchmark/pbft/proto/BUILD
new file mode 100644
index 00000000..b69c7f95
--- /dev/null
+++ b/benchmark/pbft/proto/BUILD
@@ -0,0 +1,14 @@
+package(default_visibility = ["//benchmark/pbft:__subpackages__"])
+
+load("@rules_cc//cc:defs.bzl", "cc_proto_library")
+load("@rules_proto//proto:defs.bzl", "proto_library")
+
+proto_library(
+    name = "benchmark_proto",
+    srcs = ["benchmark.proto"],
+)
+
+cc_proto_library(
+    name = "benchmark_cc_proto",
+    deps = [":benchmark_proto"],
+)
diff --git a/benchmark/pbft/proto/benchmark.proto b/benchmark/pbft/proto/benchmark.proto
new file mode 100644
index 00000000..9559bcfd
--- /dev/null
+++ b/benchmark/pbft/proto/benchmark.proto
@@ -0,0 +1,11 @@
+syntax = "proto3";
+
+package resdb;
+
+message BenchmarkMessage {
+  string data = 1;
+}
+
+message BenchmarkResponse {
+  string data = 1;
+}
diff --git a/benchmark/pbft/start_benchmark_server.sh b/benchmark/pbft/start_benchmark_server.sh
new file mode 100644
index 00000000..00d45aff
--- /dev/null
+++ b/benchmark/pbft/start_benchmark_server.sh
@@ -0,0 +1,16 @@
+WORK_PATH=$PWD
+
+BIN=benchmark_server
+SERVER_SRC_PATH=benchmark/pbft
+SERVER_BIN_PATH=$WORK_PATH/bazel-bin/${SERVER_SRC_PATH}/${BIN}
+LOG_PATH=$WORK_PATH/log/pbft
+SERVER_CONFIG=${WORK_PATH}/$SERVER_SRC_PATH/benchmark_server.config
+mkdir -p $LOG_PATH
+
+killall -9 $BIN
+bazel build //${SERVER_SRC_PATH}:${BIN}
+
+nohup $SERVER_BIN_PATH $SERVER_CONFIG $WORK_PATH/cert/node1.key.pri $WORK_PATH/cert/cert_1.cert > $LOG_PATH/server0.log &
+nohup $SERVER_BIN_PATH $SERVER_CONFIG $WORK_PATH/cert/node2.key.pri $WORK_PATH/cert/cert_2.cert > $LOG_PATH/server1.log &
+nohup $SERVER_BIN_PATH $SERVER_CONFIG $WORK_PATH/cert/node3.key.pri $WORK_PATH/cert/cert_3.cert > $LOG_PATH/server2.log &
+nohup $SERVER_BIN_PATH $SERVER_CONFIG $WORK_PATH/cert/node4.key.pri $WORK_PATH/cert/cert_4.cert > $LOG_PATH/server3.log &
diff --git a/benchmark/poc/pow/BUILD b/benchmark/poc/pow/BUILD
new file mode 100644
index 00000000..4b65afce
--- /dev/null
+++ b/benchmark/poc/pow/BUILD
@@ -0,0 +1,10 @@
+package(default_visibility = ["//visibility:public"])
+
+cc_binary(
+    name = "benchmark_client",
+    srcs = ["benchmark_client.cpp"],
+    deps = [
+        "//application/poc:pbft_client",
+        "//config:resdb_config_utils",
+    ],
+)
diff --git a/benchmark/poc/pow/benchmark_client.cpp b/benchmark/poc/pow/benchmark_client.cpp
new file mode 100644
index 00000000..9afc3e9e
--- /dev/null
+++ b/benchmark/poc/pow/benchmark_client.cpp
@@ -0,0 +1,49 @@
+#include "application/poc/pbft_client.h"
+#include "config/resdb_config_utils.h"
+
+using resdb::GenerateReplicaInfo;
+using resdb::PBFTClient;
+using resdb::ReplicaInfo;
+using resdb::ResDBConfig;
+
+int main(int argc, char** argv) {
+  if (argc < 5) {
+    printf(
+        "<config path> <private key path> <cert_file> <data_size> <request "
+        "num> <thread num> <client_ip>\n");
+    return 0;
+  }
+  std::string config_file = argv[1];
+  std::string private_key_file = argv[2];
+  std::string cert_file = argv[3];
+  int value_size = std::stoi(argv[4]);
+  int req_num = std::stoi(argv[5]);
+  std::string client_ip = argv[6];
+
+  ReplicaInfo self_info = GenerateReplicaInfo(0, client_ip, 88888);
+
+  std::unique_ptr<ResDBConfig> config =
+      GenerateResDBConfig(config_file, private_key_file, cert_file, self_info);
+
+  srand(time(0));
+  PBFTClient client(*config);
+  for (int j = 0; j < req_num; ++j) {
+    std::string value;
+    for (int i = 0; i < value_size; ++i) {
+      int idx = rand() % 52;
+      if (idx >= 26) {
+        value += 'A' + (idx - 26);
+      } else {
+        value += 'a' + (idx - 26);
+      }
+    }
+    int ret = client.Set(value);
+    if (ret != 0) {
+      printf("client set fail ret = %d\n", ret);
+    }
+    usleep(100);
+    //	printf("send ret = %d len = %d\n",ret,value.size());
+  }
+  sleep(5);
+  std::cout << " num??:" << req_num << " done";
+}
diff --git a/benchmark/protocols/pbft/BUILD b/benchmark/protocols/pbft/BUILD
deleted file mode 100644
index f99e8206..00000000
--- a/benchmark/protocols/pbft/BUILD
+++ /dev/null
@@ -1,43 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-package(default_visibility = ["//visibility:private"])
-
-load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
-
-cc_binary(
-    name = "kv_server_performance",
-    srcs = ["kv_server_performance.cpp"],
-    deps = [
-        "//chain/storage:memory_db",
-        "//executor/kv:kv_executor",
-        "//platform/config:resdb_config_utils",
-        "//platform/consensus/ordering/pbft:consensus_manager_pbft",
-        "//service/utils:server_factory",
-    ],
-)
-
-cc_binary(
-    name = "kv_service_tools",
-    srcs = ["kv_service_tools.cpp"],
-    deps = [
-        "//common/proto:signature_info_cc_proto",
-        "//interface/kv:kv_client",
-        "//platform/config:resdb_config_utils",
-    ],
-)
diff --git a/benchmark/protocols/pbft/kv_server_performance.cpp b/benchmark/protocols/pbft/kv_server_performance.cpp
deleted file mode 100644
index 7a81f27c..00000000
--- a/benchmark/protocols/pbft/kv_server_performance.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include <glog/logging.h>
-
-#include "chain/storage/memory_db.h"
-#include "executor/kv/kv_executor.h"
-#include "platform/config/resdb_config_utils.h"
-#include "platform/consensus/ordering/pbft/consensus_manager_pbft.h"
-#include "platform/networkstrate/service_network.h"
-#include "platform/statistic/stats.h"
-#include "proto/kv/kv.pb.h"
-
-using namespace resdb;
-using namespace resdb::storage;
-
-void ShowUsage() {
-  printf("<config> <private_key> <cert_file> [logging_dir]\n");
-}
-
-std::string GetRandomKey() {
-  int num1 = rand() % 10;
-  int num2 = rand() % 10;
-  return std::to_string(num1) + std::to_string(num2);
-}
-
-int main(int argc, char** argv) {
-  if (argc < 3) {
-    ShowUsage();
-    exit(0);
-  }
-
-  // google::InitGoogleLogging(argv[0]);
-  // FLAGS_minloglevel = google::GLOG_WARNING;
-
-  char* config_file = argv[1];
-  char* private_key_file = argv[2];
-  char* cert_file = argv[3];
-
-  if (argc >= 5) {
-    auto monitor_port = Stats::GetGlobalStats(5);
-    monitor_port->SetPrometheus(argv[4]);
-  }
-
-  std::unique_ptr<ResDBConfig> config =
-      GenerateResDBConfig(config_file, private_key_file, cert_file);
-
-  config->RunningPerformance(true);
-
-  auto performance_consens = std::make_unique<ConsensusManagerPBFT>(
-      *config, std::make_unique<KVExecutor>(std::make_unique<MemoryDB>()));
-  performance_consens->SetupPerformanceDataFunc([]() {
-    KVRequest request;
-    request.set_cmd(KVRequest::SET);
-    request.set_key(GetRandomKey());
-    request.set_value("helloworld");
-    std::string request_data;
-    request.SerializeToString(&request_data);
-    return request_data;
-  });
-
-  auto server =
-      std::make_unique<ServiceNetwork>(*config, std::move(performance_consens));
-  server->Run();
-}
diff --git a/benchmark/protocols/pbft/kv_service_tools.cpp b/benchmark/protocols/pbft/kv_service_tools.cpp
deleted file mode 100644
index 43627b34..00000000
--- a/benchmark/protocols/pbft/kv_service_tools.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <fstream>
-
-#include "common/proto/signature_info.pb.h"
-#include "interface/kv/kv_client.h"
-#include "platform/config/resdb_config_utils.h"
-
-using resdb::GenerateReplicaInfo;
-using resdb::GenerateResDBConfig;
-using resdb::KVClient;
-using resdb::ReplicaInfo;
-using resdb::ResDBConfig;
-
-int main(int argc, char** argv) {
-  if (argc < 2) {
-    printf("<config path>\n");
-    return 0;
-  }
-  std::string client_config_file = argv[1];
-  ResDBConfig config = GenerateResDBConfig(client_config_file);
-
-  config.SetClientTimeoutMs(100000);
-
-  KVClient client(config);
-
-  client.Set("start", "value");
-  printf("start benchmark\n");
-}
diff --git a/benchmark/protocols/poe/BUILD b/benchmark/protocols/poe/BUILD
deleted file mode 100644
index 7f1cc05e..00000000
--- a/benchmark/protocols/poe/BUILD
+++ /dev/null
@@ -1,33 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-package(default_visibility = ["//visibility:private"])
-
-load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
-
-cc_binary(
-    name = "kv_server_performance",
-    srcs = ["kv_server_performance.cpp"],
-    deps = [
-        "//chain/storage:memory_db",
-        "//executor/kv:kv_executor",
-        "//platform/config:resdb_config_utils",
-        "//platform/consensus/ordering/poe/framework:consensus",
-        "//service/utils:server_factory",
-    ],
-)
diff --git a/benchmark/protocols/poe/kv_server_performance.cpp b/benchmark/protocols/poe/kv_server_performance.cpp
deleted file mode 100644
index 90a220a1..00000000
--- a/benchmark/protocols/poe/kv_server_performance.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include <glog/logging.h>
-
-#include "chain/storage/memory_db.h"
-#include "executor/kv/kv_executor.h"
-#include "platform/config/resdb_config_utils.h"
-#include "platform/consensus/ordering/poe/framework/consensus.h"
-#include "platform/networkstrate/service_network.h"
-#include "platform/statistic/stats.h"
-#include "proto/kv/kv.pb.h"
-
-using namespace resdb;
-using namespace resdb::poe;
-using namespace resdb::storage;
-
-void ShowUsage() {
-  printf("<config> <private_key> <cert_file> [logging_dir]\n");
-}
-
-std::string GetRandomKey() {
-  int num1 = rand() % 10;
-  int num2 = rand() % 10;
-  return std::to_string(num1) + std::to_string(num2);
-}
-
-int main(int argc, char** argv) {
-  if (argc < 3) {
-    ShowUsage();
-    exit(0);
-  }
-
-  // google::InitGoogleLogging(argv[0]);
-  // FLAGS_minloglevel = google::GLOG_WARNING;
-
-  char* config_file = argv[1];
-  char* private_key_file = argv[2];
-  char* cert_file = argv[3];
-
-  if (argc >= 5) {
-    auto monitor_port = Stats::GetGlobalStats(5);
-    monitor_port->SetPrometheus(argv[4]);
-  }
-
-  std::unique_ptr<ResDBConfig> config =
-      GenerateResDBConfig(config_file, private_key_file, cert_file);
-
-  config->RunningPerformance(true);
-  ResConfigData config_data = config->GetConfigData();
-
-  auto performance_consens = std::make_unique<Consensus>(
-      *config, std::make_unique<KVExecutor>(std::make_unique<MemoryDB>()));
-  performance_consens->SetupPerformanceDataFunc([]() {
-    KVRequest request;
-    request.set_cmd(KVRequest::SET);
-    request.set_key(GetRandomKey());
-    request.set_value("helloword");
-    std::string request_data;
-    request.SerializeToString(&request_data);
-    return request_data;
-  });
-
-  auto server =
-      std::make_unique<ServiceNetwork>(*config, std::move(performance_consens));
-  server->Run();
-}
diff --git a/platform/test/test_data/admin.key.pri b/cert/admin.key.pri
similarity index 100%
rename from platform/test/test_data/admin.key.pri
rename to cert/admin.key.pri
diff --git a/platform/test/test_data/admin.key.pub b/cert/admin.key.pub
similarity index 100%
rename from platform/test/test_data/admin.key.pub
rename to cert/admin.key.pub
diff --git a/scripts/deploy/data/cert/cert_1.cert b/cert/cert_1.cert
similarity index 100%
rename from scripts/deploy/data/cert/cert_1.cert
rename to cert/cert_1.cert
diff --git a/scripts/deploy/data/cert/cert_2.cert b/cert/cert_2.cert
similarity index 100%
rename from scripts/deploy/data/cert/cert_2.cert
rename to cert/cert_2.cert
diff --git a/scripts/deploy/data/cert/cert_3.cert b/cert/cert_3.cert
similarity index 100%
rename from scripts/deploy/data/cert/cert_3.cert
rename to cert/cert_3.cert
diff --git a/scripts/deploy/data/cert/cert_4.cert b/cert/cert_4.cert
similarity index 100%
rename from scripts/deploy/data/cert/cert_4.cert
rename to cert/cert_4.cert
diff --git a/scripts/deploy/data/cert/cert_5.cert b/cert/cert_5.cert
similarity index 100%
rename from scripts/deploy/data/cert/cert_5.cert
rename to cert/cert_5.cert
diff --git a/platform/test/test_data/cert_6.cert b/cert/cert_6.cert
similarity index 100%
copy from platform/test/test_data/cert_6.cert
copy to cert/cert_6.cert
diff --git a/platform/test/test_data/node1.key.pri b/cert/node1.key.pri
similarity index 100%
rename from platform/test/test_data/node1.key.pri
rename to cert/node1.key.pri
diff --git a/platform/test/test_data/node1.key.pub b/cert/node1.key.pub
similarity index 100%
rename from platform/test/test_data/node1.key.pub
rename to cert/node1.key.pub
diff --git a/platform/test/test_data/node2.key.pri b/cert/node2.key.pri
similarity index 100%
rename from platform/test/test_data/node2.key.pri
rename to cert/node2.key.pri
diff --git a/platform/test/test_data/node2.key.pub b/cert/node2.key.pub
similarity index 100%
rename from platform/test/test_data/node2.key.pub
rename to cert/node2.key.pub
diff --git a/platform/test/test_data/node3.key.pri b/cert/node3.key.pri
similarity index 100%
rename from platform/test/test_data/node3.key.pri
rename to cert/node3.key.pri
diff --git a/platform/test/test_data/node3.key.pub b/cert/node3.key.pub
similarity index 100%
rename from platform/test/test_data/node3.key.pub
rename to cert/node3.key.pub
diff --git a/platform/test/test_data/node4.key.pri b/cert/node4.key.pri
similarity index 100%
rename from platform/test/test_data/node4.key.pri
rename to cert/node4.key.pri
diff --git a/platform/test/test_data/node4.key.pub b/cert/node4.key.pub
similarity index 100%
rename from platform/test/test_data/node4.key.pub
rename to cert/node4.key.pub
diff --git a/platform/test/test_data/node5.key.pri b/cert/node5.key.pri
similarity index 100%
rename from platform/test/test_data/node5.key.pri
rename to cert/node5.key.pri
diff --git a/platform/test/test_data/node5.key.pub b/cert/node5.key.pub
similarity index 100%
rename from platform/test/test_data/node5.key.pub
rename to cert/node5.key.pub
diff --git a/chain/state/BUILD b/chain/state/BUILD
deleted file mode 100644
index f4bcde57..00000000
--- a/chain/state/BUILD
+++ /dev/null
@@ -1,38 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-package(default_visibility = ["//visibility:public"])
-
-cc_library(
-    name = "chain_state",
-    srcs = ["chain_state.cpp"],
-    hdrs = ["chain_state.h"],
-    deps = [
-        "//common:comm",
-        "//platform/proto:resdb_cc_proto",
-    ],
-)
-
-cc_test(
-    name = "chain_state_test",
-    srcs = ["chain_state_test.cpp"],
-    deps = [
-        ":chain_state",
-        "//common/test:test_main",
-    ],
-)
diff --git a/chain/state/chain_state.cpp b/chain/state/chain_state.cpp
deleted file mode 100644
index 18eaed71..00000000
--- a/chain/state/chain_state.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include "chain/state/chain_state.h"
-
-#include <glog/logging.h>
-
-namespace resdb {
-
-ChainState::ChainState() : max_seq_(0) {}
-
-Request* ChainState::Get(uint64_t seq) {
-  std::unique_lock<std::mutex> lk(mutex_);
-  if (data_.find(seq) == data_.end()) {
-    return nullptr;
-  }
-  return data_[seq].get();
-}
-
-void ChainState::Put(std::unique_ptr<Request> request) {
-  std::unique_lock<std::mutex> lk(mutex_);
-  max_seq_ = request->seq();
-  data_[max_seq_] = std::move(request);
-}
-
-uint64_t ChainState::GetMaxSeq() { return max_seq_; }
-
-}  // namespace resdb
diff --git a/chain/state/chain_state.h b/chain/state/chain_state.h
deleted file mode 100644
index 697b1afc..00000000
--- a/chain/state/chain_state.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include <map>
-#include <unordered_map>
-
-#include "platform/proto/resdb.pb.h"
-
-namespace resdb {
-
-class ChainState {
- public:
-  ChainState();
-  Request* Get(uint64_t seq);
-  void Put(std::unique_ptr<Request> request);
-  uint64_t GetMaxSeq();
-
- private:
-  std::mutex mutex_;
-  std::unordered_map<uint64_t, std::unique_ptr<Request> > data_;
-  std::atomic<uint64_t> max_seq_;
-};
-
-}  // namespace resdb
diff --git a/chain/state/chain_state_test.cpp b/chain/state/chain_state_test.cpp
deleted file mode 100644
index 7fd3fbe1..00000000
--- a/chain/state/chain_state_test.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include "chain/state/chain_state.h"
-
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-#include "common/test/test_macros.h"
-
-namespace resdb {
-namespace {
-
-using ::resdb::testing::EqualsProto;
-using ::testing::Pointee;
-
-TEST(ChainStateTest, GetEmptyValue) {
-  ChainState db;
-  EXPECT_EQ(db.Get(1), nullptr);
-}
-
-TEST(ChainStateTest, GetValue) {
-  Request request;
-  request.set_seq(1);
-  request.set_data("test");
-
-  ChainState db;
-  db.Put(std::make_unique<Request>(request));
-  EXPECT_THAT(db.Get(1), Pointee(EqualsProto(request)));
-}
-
-TEST(ChainStateTest, GetSecondValue) {
-  Request request;
-  request.set_seq(1);
-  request.set_data("test");
-
-  ChainState db;
-  db.Put(std::make_unique<Request>(request));
-
-  request.set_seq(1);
-  request.set_data("test_1");
-  db.Put(std::make_unique<Request>(request));
-
-  EXPECT_THAT(db.Get(1), Pointee(EqualsProto(request)));
-}
-
-}  // namespace
-
-}  // namespace resdb
diff --git a/chain/storage/BUILD b/chain/storage/BUILD
deleted file mode 100644
index 19108fa9..00000000
--- a/chain/storage/BUILD
+++ /dev/null
@@ -1,67 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-package(default_visibility = ["//visibility:public"])
-
-cc_library(
-    name = "storage",
-    hdrs = ["storage.h"],
-    deps = [
-    ],
-)
-
-cc_library(
-    name = "mock_storage",
-    hdrs = ["mock_storage.h"],
-    deps = [
-        ":storage",
-    ],
-)
-
-cc_library(
-    name = "memory_db",
-    srcs = ["memory_db.cpp"],
-    hdrs = ["memory_db.h"],
-    deps = [
-        ":storage",
-        "//common:comm",
-    ],
-)
-
-cc_library(
-    name = "leveldb",
-    srcs = ["leveldb.cpp"],
-    hdrs = ["leveldb.h"],
-    deps = [
-        ":storage",
-        "//chain/storage/proto:kv_cc_proto",
-        "//chain/storage/proto:leveldb_config_cc_proto",
-        "//common:comm",
-        "//third_party:leveldb",
-    ],
-)
-
-cc_test(
-    name = "kv_storage_test",
-    srcs = ["kv_storage_test.cpp"],
-    deps = [
-        ":leveldb",
-        ":memory_db",
-        "//common/test:test_main",
-    ],
-)
diff --git a/chain/storage/kv_storage_test.cpp b/chain/storage/kv_storage_test.cpp
deleted file mode 100644
index fd8c4bfd..00000000
--- a/chain/storage/kv_storage_test.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include <glog/logging.h>
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-#include <filesystem>
-
-#include "chain/storage/leveldb.h"
-#include "chain/storage/memory_db.h"
-
-namespace resdb {
-namespace storage {
-namespace {
-
-enum StorageType {
-  MEM = 0,
-  LEVELDB = 1,
-};
-
-class KVStorageTest : public ::testing::TestWithParam<StorageType> {
- protected:
-  KVStorageTest() {
-    StorageType t = GetParam();
-    switch (t) {
-      case MEM:
-        storage = NewMemoryDB();
-        break;
-      case LEVELDB:
-        Reset();
-        storage = NewResLevelDB(path_);
-        break;
-    }
-  }
-
- private:
-  void Reset() { std::filesystem::remove_all(path_.c_str()); }
-
- protected:
-  std::unique_ptr<Storage> storage;
-  std::string path_ = "/tmp/leveldb_test";
-};
-
-TEST_P(KVStorageTest, SetValue) {
-  EXPECT_EQ(storage->SetValue("test_key", "test_value"), 0);
-  EXPECT_EQ(storage->GetValue("test_key"), "test_value");
-}
-
-TEST_P(KVStorageTest, GetValue) {
-  EXPECT_EQ(storage->GetValue("test_key"), "");
-}
-
-TEST_P(KVStorageTest, GetEmptyValueWithVersion) {
-  EXPECT_EQ(storage->GetValueWithVersion("test_key", 0),
-            std::make_pair(std::string(""), 0));
-}
-
-TEST_P(KVStorageTest, SetValueWithVersion) {
-  EXPECT_EQ(storage->SetValueWithVersion("test_key", "test_value", 1), -2);
-
-  EXPECT_EQ(storage->SetValueWithVersion("test_key", "test_value", 0), 0);
-
-  EXPECT_EQ(storage->GetValueWithVersion("test_key", 0),
-            std::make_pair(std::string("test_value"), 1));
-  EXPECT_EQ(storage->GetValueWithVersion("test_key", 1),
-            std::make_pair(std::string("test_value"), 1));
-
-  EXPECT_EQ(storage->SetValueWithVersion("test_key", "test_value_v2", 2), -2);
-  EXPECT_EQ(storage->SetValueWithVersion("test_key", "test_value_v2", 1), 0);
-
-  EXPECT_EQ(storage->GetValueWithVersion("test_key", 0),
-            std::make_pair(std::string("test_value_v2"), 2));
-
-  EXPECT_EQ(storage->GetValueWithVersion("test_key", 1),
-            std::make_pair(std::string("test_value"), 1));
-
-  EXPECT_EQ(storage->GetValueWithVersion("test_key", 2),
-            std::make_pair(std::string("test_value_v2"), 2));
-
-  EXPECT_EQ(storage->GetValueWithVersion("test_key", 3),
-            std::make_pair(std::string("test_value_v2"), 2));
-}
-
-TEST_P(KVStorageTest, GetAllValueWithVersion) {
-  {
-    std::map<std::string, std::pair<std::string, int> > expected_list{
-        std::make_pair("test_key", std::make_pair("test_value", 1))};
-
-    EXPECT_EQ(storage->SetValueWithVersion("test_key", "test_value", 0), 0);
-    EXPECT_EQ(storage->GetAllItems(), expected_list);
-  }
-
-  {
-    std::map<std::string, std::pair<std::string, int> > expected_list{
-        std::make_pair("test_key", std::make_pair("test_value_v2", 2))};
-    EXPECT_EQ(storage->SetValueWithVersion("test_key", "test_value_v2", 1), 0);
-    EXPECT_EQ(storage->GetAllItems(), expected_list);
-  }
-
-  {
-    std::map<std::string, std::pair<std::string, int> > expected_list{
-        std::make_pair("test_key_v1", std::make_pair("test_value1", 1)),
-        std::make_pair("test_key", std::make_pair("test_value_v2", 2))};
-    EXPECT_EQ(storage->SetValueWithVersion("test_key_v1", "test_value1", 0), 0);
-    EXPECT_EQ(storage->GetAllItems(), expected_list);
-  }
-}
-
-TEST_P(KVStorageTest, GetKeyRange) {
-  EXPECT_EQ(storage->SetValueWithVersion("1", "value1", 0), 0);
-  EXPECT_EQ(storage->SetValueWithVersion("2", "value2", 0), 0);
-  EXPECT_EQ(storage->SetValueWithVersion("3", "value3", 0), 0);
-  EXPECT_EQ(storage->SetValueWithVersion("4", "value4", 0), 0);
-
-  {
-    std::map<std::string, std::pair<std::string, int> > expected_list{
-        std::make_pair("1", std::make_pair("value1", 1)),
-        std::make_pair("2", std::make_pair("value2", 1)),
-        std::make_pair("3", std::make_pair("value3", 1)),
-        std::make_pair("4", std::make_pair("value4", 1))};
-    EXPECT_EQ(storage->GetKeyRange("1", "4"), expected_list);
-  }
-
-  EXPECT_EQ(storage->SetValueWithVersion("3", "value3_1", 1), 0);
-  {
-    std::map<std::string, std::pair<std::string, int> > expected_list{
-        std::make_pair("1", std::make_pair("value1", 1)),
-        std::make_pair("2", std::make_pair("value2", 1)),
-        std::make_pair("3", std::make_pair("value3_1", 2)),
-        std::make_pair("4", std::make_pair("value4", 1))};
-    EXPECT_EQ(storage->GetKeyRange("1", "4"), expected_list);
-  }
-  {
-    std::map<std::string, std::pair<std::string, int> > expected_list{
-        std::make_pair("1", std::make_pair("value1", 1)),
-        std::make_pair("2", std::make_pair("value2", 1)),
-        std::make_pair("3", std::make_pair("value3_1", 2)),
-    };
-    EXPECT_EQ(storage->GetKeyRange("1", "3"), expected_list);
-  }
-  {
-    std::map<std::string, std::pair<std::string, int> > expected_list{
-        std::make_pair("2", std::make_pair("value2", 1)),
-        std::make_pair("3", std::make_pair("value3_1", 2)),
-        std::make_pair("4", std::make_pair("value4", 1))};
-    EXPECT_EQ(storage->GetKeyRange("2", "4"), expected_list);
-  }
-  {
-    std::map<std::string, std::pair<std::string, int> > expected_list{
-        std::make_pair("1", std::make_pair("value1", 1)),
-        std::make_pair("2", std::make_pair("value2", 1)),
-        std::make_pair("3", std::make_pair("value3_1", 2)),
-        std::make_pair("4", std::make_pair("value4", 1))};
-    EXPECT_EQ(storage->GetKeyRange("0", "5"), expected_list);
-  }
-  {
-    std::map<std::string, std::pair<std::string, int> > expected_list{
-        std::make_pair("2", std::make_pair("value2", 1)),
-        std::make_pair("3", std::make_pair("value3_1", 2)),
-    };
-    EXPECT_EQ(storage->GetKeyRange("2", "3"), expected_list);
-  }
-}
-
-TEST_P(KVStorageTest, GetHistory) {
-  {
-    std::vector<std::pair<std::string, int> > expected_list{};
-    EXPECT_EQ(storage->GetHistory("1", 1, 5), expected_list);
-  }
-  {
-    std::vector<std::pair<std::string, int> > expected_list{
-        std::make_pair("value3", 3), std::make_pair("value2", 2),
-        std::make_pair("value1", 1)};
-
-    EXPECT_EQ(storage->SetValueWithVersion("1", "value1", 0), 0);
-    EXPECT_EQ(storage->SetValueWithVersion("1", "value2", 1), 0);
-    EXPECT_EQ(storage->SetValueWithVersion("1", "value3", 2), 0);
-
-    EXPECT_EQ(storage->GetHistory("1", 1, 5), expected_list);
-  }
-
-  {
-    std::vector<std::pair<std::string, int> > expected_list{
-        std::make_pair("value5", 5), std::make_pair("value4", 4),
-        std::make_pair("value3", 3), std::make_pair("value2", 2),
-        std::make_pair("value1", 1)};
-
-    EXPECT_EQ(storage->SetValueWithVersion("1", "value4", 3), 0);
-    EXPECT_EQ(storage->SetValueWithVersion("1", "value5", 4), 0);
-    EXPECT_EQ(storage->SetValueWithVersion("1", "value6", 5), 0);
-    EXPECT_EQ(storage->SetValueWithVersion("1", "value7", 6), 0);
-
-    EXPECT_EQ(storage->GetHistory("1", 1, 5), expected_list);
-  }
-
-  {
-    std::vector<std::pair<std::string, int> > expected_list{
-        std::make_pair("value7", 7), std::make_pair("value6", 6)};
-
-    EXPECT_EQ(storage->GetTopHistory("1", 2), expected_list);
-  }
-}
-
-INSTANTIATE_TEST_CASE_P(KVStorageTest, KVStorageTest,
-                        ::testing::Values(MEM, LEVELDB));
-
-}  // namespace
-}  // namespace storage
-}  // namespace resdb
diff --git a/chain/storage/leveldb.cpp b/chain/storage/leveldb.cpp
deleted file mode 100644
index 2cc96fb5..00000000
--- a/chain/storage/leveldb.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include "chain/storage/leveldb.h"
-
-#include <glog/logging.h>
-
-#include "chain/storage/proto/kv.pb.h"
-
-namespace resdb {
-namespace storage {
-
-std::unique_ptr<Storage> NewResLevelDB(const std::string& path,
-                                       std::optional<LevelDBInfo> config) {
-  if (config == std::nullopt) {
-    config = LevelDBInfo();
-  }
-  (*config).set_path(path);
-  return std::make_unique<ResLevelDB>(config);
-}
-
-std::unique_ptr<Storage> NewResLevelDB(std::optional<LevelDBInfo> config) {
-  return std::make_unique<ResLevelDB>(config);
-}
-
-ResLevelDB::ResLevelDB(std::optional<LevelDBInfo> config) {
-  std::string path = "/tmp/nexres-leveldb";
-  if (config.has_value()) {
-    write_buffer_size_ = (*config).write_buffer_size_mb() << 20;
-    write_batch_size_ = (*config).write_batch_size();
-    if (!(*config).path().empty()) {
-      LOG(ERROR) << "Custom path for ResLevelDB provided in config: "
-                 << (*config).path();
-      path = (*config).path();
-    }
-  }
-  CreateDB(path);
-}
-
-void ResLevelDB::CreateDB(const std::string& path) {
-  LOG(ERROR) << "ResLevelDB Create DB: path:" << path
-             << " write buffer size:" << write_buffer_size_
-             << " batch size:" << write_batch_size_;
-  leveldb::Options options;
-  options.create_if_missing = true;
-  options.write_buffer_size = write_buffer_size_;
-
-  leveldb::DB* db = nullptr;
-  leveldb::Status status = leveldb::DB::Open(options, path, &db);
-  if (status.ok()) {
-    db_ = std::unique_ptr<leveldb::DB>(db);
-  }
-  assert(status.ok());
-  LOG(ERROR) << "Successfully opened LevelDB";
-}
-
-ResLevelDB::~ResLevelDB() {
-  if (db_) {
-    db_.reset();
-  }
-}
-
-int ResLevelDB::SetValue(const std::string& key, const std::string& value) {
-  batch_.Put(key, value);
-
-  if (batch_.ApproximateSize() >= write_batch_size_) {
-    leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch_);
-    if (status.ok()) {
-      batch_.Clear();
-      return 0;
-    } else {
-      LOG(ERROR) << "flush buffer fail:" << status.ToString();
-      return -1;
-    }
-  }
-  return 0;
-}
-
-std::string ResLevelDB::GetValue(const std::string& key) {
-  std::string value = "";
-  leveldb::Status status = db_->Get(leveldb::ReadOptions(), key, &value);
-  if (status.ok()) {
-    return value;
-  } else {
-    return "";
-  }
-}
-
-std::string ResLevelDB::GetAllValues(void) {
-  std::string values = "[";
-  leveldb::Iterator* it = db_->NewIterator(leveldb::ReadOptions());
-  bool first_iteration = true;
-  for (it->SeekToFirst(); it->Valid(); it->Next()) {
-    if (!first_iteration) values.append(",");
-    first_iteration = false;
-    values.append(it->value().ToString());
-  }
-  values.append("]");
-
-  delete it;
-  return values;
-}
-
-std::string ResLevelDB::GetRange(const std::string& min_key,
-                                 const std::string& max_key) {
-  std::string values = "[";
-  leveldb::Iterator* it = db_->NewIterator(leveldb::ReadOptions());
-  bool first_iteration = true;
-  for (it->Seek(min_key); it->Valid() && it->key().ToString() <= max_key;
-       it->Next()) {
-    if (!first_iteration) values.append(",");
-    first_iteration = false;
-    values.append(it->value().ToString());
-  }
-  values.append("]");
-
-  delete it;
-  return values;
-}
-
-bool ResLevelDB::Flush() {
-  leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch_);
-  if (status.ok()) {
-    batch_.Clear();
-    return true;
-  }
-  LOG(ERROR) << "flush buffer fail:" << status.ToString();
-  return false;
-}
-
-int ResLevelDB::SetValueWithVersion(const std::string& key,
-                                    const std::string& value, int version) {
-  std::string value_str = GetValue(key);
-  ValueHistory history;
-  if (!history.ParseFromString(value_str)) {
-    LOG(ERROR) << "old_value parse fail";
-    return -2;
-  }
-
-  int last_v = 0;
-  if (history.value_size() > 0) {
-    last_v = history.value(history.value_size() - 1).version();
-  }
-
-  if (last_v != version) {
-    LOG(ERROR) << "version does not match:" << version
-               << " old version:" << last_v;
-    return -2;
-  }
-
-  Value* new_value = history.add_value();
-  new_value->set_value(value);
-  new_value->set_version(version + 1);
-
-  history.SerializeToString(&value_str);
-  return SetValue(key, value_str);
-}
-
-std::pair<std::string, int> ResLevelDB::GetValueWithVersion(
-    const std::string& key, int version) {
-  std::string value_str = GetValue(key);
-  ValueHistory history;
-  if (!history.ParseFromString(value_str)) {
-    LOG(ERROR) << "old_value parse fail";
-    return std::make_pair("", 0);
-  }
-  if (history.value_size() == 0) {
-    return std::make_pair("", 0);
-  }
-  if (version > 0) {
-    for (int i = history.value_size() - 1; i >= 0; --i) {
-      if (history.value(i).version() == version) {
-        return std::make_pair(history.value(i).value(),
-                              history.value(i).version());
-      }
-      if (history.value(i).version() < version) {
-        break;
-      }
-    }
-  }
-  int last_idx = history.value_size() - 1;
-  return std::make_pair(history.value(last_idx).value(),
-                        history.value(last_idx).version());
-}
-
-// Return a map of <key, <value, version>>
-std::map<std::string, std::pair<std::string, int>> ResLevelDB::GetAllItems() {
-  std::map<std::string, std::pair<std::string, int>> resp;
-
-  leveldb::Iterator* it = db_->NewIterator(leveldb::ReadOptions());
-  for (it->SeekToFirst(); it->Valid(); it->Next()) {
-    ValueHistory history;
-    if (!history.ParseFromString(it->value().ToString()) ||
-        history.value_size() == 0) {
-      LOG(ERROR) << "old_value parse fail";
-      continue;
-    }
-    const Value& value = history.value(history.value_size() - 1);
-    resp.insert(std::make_pair(it->key().ToString(),
-                               std::make_pair(value.value(), value.version())));
-  }
-  delete it;
-
-  return resp;
-}
-
-std::map<std::string, std::pair<std::string, int>> ResLevelDB::GetKeyRange(
-    const std::string& min_key, const std::string& max_key) {
-  std::map<std::string, std::pair<std::string, int>> resp;
-
-  leveldb::Iterator* it = db_->NewIterator(leveldb::ReadOptions());
-  for (it->Seek(min_key); it->Valid() && it->key().ToString() <= max_key;
-       it->Next()) {
-    ValueHistory history;
-    if (!history.ParseFromString(it->value().ToString()) ||
-        history.value_size() == 0) {
-      LOG(ERROR) << "old_value parse fail";
-      continue;
-    }
-    const Value& value = history.value(history.value_size() - 1);
-    resp.insert(std::make_pair(it->key().ToString(),
-                               std::make_pair(value.value(), value.version())));
-  }
-  delete it;
-
-  return resp;
-}
-
-// Return a list of <value, version>
-std::vector<std::pair<std::string, int>> ResLevelDB::GetHistory(
-    const std::string& key, int min_version, int max_version) {
-  std::vector<std::pair<std::string, int>> resp;
-  std::string value_str = GetValue(key);
-  ValueHistory history;
-  if (!history.ParseFromString(value_str)) {
-    LOG(ERROR) << "old_value parse fail";
-    return resp;
-  }
-
-  for (int i = history.value_size() - 1; i >= 0; --i) {
-    if (history.value(i).version() < min_version) {
-      break;
-    }
-    if (history.value(i).version() <= max_version) {
-      resp.push_back(
-          std::make_pair(history.value(i).value(), history.value(i).version()));
-    }
-  }
-
-  return resp;
-}
-
-// Return a list of <value, version>
-std::vector<std::pair<std::string, int>> ResLevelDB::GetTopHistory(
-    const std::string& key, int top_number) {
-  std::vector<std::pair<std::string, int>> resp;
-  std::string value_str = GetValue(key);
-  ValueHistory history;
-  if (!history.ParseFromString(value_str)) {
-    LOG(ERROR) << "old_value parse fail";
-    return resp;
-  }
-
-  for (int i = history.value_size() - 1;
-       i >= 0 && resp.size() < static_cast<size_t>(top_number); --i) {
-    resp.push_back(
-        std::make_pair(history.value(i).value(), history.value(i).version()));
-  }
-
-  return resp;
-}
-
-}  // namespace storage
-}  // namespace resdb
diff --git a/chain/storage/leveldb.h b/chain/storage/leveldb.h
deleted file mode 100644
index 199f1f27..00000000
--- a/chain/storage/leveldb.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include <memory>
-#include <optional>
-#include <string>
-
-#include "chain/storage/proto/leveldb_config.pb.h"
-#include "chain/storage/storage.h"
-#include "leveldb/db.h"
-#include "leveldb/write_batch.h"
-
-namespace resdb {
-namespace storage {
-
-std::unique_ptr<Storage> NewResLevelDB(
-    const std::string& path, std::optional<LevelDBInfo> config = std::nullopt);
-std::unique_ptr<Storage> NewResLevelDB(
-    std::optional<LevelDBInfo> config = std::nullopt);
-
-class ResLevelDB : public Storage {
- public:
-  ResLevelDB(std::optional<LevelDBInfo> config_data = std::nullopt);
-
-  virtual ~ResLevelDB();
-  int SetValue(const std::string& key, const std::string& value) override;
-  std::string GetValue(const std::string& key) override;
-  std::string GetAllValues(void) override;
-  std::string GetRange(const std::string& min_key,
-                       const std::string& max_key) override;
-
-  int SetValueWithVersion(const std::string& key, const std::string& value,
-                          int version) override;
-  std::pair<std::string, int> GetValueWithVersion(const std::string& key,
-                                                  int version) override;
-
-  // Return a map of <key, <value, version>>
-  std::map<std::string, std::pair<std::string, int>> GetAllItems() override;
-  std::map<std::string, std::pair<std::string, int>> GetKeyRange(
-      const std::string& min_key, const std::string& max_key) override;
-
-  // Return a list of <value, version>
-  std::vector<std::pair<std::string, int>> GetHistory(const std::string& key,
-                                                      int min_version,
-                                                      int max_version) override;
-
-  std::vector<std::pair<std::string, int>> GetTopHistory(
-      const std::string& key, int top_number) override;
-
-  bool Flush() override;
-
- private:
-  void CreateDB(const std::string& path);
-
- private:
-  std::unique_ptr<leveldb::DB> db_ = nullptr;
-  ::leveldb::WriteBatch batch_;
-  unsigned int write_buffer_size_ = 64 << 20;
-  unsigned int write_batch_size_ = 1;
-};
-
-}  // namespace storage
-}  // namespace resdb
diff --git a/chain/storage/memory_db.cpp b/chain/storage/memory_db.cpp
deleted file mode 100644
index 2d5b8725..00000000
--- a/chain/storage/memory_db.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#include "chain/storage/memory_db.h"
-
-#include <glog/logging.h>
-
-namespace resdb {
-namespace storage {
-
-std::unique_ptr<Storage> NewMemoryDB() { return std::make_unique<MemoryDB>(); }
-
-MemoryDB::MemoryDB() {}
-
-int MemoryDB::SetValue(const std::string& key, const std::string& value) {
-  kv_map_[key] = value;
-  return 0;
-}
-
-std::string MemoryDB::GetAllValues(void) {
-  std::string values = "[";
-  bool first_iteration = true;
-  for (auto kv : kv_map_) {
-    if (!first_iteration) values.append(",");
-    first_iteration = false;
-    values.append(kv.second);
-  }
-  values.append("]");
-  return values;
-}
-
-std::string MemoryDB::GetRange(const std::string& min_key,
-                               const std::string& max_key) {
-  std::string values = "[";
-  bool first_iteration = true;
-  for (auto kv : kv_map_) {
-    if (kv.first >= min_key && kv.first <= max_key) {
-      if (!first_iteration) values.append(",");
-      first_iteration = false;
-      values.append(kv.second);
-    }
-  }
-  values.append("]");
-  return values;
-}
-
-std::string MemoryDB::GetValue(const std::string& key) {
-  auto search = kv_map_.find(key);
-  if (search != kv_map_.end())
-    return search->second;
-  else {
-    return "";
-  }
-}
-
-int MemoryDB::SetValueWithVersion(const std::string& key,
-                                  const std::string& value, int version) {
-  auto it = kv_map_with_v_.find(key);
-  if ((it == kv_map_with_v_.end() && version != 0) ||
-      (it != kv_map_with_v_.end() && it->second.back().second != version)) {
-    LOG(ERROR) << " value version not match. key:" << key << " db version:"
-               << (it == kv_map_with_v_.end() ? 0 : it->second.back().second)
-               << " user version:" << version;
-    return -2;
-  }
-  kv_map_with_v_[key].push_back(std::make_pair(value, version + 1));
-  return 0;
-}
-
-std::pair<std::string, int> MemoryDB::GetValueWithVersion(
-    const std::string& key, int version) {
-  auto search_it = kv_map_with_v_.find(key);
-  if (search_it != kv_map_with_v_.end() && search_it->second.size()) {
-    auto it = search_it->second.end();
-    do {
-      --it;
-      if (it->second == version) {
-        return *it;
-      }
-      if (it->second < version) {
-        break;
-      }
-    } while (it != search_it->second.begin());
-    it = --search_it->second.end();
-    LOG(ERROR) << " key:" << key << " no version:" << version
-               << " return max:" << it->second;
-    return *it;
-  }
-  return std::make_pair("", 0);
-}
-
-std::map<std::string, std::pair<std::string, int>> MemoryDB::GetAllItems() {
-  std::map<std::string, std::pair<std::string, int>> resp;
-
-  for (const auto& it : kv_map_with_v_) {
-    resp.insert(std::make_pair(it.first, it.second.back()));
-  }
-  return resp;
-}
-
-std::map<std::string, std::pair<std::string, int>> MemoryDB::GetKeyRange(
-    const std::string& min_key, const std::string& max_key) {
-  LOG(ERROR) << "min key:" << min_key << " max key:" << max_key;
-  std::map<std::string, std::pair<std::string, int>> resp;
-  for (const auto& it : kv_map_with_v_) {
-    if (it.first >= min_key && it.first <= max_key) {
-      resp.insert(std::make_pair(it.first, it.second.back()));
-    }
-  }
-  return resp;
-}
-
-std::vector<std::pair<std::string, int>> MemoryDB::GetHistory(
-    const std::string& key, int min_version, int max_version) {
-  std::vector<std::pair<std::string, int>> resp;
-  auto search_it = kv_map_with_v_.find(key);
-  if (search_it == kv_map_with_v_.end()) {
-    return resp;
-  }
-
-  auto it = search_it->second.end();
-  do {
-    --it;
-    if (it->second < min_version) {
-      break;
-    }
-    if (it->second <= max_version) {
-      resp.push_back(*it);
-    }
-  } while (it != search_it->second.begin());
-  return resp;
-}
-
-std::vector<std::pair<std::string, int>> MemoryDB::GetTopHistory(
-    const std::string& key, int top_number) {
-  std::vector<std::pair<std::string, int>> resp;
-  auto search_it = kv_map_with_v_.find(key);
-  if (search_it == kv_map_with_v_.end()) {
-    return resp;
-  }
-
-  auto it = search_it->second.end();
-  do {
-    --it;
-    resp.push_back(*it);
-    if (resp.size() >= static_cast<size_t>(top_number)) {
-      break;
-    }
-  } while (it != search_it->second.begin());
-  return resp;
-}
-
-}  // namespace storage
-}  // namespace resdb
diff --git a/chain/storage/memory_db.h b/chain/storage/memory_db.h
deleted file mode 100644
index 372f4647..00000000
--- a/chain/storage/memory_db.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include <list>
-#include <map>
-#include <memory>
-#include <unordered_map>
-
-#include "chain/storage/storage.h"
-
-namespace resdb {
-namespace storage {
-
-// Key Value Storage supporting two types of interfaces:
-// Non-version:
-//  It provides set and get function to set a value to a specific key
-//  Values will be set directly.
-// Version:
-//  It provides set and get function to set a value to a specific key
-//  with a version.
-//  The version inside setting function is to support OCC verification.
-//  The version value should be obtained before setting
-//  and returned back when setting a new value. If the version is not
-//  the same as the old one, return failure.
-//  If the value of a specific version does not exist or providing
-//  version 0 as parameter when accessing get
-//  it returns the current value along its version.
-//
-// Note: Only one type of interface are allowed to be used.
-//
-
-std::unique_ptr<Storage> NewMemoryDB();
-
-class MemoryDB : public Storage {
- public:
-  MemoryDB();
-
-  int SetValue(const std::string& key, const std::string& value);
-  std::string GetValue(const std::string& key);
-
-  std::string GetAllValues() override;
-  std::string GetRange(const std::string& min_key,
-                       const std::string& max_key) override;
-
-  int SetValueWithVersion(const std::string& key, const std::string& value,
-                          int version) override;
-  std::pair<std::string, int> GetValueWithVersion(const std::string& key,
-                                                  int version) override;
-
-  // Return a map of <key, <value, version>>
-  std::map<std::string, std::pair<std::string, int>> GetAllItems() override;
-  std::map<std::string, std::pair<std::string, int>> GetKeyRange(
-      const std::string& min_key, const std::string& max_key) override;
-
-  // Return a list of <value, version>
-  std::vector<std::pair<std::string, int>> GetHistory(const std::string& key,
-                                                      int min_version,
-                                                      int max_version) override;
-
-  std::vector<std::pair<std::string, int>> GetTopHistory(const std::string& key,
-                                                         int number) override;
-
- private:
-  std::unordered_map<std::string, std::string> kv_map_;
-  std::unordered_map<std::string, std::list<std::pair<std::string, int>>>
-      kv_map_with_v_;
-};
-
-}  // namespace storage
-}  // namespace resdb
diff --git a/chain/storage/mock_storage.h b/chain/storage/mock_storage.h
deleted file mode 100644
index 963d92bb..00000000
--- a/chain/storage/mock_storage.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include "chain/storage/storage.h"
-#include "gmock/gmock.h"
-
-namespace resdb {
-
-class MockStorage : public Storage {
- public:
-  MOCK_METHOD(int, SetValue, (const std::string& key, const std::string& value),
-              (override));
-  MOCK_METHOD(std::string, GetValue, (const std::string& key), (override));
-  MOCK_METHOD(std::string, GetAllValues, (), (override));
-  MOCK_METHOD(std::string, GetRange, (const std::string&, const std::string&),
-              (override));
-
-  MOCK_METHOD(int, SetValueWithVersion,
-              (const std::string& key, const std::string& value, int version),
-              (override));
-
-  using ValueType = std::pair<std::string, int>;
-  using ItemsType = std::map<std::string, ValueType>;
-  using ValuesType = std::vector<ValueType>;
-
-  MOCK_METHOD(ValueType, GetValueWithVersion,
-              (const std::string& key, int version), (override));
-  MOCK_METHOD(ItemsType, GetAllItems, (), (override));
-  MOCK_METHOD(ItemsType, GetKeyRange, (const std::string&, const std::string&),
-              (override));
-  MOCK_METHOD(ValuesType, GetHistory, (const std::string&, int, int),
-              (override));
-  MOCK_METHOD(ValuesType, GetTopHistory, (const std::string&, int), (override));
-
-  MOCK_METHOD(bool, Flush, (), (override));
-};
-
-}  // namespace resdb
diff --git a/chain/storage/proto/BUILD b/chain/storage/proto/BUILD
deleted file mode 100644
index 0b1c7263..00000000
--- a/chain/storage/proto/BUILD
+++ /dev/null
@@ -1,44 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-package(default_visibility = ["//visibility:public"])
-
-load("@rules_cc//cc:defs.bzl", "cc_proto_library")
-load("@rules_proto//proto:defs.bzl", "proto_library")
-
-proto_library(
-    name = "kv_proto",
-    srcs = ["kv.proto"],
-    visibility = ["//chain/storage:__subpackages__"],
-)
-
-cc_proto_library(
-    name = "kv_cc_proto",
-    visibility = ["//chain/storage:__subpackages__"],
-    deps = [":kv_proto"],
-)
-
-proto_library(
-    name = "leveldb_config_proto",
-    srcs = ["leveldb_config.proto"],
-)
-
-cc_proto_library(
-    name = "leveldb_config_cc_proto",
-    deps = [":leveldb_config_proto"],
-)
diff --git a/chain/storage/proto/kv.proto b/chain/storage/proto/kv.proto
deleted file mode 100644
index 8466b8dc..00000000
--- a/chain/storage/proto/kv.proto
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-syntax = "proto3";
-
-package resdb.storage;
-
-message Value {
-    bytes value = 1;
-    int32 version = 2;
-}
-
-message ValueHistory {
-  repeated Value value = 1;
-}
-
diff --git a/chain/storage/proto/leveldb_config.proto b/chain/storage/proto/leveldb_config.proto
deleted file mode 100644
index d8be2519..00000000
--- a/chain/storage/proto/leveldb_config.proto
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-syntax = "proto3";
-
-package resdb.storage;
-
-message LevelDBInfo {
-  uint32 write_buffer_size_mb = 2;
-  uint32 write_batch_size = 3;
-  string path = 4;
-}
diff --git a/chain/storage/setting/BUILD b/chain/storage/setting/BUILD
deleted file mode 100644
index 25d11b4e..00000000
--- a/chain/storage/setting/BUILD
+++ /dev/null
@@ -1,35 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-package(default_visibility = ["//visibility:public"])
-
-load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
-
-bool_flag(
-    name = "enable_leveldb",
-    build_setting_default = False,
-    visibility = ["//visibility:public"],
-)
-
-config_setting(
-    name = "enable_leveldb_setting",
-    values = {
-        "define": "enable_leveldb=True",
-    },
-    visibility = ["//visibility:public"],
-)
diff --git a/chain/storage/storage.h b/chain/storage/storage.h
deleted file mode 100644
index 76e352de..00000000
--- a/chain/storage/storage.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include <map>
-#include <string>
-#include <vector>
-
-namespace resdb {
-
-class Storage {
- public:
-  Storage() = default;
-  virtual ~Storage() = default;
-
-  virtual int SetValue(const std::string& key, const std::string& value) = 0;
-  virtual std::string GetValue(const std::string& key) = 0;
-  virtual std::string GetAllValues() = 0;
-  virtual std::string GetRange(const std::string& min_key,
-                               const std::string& max_key) = 0;
-
-  virtual int SetValueWithVersion(const std::string& key,
-                                  const std::string& value, int version) = 0;
-  virtual std::pair<std::string, int> GetValueWithVersion(
-      const std::string& key, int version) = 0;
-
-  // Return a map of <key, <value, version>>
-  virtual std::map<std::string, std::pair<std::string, int>> GetAllItems() = 0;
-  virtual std::map<std::string, std::pair<std::string, int>> GetKeyRange(
-      const std::string& min_key, const std::string& max_key) = 0;
-
-  // Return a list of <value, version> from a key
-  // The version list is sorted by the version value in descending order
-  virtual std::vector<std::pair<std::string, int>> GetHistory(
-      const std::string& key, int min_version, int max_version) = 0;
-
-  virtual std::vector<std::pair<std::string, int>> GetTopHistory(
-      const std::string& key, int number) = 0;
-
-  virtual bool Flush() { return true; };
-};
-
-}  // namespace resdb
diff --git a/client/BUILD b/client/BUILD
new file mode 100644
index 00000000..b82dc183
--- /dev/null
+++ b/client/BUILD
@@ -0,0 +1,112 @@
+package(default_visibility = ["//visibility:public"])
+
+cc_library(
+    name = "resdb_client",
+    srcs = ["resdb_client.cpp"],
+    hdrs = ["resdb_client.h"],
+    deps = [
+        "//common:comm",
+        "//common/data_comm",
+        "//common/network:tcp_socket",
+        "//config:resdb_config",
+        "//crypto:signature_verifier",
+        "//proto:resdb_cc_proto",
+    ],
+)
+
+cc_library(
+    name = "mock_resdb_client",
+    testonly = True,
+    hdrs = ["mock_resdb_client.h"],
+    deps = [
+        ":resdb_client",
+    ],
+)
+
+cc_test(
+    name = "resdb_client_test",
+    srcs = ["resdb_client_test.cpp"],
+    deps = [
+        ":resdb_client",
+        "//common/network:mock_socket",
+        "//common/test:test_main",
+        "//crypto:key_generator",
+        "//proto:client_test_cc_proto",
+    ],
+)
+
+cc_library(
+    name = "resdb_user_client",
+    srcs = ["resdb_user_client.cpp"],
+    hdrs = ["resdb_user_client.h"],
+    deps = [
+        ":resdb_client",
+        "//common/data_comm",
+    ],
+)
+
+cc_test(
+    name = "resdb_user_client_test",
+    srcs = ["resdb_user_client_test.cpp"],
+    deps = [
+        ":resdb_user_client",
+        "//common/network:mock_socket",
+        "//common/test:test_main",
+        "//crypto:signature_verifier",
+        "//proto:client_test_cc_proto",
+    ],
+)
+
+cc_library(
+    name = "resdb_state_client",
+    srcs = ["resdb_state_client.cpp"],
+    hdrs = ["resdb_state_client.h"],
+    deps = [
+        ":resdb_user_client",
+        "//common:comm",
+        "//proto:replica_info_cc_proto",
+        "//proto:resdb_cc_proto",
+    ],
+)
+
+cc_test(
+    name = "resdb_state_client_test",
+    srcs = ["resdb_state_client_test.cpp"],
+    deps = [
+        ":mock_resdb_client",
+        ":resdb_state_client",
+        "//common/test:test_main",
+    ],
+)
+
+cc_library(
+    name = "resdb_txn_client",
+    srcs = ["resdb_txn_client.cpp"],
+    hdrs = ["resdb_txn_client.h"],
+    deps = [
+        ":resdb_client",
+        "//common:comm",
+        "//proto:replica_info_cc_proto",
+        "//proto:resdb_cc_proto",
+    ],
+)
+
+cc_library(
+    name = "mock_resdb_txn_client",
+    testonly = True,
+    hdrs = ["mock_resdb_txn_client.h"],
+    deps = [
+        ":resdb_txn_client",
+    ],
+)
+
+cc_test(
+    name = "resdb_txn_client_test",
+    srcs = ["resdb_txn_client_test.cpp"],
+    deps = [
+        ":mock_resdb_client",
+        ":resdb_txn_client",
+        "//common/test:test_main",
+        "//config:resdb_config_utils",
+    ],
+)
diff --git a/client/mock_resdb_client.h b/client/mock_resdb_client.h
new file mode 100644
index 00000000..175304cc
--- /dev/null
+++ b/client/mock_resdb_client.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include "client/resdb_client.h"
+#include "gmock/gmock.h"
+
+namespace resdb {
+
+// A mock class for ResDBClient.
+class MockResDBClient : public ResDBClient {
+ public:
+  MockResDBClient(const std::string& ip, int port) : ResDBClient(ip, port) {}
+
+  MOCK_METHOD(int, SendRequest,
+              (const google::protobuf::Message&, Request::Type, bool),
+              (override));
+  MOCK_METHOD(int, SendRawMessage, (const google::protobuf::Message&),
+              (override));
+  MOCK_METHOD(int, SendRawMessageData, (const std::string&), (override));
+  MOCK_METHOD(int, RecvRawMessageStr, (std::string*), (override));
+  MOCK_METHOD(int, RecvRawMessage, (google::protobuf::Message*), (override));
+};
+
+}  // namespace resdb
diff --git a/client/mock_resdb_txn_client.h b/client/mock_resdb_txn_client.h
new file mode 100644
index 00000000..fb87463b
--- /dev/null
+++ b/client/mock_resdb_txn_client.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#include "client/resdb_txn_client.h"
+#include "gmock/gmock.h"
+
+namespace resdb {
+
+// A mock class for ResDBClient.
+class MockResDBTxnClient : public ResDBTxnClient {
+ public:
+  MockResDBTxnClient(const ResDBConfig& config) : ResDBTxnClient(config) {}
+
+  MOCK_METHOD((absl::StatusOr<std::vector<std::pair<uint64_t, std::string>>>),
+              GetTxn, (uint64_t, uint64_t), (override));
+};
+
+}  // namespace resdb
diff --git a/client/resdb_client.cpp b/client/resdb_client.cpp
new file mode 100644
index 00000000..e018995e
--- /dev/null
+++ b/client/resdb_client.cpp
@@ -0,0 +1,212 @@
+#include "client/resdb_client.h"
+
+#include <glog/logging.h>
+
+#include "common/data_comm/data_comm.h"
+#include "common/network/tcp_socket.h"
+
+namespace resdb {
+
+ResDBClient::ResDBClient(const std::string& ip, int port)
+    : ip_(ip), port_(port) {
+  socket_ = std::make_unique<TcpSocket>();
+  socket_->SetSendTimeout(300);
+  socket_->SetRecvTimeout(read_timeouts_);
+}
+
+void ResDBClient::SetRecvTimeout(int microseconds) {
+  read_timeouts_ = microseconds;
+  socket_->SetRecvTimeout(read_timeouts_);
+}
+
+void ResDBClient::SetAsyncSend(bool is_async_send) {
+  is_async_send_ = is_async_send;
+}
+
+ResDBClient::ResDBClient(std::unique_ptr<Socket> socket, bool connected) {
+  SetSocket(std::move(socket));
+  connected_ = connected;
+}
+
+void ResDBClient::Close() { socket_->Close(); }
+
+void ResDBClient::SetSignatureVerifier(SignatureVerifier* verifier) {
+  verifier_ = verifier;
+}
+
+void ResDBClient::SetSocket(std::unique_ptr<Socket> socket) {
+  socket_ = std::move(socket);
+}
+
+void ResDBClient::SetDestReplicaInfo(const ReplicaInfo& replica) {
+  ip_ = replica.ip();
+  port_ = replica.port();
+}
+
+void ResDBClient::IsLongConnection(bool long_connect_tion) {
+  long_connect_tion_ = long_connect_tion;
+}
+
+int ResDBClient::Connect() {
+  socket_->ReInit();
+  socket_->SetAsync(is_async_send_);
+  return socket_->Connect(ip_, port_);
+}
+
+int ResDBClient::SendDataInternal(const std::string& data) {
+  return socket_->Send(data);
+}
+
+// Connect to the server if not connected and send data.
+int ResDBClient::SendFromKeepAlive(const std::string& data) {
+  for (int i = 0; i < max_retry_time_; ++i) {
+    if (!long_connecting_) {
+      if (Connect() == 0) {
+        long_connecting_ = true;
+      }
+      if (!long_connecting_) {
+        LOG(ERROR) << "connect fail:" << ip_ << " port:" << port_;
+        continue;
+      }
+    }
+    int ret = SendDataInternal(data);
+    if (ret >= 0) {
+      return ret;
+    }
+    long_connecting_ = false;
+  }
+  return -1;
+}
+
+int ResDBClient::Send(const std::string& data) {
+  if (long_connect_tion_) {
+    return SendFromKeepAlive(data);
+  }
+  for (int i = 0; i < max_retry_time_; ++i) {
+    if (!connected_) {
+      if (Connect()) {
+        LOG(ERROR) << "connect fail:" << ip_ << " port:" << port_;
+        continue;
+      }
+    }
+    int ret = SendDataInternal(data);
+    if (ret >= 0) {
+      return ret;
+    } else if (ret == -1) {
+      LOG(ERROR) << "send data fail:" << ip_ << " port:" << port_;
+    }
+  }
+  return -1;
+}
+
+// Receive data from the server.
+int ResDBClient::Recv(std::string* data) {
+  std::unique_ptr<DataInfo> resp = std::make_unique<DataInfo>();
+  int ret = socket_->Recv(&resp->buff, &resp->data_len);
+  if (ret > 0) {
+    *data = std::string((char*)resp->buff, resp->data_len);
+  }
+  return ret;
+}
+
+// Sign the message if verifier has been provied and send the message to the
+// server.
+std::string ResDBClient::GetRawMessageString(
+    const google::protobuf::Message& message, SignatureVerifier* verifier) {
+  ResDBMessage sig_message;
+  if (!message.SerializeToString(sig_message.mutable_data())) {
+    return "";
+  }
+
+  if (verifier != nullptr) {
+    auto signature_or = verifier->SignMessage(sig_message.data());
+    if (!signature_or.ok()) {
+      LOG(ERROR) << "Sign message fail";
+      return "";
+    }
+    sig_message.mutable_signature()->Swap(&(*signature_or));
+  } else {
+    LOG(ERROR) << " no verifier";
+  }
+
+  std::string message_str;
+  if (!sig_message.SerializeToString(&message_str)) {
+    return "";
+  }
+  return message_str;
+}
+
+int ResDBClient::SendRawMessageData(const std::string& message_str) {
+  return Send(message_str);
+}
+
+int ResDBClient::RecvRawMessageData(std::string* message_str) {
+  return Recv(message_str);
+}
+
+int ResDBClient::SendRawMessage(const google::protobuf::Message& message) {
+  ResDBMessage sig_message;
+  if (!message.SerializeToString(sig_message.mutable_data())) {
+    return -1;
+  }
+
+  if (verifier_ != nullptr) {
+    auto signature_or = verifier_->SignMessage(sig_message.data());
+    if (!signature_or.ok()) {
+      LOG(ERROR) << "Sign message fail";
+      return -1;
+    }
+    sig_message.mutable_signature()->Swap(&(*signature_or));
+  }
+  std::string message_str;
+  if (!sig_message.SerializeToString(&message_str)) {
+    return -1;
+  }
+  return Send(message_str);
+}
+
+int ResDBClient::RecvRawMessageStr(std::string* message) {
+  std::string recv_str;
+  int ret = Recv(&recv_str);
+  if (ret <= 0) {
+    return ret;
+  }
+  ResDBMessage sig_message;
+  if (!sig_message.ParseFromString(recv_str)) {
+    LOG(ERROR) << "parse to sig fail";
+    return -1;
+  }
+  *message = sig_message.data();
+  return 0;
+}
+
+int ResDBClient::RecvRawMessage(google::protobuf::Message* message) {
+  std::string resp_data;
+  int ret = Recv(&resp_data);
+  if (ret <= 0) {
+    return -1;
+  }
+  ResDBMessage sig_message;
+  if (!sig_message.ParseFromString(resp_data)) {
+    LOG(ERROR) << "parse sig msg fail";
+    return -1;
+  }
+  if (!message->ParseFromString(sig_message.data())) {
+    LOG(ERROR) << "parse response msg fail";
+    return -1;
+  }
+  return 0;
+}
+
+int ResDBClient::SendRequest(const google::protobuf::Message& message,
+                             Request::Type type, bool need_response) {
+  Request request;
+  request.set_type(type);
+  request.set_need_response(need_response);
+  if (!message.SerializeToString(request.mutable_data())) {
+    return -1;
+  }
+  return SendRawMessage(request);
+}
+
+}  // namespace resdb
diff --git a/client/resdb_client.h b/client/resdb_client.h
new file mode 100644
index 00000000..5ff04352
--- /dev/null
+++ b/client/resdb_client.h
@@ -0,0 +1,89 @@
+#pragma once
+#include <memory>
+
+#include "common/network/socket.h"
+#include "crypto/signature_verifier.h"
+#include "proto/resdb.pb.h"
+
+namespace resdb {
+
+// ResDBClient is used to send data to the server identified by ip:port or via
+// the provided socket. If SignatureVerifier is provided, data will be signed.
+// The client will retry max_retry_time_ if the connection or sned process fail.
+// For a message with a command, it will be set inside a Request message.
+// Each Request will be put into the network message ResDBMessage and signed.
+//
+// Message structre:
+// ResDBMessage:
+//     Request:
+//        cmd
+//        user_message
+//     signature
+//
+// For a raw message, it will be set inside a Network Message directly.
+// Message structre:
+// ResDBMessage:
+//     user_message
+//     signature
+//
+class ResDBClient {
+ public:
+  ResDBClient(const std::string& ip, int port);
+  // Use the provided socket to send data. If the socket has been connect to
+  // the server, it won't connect again.
+  ResDBClient(std::unique_ptr<Socket> socket, bool connected = false);
+
+  virtual ~ResDBClient() = default;
+
+  void Close();
+
+  void SetSocket(std::unique_ptr<Socket> socket);
+  void SetSignatureVerifier(SignatureVerifier* verifier);
+  void SetDestReplicaInfo(const ReplicaInfo& replica);
+
+  // Send a message request to the server with a commend.
+  // A new request will be generated with command cmd and contain the message.
+  virtual int SendRequest(const google::protobuf::Message& message,
+                          Request::Type cmd, bool need_response = false);
+
+  // Send the message to the server directly.
+  virtual int SendRawMessage(const google::protobuf::Message& message);
+  virtual int SendRawMessageData(const std::string& message_str);
+
+  // Recv the data inside ResDBMessage.
+  virtual int RecvRawMessageStr(std::string* message);
+  virtual int RecvRawMessage(google::protobuf::Message* message);
+
+  // Recv the raw string from the server.
+  virtual int RecvRawMessageData(std::string* message_str);
+
+  static std::string GetRawMessageString(
+      const google::protobuf::Message& message,
+      SignatureVerifier* verifier = nullptr);
+
+  void SetRecvTimeout(int microseconds);
+  void IsLongConnection(bool long_connect_tion);
+  void SetAsyncSend(bool is_async_send);
+
+ protected:
+  int SendDataInternal(const std::string& data);
+  int SendFromKeepAlive(const std::string& data);
+  int Send(const std::string& data);
+  int Recv(std::string* data);
+  int Connect();
+
+ protected:
+  SignatureVerifier* verifier_ = nullptr;
+
+  std::unique_ptr<Socket> socket_;
+  int max_retry_time_ = 3;
+  std::string ip_;
+  int port_;
+  bool connected_ = false;
+  int read_timeouts_ = 1000000;  // timeout for 1s.
+  bool long_connect_tion_ = false;
+  bool long_connecting_ = false;
+  bool is_async_send_ = false;
+};
+
+}  // namespace resdb
diff --git a/client/resdb_client_test.cpp b/client/resdb_client_test.cpp
new file mode 100644
index 00000000..701e2525
--- /dev/null
+++ b/client/resdb_client_test.cpp
@@ -0,0 +1,195 @@
+#include "client/resdb_client.h"
+
+#include <gtest/gtest.h>
+
+#include "common/network/mock_socket.h"
+#include "crypto/key_generator.h"
+#include "proto/client_test.pb.h"
+
+namespace resdb {
+namespace {
+
+using ::testing::Invoke;
+using ::testing::Return;
+using ::testing::Test;
+
+class ResDBClientTest : public Test {
+ protected:
+  ResDBMessage GetSendPackage(const google::protobuf::Message& message,
+                              Request::Type type) {
+    ResDBMessage resdb_message;
+    Request request;
+    request.set_type(type);
+    EXPECT_TRUE(message.SerializeToString(request.mutable_data()));
+    EXPECT_TRUE(request.SerializeToString(resdb_message.mutable_data()));
+    return resdb_message;
+  }
+
+  std::string GetSendPackageString(const google::protobuf::Message& message,
+                                   Request::Type type) {
+    ResDBMessage resdb_message = GetSendPackage(message, type);
+    std::string data;
+    EXPECT_TRUE(resdb_message.SerializeToString(&data));
+    return data;
+  }
+
+  ResDBMessage GetSendPackage(const google::protobuf::Message& message) {
+    ResDBMessage resdb_message;
+    EXPECT_TRUE(message.SerializeToString(resdb_message.mutable_data()));
+    return resdb_message;
+  }
+
+  std::string GetSendPackageString(const google::protobuf::Message& message) {
+    ResDBMessage resdb_message = GetSendPackage(message);
+    std::string data;
+    EXPECT_TRUE(resdb_message.SerializeToString(&data));
+    return data;
+  }
+};
+
+TEST_F(ResDBClientTest, ClientConnectFail) {
+  std::unique_ptr<MockSocket> socket = std::make_unique<MockSocket>();
+  EXPECT_CALL(*socket, Connect("127.0.0.1", 1234))
+      .Times(3)
+      .WillRepeatedly(Return(-1));
+  ResDBClient client("127.0.0.1", 1234);
+
+  client.SetSocket(std::move(socket));
+
+  ClientTestRequest client_request;
+  std::string data;
+  ASSERT_TRUE(client_request.SerializeToString(&data));
+  int ret = client.SendRawMessage(client_request);
+  EXPECT_LE(ret, 0);
+}
+
+TEST_F(ResDBClientTest, KeepAliveAndAsyncReConnect) {
+  std::unique_ptr<MockSocket> socket = std::make_unique<MockSocket>();
+  EXPECT_CALL(*socket, Connect("127.0.0.1", 1234))
+      .Times(3)
+      .WillRepeatedly(Return(-1));
+
+  EXPECT_CALL(*socket, SetAsync(true)).Times(3).WillRepeatedly(Return(0));
+
+  ResDBClient client("127.0.0.1", 1234);
+  client.SetAsyncSend(true);
+  client.IsLongConnection(true);
+
+  client.SetSocket(std::move(socket));
+
+  ClientTestRequest client_request;
+  std::string data;
+  ASSERT_TRUE(client_request.SerializeToString(&data));
+  int ret = client.SendRawMessage(client_request);
+  EXPECT_LE(ret, 0);
+}
+
+TEST_F(ResDBClientTest, SendRequest) {
+  std::string data = "test_data";
+
+  ClientTestRequest client_request;
+  client_request.set_value("test_value");
+
+  std::string expected_request_str =
+      GetSendPackageString(client_request, Request::TYPE_CLIENT_REQUEST);
+
+  std::unique_ptr<MockSocket> socket = std::make_unique<MockSocket>();
+  EXPECT_CALL(*socket, Connect("127.0.0.1", 1234)).WillOnce(Return(0));
+  EXPECT_CALL(*socket, Send(expected_request_str)).WillOnce(Return(0));
+
+  ResDBClient client("127.0.0.1", 1234);
+  client.SetSocket(std::move(socket));
+  client.SetSignatureVerifier(nullptr);
+
+  int ret = client.SendRequest(client_request, Request::TYPE_CLIENT_REQUEST);
+  EXPECT_EQ(ret, 0);
+}
+
+TEST_F(ResDBClientTest, SendRequestFail) {
+  std::string data = "test_data";
+
+  ClientTestRequest client_request;
+  client_request.set_value("test_value");
+
+  std::string expected_request_str =
+      GetSendPackageString(client_request, Request::TYPE_CLIENT_REQUEST);
+
+  std::unique_ptr<MockSocket> socket = std::make_unique<MockSocket>();
+  EXPECT_CALL(*socket, ReInit()).Times(3);
+  EXPECT_CALL(*socket, Connect("127.0.0.1", 1234)).Times(3).WillOnce(Return(0));
+  EXPECT_CALL(*socket, Send(expected_request_str))
+      .Times(3)
+      .WillRepeatedly(Return(-1));
+
+  ResDBClient client("127.0.0.1", 1234);
+  client.SetSocket(std::move(socket));
+  client.SetSignatureVerifier(nullptr);
+
+  int ret = client.SendRequest(client_request, Request::TYPE_CLIENT_REQUEST);
+  EXPECT_NE(ret, 0);
+}
+
+TEST_F(ResDBClientTest, SendMessage) {
+  ClientTestRequest client_request;
+  client_request.set_value("test_value");
+
+  std::string data = GetSendPackageString(client_request);
+
+  std::unique_ptr<MockSocket> socket = std::make_unique<MockSocket>();
+  EXPECT_CALL(*socket, Connect("127.0.0.1", 1234)).WillOnce(Return(0));
+  EXPECT_CALL(*socket, Send(data)).WillOnce(Return(0));
+
+  ResDBClient client("127.0.0.1", 1234);
+  client.SetSocket(std::move(socket));
+  client.SetSignatureVerifier(nullptr);
+
+  EXPECT_EQ(client.SendRawMessage(client_request), 0);
+}
+
+TEST_F(ResDBClientTest, SignMessage) {
+  SecretKey my_key = KeyGenerator ::GeneratorKeys(SignatureInfo::RSA);
+  int64_t my_node_id = 1;
+
+  KeyInfo private_key;
+  private_key.set_key(my_key.private_key());
+  private_key.set_hash_type(my_key.hash_type());
+  CertificateInfo cert_info;
+  cert_info.set_node_id(my_node_id);
+  cert_info.mutable_public_key()
+      ->mutable_public_key_info()
+      ->mutable_key()
+      ->set_key(my_key.public_key());
+  cert_info.mutable_public_key()
+      ->mutable_public_key_info()
+      ->mutable_key()
+      ->set_hash_type(my_key.hash_type());
+  cert_info.mutable_public_key()->mutable_public_key_info()->set_node_id(
+      my_node_id);
+
+  SignatureVerifier verifier(private_key, cert_info);
+
+  ClientTestRequest client_request;
+  client_request.set_value("test_value");
+
+  std::string data = GetSendPackageString(client_request);
+
+  std::unique_ptr<MockSocket> socket = std::make_unique<MockSocket>();
+  EXPECT_CALL(*socket, Connect("127.0.0.1", 1234)).WillOnce(Return(0));
+  EXPECT_CALL(*socket, Send).WillOnce(Invoke([&](const std::string& data) {
+    ResDBMessage resdb_message;
+    EXPECT_TRUE(resdb_message.ParseFromString(data));
+    EXPECT_TRUE(verifier.VerifyMessage(resdb_message.data(),
+                                       resdb_message.signature()));
+    return 0;
+  }));
+
+  ResDBClient client("127.0.0.1", 1234);
+  client.SetSocket(std::move(socket));
+  client.SetSignatureVerifier(&verifier);
+
+  EXPECT_EQ(client.SendRawMessage(client_request), 0);
+}
+
+}  // namespace
+
+}  // namespace resdb
diff --git a/client/resdb_state_client.cpp b/client/resdb_state_client.cpp
new file mode 100644
index 00000000..368efa3b
--- /dev/null
+++ b/client/resdb_state_client.cpp
@@ -0,0 +1,67 @@
+#include "client/resdb_state_client.h"
+
+#include <glog/logging.h>
+
+#include <future>
+#include <thread>
+
+namespace resdb {
+
+ResDBStateClient::ResDBStateClient(const ResDBConfig& config)
+    : config_(config) {}
+
+std::unique_ptr<ResDBClient> ResDBStateClient::GetResDBClient(
+    const std::string& ip, int port) {
+  return std::make_unique<ResDBClient>(ip, port);
+}
+
+// Obtain ReplicaState of each replica.
+absl::StatusOr<std::vector<ReplicaState>> ResDBStateClient::GetReplicaStates() {
+  std::vector<std::thread> ths;
+  Request request;
+  std::vector<std::future<std::unique_ptr<ReplicaState>>> resp_future;
+  std::vector<ReplicaState> resp;
+
+  for (const auto& replica : config_.GetReplicaInfos()) {
+    std::promise<std::unique_ptr<ReplicaState>> state_prom;
+    resp_future.push_back(state_prom.get_future());
+    ths.push_back(std::thread(
+        [&](std::promise<std::unique_ptr<ReplicaState>> state_prom) {
+          std::unique_ptr<ResDBClient> client =
+              GetResDBClient(replica.ip(), replica.port());
+          client->SetRecvTimeout(1000000);  // 1s for recv timeout.
+
+          int ret = client->SendRequest(request, Request::TYPE_REPLICA_STATE);
+          if (ret) {
+            state_prom.set_value(nullptr);
+            return;
+          }
+
+          std::unique_ptr<ReplicaState> state =
+              std::make_unique<ReplicaState>();
+          ret = client->RecvRawMessage(state.get());
+          if (ret < 0) {
+            state_prom.set_value(nullptr);
+            return;
+          }
+          state_prom.set_value(std::move(state));
+          return;
+        },
+        std::move(state_prom)));
+  }
+
+  for (auto& future : resp_future) {
+    auto state = future.get();
+    if (state == nullptr) {
+      continue;
+    }
+    resp.push_back(*state);
+  }
+
+  for (auto& th : ths) {
+    th.join();
+  }
+  return resp;
+}
+
+}  // namespace resdb
diff --git a/client/resdb_state_client.h b/client/resdb_state_client.h
new file mode 100644
index 00000000..2eae3169
--- /dev/null
+++ b/client/resdb_state_client.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "absl/status/statusor.h"
+#include "client/resdb_client.h"
+#include "config/resdb_config.h"
+#include "proto/replica_info.pb.h"
+
+namespace resdb {
+
+// ResDBStateClient used to obtain the server state of each replica in ResDB.
+// The addresses of each replica are provided from the config.
+class ResDBStateClient {
+ public:
+  ResDBStateClient(const ResDBConfig& config);
+  virtual ~ResDBStateClient() = default;
+
+  // Obtain ReplicaState of each replica.
+  absl::StatusOr<std::vector<ReplicaState>> GetReplicaStates();
+
+ protected:
+  virtual std::unique_ptr<ResDBClient> GetResDBClient(const std::string& ip,
+                                                      int port);
+
+ private:
+  ResDBConfig config_;
+};
+
+}  // namespace resdb
diff --git a/client/resdb_state_client_test.cpp b/client/resdb_state_client_test.cpp
new file mode 100644
index 00000000..e489886b
--- /dev/null
+++ b/client/resdb_state_client_test.cpp
@@ -0,0 +1,139 @@
+#include "client/resdb_state_client.h"
+
+#include <glog/logging.h>
+#include <gtest/gtest.h>
+
+#include "client/mock_resdb_client.h"
+#include "common/test/test_macros.h"
+
+namespace resdb {
+namespace {
+
+using ::google::protobuf::util::MessageDifferencer;
+using ::testing::ElementsAre;
+using ::testing::Invoke;
+using ::testing::Test;
+
+void AddReplicaToList(const std::string& ip, int port,
+                      std::vector<ReplicaInfo>* replica) {
+  ReplicaInfo info;
+  info.set_ip(ip);
+  info.set_port(port);
+  replica->push_back(info);
+}
+
+class MockResDBStateClient : public ResDBStateClient {
+ public:
+  MockResDBStateClient(const ResDBConfig& config) : ResDBStateClient(config) {}
+
+  MOCK_METHOD(std::unique_ptr<ResDBClient>, GetResDBClient,
+              (const std::string&, int), (override));
+};
+
+class StateClientTest : public Test {
+ public:
+  StateClientTest() {
+    self_info_.set_ip("127.0.0.1");
+    self_info_.set_port(1234);
+
+    AddReplicaToList("127.0.0.1", 1235, &replicas_);
+    AddReplicaToList("127.0.0.1", 1236, &replicas_);
+    AddReplicaToList("127.0.0.1", 1237, &replicas_);
+    AddReplicaToList("127.0.0.1", 1238, &replicas_);
+
+    KeyInfo private_key;
+    private_key.set_key("private_key");
+    config_ = std::make_unique<ResDBConfig>(replicas_, self_info_, private_key,
+                                            CertificateInfo());
+  }
+
+ protected:
+  ReplicaInfo self_info_;
+  std::vector<ReplicaInfo> replicas_;
+  std::unique_ptr<ResDBConfig> config_;
+};
+
+TEST_F(StateClientTest, GetAllReplicaState) {
+  MockResDBStateClient client(*config_);
+
+  std::vector<ReplicaState> replica_states;
+  for (auto replica : replicas_) {
+    ReplicaState state;
+    *state.mutable_replica_info() = replica;
+    replica_states.push_back(state);
+  }
+
+  std::atomic<int> idx = 0;
+  EXPECT_CALL(client, GetResDBClient)
+      .Times(4)
+      .WillRepeatedly(Invoke([&](const std::string& ip, int port) {
+        auto client = std::make_unique<MockResDBClient>(ip, port);
+        EXPECT_CALL(*client, RecvRawMessage)
+            .WillRepeatedly(Invoke([&](google::protobuf::Message* message) {
+              *reinterpret_cast<ReplicaState*>(message) = replica_states[idx++];
+              return 0;
+            }));
+        return client;
+      }));
+  auto ret = client.GetReplicaStates();
+  EXPECT_TRUE(ret.ok());
+  std::set<int> results;
+  for (auto& state : *ret) {
+    auto it =
+        std::find_if(replica_states.begin(), replica_states.end(),
+                     [&](const ReplicaState& cur_state) {
+                       return MessageDifferencer::Equals(cur_state, state);
+                     });
+    EXPECT_TRUE(it != replica_states.end());
+    results.insert(it - replica_states.begin());
+  }
+  EXPECT_EQ(results.size(), 4);
+}
+
+TEST_F(StateClientTest, GetAllReplicaStateButOneFail) {
+  MockResDBStateClient client(*config_);
+
+  std::vector<ReplicaState> replica_states;
+  for (auto replica : replicas_) {
+    ReplicaState state;
+    *state.mutable_replica_info() = replica;
+    replica_states.push_back(state);
+  }
+
+  std::mutex mutex;
+  std::atomic<int> idx = 0;
+  EXPECT_CALL(client, GetResDBClient)
+      .Times(4)
+      .WillRepeatedly(Invoke([&](const std::string& ip, int port) {
+        auto client = std::make_unique<MockResDBClient>(ip, port);
+        EXPECT_CALL(*client, RecvRawMessage)
+            .WillRepeatedly(Invoke([&](google::protobuf::Message* message) {
+              std::unique_lock<std::mutex> lk(mutex);
+              if (idx < 3) {
+                *reinterpret_cast<ReplicaState*>(message) =
+                    replica_states[idx++];
+                return 0;
+              } else {
+                return -1;
+              }
+            }));
+        return client;
+      }));
+  auto ret = client.GetReplicaStates();
+  EXPECT_TRUE(ret.ok());
+  std::set<int> results;
+  for (auto& state : *ret) {
+    auto it =
+        std::find_if(replica_states.begin(), replica_states.end(),
+                     [&](const ReplicaState& cur_state) {
+                       return MessageDifferencer::Equals(cur_state, state);
+                     });
+    EXPECT_TRUE(it != replica_states.end());
+    results.insert(it - replica_states.begin());
+  }
+  EXPECT_EQ(results.size(), 3);
+}
+
+}  // namespace
+
+}  // namespace resdb
diff --git a/client/resdb_txn_client.cpp b/client/resdb_txn_client.cpp
new file mode 100644
index 00000000..a04cc1da
--- /dev/null
+++ b/client/resdb_txn_client.cpp
@@ -0,0 +1,97 @@
+#include "client/resdb_txn_client.h"
+
+#include <glog/logging.h>
+
+#include <future>
+#include <thread>
+
+namespace resdb {
+
+ResDBTxnClient::ResDBTxnClient(const ResDBConfig& config)
+    : config_(config),
+      replicas_(config.GetReplicaInfos()),
+      recv_timeout_(1) /*1s*/ {}
+
+std::unique_ptr<ResDBClient> ResDBTxnClient::GetResDBClient(
+    const std::string& ip, int port) {
+  return std::make_unique<ResDBClient>(ip, port);
+}
+
+// Obtain ReplicaState of each replica.
+absl::StatusOr<std::vector<std::pair<uint64_t, std::string>>>
+ResDBTxnClient::GetTxn(uint64_t min_seq, uint64_t max_seq) {
+  QueryRequest request;
+  request.set_min_seq(min_seq);
+  request.set_max_seq(max_seq);
+
+  std::vector<std::unique_ptr<ResDBClient>> clients;
+  std::vector<std::thread> ths;
+  std::string final_str;
+  std::mutex mtx;
+  std::condition_variable resp_cv;
+  bool success = false;
... 100934 lines suppressed ...