Skip to content

viswanathkgp12/eth-kms-signer

Repository files navigation

eth_kms_signer

codecov PyPI Downloads PyPI - License Documentation Status

AWS KMS Signer for ETH transactions(EIP 155/EIP 1559/ EIP 2930)

>> Go to documentation

Dependencies

  • Python 3.5+

QuickStart

This library is available on PyPI. Install via pip as:

  pip install eth-kms-signer

Usage

  1. Instantiate eth kms signer client
from eth_kms_signer import EthKmsClient

client = EthKmsClient(region_name="{aws-kms-region}")
  1. Initailize web3
from web3 import Web3

w3 = Web3(Web3.HTTPProvider(endpoint_uri="{rpc_url}"))
  1. Sign a EIP 155 transaction
tx = {
    "nonce": nonce,
    "to": "0x7EeD368F105a6eaC9Ac645bC3440fEa9A6C3D531",
    "value": w3.toWei(12, "wei"),
    "gas": 21000,
    "gasPrice": w3.toWei(1, "gwei"),
    "chainId": "0x4",
}
signed_tx = client.sign_transaction(tx, key_id)
tx_hash = w3.eth.sendRawTransaction(signed_tx)
  1. Sign a EIP 1559 Dynamic Fee transaction
tx = {
    "nonce": nonce,
    "to": "0x7EeD368F105a6eaC9Ac645bC3440fEa9A6C3D531",
    "value": w3.toWei(12, "wei"),
    "gas": 21000,
    "maxFeePerGas": w3.toWei(1, "gwei"),
    "maxPriorityFeePerGas": w3.toWei(1, "gwei"),
    "type": "0x2",
    "chainId": "0x4",
}
signed_tx = client.sign_transaction(tx, key_id)
tx_hash = w3.eth.sendRawTransaction(signed_tx)

Examples

Choose one of the following for a fully detailed example:

Terraform to provision AWS KMS Key

The following example makes use of the CloudPosse Terraform Module:

Detailed Example