Compare commits

..

11 Commits

Author SHA1 Message Date
nolash
d3bdc850e5 Add abis back 2021-02-11 18:10:58 +01:00
nolash
33c00ed93b Set cic-eth seed script to run sequentially after contract migration 2021-02-11 17:20:31 +01:00
nolash
6d6285a897 Once AGAIN fix ports in docker compose 2021-02-11 15:49:56 +01:00
nolash
5216a18fbb Merge remote-tracking branch 'origin/master' into lash/correct-db-names 2021-02-11 14:23:23 +01:00
nolash
2ec785488e Correct db names in compose, cic-eth query var scope 2021-02-11 14:23:17 +01:00
Louis Holbrook
6038d63501 Merge branch 'bvander/fix-mono-repo' into 'master'
Bvander/fix mono repo

See merge request grassrootseconomics/cic-internal-integration!21
2021-02-11 10:14:30 +00:00
d409306e5e Bvander/fix mono repo 2021-02-11 10:14:30 +00:00
Louis Holbrook
b1c3629549 Merge branch 'lash/rename-chainlib' into 'master'
Rename cic-tools to chainlib

See merge request grassrootseconomics/cic-internal-integration!24
2021-02-11 08:30:21 +00:00
nolash
7b13725c26 Rename cic-tools to chainlib 2021-02-11 09:20:01 +01:00
98cdab4353 Merge branch 'philip/ussd-notify' into 'master'
Philip/ussd notify

See merge request grassrootseconomics/cic-internal-integration!11
2021-02-10 17:48:24 +00:00
6051b55b9a Philip/ussd notify 2021-02-10 17:48:24 +00:00
25 changed files with 123 additions and 437 deletions

View File

@@ -1,4 +0,0 @@
.git
.cache
.dot
**/doc

3
.gitmodules vendored
View File

@@ -1,6 +1,3 @@
[submodule "apps/cic-cache"] [submodule "apps/cic-cache"]
path = apps/cic-cache path = apps/cic-cache
url = git@gitlab.com:grassrootseconomics/cic-cache.git url = git@gitlab.com:grassrootseconomics/cic-cache.git
[submodule "apps/cic-meta"]
path = apps/cic-meta
url = git@gitlab.com:grassrootseconomics/cic-meta.git

View File

@@ -2,6 +2,13 @@
## Getting started ## Getting started
## Make some keys
```
docker build -t bloxie . && docker run -v "$(pwd)/keys:/root/keys" --rm -it -t bloxie account new --chain /root/bloxberg.json --keys-path /root/keys
```
### Prepare the repo ### Prepare the repo
This is stuff we need to put in makefile but for now... This is stuff we need to put in makefile but for now...

View File

@@ -1,3 +1,6 @@
/validator/bloxbergData /validator/bloxbergData
/validator/bloxberg.log /validator/bloxberg.log
keys/**/* keys/*
!keys/Bloxberg
keys/Bloxberg/*
!keys/Bloxberg/UTC--2021-02-10T16-57-35Z--03512a62-5334-20cc-4e44-71156f33cff6

View File

@@ -17,7 +17,7 @@ COPY ./validator/bloxberg.json \
./validator/validator.toml \ ./validator/validator.toml \
/root/ /root/
COPY ./keys/ /root/keys/ COPY keys/ /root/keys/
# RUN chown -R parity:parity $HOME/ && \ # RUN chown -R parity:parity $HOME/ && \
# chmod -R 775 $HOME/ && \ # chmod -R 775 $HOME/ && \
@@ -25,4 +25,4 @@ COPY ./keys/ /root/keys/
# USER parity # USER parity
ENTRYPOINT [ "parity" ] ENTRYPOINT [ "parity" ]
CMD [ "--config", "/root/validator.toml", "--keys-path", "/root/keys/" ] CMD [ "--config", "/root/validator.toml", "--keys-path", "/root/keys/", "--password", "/root/validator.pwd" ]

View File

@@ -4,7 +4,7 @@
The original bloxberg node config was kind of annoying so I am running it more like vanilla parity. This way you can pass command flags directly to parity. The original bloxberg node config was kind of annoying so I am running it more like vanilla parity. This way you can pass command flags directly to parity.
## Make some keys ## Make some keys
``` ```
docker build -t bloxie . && docker run -v ${PWD}/keys:/root/keys --rm -it -t bloxie account new --chain /root/bloxberg.json --keys-path /root/keys docker build -t bloxie . && docker run -v ${PWD}/keys:/root/keys --rm -it -t bloxie account new --chain /root/bloxberg.json --keys-path /root/keys --password /root/validator.pwd
``` ```
## Enter the signer address and passwords in the config files ## Enter the signer address and passwords in the config files

View File

@@ -0,0 +1 @@
{"id":"03512a62-5334-20cc-4e44-71156f33cff6","version":3,"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"dc388338c4d4e3203604aeb3d1c6bbfa"},"ciphertext":"8a945775b87089ce94537e011799f3abc1577c5dd1f3fbaebe1cd96dfdfc8b5a","kdf":"pbkdf2","kdfparams":{"c":10240,"dklen":32,"prf":"hmac-sha256","salt":"e8585836540caca01282381f5c1fe128e53b15b40f9d152fbc5a4f82a7967398"},"mac":"a7c7815e84a632ecf6d8f18c981bea73d50cd2e2a855a3e90477fc84ed14f906"},"address":"4f2a5902158c3969b245247f4154971d393301f2","name":"","meta":"{}"}

View File

@@ -7,7 +7,7 @@
"maximumUncleCount": 0, "maximumUncleCount": 0,
"stepDuration": "5", "stepDuration": "5",
"validators" : { "validators" : {
"list": ["0x6bd4e51b3730576ddc4049654ef60ed7f7436cb5"] "list": ["0x4f2a5902158c3969b245247f4154971d393301f2"]
} }
} }
} }

View File

@@ -26,7 +26,7 @@ password = ["/root/validator.pwd"]
[mining] [mining]
#CHANGE ENGINE SIGNER TO VALIDATOR ADDRESS #CHANGE ENGINE SIGNER TO VALIDATOR ADDRESS
engine_signer = "0x6bd4e51b3730576ddc4049654ef60ed7f7436cb5" engine_signer = "0x4f2a5902158c3969b245247f4154971d393301f2"
reseal_on_txs = "none" reseal_on_txs = "none"
force_sealing = true force_sealing = true
min_gas_price = 1000000 min_gas_price = 1000000

View File

@@ -35,6 +35,10 @@ def unpack_signed_raw_tx(tx_raw_bytes, chain_id):
if chain_id != 0: if chain_id != 0:
v = int.from_bytes(d[6], 'big') v = int.from_bytes(d[6], 'big')
vb = v - (chain_id * 2) - 35 vb = v - (chain_id * 2) - 35
while len(d[7]) < 32:
d[7] = b'\x00' + d[7]
while len(d[8]) < 32:
d[8] = b'\x00' + d[8]
s = b''.join([d[7], d[8], bytes([vb])]) s = b''.join([d[7], d[8], bytes([vb])])
so = KeyAPI.Signature(signature_bytes=s) so = KeyAPI.Signature(signature_bytes=s)

View File

@@ -557,27 +557,26 @@ def get_upcoming_tx(status=StatusEnum.READYSEND, recipient=None, before=None, ch
:rtype: dict, with transaction hash as key, signed raw transaction as value :rtype: dict, with transaction hash as key, signed raw transaction as value
""" """
session = SessionBase.create_session() session = SessionBase.create_session()
q = session.query( q_outer = session.query(
TxCache.sender, TxCache.sender,
func.min(Otx.nonce).label('nonce'), func.min(Otx.nonce).label('nonce'),
) )
q = q.join(TxCache) q_outer = q_outer.join(TxCache)
q = q.join(Lock, isouter=True) q_outer = q_outer.join(Lock, isouter=True)
q = q.filter(or_(Lock.flags==None, Lock.flags.op('&')(LockEnum.SEND.value)==0)) q_outer = q_outer.filter(or_(Lock.flags==None, Lock.flags.op('&')(LockEnum.SEND.value)==0))
if status >= StatusEnum.SENT: if status >= StatusEnum.SENT:
raise ValueError('not a valid non-final tx value: {}'.format(s)) raise ValueError('not a valid non-final tx value: {}'.format(s))
q = q.filter(Otx.status==status) q_outer = q_outer.filter(Otx.status==status.value)
if recipient != None: if recipient != None:
q = q.filter(TxCache.recipient==recipient) q_outer = q_outer.filter(TxCache.recipient==recipient)
q = q.group_by(TxCache.sender) q_outer = q_outer.group_by(TxCache.sender)
txs = {} txs = {}
results = q.all() for r in q_outer.all():
for r in results:
q = session.query(Otx) q = session.query(Otx)
q = q.join(TxCache) q = q.join(TxCache)
q = q.filter(TxCache.sender==r.sender) q = q.filter(TxCache.sender==r.sender)
@@ -587,7 +586,6 @@ def get_upcoming_tx(status=StatusEnum.READYSEND, recipient=None, before=None, ch
q = q.filter(TxCache.date_checked<before) q = q.filter(TxCache.date_checked<before)
q = q.order_by(TxCache.date_created.desc()) q = q.order_by(TxCache.date_created.desc())
o = q.first() o = q.first()
# TODO: audit; should this be possible if a row is found in the initial query? If not, at a minimum log error. # TODO: audit; should this be possible if a row is found in the initial query? If not, at a minimum log error.
@@ -602,7 +600,6 @@ def get_upcoming_tx(status=StatusEnum.READYSEND, recipient=None, before=None, ch
q = q.filter(TxCache.otx_id==o.id) q = q.filter(TxCache.otx_id==o.id)
o = q.first() o = q.first()
logg.debug('oooo {}'.format(o))
o.date_checked = datetime.datetime.now() o.date_checked = datetime.datetime.now()
session.add(o) session.add(o)
session.commit() session.commit()

View File

@@ -68,7 +68,7 @@ app = celery.Celery(backend=config.get('CELERY_RESULT_URL'), broker=config.get(
queue = args.q queue = args.q
dsn = dsn_from_config(config) dsn = dsn_from_config(config)
SessionBase.connect(dsn) SessionBase.connect(dsn, debug=config.true('DATABASE_DEBUG'))
re_websocket = re.compile('^wss?://') re_websocket = re.compile('^wss?://')

View File

@@ -43,7 +43,6 @@ COPY cic-eth/cic_eth/db/migrations/ /usr/local/share/cic-eth/alembic/
COPY cic-eth/crypto_dev_signer_config/ /usr/local/etc/crypto-dev-signer/ COPY cic-eth/crypto_dev_signer_config/ /usr/local/etc/crypto-dev-signer/
RUN apt-get install -y git && \ RUN apt-get install -y git && \
git clone https://gitlab.com/grassrootseconomics/cic-contracts.git &&\ git clone https://gitlab.com/grassrootseconomics/cic-contracts.git && \
mkdir -p /usr/local/share/cic/solidity/abi && \ mkdir -p /usr/local/share/cic/solidity && \
cp cic-contracts/abis/* /usr/local/share/cic/solidity/abi/ cp -R cic-contracts/abis /usr/local/share/cic/solidity/abi

View File

@@ -39,6 +39,8 @@ COPY cic-ussd/docker/db.sh \
/root/ /root/
RUN chmod +x /root/*.sh RUN chmod +x /root/*.sh
RUN cd cic-ussd && \
pip install $pip_extra_index_url_flag .
# copy config and migration files to definitive file so they can be referenced in path definitions for running scripts # copy config and migration files to definitive file so they can be referenced in path definitions for running scripts

View File

@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
. ./db.sh . /root/db.sh
/usr/local/bin/cic-ussd-tasker -vv "$@" /usr/local/bin/cic-ussd-tasker -vv "$@"

View File

@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
. ./db.sh . /root/db.sh
/usr/local/bin/uwsgi --wsgi-file /usr/local/lib/python3.8/site-packages/cic_ussd/runnable/server.py --http :80 --pyargv "-vv" /usr/local/bin/uwsgi --wsgi-file /usr/local/lib/python3.8/site-packages/cic_ussd/runnable/server.py --http :9000 --pyargv "-vv"

View File

@@ -6,10 +6,10 @@ betterpath==0.2.2
billiard==3.6.3.0 billiard==3.6.3.0
celery==4.4.7 celery==4.4.7
cffi==1.14.3 cffi==1.14.3
cic-eth~=0.10.0a9 cic-eth~=0.10.0a22
cic-notify==0.3.1 cic-notify==0.3.1
click==7.1.2 click==7.1.2
confini==0.3.5 confini~=0.3.6a1
cryptography==3.2.1 cryptography==3.2.1
faker==4.17.1 faker==4.17.1
iniconfig==1.1.1 iniconfig==1.1.1

View File

@@ -19,7 +19,7 @@ echo \n
# pushd /usr/src # pushd /usr/src
init_level_file=${CIC_DATA_DIR}/.init init_level_file=${CIC_DATA_DIR}/.init
echo -n 0 > $init_level_file echo -n 1 > $init_level_file
# Abort on any error (including if wait-for-it fails). # Abort on any error (including if wait-for-it fails).
set -e set -e
@@ -68,6 +68,6 @@ cat $CIC_DATA_DIR/envlist | bash from_env.sh > $CIC_DATA_DIR/.env_all
set +a set +a
set +e set +e
echo -n 1 > $init_level_file echo -n 2 > $init_level_file
exec "$@" exec "$@"

View File

@@ -1,220 +0,0 @@
#!python3
# standard imports
import json
import time
import datetime
import random
import logging
import os
import base64
import hashlib
import sys
import vobject
import celery
import web3
from faker import Faker
import cic_registry
import confini
from cic_eth.api import Api
logging.basicConfig(level=logging.DEBUG)
logg = logging.getLogger()
fake = Faker(['sl', 'en_US', 'no', 'de', 'ro'])
config_dir = os.environ.get('CONFINI_DIR', '/usr/local/etc/cic')
argparser = argparse.ArgumentParser()
argparser.add_argument('-c', type=str, default=config_dir, help='config file')
argparser.add_argument('-i', '--chain-spec', dest='i', type=str, help='chain spec')
argparser.add_argument('-z', '--zero-balance', dest='z', action='store_true', help='do not generate initial balances')
argparser.add_argument('source', type=str, help='input directory to process')
args = argparser.parse_args()
config = confini.Config(config_dir, os.environ.get('CONFINI_ENV_PREFIX'))
config.process()
args_override = {
'CIC_CHAIN_SPEC': getattr(args, 'i'),
'ETH_PROVIDER': getattr(args, 'p'),
}
config.dict_override(args_override, 'cli flag')
logg.info('loaded config\n{}'.format(config))
# registration time generation
dt_now = datetime.datetime.utcnow()
dt_then = dt_now - datetime.timedelta(weeks=150)
ts_now = int(dt_now.timestamp())
ts_then = int(dt_then.timestamp())
celery_app = celery.Celery(broker=config.get('CELERY_BROKER_URL'), backend=config.get('CELERY_RESULT_URL'))
api = Api(config.get('CIC_CHAIN_SPEC'))
gift_activate = not args.z
gift_max = 10000
gift_factor = (10**9)
categories = [
"food/water",
"fuel/energy",
"education",
"health",
"shop",
"environment",
"transport",
"farming/labor",
"savingsgroup",
]
phone_idx = []
def genPhoneIndex(phone):
h = hashlib.new('sha256')
h.update(phone.encode('utf-8'))
h.update(b'cic.msisdn')
return h.digest().hex()
def genId(addr, typ):
h = hashlib.new('sha256')
h.update(bytes.fromhex(addr[2:]))
h.update(typ.encode('utf-8'))
return h.digest().hex()
def genDate():
logg.info(ts_then)
ts = random.randint(ts_then, ts_now)
return datetime.datetime.fromtimestamp(ts).timestamp()
def genPhone():
return fake.msisdn()
def genPersonal(phone):
fn = fake.first_name()
ln = fake.last_name()
e = fake.email()
v = vobject.vCard()
first_name = fake.first_name()
last_name = fake.last_name()
v.add('n')
v.n.value = vobject.vcard.Name(family=last_name, given=first_name)
v.add('fn')
v.fn.value = '{} {}'.format(first_name, last_name)
v.add('tel')
v.tel.typ_param = 'CELL'
v.tel.value = phone
v.add('email')
v.email.value = fake.email()
vcard_serialized = v.serialize()
vcard_base64 = base64.b64encode(vcard_serialized.encode('utf-8'))
return vcard_base64.decode('utf-8')
def genCats():
i = random.randint(0, 3)
return random.choices(categories, k=i)
def genAmount():
return random.randint(0, gift_max) * gift_factor
def gen():
old_blockchain_address = '0x' + os.urandom(20).hex()
accounts_index_account = config.get('DEV_ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER')
if not accounts_index_account:
accounts_index_account = None
logg.debug('accounts indexwriter {}'.format(accounts_index_account))
t = api.create_account()
new_blockchain_address = t.get()
gender = random.choice(['female', 'male', 'other'])
phone = genPhone()
v = genPersonal(phone)
o = {
'date_registered': genDate(),
'vcard': v,
'gender': gender,
'key': {
'ethereum': [
old_blockchain_address,
new_blockchain_address,
],
},
'location': {
'latitude': str(fake.latitude()),
'longitude': str(fake.longitude()),
'external': { # add osm lookup
}
},
'selling': genCats(),
}
uid = genId(new_blockchain_address, 'cic.person')
#logg.info('gifting {} to {}'.format(amount, new_blockchain_address))
return (uid, phone, o)
def prepareLocalFilePath(datadir, address):
parts = [
address[:2],
address[2:4],
]
dirs = '{}/{}/{}'.format(
datadir,
parts[0],
parts[1],
)
os.makedirs(dirs, exist_ok=True)
return dirs
def main():
os.makedirs('data/person', exist_ok=True)
os.makedirs('data/phone', exist_ok=True)
fa = open('./data/amounts', 'w')
fb = open('./data/addresses', 'w')
for i in range(int(sys.argv[1])):
(uid, phone, o) = gen()
eth = o['key']['ethereum'][1]
print(o)
d = prepareLocalFilePath('./data/person', uid)
f = open('{}/{}'.format(d, uid), 'w')
json.dump(o, f)
f.close()
pidx = genPhoneIndex(phone)
d = prepareLocalFilePath('./data/phone', uid)
f = open('{}/{}'.format(d, pidx), 'w')
f.write(eth)
f.close()
amount = genAmount()
fa.write('{},{}\n'.format(eth,amount))
fb.write('{}\n'.format(eth))
logg.debug('pidx {}, uid {}, eth {}, amount {}'.format(pidx, uid, eth, amount))
fb.close()
fa.close()
if __name__ == '__main__':
main()

View File

@@ -1,115 +0,0 @@
# standard imports
import os
import sys
import json
import logging
import argparse
import uuid
from glob import glob
# third-party imports
import redis
import confini
import celery
from chainlib.eth.address import to_checksum
from cic_types.models.person import Person
from cic_eth.api.api_task import Api
from cic_registry.chain import ChainSpec
logging.basicConfig(level=logging.WARNING)
logg = logging.getLogger()
default_config_dir = '/usr/local/etc/cic'
argparser = argparse.ArgumentParser()
argparser.add_argument('-c', type=str, default=default_config_dir, help='config file')
argparser.add_argument('-i', '--chain-spec', dest='i', type=str, default='Ethereum:1', help='Chain specification string')
argparser.add_argument('--redis-host', dest='redis_host', type=str, help='redis host to use for task submission')
argparser.add_argument('--redis-port', dest='redis_port', type=int, help='redis host to use for task submission')
argparser.add_argument('--redis-db', dest='redis_db', type=int, help='redis db to use for task submission and callback')
argparser.add_argument('--redis-host-callback', dest='redis_host_callback', default='localhost', type=str, help='redis host to use for callback')
argparser.add_argument('--redis-port-callback', dest='redis_port_callback', default=6379, type=int, help='redis port to use for callback')
argparser.add_argument('--timeout', default=20.0, type=float, help='Callback timeout')
argparser.add_argument('-q', type=str, default='cic-eth', help='Task queue')
argparser.add_argument('-v', action='store_true', help='Be verbose')
argparser.add_argument('-vv', action='store_true', help='Be more verbose')
argparser.add_argument('user_dir', type=str, help='path to users export dir tree')
args = argparser.parse_args()
if args.v:
logg.setLevel(logging.INFO)
elif args.vv:
logg.setLevel(logging.DEBUG)
config_dir = args.c
config = confini.Config(config_dir, os.environ.get('CONFINI_ENV_PREFIX'))
config.process()
args_override = {
'CIC_CHAIN_SPEC': getattr(args, 'i'),
'REDIS_HOST': getattr(args, 'redis_host'),
'REDIS_PORT': getattr(args, 'redis_port'),
'REDIS_DB': getattr(args, 'redis_db'),
}
config.dict_override(args_override, 'cli')
celery_app = celery.Celery(broker=config.get('CELERY_BROKER_URL'), backend=config.get('CELERY_RESULT_URL'))
redis_host = config.get('REDIS_HOST')
redis_port = config.get('REDIS_PORT')
redis_db = config.get('REDIS_DB')
r = redis.Redis(redis_host, redis_port, redis_db)
ps = r.pubsub()
user_dir = args.user_dir
def register_eth(u):
redis_channel = str(uuid.uuid4())
ps.subscribe(redis_channel)
ps.get_message()
api = Api(
config.get('CIC_CHAIN_SPEC'),
queue=args.q,
callback_param='{}:{}:{}:{}'.format(args.redis_host_callback, args.redis_port_callback, redis_db, redis_channel),
callback_task='cic_eth.callbacks.redis.redis',
callback_queue=args.q,
)
t = api.create_account(register=True)
ps.get_message()
m = ps.get_message(timeout=args.timeout)
address = json.loads(m['data'])
logg.debug('register eth {} {}'.format(u, address))
return address
def register_ussd(u):
pass
if __name__ == '__main__':
fi = open(os.path.join(user_dir, 'addresses.csv'), 'a') # old,new
for x in os.walk(user_dir):
for y in x[2]:
if y[len(y)-5:] != '.json':
continue
filepath = os.path.join(x[0], y)
f = open(filepath, 'r')
try:
o = json.load(f)
except json.decoder.JSONDecodeError as e:
f.close()
logg.error('load error for {}: {}'.format(y, e))
continue
f.close()
u = Person(o)
new_address = register_eth(u)
old_address = u.identities['evm']['bloxberg:8995'][0]
fi.write('{}.{}\n'.format(old_address, new_address))
fi.close()

View File

@@ -1,2 +0,0 @@
cic-types==0.1.0
chainlib==0.0.1a4

View File

@@ -1,6 +1,12 @@
#!/bin/bash #!/bin/bash
# defaults # defaults
initlevel=`cat ${CIC_DATA_DIR}/.init`
echo $inilevel
if [ $initlevel -lt 2 ]; then
>&2 echo "initlevel too low $initlevel"
exit 1
fi
source ${CIC_DATA_DIR}/.env source ${CIC_DATA_DIR}/.env
source ${CIC_DATA_DIR}/.env_all source ${CIC_DATA_DIR}/.env_all
DEV_PIP_EXTRA_INDEX_URL=${DEV_PIP_EXTRA_INDEX_URL:-https://pip.grassrootseconomics.net:8433} DEV_PIP_EXTRA_INDEX_URL=${DEV_PIP_EXTRA_INDEX_URL:-https://pip.grassrootseconomics.net:8433}
@@ -24,7 +30,7 @@ truncate $env_out_file -s 0
set -e set -e
set -a set -a
pip install --extra-index-url $DEV_PIP_EXTRA_INDEX_URL cic-eth==0.10.0a25 cic-tools==0.0.1a4 pip install --extra-index-url $DEV_PIP_EXTRA_INDEX_URL cic-eth==0.10.0a25 chainlib==0.0.1a4
>&2 echo "create account for gas gifter" >&2 echo "create account for gas gifter"
old_gas_provider=$DEV_ETH_ACCOUNT_GAS_PROVIDER old_gas_provider=$DEV_ETH_ACCOUNT_GAS_PROVIDER
@@ -136,7 +142,7 @@ token_description_two=0x54686973206973207468652053617261667520746f6b656e00000000
>&2 echo "add keystore account $keystore_file to accounts index writers" >&2 echo "add keystore account $keystore_file to accounts index writers"
>&2 eth-accounts-index-add -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -r $CIC_ACCOUNTS_INDEX_ADDRESS --writer $DEV_ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER -w $debug >&2 eth-accounts-index-add -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER -r $CIC_ACCOUNTS_INDEX_ADDRESS --writer $DEV_ETH_ACCOUNT_ACCOUNTS_INDEX_WRITER -w $debug
echo -n 2 > $init_level_file echo -n 0 > $init_level_file
set +a set +a
set +e set +e

View File

@@ -35,11 +35,11 @@ services:
context: apps/bloxbergValidatorSetup context: apps/bloxbergValidatorSetup
restart: unless-stopped restart: unless-stopped
ports: ports:
- ${DEV_ETH_PORT_HTTP:-8545}:8545 - ${DEV_ETH_PORT_HTTP:-63545}:8545
- ${DEV_ETH_PORT_WS-8546}:8546 - ${DEV_ETH_PORT_WS-63546}:8546
- 30303 - 30303
volumes: volumes:
#- ./keys:/root/keys # stores the signing key locally - ./apps/bloxbergValidatorSetup/keys:/root/keys # stores the signing key locally
- bloxberg-data:/root/.local/share/io.parity.ethereum/ - bloxberg-data:/root/.local/share/io.parity.ethereum/
# See contents of /initdb/create_db.sql for app user, password and databases # See contents of /initdb/create_db.sql for app user, password and databases
@@ -49,7 +49,7 @@ services:
POSTGRES_HOST_AUTH_METHOD: trust # for postgres user access w/o password. Obvioulsy not safe but allows easy elevated debugging. POSTGRES_HOST_AUTH_METHOD: trust # for postgres user access w/o password. Obvioulsy not safe but allows easy elevated debugging.
# PGDATA: /tmp/cic/postgres # PGDATA: /tmp/cic/postgres
ports: ports:
- ${DEV_POSTGRES_PORT:-5432}:5432 - ${DEV_POSTGRES_PORT:-63432}:5432
volumes: volumes:
- ./scripts/initdb/create_db.sql:/docker-entrypoint-initdb.d/1-create_all_db.sql - ./scripts/initdb/create_db.sql:/docker-entrypoint-initdb.d/1-create_all_db.sql
- ./apps/cic-meta/scripts/initdb/postgresql.sh:/docker-entrypoint-initdb.d/2-init-cic-meta.sh - ./apps/cic-meta/scripts/initdb/postgresql.sh:/docker-entrypoint-initdb.d/2-init-cic-meta.sh
@@ -58,7 +58,7 @@ services:
redis: redis:
image: redis:6.0.9-alpine image: redis:6.0.9-alpine
ports: ports:
- ${DEV_REDIS_PORT:-6379}:6379 - ${DEV_REDIS_PORT:-63379}:6379
command: "--loglevel verbose" command: "--loglevel verbose"
bee: bee:
@@ -68,8 +68,8 @@ services:
BEE_NETWORK_ID: ${BEE_NETWORK_ID:-313} BEE_NETWORK_ID: ${BEE_NETWORK_ID:-313}
BEE_PASSWORD: ${BEE_PASSWORD:-password} BEE_PASSWORD: ${BEE_PASSWORD:-password}
ports: ports:
- ${DEV_BEE_PORT:-1633}:1633 - ${DEV_BEE_PORT:-63633}:1633
- ${DEV_BEE_PORT_DEBUG:-1635}:1635 - ${DEV_BEE_PORT_DEBUG:-63635}:1635
command: "start --swap-enable=false --standalone" command: "start --swap-enable=false --standalone"
volumes: volumes:
- bee-data:/tmp/cic/bee - bee-data:/tmp/cic/bee
@@ -117,8 +117,14 @@ services:
CELERY_RESULT_URL: ${CELERY_RESULT_URL:-redis://redis:6379} CELERY_RESULT_URL: ${CELERY_RESULT_URL:-redis://redis:6379}
DEV_PIP_EXTRA_INDEX_URL: ${DEV_PIP_EXTRA_INDEX_URL:-https://pip.grassrootseconomics.net:8433} DEV_PIP_EXTRA_INDEX_URL: ${DEV_PIP_EXTRA_INDEX_URL:-https://pip.grassrootseconomics.net:8433}
command: ["./seed_cic_eth.sh"] command: ["./seed_cic_eth.sh"]
deploy:
restart_policy:
condition: on-failure
depends_on: depends_on:
- eth - eth
- postgres
- redis
- cic-eth-tasker
volumes: volumes:
- contract-config:/tmp/cic/config - contract-config:/tmp/cic/config
@@ -227,7 +233,7 @@ services:
DATABASE_USER: ${DATABASE_USER:-grassroots} DATABASE_USER: ${DATABASE_USER:-grassroots}
DATABASE_HOST: ${DATABASE_HOST:-postgres} DATABASE_HOST: ${DATABASE_HOST:-postgres}
DATABASE_PASSWORD: ${DATABASE_PASSWORD:-tralala} DATABASE_PASSWORD: ${DATABASE_PASSWORD:-tralala}
DATABASE_NAME: ${DATABASE_NAME_CIC_CACHE:-cic_cache} DATABASE_NAME: ${DATABASE_NAME_CIC_CACHE:-cic_eth}
DATABASE_PORT: ${DATABASE_PORT:-5432} DATABASE_PORT: ${DATABASE_PORT:-5432}
DATABASE_ENGINE: ${DATABASE_ENGINE:-postgres} DATABASE_ENGINE: ${DATABASE_ENGINE:-postgres}
DATABASE_DRIVER: ${DATABASE_DRIVER:-psycopg2} DATABASE_DRIVER: ${DATABASE_DRIVER:-psycopg2}
@@ -263,7 +269,7 @@ services:
DATABASE_USER: ${DATABASE_USER:-grassroots} DATABASE_USER: ${DATABASE_USER:-grassroots}
DATABASE_HOST: ${DATABASE_HOST:-postgres} DATABASE_HOST: ${DATABASE_HOST:-postgres}
DATABASE_PASSWORD: ${DATABASE_PASSWORD:-tralala} DATABASE_PASSWORD: ${DATABASE_PASSWORD:-tralala}
DATABASE_NAME: ${DATABASE_NAME_CIC_CACHE:-cic_cache} DATABASE_NAME: ${DATABASE_NAME_CIC_CACHE:-cic_eth}
DATABASE_PORT: ${DATABASE_PORT:-5432} DATABASE_PORT: ${DATABASE_PORT:-5432}
DATABASE_ENGINE: ${DATABASE_ENGINE:-postgres} DATABASE_ENGINE: ${DATABASE_ENGINE:-postgres}
DATABASE_DRIVER: ${DATABASE_DRIVER:-psycopg2} DATABASE_DRIVER: ${DATABASE_DRIVER:-psycopg2}
@@ -299,7 +305,7 @@ services:
DATABASE_USER: ${DATABASE_USER:-grassroots} DATABASE_USER: ${DATABASE_USER:-grassroots}
DATABASE_HOST: ${DATABASE_HOST:-postgres} DATABASE_HOST: ${DATABASE_HOST:-postgres}
DATABASE_PASSWORD: ${DATABASE_PASSWORD:-tralala} DATABASE_PASSWORD: ${DATABASE_PASSWORD:-tralala}
DATABASE_NAME: ${DATABASE_NAME_CIC_CACHE:-cic_cache} DATABASE_NAME: ${DATABASE_NAME_CIC_CACHE:-cic_eth}
DATABASE_PORT: ${DATABASE_PORT:-5432} DATABASE_PORT: ${DATABASE_PORT:-5432}
DATABASE_ENGINE: ${DATABASE_ENGINE:-postgres} DATABASE_ENGINE: ${DATABASE_ENGINE:-postgres}
DATABASE_DRIVER: ${DATABASE_DRIVER:-psycopg2} DATABASE_DRIVER: ${DATABASE_DRIVER:-psycopg2}
@@ -309,6 +315,7 @@ services:
CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://redis} CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://redis}
CELERY_RESULT_URL: ${CELERY_RESULT_URL:-redis://redis} CELERY_RESULT_URL: ${CELERY_RESULT_URL:-redis://redis}
TASKS_TRANSFER_CALLBACKS: $TASKS_TRANSFER_CALLBACKS TASKS_TRANSFER_CALLBACKS: $TASKS_TRANSFER_CALLBACKS
DATABASE_DEBUG: ${DATABASE_DEBUG:-true}
depends_on: depends_on:
- eth - eth
@@ -337,7 +344,7 @@ services:
DATABASE_USER: ${DATABASE_USER:-grassroots} DATABASE_USER: ${DATABASE_USER:-grassroots}
DATABASE_HOST: ${DATABASE_HOST:-postgres} DATABASE_HOST: ${DATABASE_HOST:-postgres}
DATABASE_PASSWORD: ${DATABASE_PASSWORD:-tralala} DATABASE_PASSWORD: ${DATABASE_PASSWORD:-tralala}
DATABASE_NAME: ${DATABASE_NAME_CIC_CACHE:-cic_cache} DATABASE_NAME: ${DATABASE_NAME_CIC_CACHE:-cic_eth}
DATABASE_PORT: ${DATABASE_PORT:-5432} DATABASE_PORT: ${DATABASE_PORT:-5432}
DATABASE_ENGINE: ${DATABASE_ENGINE:-postgres} DATABASE_ENGINE: ${DATABASE_ENGINE:-postgres}
DATABASE_DRIVER: ${DATABASE_DRIVER:-psycopg2} DATABASE_DRIVER: ${DATABASE_DRIVER:-psycopg2}
@@ -347,6 +354,7 @@ services:
CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://redis} CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://redis}
CELERY_RESULT_URL: ${CELERY_RESULT_URL:-redis://redis} CELERY_RESULT_URL: ${CELERY_RESULT_URL:-redis://redis}
TASKS_TRANSFER_CALLBACKS: $TASKS_TRANSFER_CALLBACKS TASKS_TRANSFER_CALLBACKS: $TASKS_TRANSFER_CALLBACKS
CIC_TX_RETRY_DELAY: 15
depends_on: depends_on:
- eth - eth
- postgres - postgres
@@ -373,11 +381,13 @@ services:
CIC_CHAIN_SPEC: $CIC_CHAIN_SPEC CIC_CHAIN_SPEC: $CIC_CHAIN_SPEC
CELERY_BROKER_URL: $CELERY_BROKER_URL CELERY_BROKER_URL: $CELERY_BROKER_URL
CELERY_RESULT_URL: $CELERY_RESULT_URL CELERY_RESULT_URL: $CELERY_RESULT_URL
SERVER_PORT: 80 SERVER_PORT: 8000
depends_on: depends_on:
- eth - eth
- postgres - postgres
- redis - redis
ports:
- ${HTTP_PORT_CIC_ETH:-63314}:8000
deploy: deploy:
restart_policy: restart_policy:
condition: on-failure condition: on-failure
@@ -438,8 +448,8 @@ services:
DATABASE_USER: ${DATABASE_USER:-grassroots} DATABASE_USER: ${DATABASE_USER:-grassroots}
DATABASE_HOST: ${DATABASE_HOST:-postgres} DATABASE_HOST: ${DATABASE_HOST:-postgres}
DATABASE_PORT: ${DATABASE_PORT:-5432} DATABASE_PORT: ${DATABASE_PORT:-5432}
SERVER_HOST: ${SERVER_HOST:-localhost} SERVER_HOST: localhost
SERVER_PORT: ${SERVER_HOST:-80} SERVER_PORT: 8000
DATABASE_SCHEMA_SQL_PATH: "" DATABASE_SCHEMA_SQL_PATH: ""
PGP_EXPORTS_DIR: /tmp/src/cic-meta/tests/ PGP_EXPORTS_DIR: /tmp/src/cic-meta/tests/
PGP_PRIVATEKEY_FILE: privatekeys.asc PGP_PRIVATEKEY_FILE: privatekeys.asc
@@ -448,7 +458,7 @@ services:
PGP_PUBLICKEY_ACTIVE_FILE: publickeys.asc PGP_PUBLICKEY_ACTIVE_FILE: publickeys.asc
PGP_PUBLICKEY_ENCRYPT_FILE: publickeys.asc PGP_PUBLICKEY_ENCRYPT_FILE: publickeys.asc
ports: ports:
- ${HTTP_PORT_CIC_META:-63380}:${SERVER_PORT:-80} - ${HTTP_PORT_CIC_META:-63380}:8000
depends_on: depends_on:
- postgres - postgres
deploy: deploy:
@@ -458,49 +468,49 @@ services:
- ${LOCAL_VOLUME_DIR:-/tmp/cic}/pgp:/tmp/cic/pgp - ${LOCAL_VOLUME_DIR:-/tmp/cic}/pgp:/tmp/cic/pgp
command: "/root/start_server.sh -vv" command: "/root/start_server.sh -vv"
# cic-ussd-server: cic-ussd-server:
# # image: grassrootseconomics:cic-ussd # image: grassrootseconomics:cic-ussd
# build: build:
# context: apps/ context: apps/
# dockerfile: cic-ussd/docker/Dockerfile dockerfile: cic-ussd/docker/Dockerfile
# environment: environment:
# DATABASE_USER: grassroots DATABASE_USER: grassroots
# DATABASE_HOST: postgres DATABASE_HOST: postgres
# DATABASE_PORT: 5432 DATABASE_PORT: 5432
# DATABASE_PASSWORD: tralala DATABASE_PASSWORD: tralala
# DATABASE_NAME: cic_ussd DATABASE_NAME: cic_ussd
# DATABASE_ENGINE: postgresql DATABASE_ENGINE: postgresql
# DATABASE_DRIVER: psycopg2 DATABASE_DRIVER: psycopg2
# SERVER_PORT: 80 SERVER_PORT: 8000
# ports: ports:
# - 80:8082 - ${HTTP_PORT_CIC_USSD:-63315}:8000
# depends_on: depends_on:
# - postgres - postgres
# - redis - redis
# deploy: deploy:
# restart_policy: restart_policy:
# condition: on-failure condition: on-failure
# command: "/root/start_uwsgi.sh" command: "/root/start_uwsgi.sh"
#
# cic-ussd-tasker: cic-ussd-tasker:
# # image: grassrootseconomics:cic-ussd # image: grassrootseconomics:cic-ussd
# build: build:
# context: apps context: apps
# dockerfile: cic-ussd/docker/Dockerfile dockerfile: cic-ussd/docker/Dockerfile
# environment: environment:
# DATABASE_USER: grassroots DATABASE_USER: grassroots
# DATABASE_HOST: postgres DATABASE_HOST: postgres
# DATABASE_PORT: 5432 DATABASE_PORT: 5432
# DATABASE_PASSWORD: tralala DATABASE_PASSWORD: tralala
# DATABASE_NAME: cic_ussd DATABASE_NAME: cic_ussd
# DATABASE_ENGINE: postgresql DATABASE_ENGINE: postgresql
# DATABASE_DRIVER: psycopg2 DATABASE_DRIVER: psycopg2
# CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://redis} CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://redis}
# CELERY_RESULT_URL: ${CELERY_BROKER_URL:-redis://redis} CELERY_RESULT_URL: ${CELERY_BROKER_URL:-redis://redis}
# depends_on: depends_on:
# - postgres - postgres
# - redis - redis
# deploy: deploy:
# restart_policy: restart_policy:
# condition: on-failure condition: on-failure
# command: "/root/start_tasker.sh -q cic-ussd" command: "/root/start_tasker.sh -q cic-ussd"

View File

@@ -0,0 +1 @@
{}