diff --git a/gimmeremmetokensbot/app.py b/gimmeremmetokensbot/app.py index cf393f9..fb50764 100644 --- a/gimmeremmetokensbot/app.py +++ b/gimmeremmetokensbot/app.py @@ -5,9 +5,11 @@ import os from datetime import datetime +import asyncio import telebot import psycopg2 from flask import Flask, request +from remme import Remme from constants import ( ALREADY_GOTTEN_ACCOUNT_CREDENTIALS_PHRASE, @@ -27,15 +29,12 @@ insert_starter_user_info, update_request_tokens_datetime, ) -from remme.account import RemmeAccount -from remme.constants.amount import STABLE_REMME_TOKENS_REQUEST_AMOUNT -from remme.token import RemmeToken from utils import send_keystore_file TOKEN = os.environ.get('TELEGRAM_BOT_TOKEN') -MASTER_ACCOUNT_PRIVATE_KEY = os.environ.get('MASTER_ACCOUNT_PRIVATE_KEY') PRODUCTION_HOST = os.environ.get('PRODUCTION_HOST') REQUEST_TOKENS_PERIOD_IN_HOURS_LIMIT = int(os.environ.get('REQUEST_TOKENS_PERIOD_IN_HOURS_LIMIT')) +STABLE_REMME_TOKENS_REQUEST_AMOUNT = int(os.environ.get('STABLE_REMME_TOKENS_REQUEST_AMOUNT')) bot = telebot.TeleBot(TOKEN) server = Flask(__name__) @@ -90,29 +89,41 @@ def handle_gimme_tokens_button(message): """ Handle user's request a new batch of Remme tokens. """ - try: - public_key = get_public_key(chat_id=message.chat.id) + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + + remme = Remme( + account_config={'private_key_hex': os.environ.get('MASTER_ACCOUNT_PRIVATE_KEY')}, + network_config={'node_address': str(os.environ.get('NODE_HOST')) + ':8080'}, + ) - master_account = RemmeAccount(private_key_hex=MASTER_ACCOUNT_PRIVATE_KEY) - master_account_token = RemmeToken(private_key_hex=MASTER_ACCOUNT_PRIVATE_KEY) + try: + master_account_tokens_balance = loop.run_until_complete(remme.token.get_balance(address=remme.account.address)) - if master_account_token.get_balance(address=master_account.address) < STABLE_REMME_TOKENS_REQUEST_AMOUNT: + if int(master_account_tokens_balance) < STABLE_REMME_TOKENS_REQUEST_AMOUNT: bot.send_message(message.chat.id, FAUCET_IS_EMPTY_PHRASE) return - if not is_request_tokens_possible(message=message, public_key=public_key): + address_to = get_address(chat_id=message.chat.id) + public_key_to = get_public_key(chat_id=message.chat.id) + + if not is_request_tokens_possible(message=message, public_key=public_key_to): bot.send_message( message.chat.id, f'You are able to request tokens only once per {REQUEST_TOKENS_PERIOD_IN_HOURS_LIMIT} hours.', ) return - batch_id = master_account_token.send_transaction(public_key_to=public_key) + transaction = loop.run_until_complete( + remme.token.transfer(address_to=address_to, amount=STABLE_REMME_TOKENS_REQUEST_AMOUNT), + ) + update_request_tokens_datetime(chat_id=message.chat.id) bot.send_message( message.chat.id, - f'Tokens have been sent! Batch identifier (use it to fetch transaction data from node) is: {batch_id}', + f'Tokens have been sent! ' + f'Batch identifier (use it to fetch transaction data from node) is: {transaction.batch_id}', ) except psycopg2.ProgrammingError: @@ -124,12 +135,19 @@ def handle_check_balance_button(message): """ Handle user's request to check address tokens balance. """ + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + + remme = Remme( + account_config={'private_key_hex': os.environ.get('MASTER_ACCOUNT_PRIVATE_KEY')}, + network_config={'node_address': str(os.environ.get('NODE_HOST')) + ':8080'}, + ) + try: - token_balance = RemmeToken().get_balance( - address=get_address(chat_id=message.chat.id), + user_tokens_balance = loop.run_until_complete( + remme.token.get_balance(address=get_address(chat_id=message.chat.id)), ) - - bot.send_message(message.chat.id, f'Your tokens balance is: {token_balance}') + bot.send_message(message.chat.id, f'Your tokens balance is: {user_tokens_balance}') except psycopg2.ProgrammingError: bot.send_message(message.chat.id, SOMETHING_WENT_WRONG_PHRASE) @@ -145,28 +163,31 @@ def start_message(message): If user already has account, send corresponding (your account already created) phrase and do nothing. """ + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + is_user = check_if_user_exist(chat_id=message.chat.id) if is_user: bot.send_message(message.chat.id, ALREADY_GOTTEN_ACCOUNT_CREDENTIALS_PHRASE) return - account = RemmeAccount(private_key_hex=None) - logger.info(f'Account with address `{account.address}` is created.') + remme = Remme(network_config={'node_address': str(os.environ.get('NODE_HOST')) + ':8080'}) + logger.info(f'Account with address `{remme.account.address}` is created.') insert_starter_user_info( chat_id=message.chat.id, nickname=message.from_user.username, - address=account.address, - public_key=account.public_key_hex, + address=remme.account.address, + public_key=remme.account.public_key_hex, are_creads_shown=True, ) account_credentials_message_part = \ f'\n' \ - f'*Address*: {account.address}\n'\ - f'*Public key*: {account.public_key_hex}\n' \ - f'*Private key*: {account.private_key_hex}' + f'*Address*: {remme.account.address}\n'\ + f'*Public key*: {remme.account.public_key_hex}\n' \ + f'*Private key*: {remme.account.private_key_hex}' bot_start_message = \ START_COMMAND_BOT_GREETING_PHRASE + \ @@ -175,7 +196,12 @@ def start_message(message): bot.send_message(message.chat.id, bot_start_message, parse_mode='Markdown') - send_keystore_file(bot=bot, message=message, account=account) + send_keystore_file( + bot=bot, + message=message, + account_public_key=remme.account.public_key_hex, + account_private_key=remme.account.private_key_hex, + ) render_keyboard(message) diff --git a/gimmeremmetokensbot/remme/__init__.py b/gimmeremmetokensbot/remme/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/gimmeremmetokensbot/remme/account.py b/gimmeremmetokensbot/remme/account.py deleted file mode 100644 index 3341f7e..0000000 --- a/gimmeremmetokensbot/remme/account.py +++ /dev/null @@ -1,168 +0,0 @@ -""" -Provide implementation of the Remme node accounting. - -Code below is vendor code and located by address `https://github.com/Remmeauth/remme-client-python`. -""" -from sawtooth_signing.secp256k1 import Secp256k1PrivateKey -from sawtooth_signing import create_context, CryptoFactory -from remme.utils import generate_address, is_string_or_bytes, utf8_to_bytes -from remme.constants.patterns import RemmePatterns -from remme.constants.family_name import RemmeFamilyName -import re - - -class RemmeAccount: - """ - Account that is used for signing transactions and storing public keys which he was signed. - @example - ```python - remme = Remme(private_key_hex="ac124700cc4325cc2a78b22b9acb039d9efe859ef673b871d55d1078391934f9") - print(remme._account.private_key_hex) # "ac124700cc4325cc2a78b22b9acb039d9efe859ef673b871d55d1078391934f9" - - another_remme = Remme() - print(another_remme._account.private_key_hex) # "b5167700cc4325cc2a78b22b9acb039d9efe859ef673b871d55d10783919129f" - - data = "transaction data" - signed_data = remme._account.sign(data) - - is_verify = remme._account.verify(signed_data, data) - print(is_verify) # True - - is_verify_in_another_account = another_remme._account.verify(signed_data, data) - print(is_verify_in_another_account) # False - ``` - """ - - _context = None - _family_name = None - _signer = None - _private_key_hex = None - _private_key = None - _public_key_hex = None - _public_key = None - _address = None - - def __init__(self, private_key_hex): - """ - Get or generate private key, create signer by using private key, - generate public key from private key and generate account address by using public key and family name - (https://docs.remme.io/remme-core/docs/family-account.html#addressing) - @example - Get private key - ```python - account = RemmeAccount("ac124700cc4325cc2a78b22b9acb039d9efe859ef673b871d55d1078391934f9") - print(account.private_key_hex) // "ac124700cc4325cc2a78b22b9acb039d9efe859ef673b871d55d1078391934f9" - ``` - - Generate new private key - ```python - account = RemmeAccount() - print(account.private_key_hex) // "b5167700cc4325cc2a78b22b9acb039d9efe859ef673b871d55d10783919129f" - ``` - :param private_key_hex: {string} - """ - self._family_name = RemmeFamilyName.ACCOUNT.value - if private_key_hex and re.match(RemmePatterns.PRIVATE_KEY.value, private_key_hex) is None: - raise Exception("Invalid private key given!") - self._context = create_context("secp256k1") - if not private_key_hex: - self._private_key = self._context.new_random_private_key() - else: - self._private_key = Secp256k1PrivateKey.from_hex(private_key_hex) - - self._signer = CryptoFactory(self._context).new_signer(self._private_key) - self._private_key_hex = self._private_key.as_hex() - self._private_key = Secp256k1PrivateKey.from_hex(self._private_key_hex) - self._public_key = self._signer.get_public_key() - self._public_key_hex = self._public_key.as_hex() - self._address = generate_address(self._family_name, self._public_key_hex) - - def sign(self, transaction): - """ - Get transaction and sign it by signer - @example - ```python - data = "transaction data" - signed_data = account.sign(data) - print(signedData) - ``` - :param transaction: {string | bytes} - :return: {hex_encoded_string} - """ - if isinstance(transaction, str): - transaction = utf8_to_bytes(transaction) - return self._signer.sign(transaction) - - def verify(self, signature, transaction): - """ - Verify given signature to given transaction - @example - ```python - data = "transaction data" - signed_data = account.sign(data) - - is_verify = account.verify(signed_data, data) - print(is_verify) # True - - is_verify_in_another_account = another_account.verify(signed_data, data) - print(is_verify_in_another_account) # False - ``` - :param signature: {string | bytes} - :param transaction: {string | bytes} - :return: {boolean} - """ - if not is_string_or_bytes(signature) or not is_string_or_bytes(transaction): - raise Exception("Invalid parameters given. Expected string or bytes") - if isinstance(transaction, str): - transaction = utf8_to_bytes(transaction) - return self._context.verify(signature, transaction, self._public_key) - - @property - def family_name(self): - """ - Family name for generate address for this account in the blockchain. - (https://docs.remme.io/remme-core/docs/family-account.html) - :return: {string} - """ - return self._family_name - - @property - def address(self): - """ - Address of this account in blockchain. - (https://docs.remme.io/remme-core/docs/family-account.html#addressing) - :return: {string} - """ - return self._address - - @property - def public_key(self): - """ - Get public key that that was generated from public key hex - :return: {sawtooth_signing.secp256k1.Secp256k1PublicKey} - """ - return self._public_key - - @property - def public_key_hex(self): - """ - Get public key hex that was generated automatically or given by user - :return: {string} - """ - return self._public_key_hex - - @property - def private_key(self): - """ - Get private key that was generated from user's public key - :return: {sawtooth_signing.secp256k1.Secp256k1PrivateKey} - """ - return self._private_key - - @property - def private_key_hex(self): - """ - Get private key hex that was generated from user's private key - :return: {string} - """ - return self._private_key_hex diff --git a/gimmeremmetokensbot/remme/constants/__init__.py b/gimmeremmetokensbot/remme/constants/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/gimmeremmetokensbot/remme/constants/amount.py b/gimmeremmetokensbot/remme/constants/amount.py deleted file mode 100644 index 2e75d80..0000000 --- a/gimmeremmetokensbot/remme/constants/amount.py +++ /dev/null @@ -1,9 +0,0 @@ -""" -Provide constants for Remme amounts. - -Code below is vendor code and located by address `https://github.com/Remmeauth/remme-client-python`. -""" -import os - -STABLE_REMME_TOKENS_REQUEST_AMOUNT = int(os.environ.get('STABLE_REMME_TOKENS_REQUEST_AMOUNT')) - diff --git a/gimmeremmetokensbot/remme/constants/family_name.py b/gimmeremmetokensbot/remme/constants/family_name.py deleted file mode 100644 index 6cb7e32..0000000 --- a/gimmeremmetokensbot/remme/constants/family_name.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -Provide constants for Remme family names. - -Code below is vendor code and located by address `https://github.com/Remmeauth/remme-client-python`. -""" -from enum import Enum - - -class RemmeFamilyName(Enum): - ACCOUNT = "account" - PUBLIC_KEY = "pub_key" - SWAP = "AtomicSwap" diff --git a/gimmeremmetokensbot/remme/constants/patterns.py b/gimmeremmetokensbot/remme/constants/patterns.py deleted file mode 100644 index e0044ff..0000000 --- a/gimmeremmetokensbot/remme/constants/patterns.py +++ /dev/null @@ -1,14 +0,0 @@ -""" -Provide constants for Remme patterns. - -Code below is vendor code and located by address `https://github.com/Remmeauth/remme-client-python`. -""" -from enum import Enum - - -class RemmePatterns(Enum): - PRIVATE_KEY = r"^[a-f0-9]{64}$" - PUBLIC_KEY = r"^[a-f0-9]{66}$" - ADDRESS = r"^[a-f0-9]{70}$" - SWAP_ID = r"^[a-f0-9]{64}$" - HEADER_SIGNATURE = r"^[a-f0-9]{128}$" diff --git a/gimmeremmetokensbot/remme/protos/__init__.py b/gimmeremmetokensbot/remme/protos/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/gimmeremmetokensbot/remme/protos/account_pb2.py b/gimmeremmetokensbot/remme/protos/account_pb2.py deleted file mode 100644 index 56138a1..0000000 --- a/gimmeremmetokensbot/remme/protos/account_pb2.py +++ /dev/null @@ -1,256 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: account.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='account.proto', - package='', - syntax='proto3', - serialized_options=None, - serialized_pb=_b('\n\raccount.proto\"4\n\rAccountMethod\"#\n\x06Method\x12\x0c\n\x08TRANSFER\x10\x00\x12\x0b\n\x07GENESIS\x10\x01\"4\n\x0fTransferPayload\x12\x12\n\naddress_to\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04\"&\n\x0eGenesisPayload\x12\x14\n\x0ctotal_supply\x18\x01 \x01(\x04\",\n\x07\x41\x63\x63ount\x12\x0f\n\x07\x62\x61lance\x18\x01 \x01(\x04\x12\x10\n\x08pub_keys\x18\x02 \x03(\t\"\x1f\n\rGenesisStatus\x12\x0e\n\x06status\x18\x01 \x01(\x08\x62\x06proto3') -) - - - -_ACCOUNTMETHOD_METHOD = _descriptor.EnumDescriptor( - name='Method', - full_name='AccountMethod.Method', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='TRANSFER', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='GENESIS', index=1, number=1, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=34, - serialized_end=69, -) -_sym_db.RegisterEnumDescriptor(_ACCOUNTMETHOD_METHOD) - - -_ACCOUNTMETHOD = _descriptor.Descriptor( - name='AccountMethod', - full_name='AccountMethod', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _ACCOUNTMETHOD_METHOD, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=17, - serialized_end=69, -) - - -_TRANSFERPAYLOAD = _descriptor.Descriptor( - name='TransferPayload', - full_name='TransferPayload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address_to', full_name='TransferPayload.address_to', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='value', full_name='TransferPayload.value', index=1, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=71, - serialized_end=123, -) - - -_GENESISPAYLOAD = _descriptor.Descriptor( - name='GenesisPayload', - full_name='GenesisPayload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='total_supply', full_name='GenesisPayload.total_supply', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=125, - serialized_end=163, -) - - -_ACCOUNT = _descriptor.Descriptor( - name='Account', - full_name='Account', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='balance', full_name='Account.balance', index=0, - number=1, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='pub_keys', full_name='Account.pub_keys', index=1, - number=2, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=165, - serialized_end=209, -) - - -_GENESISSTATUS = _descriptor.Descriptor( - name='GenesisStatus', - full_name='GenesisStatus', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='status', full_name='GenesisStatus.status', index=0, - number=1, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=211, - serialized_end=242, -) - -_ACCOUNTMETHOD_METHOD.containing_type = _ACCOUNTMETHOD -DESCRIPTOR.message_types_by_name['AccountMethod'] = _ACCOUNTMETHOD -DESCRIPTOR.message_types_by_name['TransferPayload'] = _TRANSFERPAYLOAD -DESCRIPTOR.message_types_by_name['GenesisPayload'] = _GENESISPAYLOAD -DESCRIPTOR.message_types_by_name['Account'] = _ACCOUNT -DESCRIPTOR.message_types_by_name['GenesisStatus'] = _GENESISSTATUS -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -AccountMethod = _reflection.GeneratedProtocolMessageType('AccountMethod', (_message.Message,), dict( - DESCRIPTOR = _ACCOUNTMETHOD, - __module__ = 'account_pb2' - # @@protoc_insertion_point(class_scope:AccountMethod) - )) -_sym_db.RegisterMessage(AccountMethod) - -TransferPayload = _reflection.GeneratedProtocolMessageType('TransferPayload', (_message.Message,), dict( - DESCRIPTOR = _TRANSFERPAYLOAD, - __module__ = 'account_pb2' - # @@protoc_insertion_point(class_scope:TransferPayload) - )) -_sym_db.RegisterMessage(TransferPayload) - -GenesisPayload = _reflection.GeneratedProtocolMessageType('GenesisPayload', (_message.Message,), dict( - DESCRIPTOR = _GENESISPAYLOAD, - __module__ = 'account_pb2' - # @@protoc_insertion_point(class_scope:GenesisPayload) - )) -_sym_db.RegisterMessage(GenesisPayload) - -Account = _reflection.GeneratedProtocolMessageType('Account', (_message.Message,), dict( - DESCRIPTOR = _ACCOUNT, - __module__ = 'account_pb2' - # @@protoc_insertion_point(class_scope:Account) - )) -_sym_db.RegisterMessage(Account) - -GenesisStatus = _reflection.GeneratedProtocolMessageType('GenesisStatus', (_message.Message,), dict( - DESCRIPTOR = _GENESISSTATUS, - __module__ = 'account_pb2' - # @@protoc_insertion_point(class_scope:GenesisStatus) - )) -_sym_db.RegisterMessage(GenesisStatus) - - -# @@protoc_insertion_point(module_scope) diff --git a/gimmeremmetokensbot/remme/protos/atomic_swap_pb2.py b/gimmeremmetokensbot/remme/protos/atomic_swap_pb2.py deleted file mode 100644 index a4bd3ad..0000000 --- a/gimmeremmetokensbot/remme/protos/atomic_swap_pb2.py +++ /dev/null @@ -1,465 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: atomic_swap.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='atomic_swap.proto', - package='', - syntax='proto3', - serialized_options=None, - serialized_pb=_b('\n\x11\x61tomic_swap.proto\"_\n\x10\x41tomicSwapMethod\"K\n\x06Method\x12\x08\n\x04INIT\x10\x00\x12\x0b\n\x07\x41PPROVE\x10\x01\x12\n\n\x06\x45XPIRE\x10\x02\x12\x13\n\x0fSET_SECRET_LOCK\x10\x03\x12\t\n\x05\x43LOSE\x10\x04\"\xd8\x01\n\x15\x41tomicSwapInitPayload\x12\x18\n\x10receiver_address\x18\x01 \x01(\t\x12 \n\x18sender_address_non_local\x18\x07 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x0f\n\x07swap_id\x18\x03 \x01(\t\x12 \n\x18secret_lock_by_solicitor\x18\x04 \x01(\t\x12,\n$email_address_encrypted_by_initiator\x18\x05 \x01(\t\x12\x12\n\ncreated_at\x18\x06 \x01(\r\"+\n\x18\x41tomicSwapApprovePayload\x12\x0f\n\x07swap_id\x18\x01 \x01(\t\"*\n\x17\x41tomicSwapExpirePayload\x12\x0f\n\x07swap_id\x18\x01 \x01(\t\"F\n\x1e\x41tomicSwapSetSecretLockPayload\x12\x0f\n\x07swap_id\x18\x01 \x01(\t\x12\x13\n\x0bsecret_lock\x18\x02 \x01(\t\"=\n\x16\x41tomicSwapClosePayload\x12\x0f\n\x07swap_id\x18\x01 \x01(\t\x12\x12\n\nsecret_key\x18\x02 \x01(\t\"\xaa\x02\n\x0e\x41tomicSwapInfo\x12\x11\n\tis_closed\x18\x01 \x01(\x08\x12\x13\n\x0bis_approved\x18\x0b \x01(\x08\x12\x16\n\x0esender_address\x18\x02 \x01(\t\x12 \n\x18sender_address_non_local\x18\x0c \x01(\t\x12\x18\n\x10receiver_address\x18\x03 \x01(\t\x12\x0e\n\x06\x61mount\x18\x04 \x01(\x04\x12(\n email_address_encrypted_optional\x18\x05 \x01(\t\x12\x0f\n\x07swap_id\x18\x06 \x01(\t\x12\x13\n\x0bsecret_lock\x18\x07 \x01(\t\x12\x12\n\nsecret_key\x18\x08 \x01(\t\x12\x12\n\ncreated_at\x18\t \x01(\r\x12\x14\n\x0cis_initiator\x18\n \x01(\x08\x62\x06proto3') -) - - - -_ATOMICSWAPMETHOD_METHOD = _descriptor.EnumDescriptor( - name='Method', - full_name='AtomicSwapMethod.Method', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='INIT', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='APPROVE', index=1, number=1, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='EXPIRE', index=2, number=2, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='SET_SECRET_LOCK', index=3, number=3, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='CLOSE', index=4, number=4, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=41, - serialized_end=116, -) -_sym_db.RegisterEnumDescriptor(_ATOMICSWAPMETHOD_METHOD) - - -_ATOMICSWAPMETHOD = _descriptor.Descriptor( - name='AtomicSwapMethod', - full_name='AtomicSwapMethod', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _ATOMICSWAPMETHOD_METHOD, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=21, - serialized_end=116, -) - - -_ATOMICSWAPINITPAYLOAD = _descriptor.Descriptor( - name='AtomicSwapInitPayload', - full_name='AtomicSwapInitPayload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='receiver_address', full_name='AtomicSwapInitPayload.receiver_address', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sender_address_non_local', full_name='AtomicSwapInitPayload.sender_address_non_local', index=1, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='amount', full_name='AtomicSwapInitPayload.amount', index=2, - number=2, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='swap_id', full_name='AtomicSwapInitPayload.swap_id', index=3, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='secret_lock_by_solicitor', full_name='AtomicSwapInitPayload.secret_lock_by_solicitor', index=4, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='email_address_encrypted_by_initiator', full_name='AtomicSwapInitPayload.email_address_encrypted_by_initiator', index=5, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='created_at', full_name='AtomicSwapInitPayload.created_at', index=6, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=119, - serialized_end=335, -) - - -_ATOMICSWAPAPPROVEPAYLOAD = _descriptor.Descriptor( - name='AtomicSwapApprovePayload', - full_name='AtomicSwapApprovePayload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='swap_id', full_name='AtomicSwapApprovePayload.swap_id', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=337, - serialized_end=380, -) - - -_ATOMICSWAPEXPIREPAYLOAD = _descriptor.Descriptor( - name='AtomicSwapExpirePayload', - full_name='AtomicSwapExpirePayload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='swap_id', full_name='AtomicSwapExpirePayload.swap_id', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=382, - serialized_end=424, -) - - -_ATOMICSWAPSETSECRETLOCKPAYLOAD = _descriptor.Descriptor( - name='AtomicSwapSetSecretLockPayload', - full_name='AtomicSwapSetSecretLockPayload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='swap_id', full_name='AtomicSwapSetSecretLockPayload.swap_id', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='secret_lock', full_name='AtomicSwapSetSecretLockPayload.secret_lock', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=426, - serialized_end=496, -) - - -_ATOMICSWAPCLOSEPAYLOAD = _descriptor.Descriptor( - name='AtomicSwapClosePayload', - full_name='AtomicSwapClosePayload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='swap_id', full_name='AtomicSwapClosePayload.swap_id', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='secret_key', full_name='AtomicSwapClosePayload.secret_key', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=498, - serialized_end=559, -) - - -_ATOMICSWAPINFO = _descriptor.Descriptor( - name='AtomicSwapInfo', - full_name='AtomicSwapInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='is_closed', full_name='AtomicSwapInfo.is_closed', index=0, - number=1, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='is_approved', full_name='AtomicSwapInfo.is_approved', index=1, - number=11, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sender_address', full_name='AtomicSwapInfo.sender_address', index=2, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='sender_address_non_local', full_name='AtomicSwapInfo.sender_address_non_local', index=3, - number=12, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='receiver_address', full_name='AtomicSwapInfo.receiver_address', index=4, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='amount', full_name='AtomicSwapInfo.amount', index=5, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='email_address_encrypted_optional', full_name='AtomicSwapInfo.email_address_encrypted_optional', index=6, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='swap_id', full_name='AtomicSwapInfo.swap_id', index=7, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='secret_lock', full_name='AtomicSwapInfo.secret_lock', index=8, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='secret_key', full_name='AtomicSwapInfo.secret_key', index=9, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='created_at', full_name='AtomicSwapInfo.created_at', index=10, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='is_initiator', full_name='AtomicSwapInfo.is_initiator', index=11, - number=10, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=562, - serialized_end=860, -) - -_ATOMICSWAPMETHOD_METHOD.containing_type = _ATOMICSWAPMETHOD -DESCRIPTOR.message_types_by_name['AtomicSwapMethod'] = _ATOMICSWAPMETHOD -DESCRIPTOR.message_types_by_name['AtomicSwapInitPayload'] = _ATOMICSWAPINITPAYLOAD -DESCRIPTOR.message_types_by_name['AtomicSwapApprovePayload'] = _ATOMICSWAPAPPROVEPAYLOAD -DESCRIPTOR.message_types_by_name['AtomicSwapExpirePayload'] = _ATOMICSWAPEXPIREPAYLOAD -DESCRIPTOR.message_types_by_name['AtomicSwapSetSecretLockPayload'] = _ATOMICSWAPSETSECRETLOCKPAYLOAD -DESCRIPTOR.message_types_by_name['AtomicSwapClosePayload'] = _ATOMICSWAPCLOSEPAYLOAD -DESCRIPTOR.message_types_by_name['AtomicSwapInfo'] = _ATOMICSWAPINFO -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -AtomicSwapMethod = _reflection.GeneratedProtocolMessageType('AtomicSwapMethod', (_message.Message,), dict( - DESCRIPTOR = _ATOMICSWAPMETHOD, - __module__ = 'atomic_swap_pb2' - # @@protoc_insertion_point(class_scope:AtomicSwapMethod) - )) -_sym_db.RegisterMessage(AtomicSwapMethod) - -AtomicSwapInitPayload = _reflection.GeneratedProtocolMessageType('AtomicSwapInitPayload', (_message.Message,), dict( - DESCRIPTOR = _ATOMICSWAPINITPAYLOAD, - __module__ = 'atomic_swap_pb2' - # @@protoc_insertion_point(class_scope:AtomicSwapInitPayload) - )) -_sym_db.RegisterMessage(AtomicSwapInitPayload) - -AtomicSwapApprovePayload = _reflection.GeneratedProtocolMessageType('AtomicSwapApprovePayload', (_message.Message,), dict( - DESCRIPTOR = _ATOMICSWAPAPPROVEPAYLOAD, - __module__ = 'atomic_swap_pb2' - # @@protoc_insertion_point(class_scope:AtomicSwapApprovePayload) - )) -_sym_db.RegisterMessage(AtomicSwapApprovePayload) - -AtomicSwapExpirePayload = _reflection.GeneratedProtocolMessageType('AtomicSwapExpirePayload', (_message.Message,), dict( - DESCRIPTOR = _ATOMICSWAPEXPIREPAYLOAD, - __module__ = 'atomic_swap_pb2' - # @@protoc_insertion_point(class_scope:AtomicSwapExpirePayload) - )) -_sym_db.RegisterMessage(AtomicSwapExpirePayload) - -AtomicSwapSetSecretLockPayload = _reflection.GeneratedProtocolMessageType('AtomicSwapSetSecretLockPayload', (_message.Message,), dict( - DESCRIPTOR = _ATOMICSWAPSETSECRETLOCKPAYLOAD, - __module__ = 'atomic_swap_pb2' - # @@protoc_insertion_point(class_scope:AtomicSwapSetSecretLockPayload) - )) -_sym_db.RegisterMessage(AtomicSwapSetSecretLockPayload) - -AtomicSwapClosePayload = _reflection.GeneratedProtocolMessageType('AtomicSwapClosePayload', (_message.Message,), dict( - DESCRIPTOR = _ATOMICSWAPCLOSEPAYLOAD, - __module__ = 'atomic_swap_pb2' - # @@protoc_insertion_point(class_scope:AtomicSwapClosePayload) - )) -_sym_db.RegisterMessage(AtomicSwapClosePayload) - -AtomicSwapInfo = _reflection.GeneratedProtocolMessageType('AtomicSwapInfo', (_message.Message,), dict( - DESCRIPTOR = _ATOMICSWAPINFO, - __module__ = 'atomic_swap_pb2' - # @@protoc_insertion_point(class_scope:AtomicSwapInfo) - )) -_sym_db.RegisterMessage(AtomicSwapInfo) - - -# @@protoc_insertion_point(module_scope) diff --git a/gimmeremmetokensbot/remme/protos/proto_buf_pb2.py b/gimmeremmetokensbot/remme/protos/proto_buf_pb2.py deleted file mode 100644 index 52837c2..0000000 --- a/gimmeremmetokensbot/remme/protos/proto_buf_pb2.py +++ /dev/null @@ -1,306 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: proto_buf.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='proto_buf.proto', - package='', - syntax='proto3', - serialized_options=None, - serialized_pb=_b('\n\x0fproto_buf.proto\"/\n\x0cPubKeyMethod\"\x1f\n\x06Method\x12\t\n\x05STORE\x10\x00\x12\n\n\x06REVOKE\x10\x01\"\xa9\x02\n\x10NewPubKeyPayload\x12\x12\n\npublic_key\x18\x01 \x01(\t\x12\x35\n\x0fpublic_key_type\x18\x02 \x01(\x0e\x32\x1c.NewPubKeyPayload.PubKeyType\x12\x31\n\x0b\x65ntity_type\x18\x03 \x01(\x0e\x32\x1c.NewPubKeyPayload.EntityType\x12\x13\n\x0b\x65ntity_hash\x18\x04 \x01(\t\x12\x1d\n\x15\x65ntity_hash_signature\x18\x05 \x01(\t\x12\x12\n\nvalid_from\x18\x06 \x01(\r\x12\x10\n\x08valid_to\x18\x07 \x01(\r\"&\n\nEntityType\x12\x0c\n\x08PERSONAL\x10\x00\x12\n\n\x06SERVER\x10\x01\"\x15\n\nPubKeyType\x12\x07\n\x03RSA\x10\x00\"&\n\x13RevokePubKeyPayload\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\"S\n\rPubKeyStorage\x12\r\n\x05owner\x18\x01 \x01(\t\x12\"\n\x07payload\x18\x02 \x01(\x0b\x32\x11.NewPubKeyPayload\x12\x0f\n\x07revoked\x18\x03 \x01(\x08\x62\x06proto3') -) - - - -_PUBKEYMETHOD_METHOD = _descriptor.EnumDescriptor( - name='Method', - full_name='PubKeyMethod.Method', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='STORE', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='REVOKE', index=1, number=1, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=35, - serialized_end=66, -) -_sym_db.RegisterEnumDescriptor(_PUBKEYMETHOD_METHOD) - -_NEWPUBKEYPAYLOAD_ENTITYTYPE = _descriptor.EnumDescriptor( - name='EntityType', - full_name='NewPubKeyPayload.EntityType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='PERSONAL', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='SERVER', index=1, number=1, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=305, - serialized_end=343, -) -_sym_db.RegisterEnumDescriptor(_NEWPUBKEYPAYLOAD_ENTITYTYPE) - -_NEWPUBKEYPAYLOAD_PUBKEYTYPE = _descriptor.EnumDescriptor( - name='PubKeyType', - full_name='NewPubKeyPayload.PubKeyType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='RSA', index=0, number=0, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=345, - serialized_end=366, -) -_sym_db.RegisterEnumDescriptor(_NEWPUBKEYPAYLOAD_PUBKEYTYPE) - - -_PUBKEYMETHOD = _descriptor.Descriptor( - name='PubKeyMethod', - full_name='PubKeyMethod', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _PUBKEYMETHOD_METHOD, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=19, - serialized_end=66, -) - - -_NEWPUBKEYPAYLOAD = _descriptor.Descriptor( - name='NewPubKeyPayload', - full_name='NewPubKeyPayload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='public_key', full_name='NewPubKeyPayload.public_key', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='public_key_type', full_name='NewPubKeyPayload.public_key_type', index=1, - number=2, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='entity_type', full_name='NewPubKeyPayload.entity_type', index=2, - number=3, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='entity_hash', full_name='NewPubKeyPayload.entity_hash', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='entity_hash_signature', full_name='NewPubKeyPayload.entity_hash_signature', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='valid_from', full_name='NewPubKeyPayload.valid_from', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='valid_to', full_name='NewPubKeyPayload.valid_to', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _NEWPUBKEYPAYLOAD_ENTITYTYPE, - _NEWPUBKEYPAYLOAD_PUBKEYTYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=69, - serialized_end=366, -) - - -_REVOKEPUBKEYPAYLOAD = _descriptor.Descriptor( - name='RevokePubKeyPayload', - full_name='RevokePubKeyPayload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='address', full_name='RevokePubKeyPayload.address', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=368, - serialized_end=406, -) - - -_PUBKEYSTORAGE = _descriptor.Descriptor( - name='PubKeyStorage', - full_name='PubKeyStorage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='owner', full_name='PubKeyStorage.owner', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='payload', full_name='PubKeyStorage.payload', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='revoked', full_name='PubKeyStorage.revoked', index=2, - number=3, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=408, - serialized_end=491, -) - -_PUBKEYMETHOD_METHOD.containing_type = _PUBKEYMETHOD -_NEWPUBKEYPAYLOAD.fields_by_name['public_key_type'].enum_type = _NEWPUBKEYPAYLOAD_PUBKEYTYPE -_NEWPUBKEYPAYLOAD.fields_by_name['entity_type'].enum_type = _NEWPUBKEYPAYLOAD_ENTITYTYPE -_NEWPUBKEYPAYLOAD_ENTITYTYPE.containing_type = _NEWPUBKEYPAYLOAD -_NEWPUBKEYPAYLOAD_PUBKEYTYPE.containing_type = _NEWPUBKEYPAYLOAD -_PUBKEYSTORAGE.fields_by_name['payload'].message_type = _NEWPUBKEYPAYLOAD -DESCRIPTOR.message_types_by_name['PubKeyMethod'] = _PUBKEYMETHOD -DESCRIPTOR.message_types_by_name['NewPubKeyPayload'] = _NEWPUBKEYPAYLOAD -DESCRIPTOR.message_types_by_name['RevokePubKeyPayload'] = _REVOKEPUBKEYPAYLOAD -DESCRIPTOR.message_types_by_name['PubKeyStorage'] = _PUBKEYSTORAGE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -PubKeyMethod = _reflection.GeneratedProtocolMessageType('PubKeyMethod', (_message.Message,), dict( - DESCRIPTOR = _PUBKEYMETHOD, - __module__ = 'proto_buf_pb2' - # @@protoc_insertion_point(class_scope:PubKeyMethod) - )) -_sym_db.RegisterMessage(PubKeyMethod) - -NewPubKeyPayload = _reflection.GeneratedProtocolMessageType('NewPubKeyPayload', (_message.Message,), dict( - DESCRIPTOR = _NEWPUBKEYPAYLOAD, - __module__ = 'proto_buf_pb2' - # @@protoc_insertion_point(class_scope:NewPubKeyPayload) - )) -_sym_db.RegisterMessage(NewPubKeyPayload) - -RevokePubKeyPayload = _reflection.GeneratedProtocolMessageType('RevokePubKeyPayload', (_message.Message,), dict( - DESCRIPTOR = _REVOKEPUBKEYPAYLOAD, - __module__ = 'proto_buf_pb2' - # @@protoc_insertion_point(class_scope:RevokePubKeyPayload) - )) -_sym_db.RegisterMessage(RevokePubKeyPayload) - -PubKeyStorage = _reflection.GeneratedProtocolMessageType('PubKeyStorage', (_message.Message,), dict( - DESCRIPTOR = _PUBKEYSTORAGE, - __module__ = 'proto_buf_pb2' - # @@protoc_insertion_point(class_scope:PubKeyStorage) - )) -_sym_db.RegisterMessage(PubKeyStorage) - - -# @@protoc_insertion_point(module_scope) diff --git a/gimmeremmetokensbot/remme/protos/transaction_pb2.py b/gimmeremmetokensbot/remme/protos/transaction_pb2.py deleted file mode 100644 index 1679cd4..0000000 --- a/gimmeremmetokensbot/remme/protos/transaction_pb2.py +++ /dev/null @@ -1,76 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: transaction.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='transaction.proto', - package='', - syntax='proto3', - serialized_options=None, - serialized_pb=_b('\n\x11transaction.proto\"2\n\x12TransactionPayload\x12\x0e\n\x06method\x18\x01 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x62\x06proto3') -) - - - - -_TRANSACTIONPAYLOAD = _descriptor.Descriptor( - name='TransactionPayload', - full_name='TransactionPayload', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='method', full_name='TransactionPayload.method', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='data', full_name='TransactionPayload.data', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=21, - serialized_end=71, -) - -DESCRIPTOR.message_types_by_name['TransactionPayload'] = _TRANSACTIONPAYLOAD -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -TransactionPayload = _reflection.GeneratedProtocolMessageType('TransactionPayload', (_message.Message,), dict( - DESCRIPTOR = _TRANSACTIONPAYLOAD, - __module__ = 'transaction_pb2' - # @@protoc_insertion_point(class_scope:TransactionPayload) - )) -_sym_db.RegisterMessage(TransactionPayload) - - -# @@protoc_insertion_point(module_scope) diff --git a/gimmeremmetokensbot/remme/token.py b/gimmeremmetokensbot/remme/token.py deleted file mode 100644 index 5a1d6e0..0000000 --- a/gimmeremmetokensbot/remme/token.py +++ /dev/null @@ -1,149 +0,0 @@ -""" -Provide implementation of the Remme node tokens. - -Code below is vendor code and located by address `https://github.com/Remmeauth/remme-client-python`. -""" -import os -import json -from base64 import b64encode - -import requests - -from remme.account import RemmeAccount -from remme.constants.amount import STABLE_REMME_TOKENS_REQUEST_AMOUNT -from remme.constants.family_name import RemmeFamilyName -from remme.protos.account_pb2 import AccountMethod, TransferPayload -from remme.protos.transaction_pb2 import TransactionPayload -from remme.utils import generate_address, create_nonce, sha512_hexdigest -from sawtooth_sdk.protobuf.transaction_pb2 import TransactionHeader, Transaction - - -class RequestToNode: - - @staticmethod - def send(method, params=None): - if params is None: - params = {} - - parameters = { - 'jsonrpc': '2.0', - 'id': '11', - 'method': method, - 'params': params, - } - - return requests.post( - 'https://' + os.environ.get('NODE_HOST'), - data=json.dumps(parameters), - verify=False - ) - - -class TransactionService: - - def __init__(self, private_key_hex): - self.request_to_node = RequestToNode() - self._remme_account = RemmeAccount(private_key_hex) - - def create(self, family_name, family_version, inputs, outputs, payload_bytes): - """ - Documentation for building transactions - https://sawtooth.hyperledger.org/docs/core/releases/latest/_autogen/sdk_submit_tutorial_python.html#building-the-transaction - @example - ```python - family_name = "pub_key" - family_version = "0.1" - inputs = [] - outputs = [] - payload_bytes = b"my transaction" - transaction = await remme_transaction.create(family_name, family_version, inputs, outputs, payload_bytes) - ``` - :param family_name: {string} - :param family_version: {string} - :param inputs: {list} - :param outputs: {list} - :param payload_bytes: {bytes} - :return: {Couroutine} - """ - node_config = self.request_to_node.send(method='get_node_config') - node_public_key = node_config.json().get('result').get('node_public_key') - - txn_header_bytes = TransactionHeader( - family_name=family_name, - family_version=family_version, - inputs=inputs + [self._remme_account.address], - outputs=outputs + [self._remme_account.address], - signer_public_key=self._remme_account.public_key_hex, - batcher_public_key=node_public_key, - nonce=create_nonce(), - dependencies=[], - payload_sha512=sha512_hexdigest(payload_bytes) - ).SerializeToString() - - signature = self._remme_account.sign(txn_header_bytes) - - txn = Transaction( - header=txn_header_bytes, - header_signature=signature, - payload=payload_bytes - ).SerializeToString() - - return b64encode(txn).decode('utf-8') - - -class RemmeToken: - - _family_version = "0.1" - - def __init__(self, private_key_hex=None): - self.request_to_node = RequestToNode() - self.transaction_service = TransactionService(private_key_hex=private_key_hex) - - @staticmethod - def _validate_public_key(key): - if len(key) != 66: - raise Exception("Invalid key") - return key - - def get_balance(self, address): - - balance_info = self.request_to_node.send(method='get_balance', params={ - 'public_key_address': address, - }) - - return balance_info.json().get('result') - - def send_transaction(self, public_key_to, amount=STABLE_REMME_TOKENS_REQUEST_AMOUNT): - """ - Send raw transaction to Remme node. - """ - sent_transaction_info = self.request_to_node.send(method='send_raw_transaction', params={ - 'data': self._create_transaction(public_key_to, amount), - }) - - batch_id = sent_transaction_info.json().get('result') - - return batch_id - - def _create_transaction(self, public_key_to, amount): - """ - Create raw transaction based on address's public key send token to and amount. - """ - public_key_to = self._validate_public_key(public_key_to) - receiver_address = generate_address(RemmeFamilyName.ACCOUNT.value, public_key_to) - - transfer = TransferPayload() - transfer.address_to = receiver_address - transfer.value = amount - - tr = TransactionPayload() - tr.method = AccountMethod.TRANSFER - tr.data = transfer.SerializeToString() - - return self.transaction_service.create( - family_name=RemmeFamilyName.ACCOUNT.value, - family_version=self._family_version, - inputs=[receiver_address], - outputs=[receiver_address], - payload_bytes=tr.SerializeToString(), - ) diff --git a/gimmeremmetokensbot/remme/utils.py b/gimmeremmetokensbot/remme/utils.py deleted file mode 100644 index b54ab07..0000000 --- a/gimmeremmetokensbot/remme/utils.py +++ /dev/null @@ -1,90 +0,0 @@ -""" -Provide implementation of the crypto utils. - -Code below is vendor code and located by address `https://github.com/Remmeauth/remme-client-python`. -""" -import hashlib -import base64 -import math -import random -import re -from remme.constants.patterns import RemmePatterns - - -def is_valid_batch_id(_batch_id): - return re.match(RemmePatterns.HEADER_SIGNATURE.value, _batch_id) is not None - - -def bytes_to_hex(_bytes): - # print(f"functions; bytes_to_hex args: {_bytes}") - result = utf8_to_bytes(_bytes).hex() - # print(f"functions; bytes_to_hex result: {result}") - return result - - -def base64_to_dict(_base64): - return eval(base64.b64decode(_base64)) - - -def dict_to_base64(_dict): - return base64.b64encode(str(_dict).encode('utf-8')) - - -def utf8_to_bytes(_string): - return _string.encode('UTF-8') - - -def bytes_to_utf8(_bytes): - return _bytes.decode('UTF-8') - - -def is_string_or_bytes(message): - return isinstance(message, str) or isinstance(message, bytes) - - -def is_valid_hex_string(message): - return isinstance(message, str) and is_hex(message) - - -def hex_to_bytes(message): - if isinstance(message, bytes): - return message - if is_valid_hex_string(message): - return bytes.fromhex(message) - raise Exception("Invalid type of message given. Expected hex string or bytes.") - - -def generate_address(_family_name, _public_key_to): - return "" + sha512_hexdigest(_family_name)[:6] + sha512_hexdigest(_public_key_to)[:64] - - -def generate_settings_address(key): - key_parts = key.split(".")[:4] - address_parts = [sha256_hexdigest(x)[0:16] for x in key_parts] - while (4 - len(address_parts)) != 0: - address_parts.append(sha256_hexdigest("")[0:16]) - return "000000" + "".join(address_parts) - - -def create_nonce(): - # print(f"utils; generate nonce") - hash_o = hashlib.sha512(str(math.floor(1000 * random.random())).encode('UTF-8')) - result = hash_o.hexdigest() - # print(f"utils; generate nonce result: {result}") - return result - - -def sha512_hexdigest(data): - return hashlib.sha512(data.encode('utf-8') if isinstance(data, str) else data).hexdigest() - - -def sha256_hexdigest(data): - return hashlib.sha256(data.encode('utf-8') if isinstance(data, str) else data).hexdigest() - - -def is_hex(data): - try: - int(data, 16) - return True - except ValueError: - return False diff --git a/gimmeremmetokensbot/utils.py b/gimmeremmetokensbot/utils.py index 2a702a5..48540a1 100644 --- a/gimmeremmetokensbot/utils.py +++ b/gimmeremmetokensbot/utils.py @@ -18,11 +18,11 @@ def parse_db_url(url): return database_url -def send_keystore_file(bot, message, account): +def send_keystore_file(bot, message, account_public_key, account_private_key): """ Send keystore file in `txt` format with public and private key. """ - file_content = '{' + f'"publicKey":"{account.public_key_hex}","privateKey":"{account.private_key_hex}"' + '}' + file_content = '{' + f'"publicKey":"{account_public_key}","privateKey":"{account_private_key}"' + '}' with open(f'keystore_{message.chat.id}.txt', 'w+') as keystore_file: keystore_file.write(file_content) diff --git a/requirements.txt b/requirements.txt index 0d1374f..6a26623 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ psycopg2==2.7.6.1 pyTelegramBotAPI==3.6.5 requests==2.20.1 sawtooth-sdk==1.0.5 +remme==1.1.0a1