diff --git a/apps/cic-cache/cic_cache/runnable/daemons/filters/erc20.py b/apps/cic-cache/cic_cache/runnable/daemons/filters/erc20.py index 0dc618e0..e3628b40 100644 --- a/apps/cic-cache/cic_cache/runnable/daemons/filters/erc20.py +++ b/apps/cic-cache/cic_cache/runnable/daemons/filters/erc20.py @@ -2,7 +2,6 @@ import logging # external imports -from chainlib.eth.erc20 import ERC20 from chainlib.eth.address import ( to_checksum_address, ) @@ -13,6 +12,7 @@ from cic_eth_registry.error import ( NotAContractError, ContractMismatchError, ) +from eth_erc20 import ERC20 # local imports from .base import TagSyncFilter diff --git a/apps/cic-cache/requirements.txt b/apps/cic-cache/requirements.txt index 82eb421a..9ea4ffd3 100644 --- a/apps/cic-cache/requirements.txt +++ b/apps/cic-cache/requirements.txt @@ -1,12 +1,12 @@ -cic-base~=0.1.2b6 +cic-base~=0.1.2b8 alembic==1.4.2 confini~=0.3.6rc3 uwsgi==2.0.19.1 moolb~=0.1.0 -cic-eth-registry~=0.5.5a1 +cic-eth-registry~=0.5.5a4 SQLAlchemy==1.3.20 semver==2.13.0 psycopg2==2.8.6 celery==4.4.7 redis==3.5.3 -chainsyncer[sql]~=0.0.2a2 +chainsyncer[sql]~=0.0.2a4 diff --git a/apps/cic-cache/test_requirements.txt b/apps/cic-cache/test_requirements.txt index dce79ea1..e0addadd 100644 --- a/apps/cic-cache/test_requirements.txt +++ b/apps/cic-cache/test_requirements.txt @@ -8,6 +8,4 @@ eth_tester==0.5.0b3 py-evm==0.3.0a20 web3==5.12.2 cic-eth-registry~=0.5.5a3 -giftable-erc20-token~=0.0.8a10 -eth-address-index~=0.1.1a10 -sarafu-faucet~=0.0.3a1 +cic-base[full]==0.1.2b8 diff --git a/apps/cic-eth/cic_eth/eth/account.py b/apps/cic-eth/cic_eth/eth/account.py index 46b0060c..de2e7f0b 100644 --- a/apps/cic-eth/cic_eth/eth/account.py +++ b/apps/cic-eth/cic_eth/eth/account.py @@ -3,7 +3,7 @@ import logging # external imports import celery -from erc20_single_shot_faucet import SingleShotFaucet as Faucet +from erc20_faucet import Faucet from hexathon import ( strip_0x, ) @@ -20,8 +20,8 @@ from chainlib.eth.tx import ( ) from chainlib.chain import ChainSpec from chainlib.error import JSONRPCException -from eth_accounts_index import AccountRegistry -from sarafu_faucet import MinterFaucet as Faucet +from eth_accounts_index.registry import AccountRegistry # TODO, use interface module instead (needs gas limit method) +from sarafu_faucet import MinterFaucet from chainqueue.db.models.tx import TxCache # local import @@ -127,13 +127,13 @@ def register(self, account_address, chain_spec_dict, writer_address=None): if writer_address == ZERO_ADDRESS: session.close() raise RoleMissingError('call address for resgistering {}'.format(account_address)) - account_registry_address = registry.by_name('AccountRegistry', sender_address=call_address) + account_registry_address = registry.by_name('AccountsIndex', sender_address=call_address) # Generate and sign transaction rpc_signer = RPCConnection.connect(chain_spec, 'signer') nonce_oracle = CustodialTaskNonceOracle(writer_address, self.request.root_id, session=session) #, default_nonce) - gas_oracle = self.create_gas_oracle(rpc, AccountRegistry.gas) - account_registry = AccountRegistry(chain_spec, signer=rpc_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle) + gas_oracle = self.create_gas_oracle(rpc, AccountsIndex.gas) + account_registry = AccountsIndex(chain_spec, signer=rpc_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle) (tx_hash_hex, tx_signed_raw_hex) = account_registry.add(account_registry_address, writer_address, account_address, tx_format=TxFormat.RLP_SIGNED) rpc_signer.disconnect() @@ -185,7 +185,7 @@ def gift(self, account_address, chain_spec_dict): # Generate and sign transaction rpc_signer = RPCConnection.connect(chain_spec, 'signer') nonce_oracle = CustodialTaskNonceOracle(account_address, self.request.root_id, session=session) #, default_nonce) - gas_oracle = self.create_gas_oracle(rpc, Faucet.gas) + gas_oracle = self.create_gas_oracle(rpc, MinterFaucet.gas) faucet = Faucet(chain_spec, signer=rpc_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle) (tx_hash_hex, tx_signed_raw_hex) = faucet.give_to(faucet_address, account_address, account_address, tx_format=TxFormat.RLP_SIGNED) rpc_signer.disconnect() @@ -338,7 +338,7 @@ def cache_account_data( chain_spec = ChainSpec.from_dict(chain_spec_dict) tx_signed_raw_bytes = bytes.fromhex(tx_signed_raw_hex[2:]) tx = unpack(tx_signed_raw_bytes, chain_spec) - tx_data = AccountRegistry.parse_add_request(tx['data']) + tx_data = AccountsIndex.parse_add_request(tx['data']) session = SessionBase.create_session() tx_cache = TxCache( diff --git a/apps/cic-eth/cic_eth/eth/erc20.py b/apps/cic-eth/cic_eth/eth/erc20.py index 71dfd6a2..4daf693b 100644 --- a/apps/cic-eth/cic_eth/eth/erc20.py +++ b/apps/cic-eth/cic_eth/eth/erc20.py @@ -6,7 +6,6 @@ import celery from chainlib.eth.constant import ZERO_ADDRESS from chainlib.chain import ChainSpec from chainlib.connection import RPCConnection -from chainlib.eth.erc20 import ERC20 from chainlib.eth.tx import ( TxFormat, unpack, @@ -16,6 +15,7 @@ from cic_eth_registry.erc20 import ERC20Token from hexathon import strip_0x from chainqueue.db.models.tx import TxCache from chainqueue.error import NotLocalTxError +from eth_erc20 import ERC20 # local imports from cic_eth.db.models.base import SessionBase diff --git a/apps/cic-eth/cic_eth/ext/address.py b/apps/cic-eth/cic_eth/ext/address.py index 3db76925..250c8394 100644 --- a/apps/cic-eth/cic_eth/ext/address.py +++ b/apps/cic-eth/cic_eth/ext/address.py @@ -7,7 +7,7 @@ from chainlib.chain import ChainSpec from chainlib.connection import RPCConnection from chainlib.eth.constant import ZERO_ADDRESS from cic_eth_registry import CICRegistry -from eth_address_declarator import AddressDeclarator +from eth_address_declarator import Declarator # local imports from cic_eth.task import BaseTask @@ -23,12 +23,12 @@ def translate_address(address, trusted_addresses, chain_spec, sender_address=ZER registry = CICRegistry(chain_spec, rpc) declarator_address = registry.by_name('AddressDeclarator', sender_address=sender_address) - c = AddressDeclarator(chain_spec) + c = Declarator(chain_spec) for trusted_address in trusted_addresses: o = c.declaration(declarator_address, trusted_address, address, sender_address=sender_address) r = rpc.do(o) - declaration_hex = AddressDeclarator.parse_declaration(r) + declaration_hex = Declarator.parse_declaration(r) declaration_hex = declaration_hex[0].rstrip('0') declaration_bytes = bytes.fromhex(declaration_hex) declaration = None diff --git a/apps/cic-eth/cic_eth/ext/tx.py b/apps/cic-eth/cic_eth/ext/tx.py index a5d59aa7..dc9f0ad2 100644 --- a/apps/cic-eth/cic_eth/ext/tx.py +++ b/apps/cic-eth/cic_eth/ext/tx.py @@ -14,13 +14,13 @@ from chainlib.eth.tx import ( ) from chainlib.eth.block import block_by_number from chainlib.eth.contract import abi_decode_single -from chainlib.eth.erc20 import ERC20 from hexathon import strip_0x from cic_eth_registry import CICRegistry from cic_eth_registry.erc20 import ERC20Token from chainqueue.db.models.otx import Otx from chainqueue.db.enum import StatusEnum from chainqueue.query import get_tx_cache +from eth_erc20 import ERC20 # local imports from cic_eth.queue.time import tx_times diff --git a/apps/cic-eth/cic_eth/runnable/daemons/filters/callback.py b/apps/cic-eth/cic_eth/runnable/daemons/filters/callback.py index dd1a587b..e47c4a65 100644 --- a/apps/cic-eth/cic_eth/runnable/daemons/filters/callback.py +++ b/apps/cic-eth/cic_eth/runnable/daemons/filters/callback.py @@ -13,9 +13,7 @@ from hexathon import ( strip_0x, add_0x, ) -# TODO: use sarafu_Faucet for both when inheritance has been implemented -from erc20_single_shot_faucet import SingleShotFaucet -from sarafu_faucet import MinterFaucet as Faucet +from erc20_faucet import Faucet # local imports from .base import SyncFilter @@ -71,14 +69,13 @@ class CallbackFilter(SyncFilter): #transfer_data['token_address'] = tx.inputs[0] faucet_contract = tx.inputs[0] - c = SingleShotFaucet(self.chain_spec) - o = c.token(faucet_contract, sender_address=self.caller_address) + o = Faucet.token(faucet_contract, sender_address=self.caller_address) r = conn.do(o) transfer_data['token_address'] = add_0x(c.parse_token(r)) - o = c.amount(faucet_contract, sender_address=self.caller_address) + o = c.token_amount(faucet_contract, sender_address=self.caller_address) r = conn.do(o) - transfer_data['value'] = c.parse_amount(r) + transfer_data['value'] = c.parse_token_amount(r) return ('tokengift', transfer_data) diff --git a/apps/cic-eth/cic_eth/version.py b/apps/cic-eth/cic_eth/version.py index a57e9bef..1f75076e 100644 --- a/apps/cic-eth/cic_eth/version.py +++ b/apps/cic-eth/cic_eth/version.py @@ -10,7 +10,7 @@ version = ( 0, 11, 0, - 'beta.11', + 'beta.12', ) version_object = semver.VersionInfo( diff --git a/apps/cic-eth/docker/Dockerfile b/apps/cic-eth/docker/Dockerfile index 27d8e5c1..163b3016 100644 --- a/apps/cic-eth/docker/Dockerfile +++ b/apps/cic-eth/docker/Dockerfile @@ -29,7 +29,7 @@ RUN /usr/local/bin/python -m pip install --upgrade pip # python merge_requirements.py | tee merged_requirements.txt #RUN cd cic-base && \ # pip install $pip_extra_index_url_flag -r ./merged_requirements.txt -RUN pip install $pip_extra_index_url_flag cic-base[full_graph]==0.1.2a77 +RUN pip install $pip_extra_index_url_flag cic-base[full_graph]==0.1.2b8 COPY cic-eth/scripts/ scripts/ COPY cic-eth/setup.cfg cic-eth/setup.py ./ diff --git a/apps/cic-eth/requirements.txt b/apps/cic-eth/requirements.txt index ced81836..7b57e8c3 100644 --- a/apps/cic-eth/requirements.txt +++ b/apps/cic-eth/requirements.txt @@ -1,25 +1,24 @@ -cic-base==0.1.2b5 +cic-base==0.1.2b8 celery==4.4.7 crypto-dev-signer~=0.4.14b3 confini~=0.3.6rc3 -cic-eth-registry~=0.5.4a16 -#cic-bancor~=0.0.6 +cic-eth-registry~=0.5.5a4 redis==3.5.3 alembic==1.4.2 websockets==8.1 requests~=2.24.0 -eth_accounts_index~=0.0.11a9 -erc20-transfer-authorization~=0.3.1a5 +eth_accounts_index~=0.0.11a11 +erc20-transfer-authorization~=0.3.1a6 uWSGI==2.0.19.1 semver==2.13.0 websocket-client==0.57.0 moolb~=0.1.1b2 -eth-address-index~=0.1.1a9 -chainlib~=0.0.2a20 +eth-address-index~=0.1.1a11 +chainlib~=0.0.3a1 hexathon~=0.0.1a7 -chainsyncer[sql]~=0.0.2a2 +chainsyncer[sql]~=0.0.2a4 chainqueue~=0.0.2a2 -pysha3==1.0.2 +sarafu-faucet==0.0.3a1 coincurve==15.0.0 -sarafu-faucet==0.0.2a28 +sarafu-faucet==0.0.3a2 potaahto~=0.0.1a1 diff --git a/apps/contract-migration/docker/Dockerfile b/apps/contract-migration/docker/Dockerfile index 523703a5..1da4db8b 100644 --- a/apps/contract-migration/docker/Dockerfile +++ b/apps/contract-migration/docker/Dockerfile @@ -47,54 +47,61 @@ RUN wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | ENV NODE_PATH $NVM_DIR/versions/node//v$NODE_VERSION/lib/node_modules ENV PATH $NVM_DIR/versions/node//v$NODE_VERSION/bin:$PATH -RUN useradd --create-home grassroots -WORKDIR /home/grassroots -USER grassroots +#RUN useradd --create-home grassroots +# WORKDIR /home/grassroots +# USER grassroots +ARG pip_extra_args="" +ARG pip_index_url=https://pypi.org/simple ARG pip_extra_index_url=https://pip.grassrootseconomics.net:8433 -ARG cic_base_version=0.1.2a79 -ARG cic_eth_version=0.11.0b8+build.c2286e5c -ARG sarafu_faucet_version=0.0.2a28 -ARG sarafu_token_version=0.0.1a6 -ARG cic_contracts_version=0.0.2a2 -RUN pip install --user --index-url https://pypi.org/simple --extra-index-url $pip_extra_index_url cic-base[full_graph]==$cic_base_version \ +ARG cic_base_version=0.1.2b8 +ARG cic_eth_version=0.11.0b12 +ARG sarafu_token_version=0.0.1a8 +ARG sarafu_faucet_version=0.0.3a2 +RUN pip install --index-url https://pypi.org/simple --extra-index-url $pip_extra_index_url \ + cic-base[full_graph]==$cic_base_version \ cic-eth==$cic_eth_version \ - cic-contracts==$cic_contracts_version \ sarafu-faucet==$sarafu_faucet_version \ - sarafu-token==$sarafu_token_version + sarafu-token==$sarafu_token_version \ + cic-eth==$cic_eth_version +# -------------- begin runtime container ---------------- FROM python:3.8.6-slim-buster as runtime-image RUN apt-get update RUN apt-get install -y --no-install-recommends gnupg libpq-dev -RUN apt-get install -y --no-install-recommends jq +RUN apt-get install -y jq bash iputils-ping socat COPY --from=compile-image /usr/local/bin/ /usr/local/bin/ COPY --from=compile-image /usr/local/etc/cic/ /usr/local/etc/cic/ +COPY --from=compile-image /usr/local/lib/python3.8/site-packages/ \ + /usr/local/lib/python3.8/site-packages/ -RUN useradd --create-home grassroots -WORKDIR /home/grassroots -# COPY python dependencies to user dir -COPY --from=compile-image /home/grassroots/.local .local -ENV PATH=/home/grassroots/.local/bin:$PATH +ENV EXTRA_INDEX_URL https://pip.grassrootseconomics.net:8433 +# RUN useradd -u 1001 --create-home grassroots +# RUN adduser grassroots sudo && \ +# echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers +# WORKDIR /home/grassroots COPY contract-migration/testdata/pgp testdata/pgp COPY contract-migration/sarafu_declaration.json sarafu_declaration.json COPY contract-migration/keystore keystore COPY contract-migration/envlist . +COPY contract-migration/scripts scripts/ -# RUN chown grassroots:grassroots .local/ - -RUN mkdir -p /tmp/cic/config -RUN chown grassroots:grassroots /tmp/cic/config # A shared output dir for environment configs +RUN mkdir -p /tmp/cic/config +# RUN chown grassroots:grassroots /tmp/cic/config RUN chmod a+rwx /tmp/cic/config COPY contract-migration/*.sh ./ -RUN chown grassroots:grassroots -R . +# RUN chown grassroots:grassroots -R . RUN chmod gu+x *.sh +# we copied these from the root build container. +# this is dumb though...I guess the compile image should have the same user +# RUN chown grassroots:grassroots -R /usr/local/lib/python3.8/site-packages/ -USER grassroots +# USER grassroots ENTRYPOINT [ ] diff --git a/apps/contract-migration/scripts/requirements.txt b/apps/contract-migration/scripts/requirements.txt index 8c055b61..92c179a7 100644 --- a/apps/contract-migration/scripts/requirements.txt +++ b/apps/contract-migration/scripts/requirements.txt @@ -1,5 +1,5 @@ -cic-base[full_graph]==0.1.2b2 -sarafu-faucet==0.0.2a28 -cic-eth==0.11.0b10 +cic-base[full_graph]==0.1.2b8 +sarafu-faucet==0.0.3a2 +cic-eth==0.11.0b12 cic-types==0.1.0a10 crypto-dev-signer==0.4.14b3 diff --git a/apps/contract-migration/seed_cic_eth.sh b/apps/contract-migration/seed_cic_eth.sh index 5db1e428..fee0d3e5 100755 --- a/apps/contract-migration/seed_cic_eth.sh +++ b/apps/contract-migration/seed_cic_eth.sh @@ -99,7 +99,7 @@ export DEV_ETH_SARAFU_TOKEN_ADDRESS=$DEV_ETH_RESERVE_ADDRESS # Transfer tokens to gifter address >&2 echo "transfer sarafu tokens to token gifter address" ->&2 eth-transfer -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER --token-address $DEV_RESERVE_ADDRESS -w $debug $DEV_ETH_ACCOUNT_SARAFU_GIFTER ${token_amount:0:-1} +>&2 erc20-transfer -y $keystore_file -i $CIC_CHAIN_SPEC -p $ETH_PROVIDER --token-address $DEV_RESERVE_ADDRESS -w $debug $DEV_ETH_ACCOUNT_SARAFU_GIFTER ${token_amount:0:-1} #echo -n 0 > $init_level_file diff --git a/ci_templates/.cic-template.yml b/ci_templates/.cic-template.yml index 28148e93..3fda149a 100644 --- a/ci_templates/.cic-template.yml +++ b/ci_templates/.cic-template.yml @@ -3,7 +3,7 @@ image: entrypoint: [""] variables: - KANIKO_CACHE_ARGS: "--cache=true --cache-copy-layers=true --cache-ttl=24h" + KANIKO_CACHE_ARGS: "--cache=false --cache-copy-layers=true --cache-ttl=24h" CONTEXT: $CI_PROJECT_DIR/apps/ .py_build_merge_request: diff --git a/docker-compose.yml b/docker-compose.yml index 15261f30..ca5132a8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -76,6 +76,9 @@ services: contract-migration: build: + args: + pip_index_url: ${PIP_DEFAULT_INDEX_URL:-https://pypi.org/simple} + pip_extra_args: $PIP_EXTRA_ARGS context: apps/ dockerfile: contract-migration/docker/Dockerfile # image: registry.gitlab.com/grassrootseconomics/cic-internal-integration/contract-migration:latest