def is_identity_issuer(self, did_issuer: str) -> Transaction: issuer_address = NetworkDid.from_did(did_issuer).proxy_address data = ContractsService.AlastriaIdentityManager( self.endpoint).encodeABI(fn_name='isIdentityIssuer', args=[issuer_address]) return Transaction(to=Web3.toChecksumAddress(IDENTITY_MANAGER_ADDRESS), data=data)
def get_entity(self, entity: Entity) -> Transaction: entity_address = NetworkDid.from_did(entity.did_entity).proxy_address data = ContractsService.AlastriaIdentityManager( self.endpoint).encodeABI(fn_name='getEntity', args=[entity_address]) return Transaction(to=Web3.toChecksumAddress(IDENTITY_MANAGER_ADDRESS), data=data)
def set_entity_url_aoa_aid(self, entity: Entity) -> Transaction: entity_address = NetworkDid.from_did(entity.did_entity).proxy_address data = self.delegated( ContractsService.AlastriaIdentityManager(self.endpoint).encodeABI( fn_name='setUrlAOA', args=[entity.url_aoa])) return Transaction(to=Web3.toChecksumAddress(IDENTITY_MANAGER_ADDRESS), data=data)
def prepare_alastria_id(self, sign_address: str) -> Transaction: data = self.delegated( ContractsService.AlastriaIdentityManager(self.endpoint).encodeABI( fn_name="prepareAlastriaID", args=[sign_address])) return Transaction(to=Web3.toChecksumAddress(IDENTITY_MANAGER_ADDRESS), data=data)
def _build_transaction(self, function_name: str, args: list, delegated: bool) -> Transaction: encoded_abi = ContractsService.AlastriaPublicKeyRegistry( self.endpoint).encodeABI(fn_name=function_name, args=args) data = self.delegated(encoded_abi) if delegated else encoded_abi return Transaction( to=Web3.toChecksumAddress(PUBLIC_KEY_REGISTRY_ADDRESS), data=data)
def add_identity_service_provider( self, did_service_provider: str) -> Transaction: provider_address = NetworkDid.from_did( did_service_provider).proxy_address data = self.delegated( ContractsService.AlastriaIdentityManager(self.endpoint).encodeABI( fn_name='addIdentityServiceProvider', args=[provider_address])) return Transaction(to=Web3.toChecksumAddress(IDENTITY_MANAGER_ADDRESS), data=data)
def update_identity_issuer_eidas_level(self, did_issuer: str, level: int) -> Transaction: issuer_address = NetworkDid.from_did(did_issuer).proxy_address data = self.delegated( ContractsService.AlastriaIdentityManager(self.endpoint).encodeABI( fn_name='updateIdentityIssuerEidasLevel', args=[issuer_address, level])) return Transaction(to=Web3.toChecksumAddress(IDENTITY_MANAGER_ADDRESS), data=data)
def create_alastria_identity(self, public_key: str) -> Transaction: public_key_data = ContractsService.AlastriaPublicKeyRegistry( self.endpoint).encodeABI(fn_name="addKey", args=[public_key]) data = ContractsService.AlastriaIdentityManager( self.endpoint).encodeABI(fn_name="createAlastriaIdentity", args=[public_key_data]) return Transaction(to=Web3.toChecksumAddress(IDENTITY_MANAGER_ADDRESS), data=data)
def add_entity(self, entity: Entity) -> Transaction: entity_address = NetworkDid.from_did(entity.did_entity).proxy_address data = self.delegated( ContractsService.AlastriaIdentityManager(self.endpoint).encodeABI( fn_name='addEntity', args=[ entity_address, entity.name, entity.cif, entity.url_logo, entity.url_create_aid, entity.url_aoa, entity.status ])) return Transaction(to=Web3.toChecksumAddress(IDENTITY_MANAGER_ADDRESS), data=data)
def generate_transaction(self, function_name: str, args: list) -> Transaction: encoded_abi = self.contract_handler.encodeABI(fn_name=function_name, args=args) payload = encoded_abi if self.is_delegated_call(): payload = self.delegated(encoded_abi) contract_address = self.delegated_call_address or self.contract_address return Transaction(to=Web3.toChecksumAddress(contract_address), data=payload)
def test_update_transaction_nonce(): endpoint = MagicMock() endpoint.eth.getTransactionCount.return_value = 3 default_nonce = 1 user_identity = UserIdentity(endpoint=endpoint, address='0x123', private_key='1234', nonce=default_nonce, transactions=[]) transaction = Transaction() identity = UserIdentityService(user_identity) updated_transaction = identity.update_transaction_nonce(transaction) assert updated_transaction.nonce != default_nonce
def update_transaction_nonce(self, transaction: Transaction) -> Transaction: if transaction.nonce == DEFAULT_NONCE: transaction.nonce = self.identity.endpoint.eth.getTransactionCount( self.identity.address) return transaction
def get_identity_key(self, address: str) -> Transaction: data = ContractsService.AlastriaIdentityManager( self.endpoint).encodeABI(fn_name='identityKeys', args=[address]) return Transaction(to=Web3.toChecksumAddress(IDENTITY_MANAGER_ADDRESS), data=data)
def get_entities_list(self) -> Transaction: data = ContractsService.AlastriaIdentityManager( self.endpoint).encodeABI(fn_name='entitiesList', args=[]) return Transaction(to=Web3.toChecksumAddress(IDENTITY_MANAGER_ADDRESS), data=data)