Skip to content

Commit

Permalink
Merge pull request #896 from HorizenOfficial/dev
Browse files Browse the repository at this point in the history
0.7.1 to master
  • Loading branch information
paolocappelletti authored Jul 26, 2023
2 parents 1f8c7d1 + cfddd5b commit 73fa05d
Show file tree
Hide file tree
Showing 88 changed files with 2,865 additions and 238 deletions.
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
**0.7.1**
1. Seeder nodes support
2. PeerToPeer and API rate limiting - tx rebroadcast feature
3. Sparkz dependency updated to 2.0.2
4. Minor fixes:
* expose app version in node/info rest api
* account model: fixes in debug_traceTransaction and eth_feeHistory rpc commands
* improved logs in certificate submission process
* fixed HTTP Header on SecureEnclaveApiClient
* fix on syncing mechanism to prevent issue that caused nodes being unable to sync indefinitely
* fixed default gasLimit in createKeyRotationTransaction
* signaturesFromEnclave timeout handling improvements

**0.7.0**
1. Account model introduced. EvmApp application example added.
2. Base package renamed from `com.horizen` to `io.horizen`
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ While we keep monitoring the memory footprint of the proofs generation process,
- After the installation, just run `export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1` before starting the sidechain node, or run the sidechain node adding `LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1` at the beginning of the java command line as follows:

```
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1 java -cp ./target/sidechains-sdk-simpleapp-0.7.0.jar:./target/lib/* io.horizen.examples.SimpleApp <path_to_config_file>
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1 java -cp ./target/sidechains-sdk-simpleapp-0.7.1.jar:./target/lib/* io.horizen.examples.SimpleApp <path_to_config_file>
```
- In the folder `ci` you will find the script `run_sc.sh` to automatically check and use jemalloc library while starting the sidechain node.

Expand Down
2 changes: 1 addition & 1 deletion ci/run_sc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

set -eo pipefail

SIMPLE_APP_VERSION="${SIMPLE_APP_VERSION:-0.7.0}"
SIMPLE_APP_VERSION="${SIMPLE_APP_VERSION:-0.7.1}"

if [ -d "$1" ] && [ -f "$2" ]; then
path_to_jemalloc="$(ldconfig -p | grep "$(arch)" | grep 'libjemalloc\.so\.1$' | tr -d ' ' | cut -d '>' -f 2)"
Expand Down
10 changes: 5 additions & 5 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,24 +44,24 @@ Otherwise, to run an Example App outside the IDE:
* (Windows)
```
cd Sidechains-SDK\examples\simpleapp
java -cp ./target/sidechains-sdk-simpleapp-0.7.0.jar;./target/lib/* io.horizen.examples.SimpleApp <path_to_config_file>
java -cp ./target/sidechains-sdk-simpleapp-0.7.1.jar;./target/lib/* io.horizen.examples.SimpleApp <path_to_config_file>
```
* (Linux)
```
cd ./Sidechains-SDK/examples/utxo/simpleapp
java -cp ./target/sidechains-sdk-simpleapp-0.7.0.jar:./target/lib/\* io.horizen.examples.SimpleApp <path_to_config_file>
java -cp ./target/sidechains-sdk-simpleapp-0.7.1.jar:./target/lib/\* io.horizen.examples.SimpleApp <path_to_config_file>
```
**Model: Account**
* (Windows)
```
cd Sidechains-SDK\examples\evmapp
java -cp ./target/sidechains-sdk-evmapp-0.7.0.jar;./target/lib/* io.horizen.examples.EvmApp <path_to_config_file>
java -cp ./target/sidechains-sdk-evmapp-0.7.1.jar;./target/lib/* io.horizen.examples.EvmApp <path_to_config_file>
```
* (Linux)
```
cd ./Sidechains-SDK/examples/account/evmapp
java -cp ./target/sidechains-evmapp-0.7.0.jar:./target/lib/\* io.horizen.examples.EvmApp <path_to_config_file>
java -cp ./target/sidechains-evmapp-0.7.1.jar:./target/lib/\* io.horizen.examples.EvmApp <path_to_config_file>
```
On some Linux OSs during backward transfers certificates proofs generation an extremely large RAM consumption may happen, that will lead to the process being force killed by the OS.
Expand All @@ -74,7 +74,7 @@ While we keep monitoring the memory footprint of the proofs generation process,
- After the installation, just run `export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1` before starting the sidechain node, or run the sidechain node adding `LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1` at the beginning of the java command line as follows:
```
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1 java -cp ./target/sidechains-sdk-simpleapp-0.7.0.jar:./target/lib/* io.horizen.examples.SimpleApp <path_to_config_file>
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1 java -cp ./target/sidechains-sdk-simpleapp-0.7.1.jar:./target/lib/* io.horizen.examples.SimpleApp <path_to_config_file>
```
- In the folder `ci` you will find the script `run_sc.sh` to automatically check and use jemalloc library while starting the sidechain node.
Expand Down
4 changes: 2 additions & 2 deletions examples/account/evmapp/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.horizen</groupId>
<artifactId>sidechains-sdk-evmapp</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
<inceptionYear>2022</inceptionYear>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand All @@ -15,7 +15,7 @@
<dependency>
<groupId>io.horizen</groupId>
<artifactId>sidechains-sdk</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public void configureApp() {

// It's integer parameter that defines slot duration. The minimum valid value is 10, the maximum is 300.
int consensusSecondsInSlot = 12;
String appVersion = "";

// use a custom object which implements the stopAll() method
SidechainAppStopper applicationStopper = new EvmAppStopper();
Expand Down Expand Up @@ -104,5 +105,9 @@ public void configureApp() {
bind(Integer.class)
.annotatedWith(Names.named("ConsensusSecondsInSlot"))
.toInstance(consensusSecondsInSlot);

bind(String.class)
.annotatedWith(Names.named("AppVersion"))
.toInstance(appVersion);
}
}
6 changes: 3 additions & 3 deletions examples/account/evmapp_sctool/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.horizen</groupId>
<artifactId>sidechains-sdk-evmapp_sctool</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
<inceptionYear>2022</inceptionYear>
<properties>
<maven.compiler.source>11</maven.compiler.source>
Expand All @@ -14,13 +14,13 @@
<dependency>
<groupId>io.horizen</groupId>
<artifactId>sidechains-sdk-scbootstrappingtools</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.horizen</groupId>
<artifactId>sidechains-sdk-evmapp</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
Expand Down
16 changes: 8 additions & 8 deletions examples/mc_sc_workflow_example.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ Build SDK components by using a command (in the root of the Sidechains-SDK folde

Run Bootstrapping tool using the command depending on the sidechain model:

- account: `java -jar tools/sidechains-sdk-account_sctools/target/sidechains-sdk-account_sctools-0.7.0.jar`
- utxo: `java -jar tools/sidechains-sdk-utxo_sctools/target/sidechains-sdk-utxo_sctools-0.7.0.jar`
- account: `java -jar tools/sidechains-sdk-account_sctools/target/sidechains-sdk-account_sctools-0.7.1.jar`
- utxo: `java -jar tools/sidechains-sdk-utxo_sctools/target/sidechains-sdk-utxo_sctools-0.7.1.jar`

All other commands are performed as commands for Bootstrapping tool in the next format: `"command name" "parameters for command in JSON format"`.
For any help, you could use the command `help`, for the exit just print `exit`
Expand Down Expand Up @@ -507,30 +507,30 @@ Run an Example App with the `my_settings.conf`:

* For Windows:
```
java -cp ./examples/utxo/simpleapp/target/sidechains-sdk-simpleapp-0.7.0.jar;./examples/simpleapp/target/lib/* io.horizen.examples.SimpleApp ./examples/my_settings.conf
java -cp ./examples/utxo/simpleapp/target/sidechains-sdk-simpleapp-0.7.1.jar;./examples/simpleapp/target/lib/* io.horizen.examples.SimpleApp ./examples/my_settings.conf
```
* For Linux (Glibc):
```
java -cp ./examples/utxo/simpleapp/target/sidechains-sdk-simpleapp-0.7.0.jar:./examples/simpleapp/target/lib/* io.horizen.examples.SimpleApp ./examples/my_settings.conf
java -cp ./examples/utxo/simpleapp/target/sidechains-sdk-simpleapp-0.7.1.jar:./examples/simpleapp/target/lib/* io.horizen.examples.SimpleApp ./examples/my_settings.conf
```
* For Linux (Jemalloc):
```
LD_PRELOAD=<path to jemalloc library>/libjemalloc.so.1 java -cp ./examples/utxo/simpleapp/target/sidechains-sdk-simpleapp-0.7.0.jar:./examples/simpleapp/target/lib/* io.horizen.examples.SimpleApp ./examples/my_settings.conf
LD_PRELOAD=<path to jemalloc library>/libjemalloc.so.1 java -cp ./examples/utxo/simpleapp/target/sidechains-sdk-simpleapp-0.7.1.jar:./examples/simpleapp/target/lib/* io.horizen.examples.SimpleApp ./examples/my_settings.conf
```

**Model: Account**

* For Windows:
```
java -cp ./examples/account/evmapp/target/sidechains-sdk-evmapp-0.7.0.jar;./examples/evmapp/target/lib/* io.horizen.examples.EvmApp ./examples/my_settings.conf
java -cp ./examples/account/evmapp/target/sidechains-sdk-evmapp-0.7.1.jar;./examples/evmapp/target/lib/* io.horizen.examples.EvmApp ./examples/my_settings.conf
```
* For Linux (Glibc):
```
java -cp ./examples/account/evmapp/target/sidechains-sdk-evmapp-0.7.0.jar:./examples/evmapp/target/lib/* io.horizen.examples.EvmApp ./examples/my_settings.conf
java -cp ./examples/account/evmapp/target/sidechains-sdk-evmapp-0.7.1.jar:./examples/evmapp/target/lib/* io.horizen.examples.EvmApp ./examples/my_settings.conf
```
* For Linux (Jemalloc):
```
LD_PRELOAD=<path to jemalloc library>/libjemalloc.so.1 java -cp ./examples/account/evmapp/target/sidechains-sdk-evmapp-0.7.0.jar:./examples/evmapp/target/lib/* io.horizen.examples.EvmApp ./examples/my_settings.conf
LD_PRELOAD=<path to jemalloc library>/libjemalloc.so.1 java -cp ./examples/account/evmapp/target/sidechains-sdk-evmapp-0.7.1.jar:./examples/evmapp/target/lib/* io.horizen.examples.EvmApp ./examples/my_settings.conf
```


Expand Down
4 changes: 2 additions & 2 deletions examples/utxo/simpleapp/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.horizen</groupId>
<artifactId>sidechains-sdk-simpleapp</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
<inceptionYear>2018</inceptionYear>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand All @@ -15,7 +15,7 @@
<dependency>
<groupId>io.horizen</groupId>
<artifactId>sidechains-sdk</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ public void configureApp() {

// It's integer parameter that defines slot duration. The minimum valid value is 10, the maximum is 300.
int consensusSecondsInSlot = 120;
String appVersion = "";

// Here I can add my custom rest api and/or override existing one
List<SidechainApplicationApiGroup> customApiGroups = new ArrayList<>();
Expand Down Expand Up @@ -159,5 +160,9 @@ public void configureApp() {
bind(Integer.class)
.annotatedWith(Names.named("ConsensusSecondsInSlot"))
.toInstance(consensusSecondsInSlot);

bind(String.class)
.annotatedWith(Names.named("AppVersion"))
.toInstance(appVersion);
}
}
6 changes: 3 additions & 3 deletions examples/utxo/utxoapp_sctool/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.horizen</groupId>
<artifactId>sidechains-sdk-utxoapp_sctool</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
<inceptionYear>2018</inceptionYear>
<properties>
<maven.compiler.source>11</maven.compiler.source>
Expand All @@ -14,13 +14,13 @@
<dependency>
<groupId>io.horizen</groupId>
<artifactId>sidechains-sdk-scbootstrappingtools</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.horizen</groupId>
<artifactId>sidechains-sdk-simpleapp</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.horizen</groupId>
<artifactId>Sidechains</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
<inceptionYear>2018</inceptionYear>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand Down
10 changes: 5 additions & 5 deletions qa/SidechainTestFramework/account/ac_use_smart_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from SidechainTestFramework.account.ac_utils import CallMethod, format_eoa, format_evm, ensure_nonce, ensure_chain_id
from SidechainTestFramework.account.mk_contract_address import mk_contract_address
from dataclasses import dataclass
from eth_abi import encode_abi, decode_abi
from eth_abi import encode, decode
from eth_utils import to_checksum_address
from typing import Tuple, Any

Expand All @@ -25,13 +25,13 @@ class ContractFunction:

def encode(self, *inputs):
if not self.isConstructor:
encoded_string = self.sigHash + encode_abi(self.inputs, inputs).hex()
encoded_string = self.sigHash + encode(self.inputs, inputs).hex()
else:
encoded_string = encode_abi(self.inputs, inputs).hex()
encoded_string = encode(self.inputs, inputs).hex()
return encoded_string

def decode(self, output):
return decode_abi(self.outputs, output)
return decode(self.outputs, output)

def __str__(self):
return '{} :: {}({}) -> ({})'.format(self.sigHash, self.name, ",".join(self.inputs), ",".join(self.outputs))
Expand Down Expand Up @@ -186,7 +186,7 @@ def static_call(self, node, functionName: str, *args, fromAddress: str, nonce: i
logging.info(response['error'])
if len(response['error']['data']) < 68:
raise EvmExecutionError("Execution reverted without a reason.")
reason = decode_abi(['string'], bytes.fromhex(response['error']['data'][2:])[4:])[0]
reason = decode(['string'], bytes.fromhex(response['error']['data'][2:])[4:])[0]
raise EvmExecutionError("Execution reverted. Reason: \"{}\"".format(reason))
raise RuntimeError("Something went wrong, see {}".format(str(response)))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

def http_create_key_rotation_transaction_evm(sidechainNode, key_type, key_index, new_key,
signing_key_signature, master_key_signature, new_key_signature,
nonce=None, gas_limit=300000, max_fee_per_gas=900000000,
nonce=None, gas_limit=None, max_fee_per_gas=900000000,
max_priority_fee_per_gas=900000000, api_key=None):
j = {
"keyType": key_type,
Expand All @@ -12,13 +12,14 @@ def http_create_key_rotation_transaction_evm(sidechainNode, key_type, key_index,
"signingKeySignature": signing_key_signature,
"masterKeySignature": master_key_signature,
"newKeySignature": new_key_signature,
"nonce": nonce,
"gasInfo": {
"nonce": nonce
}
if gas_limit is not None:
j["gasInfo"] = {
"gasLimit": gas_limit,
"maxFeePerGas": max_fee_per_gas,
"maxPriorityFeePerGas": max_priority_fee_per_gas
}
}
request = json.dumps(j)
if api_key is not None:
response = sidechainNode.transaction_createKeyRotationTransaction(request, api_key)
Expand Down
2 changes: 1 addition & 1 deletion qa/SidechainTestFramework/account/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
eth_abi
eth_abi>=4.0.0
pycryptodome
rlp
eth_utils
Expand Down
6 changes: 5 additions & 1 deletion qa/SidechainTestFramework/sc_boostrap_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,9 @@ def __init__(self,
max_account_slots=DEFAULT_MAX_ACCOUNT_SLOTS,
max_mempool_slots=DEFAULT_MAX_MEMPOOL_SLOTS,
max_nonexec_pool_slots=DEFAULT_MAX_NONEXEC_POOL_SLOTS,
tx_lifetime=DEFAULT_TX_LIFETIME
tx_lifetime=DEFAULT_TX_LIFETIME,
handling_txs_enabled=True

):
if submitter_private_keys_indexes is None:
submitter_private_keys_indexes = list(range(7))
Expand Down Expand Up @@ -190,6 +192,8 @@ def __init__(self,
self.max_mempool_slots = max_mempool_slots
self.max_nonexec_pool_slots = max_nonexec_pool_slots
self.tx_lifetime = tx_lifetime
self.handling_txs_enabled=handling_txs_enabled


def update_websocket_config(self, websocket_server_enabled, websocket_server_port):
self.websocket_server_enabled = websocket_server_enabled
Expand Down
2 changes: 1 addition & 1 deletion qa/SidechainTestFramework/sc_test_framework.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ def main(self):
parser.add_option("--zendir", dest="zendir", default="ZenCore/src",
help="Source directory containing zend/zen-cli (default: %default)")
examples_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../..', 'examples'))
parser.add_option("--scjarpath", dest="scjarpath", default=f"{examples_dir}/simpleapp/target/sidechains-sdk-simpleapp-0.7.0.jar;{examples_dir}/simpleapp/target/lib/* io.horizen.examples.SimpleApp", #New option. Main class path won't be needed in future
parser.add_option("--scjarpath", dest="scjarpath", default=f"{examples_dir}/simpleapp/target/sidechains-sdk-simpleapp-0.7.1.jar;{examples_dir}/simpleapp/target/lib/* io.horizen.examples.SimpleApp", #New option. Main class path won't be needed in future
help="Directory containing .jar file for SC (default: %default)")
parser.add_option("--tmpdir", dest="tmpdir", default=tempfile.mkdtemp(prefix="sc_test"),
help="Root directory for datadirs")
Expand Down
14 changes: 8 additions & 6 deletions qa/SidechainTestFramework/scutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ def launch_db_tool(dirName, storageNames, command_name, json_parameters):
json_param = json.dumps(json_parameters)
java_ps = subprocess.Popen(["java", "-jar",
os.getenv("SIDECHAIN_SDK",
"..") + "/tools/dbtool/target/sidechains-sdk-dbtools-0.7.0.jar",
"..") + "/tools/dbtool/target/sidechains-sdk-dbtools-0.7.1.jar",
storagesPath, storageNames, command_name, json_param], stdout=subprocess.PIPE)
db_tool_output = java_ps.communicate()[0]
try:
Expand Down Expand Up @@ -542,7 +542,9 @@ def initialize_sc_datadir(dirname, n, model, bootstrap_info=SCBootstrapInfo, sc_
'MAX_ACCOUNT_SLOTS': sc_node_config.max_account_slots,
'MAX_MEMPOOL_SLOTS': sc_node_config.max_mempool_slots,
'MAX_NONEXEC_SLOTS': sc_node_config.max_nonexec_pool_slots,
'TX_LIFETIME': sc_node_config.tx_lifetime
'TX_LIFETIME': sc_node_config.tx_lifetime,
'HANDLING_TXS_ENABLED': ("true" if sc_node_config.handling_txs_enabled else "false")

}
config = config.replace("'", "")
config = config.replace("NEW_LINE", "\n")
Expand Down Expand Up @@ -653,10 +655,10 @@ def get_lib_separator():
def get_examples_dir():
return os.path.abspath(os.path.join(os.path.dirname( __file__ ), '../..', 'examples'))

SIMPLE_APP_BINARY = get_examples_dir() + "/utxo/simpleapp/target/sidechains-sdk-simpleapp-0.7.0.jar" + get_lib_separator() + get_examples_dir() + "/utxo/simpleapp/target/lib/* io.horizen.examples.SimpleApp"
EVM_APP_BINARY = get_examples_dir() + "/account/evmapp/target/sidechains-sdk-evmapp-0.7.0.jar" + get_lib_separator() + get_examples_dir() + "/account/evmapp/target/lib/* io.horizen.examples.EvmApp"
UTXO_BOOTSTRAPPING_TOOL = get_examples_dir() + "/utxo/utxoapp_sctool/target/sidechains-sdk-utxoapp_sctool-0.7.0.jar"
EVM_BOOTSTRAPPING_TOOL = get_examples_dir() + "/account/evmapp_sctool/target/sidechains-sdk-evmapp_sctool-0.7.0.jar"
SIMPLE_APP_BINARY = get_examples_dir() + "/utxo/simpleapp/target/sidechains-sdk-simpleapp-0.7.1.jar" + get_lib_separator() + get_examples_dir() + "/utxo/simpleapp/target/lib/* io.horizen.examples.SimpleApp"
EVM_APP_BINARY = get_examples_dir() + "/account/evmapp/target/sidechains-sdk-evmapp-0.7.1.jar" + get_lib_separator() + get_examples_dir() + "/account/evmapp/target/lib/* io.horizen.examples.EvmApp"
UTXO_BOOTSTRAPPING_TOOL = get_examples_dir() + "/utxo/utxoapp_sctool/target/sidechains-sdk-utxoapp_sctool-0.7.1.jar"
EVM_BOOTSTRAPPING_TOOL = get_examples_dir() + "/account/evmapp_sctool/target/sidechains-sdk-evmapp_sctool-0.7.1.jar"

def start_sc_node(i, dirname, extra_args=None, rpchost=None, timewait=None, binary=None, print_output_to_file=False,
auth_api_key=None):
Expand Down
Loading

0 comments on commit 73fa05d

Please sign in to comment.