Role-based Account Key
AccountKeyRoleBased represents a role-based key. If an account has an AccountKeyRoleBased object and the transaction type is one except account update, the validation process is done according to each roles like below:
Import necessary utils from eth_utils, web3 and eth_account
Import extend from web3py_ext to extend web3 to kaia web3
Define a web3 connection using Web3.HTTPProvider and RPC endpoint
Also, you can change the provider URL from kairos to quicknode
Define a wallet from private key using Account.from_key_pair which is a role key of role-based account
Define any message to sign
Format the message using encode_defunct to make it compatible with EIP-191 standard.
Sign the transaction with the created account
Print out the signature and its length
Recover sender address with Account.recover_message from signed message