Skip to content

Commit 9410576

Browse files
cmickeybbvavala
authored andcommitted
THIS IS A BREAKING COMMIT: centralize and reduce the environment variables for configuration (hyperledger-labs#115)
* Move enclave module configuration to a single file Multiple applications depended on the enclave module configuration. All applications now share a single enclave module configuration file. To use effectively, this requires that two new environment variables are set: PDO_SPID and PDO_SPID_CERT_FILE. If these are not set, then the enclave configuration uses the old default values. Signed-off-by: Mic Bowman <[email protected]> * Add a file to define common configuration environment variables Signed-off-by: Mic Bowman <[email protected]> * Remove the need to set DSTDIR in the build Makefile Variable now defaults to the value of PDO_INSTALL_ROOT. Signed-off-by: Mic Bowman <[email protected]> * Change the environment variable used for the ledger URL to PDO_LEDGER_URL Signed-off-by: Mic Bowman <[email protected]> * Replace the environment variable CONTRACTHOME with PDO_HOME Signed-off-by: Mic Bowman <[email protected]> * Fix conditional assignment of the environment variables Signed-off-by: Mic Bowman <[email protected]>
1 parent 86201d4 commit 9410576

33 files changed

+252
-152
lines changed

BUILD.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ First, make sure environment variables are set as described in the
5959
[prerequisites](#prerequisites) section.
6060

6161
The quickstart build will set up a python virtual environment to install things
62-
into. Set `CONTRACTHOME` to point to the target install directory for PDO
62+
into. Set `PDO_HOME` to point to the target install directory for PDO
6363
components. You will need this environment variable set in every shell session
6464
where you interact with PDO.
6565
```
66-
export CONTRACTHOME=`pwd`/__tools__/build/_dev/opt/pdo
66+
export PDO_HOME=`pwd`/__tools__/build/_dev/opt/pdo
6767
```
6868

6969
Change to the quickstart build directory:
@@ -91,7 +91,7 @@ Run the test suite to check that the installation is working correctly. Replace
9191
the URL with the URL for the REST API of your Sawtooth installation.
9292
```
9393
cd ..
94-
LEDGER_URL=http://127.0.0.1:8008 ./run-tests.sh
94+
PDO_LEDGER_URL=http://127.0.0.1:8008 ./run-tests.sh
9595
```
9696

9797
# <a name="manual-install"></a>Building and installing PDO manually
@@ -134,11 +134,11 @@ pip install --upgrade pyparsing
134134
```
135135

136136
If you are using this recommended virtual environment setup, you will also need
137-
to export the environment variable `CONTRACTHOME`. This is used by PDO to find
137+
to export the environment variable `PDO_HOME`. This is used by PDO to find
138138
configuration files and encryption keys. Set this variable in your current
139139
shell session with:
140140
```
141-
export CONTRACTHOME=`pwd`/venv/opt/pdo
141+
export PDO_HOME=`pwd`/venv/opt/pdo
142142
```
143143

144144
## <a name="common"></a>Compiling the Common C++ Libraries

PREREQUISITES.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ For information on how to create and register a certificate with IAS see [here](
160160
Ledger registration can be done after build through a script in the eservice directory,
161161
given the required environment variables are set. You will need:
162162

163-
- `LEDGER_URL`
163+
- `PDO_LEDGER_URL`
164164
The URL of the ledger you wish to register with.
165165

166166
- `PDO_LEDGER_KEY`

__tools__/build/Makefile

+17-11
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,18 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
# SRCDIR defaults to the current directory
15+
# SCRIPTDIR defaults to the current directory
16+
# PDO_SOURCE_ROOT defaults to root of the parent directory
1617
# DSTDIR defaults to _dev under the current directory
1718
# Both can be overridden with environment variables
18-
SRCDIR?=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
19-
DSTDIR?=$(abspath $(SRCDIR)/_dev)
20-
ROOTDIR=$(abspath $(SRCDIR)/../..)
19+
SCRIPTDIR ?= $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
2120

22-
KEYGEN=$(abspath $(SRCDIR)/../make-keys)
23-
CNFGEN=$(abspath $(SRCDIR)/../expand-config)
24-
PKGGEN=$(abspath $(SRCDIR)/../rebuild.sh)
21+
DSTDIR ?= $(or $(PDO_INSTALL_ROOT),$(PDO_INSTALL_ROOT),$(SCRIPTDIR)/_dev)
22+
SRCDIR ?= $(SCRIPTDIR)/../..
23+
24+
KEYGEN=$(abspath $(SCRIPTDIR)/../make-keys)
25+
CNFGEN=$(abspath $(SCRIPTDIR)/../expand-config)
26+
PKGGEN=$(abspath $(SCRIPTDIR)/../rebuild.sh)
2527

2628
PY_VERSION=${shell python3 --version | sed 's/Python \(3\.[0-9]\).*/\1/'}
2729
PYTHON_DIR=$(DSTDIR)/lib/python$(PY_VERSION)/site-packages/
@@ -65,16 +67,20 @@ keys :
6567
conf :
6668
@ echo Create configuration files from templates
6769
@ . $(abspath $(DSTDIR)/bin/activate) ; \
68-
$(CNFGEN) --template eservice.toml --template-directory $(SRCDIR)/opt/pdo/etc/template --output-directory $(DSTDIR)/opt/pdo/etc \
70+
$(CNFGEN) --template eservice.toml --template-directory $(SCRIPTDIR)/opt/pdo/etc/template \
71+
--output-directory $(DSTDIR)/opt/pdo/etc \
6972
multiple --file-base eservice --http-base 7100 --count 5
7073
@ . $(abspath $(DSTDIR)/bin/activate) ; \
71-
$(CNFGEN) --template pservice.toml --template-directory $(SRCDIR)/opt/pdo/etc/template --output-directory $(DSTDIR)/opt/pdo/etc \
74+
$(CNFGEN) --template pservice.toml --template-directory $(SCRIPTDIR)/opt/pdo/etc/template \
75+
--output-directory $(DSTDIR)/opt/pdo/etc \
7276
multiple --file-base pservice --http-base 7000 --count 5
7377
@ . $(abspath $(DSTDIR)/bin/activate) ; \
74-
$(CNFGEN) --template enclave.toml --template-directory $(SRCDIR)/opt/pdo/etc/template --output-directory $(DSTDIR)/opt/pdo/etc \
78+
$(CNFGEN) --template enclave.toml --template-directory $(SCRIPTDIR)/opt/pdo/etc/template \
79+
--output-directory $(DSTDIR)/opt/pdo/etc \
7580
single --file enclave.toml
7681
@ . $(abspath $(DSTDIR)/bin/activate) ; \
77-
$(CNFGEN) --template pcontract.toml --template-directory $(SRCDIR)/opt/pdo/etc/template --output-directory $(DSTDIR)/opt/pdo/etc \
82+
$(CNFGEN) --template pcontract.toml --template-directory $(SCRIPTDIR)/opt/pdo/etc/template \
83+
--output-directory $(DSTDIR)/opt/pdo/etc \
7884
single --file pcontract.toml
7985

8086
template :

__tools__/common-config.sh

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/bin/bash
2+
3+
# Copyright 2018 Intel Corporation
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
SCRIPTDIR="$(dirname $(readlink --canonicalize ${BASH_SOURCE}))"
18+
PDO_SOURCE_ROOT="$(realpath ${SCRIPTDIR}/..)"
19+
20+
# -----------------------------------------------------------------
21+
# TINY_SCHEME_SRC points to the installation of the tinyscheme
22+
# source in order to build the library used to debug and test
23+
# contracts outside of the contract enclave
24+
# -----------------------------------------------------------------
25+
export TINY_SCHEME_SRC="${TINY_SCHEME_SRC:-/}"
26+
27+
# -----------------------------------------------------------------
28+
# SGX_MODE determines the SGX mode of operation. When the variable is
29+
# set to "SIM", then the SGX enclaves will be compiled for simulator
30+
# mode. When the variable is set to "HW", the enclaves will be compiled
31+
# to run in a real SGX enclave.
32+
# -----------------------------------------------------------------
33+
export SGX_MODE="${SGX_MODE:-SIM}"
34+
35+
# -----------------------------------------------------------------
36+
# SGX_DEBUG determines whether additional debugging functions
37+
# will be compiled into the enclaves. Since SGX_DEBUG potentially
38+
# exposes information about what is happening inside a contract, do
39+
# not use with confidential contracts.
40+
# -----------------------------------------------------------------
41+
export SGX_DEBUG="${SGX_DEBUG:-1}"
42+
43+
# -----------------------------------------------------------------
44+
# PDO_INSTALL_ROOT is the root of the directory in which the virtual
45+
# enviroment will be built; this is equivalent to the old DSTDIR,
46+
# generally PDO_HOME will point to PDO_INSTALL_ROOT/opt/pdo
47+
# -----------------------------------------------------------------
48+
export PDO_INSTALL_ROOT="${PDO_INSTALL_ROOT:-${PDO_SOURCE_ROOT}/__tools__/build/_dev}"
49+
50+
# -----------------------------------------------------------------
51+
# PDO_HOME is the directory where PDO-specific files
52+
# are stored include configuration files, data files, compiled
53+
# contracts, contract user keys and service scripts.
54+
# -----------------------------------------------------------------
55+
export PDO_HOME="${PDO_HOME:-${PDO_INSTALL_ROOT}/opt/pdo}"
56+
57+
# -----------------------------------------------------------------
58+
# PDO_KEY_ROOT is the root directory where the keys are stored
59+
# for SGX, IAS, and Sawtooth integration; files in this directory
60+
# are not automatically generated.
61+
# -----------------------------------------------------------------
62+
export PDO_KEY_ROOT="${PDO_KEY_ROOT:-${PDO_INSTALL_ROOT}/opt/pdo/keys}"
63+
64+
# -----------------------------------------------------------------
65+
# PDO_ENCLAVE_PEM contains the name of the file containing the key
66+
# used to sign the enclave. The key is generated by the command:
67+
# openssl genrsa -3 -out ${PDO_ENCLAVE_PEM} 3072
68+
# -----------------------------------------------------------------
69+
export PDO_ENCLAVE_PEM="${PDO_KEY_ROOT}/pdo_enclave.pem"
70+
71+
# -----------------------------------------------------------------
72+
# The path of the PEM file containing the public key used to verify
73+
# quotes from the Intel Attestation Service.
74+
# <<HOW TO GET>>
75+
# -----------------------------------------------------------------
76+
export PDO_IAS_KEY="${PDO_KEY_ROOT}/pdo_ias_key.pem"
77+
78+
# -----------------------------------------------------------------
79+
# PDO_LEDGER_KEY is used to update settings in the Sawtooth validator.
80+
# This is the key used by the Sawtooth ledger and is generally
81+
# found in the file .sawtooth/keys/sawtooth.priv in the
82+
# Sawtooth installation directory hiearchy.
83+
# -----------------------------------------------------------------
84+
export PDO_LEDGER_KEY="${PDO_KEY_ROOT}/pdo_validator.priv"
85+
86+
# -----------------------------------------------------------------
87+
# PDO_PDO_LEDGER_URL is the URL is to submit transactions to the
88+
# Sawtooth ledger.
89+
# -----------------------------------------------------------------
90+
export PDO_LEDGER_URL="${PDO_LEDGER_URL:-http://127.0.0.1:8008}"
91+
92+
# -----------------------------------------------------------------
93+
# PDO_SPID is the ID that accompanies the certificate registered
94+
# with the Intel Attestation Service.
95+
# -----------------------------------------------------------------
96+
export PDO_SPID="${PDO_SPID:-$(cat ${PDO_KEY_ROOT}/sgx_spid.txt)}"
97+
98+
# -----------------------------------------------------------------
99+
# PDO_SPID_CERT_FILE is the name of the file that contains the
100+
# PEM-encoded certificate that was submitted to Intel in order to
101+
# obtain the SPID
102+
# -----------------------------------------------------------------
103+
export PDO_SPID_CERT_FILE="${PDO_SPID_CERT_FILE:-${PDO_KEY_ROOT}/sgx_spid_cert.pem}"

__tools__/expand-config

+6-6
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ from string import Template
2525

2626
## -----------------------------------------------------------------
2727
ContractHost = os.environ.get("HOSTNAME", "localhost")
28-
ContractHome = os.environ.get("CONTRACTHOME") or os.path.realpath("/opt/pdo")
29-
ContractEtc = os.environ.get("CONTRACTETC") or os.path.join(ContractHome, "etc")
30-
ContractKeys = os.environ.get("CONTRACTKEYS") or os.path.join(ContractHome, "keys")
31-
ContractLogs = os.environ.get("CONTRACTLOGS") or os.path.join(ContractHome, "logs")
32-
ContractData = os.environ.get("CONTRACTDATA") or os.path.join(ContractHome, "data")
28+
ContractHome = os.environ.get("PDO_HOME") or os.path.realpath("/opt/pdo")
29+
ContractEtc = os.path.join(ContractHome, "etc")
30+
ContractKeys = os.path.join(ContractHome, "keys")
31+
ContractLogs = os.path.join(ContractHome, "logs")
32+
ContractData = os.path.join(ContractHome, "data")
3333
HttpsProxy = os.environ.get("https_proxy", "")
3434

35-
LedgerURL = os.environ.get("LEDGER_URL", "http://127.0.0.1:8008/")
35+
LedgerURL = os.environ.get("PDO_LEDGER_URL", "http://127.0.0.1:8008/")
3636
SPID = os.environ.get("PDO_SPID",'DEADBEEF00000000DEADBEEF00000000')
3737
SPID_CERT_FILE = os.environ.get("PDO_SPID_CERT_FILE",'/etc/sawtooth/ias_rk_pub.pem')
3838

__tools__/rebuild.sh

+3-3
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ function try() {
5858
yell --------------- CONFIG AND ENVIRONMENT CHECK ---------------
5959

6060
: "${TINY_SCHEME_SRC?Missing environment variable TINY_SCHEME_SRC}"
61-
: "${CONTRACTHOME?Missing environment variable CONTRACTHOME}"
61+
: "${PDO_HOME?Missing environment variable PDO_HOME}"
6262
: "${PDO_ENCLAVE_PEM?Missing environment variable PDO_ENCLAVE_PEM}"
6363
: "${SGX_SSL?Missing environment variable SGX_SSL}"
6464
: "${SGX_SDK?Missing environment variable SGXSDKInstallPath}"
@@ -90,8 +90,8 @@ try command -v make
9090
try command -v g++
9191
try command -v tinyscheme
9292

93-
if [ ! -d "${CONTRACTHOME}" ]; then
94-
die CONTRACTHOME directory does not exist
93+
if [ ! -d "${PDO_HOME}" ]; then
94+
die PDO_HOME directory does not exist
9595
fi
9696

9797
# Automatically determine how many cores the host system has

__tools__/run-tests.sh

+15-15
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
: ${LEDGER_URL:=http://127.0.0.1:8008}
17+
: ${PDO_LEDGER_URL:=http://127.0.0.1:8008}
1818

1919
PY3_VERSION=$(python --version | sed 's/Python 3\.\([0-9]\).*/\1/')
2020
if [[ $PY3_VERSION -lt 5 ]]; then
@@ -62,8 +62,8 @@ trap cleanup EXIT
6262

6363
# start the provisioning and enclave services
6464
yell start enclave and provisioning services
65-
try ${VIRTUAL_ENV}/opt/pdo/bin/ps-start.sh --count 5 --ledger ${LEDGER_URL} --clean > /dev/null
66-
try ${VIRTUAL_ENV}/opt/pdo/bin/es-start.sh --count 5 --ledger ${LEDGER_URL} --clean > /dev/null
65+
try ${VIRTUAL_ENV}/opt/pdo/bin/ps-start.sh --count 5 --ledger ${PDO_LEDGER_URL} --clean > /dev/null
66+
try ${VIRTUAL_ENV}/opt/pdo/bin/es-start.sh --count 5 --ledger ${PDO_LEDGER_URL} --clean > /dev/null
6767

6868
cd ${SRCDIR}/eservice/tests
6969
yell start secrets test
@@ -100,19 +100,19 @@ try python test-contract.py --no-ledger --contract mock-contract \
100100
--logfile __screen__ --loglevel warn
101101

102102
yell start request test with provisioning and enclave services
103-
try python test-request.py --ledger ${LEDGER_URL} \
103+
try python test-request.py --ledger ${PDO_LEDGER_URL} \
104104
--pservice http://localhost:7001/ http://localhost:7002 http://localhost:7003 \
105105
--eservice http://localhost:7101/ \
106106
--logfile __screen__ --loglevel warn
107107

108108
yell start contract test with provisioning and enclave services
109-
try python test-contract.py --ledger ${LEDGER_URL} --contract integer-key \
109+
try python test-contract.py --ledger ${PDO_LEDGER_URL} --contract integer-key \
110110
--pservice http://localhost:7001/ http://localhost:7002 http://localhost:7003 \
111111
--eservice http://localhost:7101/ \
112112
--logfile __screen__ --loglevel warn
113113

114114
yell start mock contract test with ledger, this should fail dependency check
115-
python test-contract.py --ledger ${LEDGER_URL} --contract mock-contract \
115+
python test-contract.py --ledger ${PDO_LEDGER_URL} --contract mock-contract \
116116
--logfile __screen__ --loglevel warn
117117
if [ $? == 0 ]; then
118118
die mock contract test succeeded though it should have failed
@@ -123,24 +123,24 @@ yell ---------- start pdo-create and pdo-update tests ----------
123123
## -----------------------------------------------------------------
124124

125125
# make sure we have the necessary files in place
126-
CONFIG_FILE=${CONTRACTHOME}/etc/pcontract.toml
126+
CONFIG_FILE=${PDO_HOME}/etc/pcontract.toml
127127
if [ ! -f ${CONFIG_FILE} ]; then
128128
die missing client configuration file, ${CONFIG_FILE}
129129
fi
130130

131-
CONTRACT_FILE=${CONTRACTHOME}/contracts/_mock-contract.scm
131+
CONTRACT_FILE=${PDO_HOME}/contracts/_mock-contract.scm
132132
if [ ! -f ${CONTRACT_FILE} ]; then
133133
die missing contract source file, ${CONTRACT_FILE}
134134
fi
135135

136136
yell create the contract
137-
try pdo-create --config ${CONFIG_FILE} --ledger ${LEDGER_URL} \
137+
try pdo-create --config ${CONFIG_FILE} --ledger ${PDO_LEDGER_URL} \
138138
--logfile __screen__ --loglevel warn \
139139
--identity user1 --save-file ${SAVE_FILE} \
140140
--contract mock-contract --source _mock-contract.scm
141141

142142
yell increment the value with a simple expression
143-
value=$(pdo-update --config ${CONFIG_FILE} --ledger ${LEDGER_URL} \
143+
value=$(pdo-update --config ${CONFIG_FILE} --ledger ${PDO_LEDGER_URL} \
144144
--logfile __screen__ --loglevel warn \
145145
--identity user1 --save-file ${SAVE_FILE} \
146146
"'(inc-value)")
@@ -149,7 +149,7 @@ if [ $value != "1" ]; then
149149
fi
150150

151151
yell increment the value with a evaluated expression
152-
value=$(pdo-update --config ${CONFIG_FILE} --ledger ${LEDGER_URL} \
152+
value=$(pdo-update --config ${CONFIG_FILE} --ledger ${PDO_LEDGER_URL} \
153153
--logfile __screen__ --loglevel warn \
154154
--identity user1 --save-file ${SAVE_FILE} \
155155
"(list 'inc-value)")
@@ -158,7 +158,7 @@ if [ $value != "2" ]; then
158158
fi
159159

160160
yell get the value and check it
161-
value=$(pdo-update --config ${CONFIG_FILE} --ledger ${LEDGER_URL} \
161+
value=$(pdo-update --config ${CONFIG_FILE} --ledger ${PDO_LEDGER_URL} \
162162
--logfile __screen__ --loglevel warn \
163163
--identity user1 --save-file ${SAVE_FILE} \
164164
"'(get-value)")
@@ -167,7 +167,7 @@ if [ $value != "2" ]; then
167167
fi
168168

169169
yell invalid method, this should fail
170-
pdo-update --config ${CONFIG_FILE} --ledger ${LEDGER_URL} \
170+
pdo-update --config ${CONFIG_FILE} --ledger ${PDO_LEDGER_URL} \
171171
--logfile __screen__ --loglevel warn \
172172
--identity user1 --save-file ${SAVE_FILE} \
173173
"'(no-such-method)"
@@ -176,7 +176,7 @@ if [ $? == 0 ]; then
176176
fi
177177

178178
yell invalid expression, this should fail
179-
pdo-update --config ${CONFIG_FILE} --ledger ${LEDGER_URL} \
179+
pdo-update --config ${CONFIG_FILE} --ledger ${PDO_LEDGER_URL} \
180180
--logfile __screen__ --loglevel warn \
181181
--identity user1 --save-file ${SAVE_FILE} \
182182
"'(no-such-method"
@@ -185,7 +185,7 @@ if [ $? == 0 ]; then
185185
fi
186186

187187
yell policy violation with identity, this should fail
188-
pdo-update --config ${CONFIG_FILE} --ledger ${LEDGER_URL} \
188+
pdo-update --config ${CONFIG_FILE} --ledger ${PDO_LEDGER_URL} \
189189
--logfile __screen__ --loglevel warn \
190190
--identity user2 --save-file ${SAVE_FILE} \
191191
"'(get-value)"

client/docs/BUILD.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,16 @@ where you can install the common Python modules. The rest of these
3232
instructions assume that you have set up a virtual environment for
3333
Python3 and have activated it.
3434

35-
The environment variable ``CONTRACTHOME`` should be set to the directory where
35+
The environment variable ``PDO_HOME`` should be set to the directory where
3636
you expect to configure and run the client utilities. Generally the variable is
3737
set to the path to your virtual environment root plus ``opt/pdo``.
3838

3939
For example:
4040
```bash
41-
prompt> export CONTRACTHOME=$VIRTUAL_ENV/opt/pdo
41+
prompt> export PDO_HOME=$VIRTUAL_ENV/opt/pdo
4242
```
4343

44-
For production deployment, ``CONTRACTHOME`` should be set to ``/opt/pdo``.
44+
For production deployment, ``PDO_HOME`` should be set to ``/opt/pdo``.
4545

4646
## <a name="install">Build & Install the Modules
4747

client/pdo/client/scripts/AuctionTestCLI.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -372,12 +372,12 @@ def LocalMain(config) :
372372

373373
## -----------------------------------------------------------------
374374
ContractHost = os.environ.get("HOSTNAME", "localhost")
375-
ContractHome = os.environ.get("CONTRACTHOME") or os.path.realpath("/opt/pdo")
376-
ContractEtc = os.environ.get("CONTRACTETC") or os.path.join(ContractHome, "etc")
377-
ContractKeys = os.environ.get("CONTRACTKEYS") or os.path.join(ContractHome, "keys")
378-
ContractLogs = os.environ.get("CONTRACTLOGS") or os.path.join(ContractHome, "logs")
379-
ContractData = os.environ.get("CONTRACTDATA") or os.path.join(ContractHome, "data")
380-
LedgerURL = os.environ.get("LEDGER_URL", "http://127.0.0.1:8008/")
375+
ContractHome = os.environ.get("PDO_HOME") or os.path.realpath("/opt/pdo")
376+
ContractEtc = os.path.join(ContractHome, "etc")
377+
ContractKeys = os.path.join(ContractHome, "keys")
378+
ContractLogs = os.path.join(ContractHome, "logs")
379+
ContractData = os.path.join(ContractHome, "data")
380+
LedgerURL = os.environ.get("PDO_LEDGER_URL", "http://127.0.0.1:8008/")
381381
ScriptBase = os.path.splitext(os.path.basename(sys.argv[0]))[0]
382382

383383
config_map = {

0 commit comments

Comments
 (0)