ain.utils package

Submodules

Module contents

ain.utils.addHexPrefix(input: str) str

Adds the hex prefix(‘0x’) to the given string if it does not hex prefixed.

Parameters:

input (str) – The string that you want to add prefix.

Returns:

The hex prefixed string.

Return type:

str

ain.utils.areSameAddresses(address1: str, address2: str) bool

Checks if the two addresses are the same.

Parameters:
  • address1 (str) – The first address.

  • address2 (str) – The second address.

Returns:

True, if the two addresses are the same.

False, if not.

Return type:

bool

ain.utils.bytesToHex(input: bytes) str

Converts the given bytes into the hex prefixed hex string.

Parameters:

input (bytes) – The bytes that you want to convert into hex.

Returns:

The hex converted bytes.

Return type:

str

ain.utils.countDecimals(value: float) int

Counts the given number’s decimals.

Parameters:

value (float) – The number.

Returns:

The decimal count.

Return type:

int

ain.utils.decryptWithPrivateKey(privateKey: bytes | str, encrypted: ECIESEncrypted) str

Decrypts encrypted data with privateKey.

Parameters:
  • privateKey (Union[bytes, str]) – The private key.

  • encrypted (ECIESEncrypted) – The ECIES encrypted object.

Returns:

The decrypted message.

Return type:

str

ain.utils.ecRecoverPub(msgHash: bytes, signature: ECDSASignature, chainId: int = 0) bytes

Recovers the public key from ECDSA signature.

Parameters:
  • msgHash (bytes) – The hash of the message.

  • signature (ECDSASignature) – The object of the ECDSA signature.

  • chainId (int) – The chain ID of the provider. Defaults to 0.

Returns:

The recovered public key.

Return type:

str

ain.utils.ecSignHash(msgHash: bytes, privateKey: bytes, chainId: int = 0) ECDSASignature

Returns the ECDSA signature of a message hash.

Parameters:
  • msgHash (bytes) – The message hash.

  • privateKey (bytes) – The private key for the signature.

  • chainId (int) – The chain ID of the provider. Defaults to 0.

Returns:

The object of the ECDSA signature.

Return type:

ECDSASignature

ain.utils.ecSignMessage(message: Any, privateKey: bytes, chainId: int = 0) str

Signs a message with a private key and returns a string signature.

Parameters:
  • message – The message that you want to sign. Note that message should be convertible with toBytes(). If message is unsupported type, raises TypeError.

  • privateKey (bytes) – The private key for the signature.

  • chainId (int) – The chain ID of the provider. Defaults to 0.

Returns:

The hex prefixed string signature.

Return type:

str

ain.utils.ecSignTransaction(txData: TransactionBody, privateKey: bytes, chainId: int = 0) str

Signs a transaction body with a private key and returns a string signature.

Parameters:
  • txData (TransactionBody) – The transaction that you want to sign.

  • privateKey (bytes) – The private key for the signature.

  • chainId (int) – The chain ID of the provider. Defaults to 0.

Returns:

The hex prefixed string signature.

Return type:

str

ain.utils.ecVerifySig(data: Any, signature: str, address: str, chainId: int = 0) bool

Verifies if the signature is valid.

Parameters:
  • data – The message or transaction that you want to verify.

  • signature (str) – The hex prefixed string signature.

  • address (str) – The address of the signature.

  • chainId (int) – The chain ID of the provider. Defaults to 0.

Returns:

True, if the given signature is a valid signature.

False, if not.

Return type:

bool

ain.utils.encodeVarInt(number: int) bytes

Encodes the number as bitcoin variable length integer

Parameters:

number (int) – A number that you want to encode.

Returns:

The encoded number as bitcoin variable length integer.

Return type:

bytes

ain.utils.encryptWithPublicKey(publicKey: bytes | str, message: str) ECIESEncrypted

Encrypts message with publicKey.

Parameters:
  • publicKey (Union[bytes, str]) – The public key. When the type is str, it must be hex prefixed.

  • message (str) – The message.

Returns:

The object of the encrypted message.

Return type:

ECIESEncrypted

ain.utils.generateMnemonic() str

Generates the random english mnemonic.

Returns:

The randomly generated english mnemonic.

Return type:

str

ain.utils.getTimestamp() int

Gets the current unix timestamp.

Returns:

The current unix timestamp.

Return type:

int

ain.utils.hashMessage(message: Any) bytes

Creates the bitcoin’s varint encoding of Keccak-256 hash of the message, prefixed with the header AINetwork Signed Message:.

Parameters:

message – The message that you want to create hash. Note that message should be convertible with toBytes(). If message is unsupported type, raises TypeError.

Returns:

The bitcoin’s varint encoding of Keccak-256 hash of the message.

Return type:

bytes

ain.utils.hashTransaction(transaction: TransactionBody | str) bytes

Creates the Keccak-256 hash of the transaction body.

Parameters:

transaction (Union[TransactionBody, str]) – The transaction that you want to create hash.

Returns:

The Keccak hash of the transaction.

Return type:

bytes

ain.utils.isHexPrefixed(input: str) bool

Checks if the given string is prefixed with 0x.

Parameters:

input (str) – The string that you want to check.

Returns:

True, if the input is hex prefixed.

False, if not.

Return type:

bool

ain.utils.isHexString(input: str) bool

Checks if the given string is a hex string.

Parameters:

input (str) – The string that you want to check.

Returns:

True, if the input is hex string.

False, if not.

Return type:

bool

ain.utils.isValidAddress(address: str) bool

Checks if the given string is a valid address.

Parameters:

address (str) – The address that you want to check.

Returns:

True, if the address is valid address.

False, if not.

Return type:

bool

ain.utils.isValidPrivate(privateKey: bytes) bool

Checks whether the privateKey is a valid private key (follows the rules of the curve secp256k1).

Parameters:

privateKey (bytes) – The private key of the AIN blockchain account that you want to check.

Returns:

True, if the given key is a valid private key.

False, if not.

Return type:

bool

ain.utils.isValidPublic(publicKey: bytes, isSEC1: bool = False) bool

Checks whether the publicKey is a valid public key (follows the rules of the curve secp256k1 and meets the AIN requirements).

Parameters:
  • publicKey (bytes) – The public key of the AIN blockchain account that you want to check.

  • isSEC1 (bool) – If True, public key should be SEC1 encoded one. Defaults to False.

Returns:

True, if the given key is a valid public key.

False, if not.

Return type:

bool

ain.utils.keccak(input: Any, bits: int = 256) bytes

Creates the Keccak hash of the input.

Parameters:
  • input – The input that you want to create hash. Note that input will be converted with toBytes method. If input is unsupported type, raises TypeError.

  • bits (int) – The size of the hash, in (224, 456, 384, 512). Defaults to 256.

Returns:

The Keccak hash of the input.

Return type:

bytes

ain.utils.mnemonicToPrivatekey(mnemonic: str, index: int = 0, chain: str = 'AIN') bytes

Returns an private key with the given mnemonic.

Parameters:
  • mnemonic (str) – The mnemonic of account.

  • index (int) – The index of account. Defaults to 0.

  • chain (str) – The chain to use the derivation path of. Defaults to “AIN”.

Returns:

The private key with the given mnemonic.

Return type:

bytes

ain.utils.padToEven(input: str) str

Pads the leading zero into the given string to have an even length.

Parameters:

input (str) – The string that you want to pad.

Returns:

The leading zero padded string, if input is odd lengthed.

input itself, if it is even lengthed.

Return type:

str

ain.utils.privateToAddress(privateKey: bytes) str

Returns the checksummed AIN blockchain address of the given private key.

Parameters:

privateKey (bytes) – The private key of an AIN blockchain account.

Returns:

The checksummed AIN blockchain address of the given private key.

Return type:

str

ain.utils.privateToPublic(privateKey: bytes) bytes

Returns the public key of a given private key.

Parameters:

privateKey (bytes) – The private key of the AIN blockchain account.

Returns:

The public key of a given private key.

Return type:

bytes

ain.utils.pubToAddress(publicKey: bytes | str, isSEC1: bool = False) bytes

Returns the AIN blockchain address of the given public key, which is the lower 160 bits of the Keccak-256 hash of the public key.

Parameters:
  • publicKey (Union[bytes, str]) – The public key of the AIN blockchain account or SEC1 encoded public key. When the type is str, it must be hex prefixed.

  • isSEC1 (bool) – If True, public key should be SEC1 encoded one. Defaults to False.

Returns:

The AIN blockchain address of the given public key.

Return type:

bytes

ain.utils.replaceFloat(matchObj)

Generates a replacement string for the given Match object.

Parameters:

matchObj (Any) – The Match object.

Returns:

The replacement string.

Return type:

str

ain.utils.stripHexPrefix(input: str) str

Strips 0x from the given string, if that is hex prefixed.

Parameters:

input (str) – The string that you want to strip.

Returns:

The hex prefix stripped string, if input is hex prefixed.

input itself, if it not hex prefixed.

Return type:

str

ain.utils.toBytes(input: Any) bytes

Attempts to convert a input into a bytes, This function is equivalent to toBuffer from @ainblockchain/ain-util.

Parameters:

input – The input that you want to convert. It supports bytes, list(of ints), string, int, and None. If input is unsupported type, raises TypeError.

Returns:

The converted bytes.

Return type:

bytes

ain.utils.toChecksumAddress(address: str) str

Returns a checksummed address.

Parameters:

address (str) – The address that you want to convert. If address isn’t valid, raises ValueError.

Returns:

The checksummed address.

Return type:

str

ain.utils.toJsLikeFloats(serialized: str) str

Reformats float numbers to JavaScript-like formats.

Parameters:

serialized (str) – The string to be reformatted.

Returns:

The reformatted string.

Return type:

str

ain.utils.toJsonString(obj: Any) str

Serializes the given object to a JSON string.

Parameters:

obj (Any) – The given object to serialize.

Returns:

The result of the serialization.

Return type:

str