<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Amine E.</title>
    <description>The latest articles on DEV Community by Amine E. (@aelmanaa).</description>
    <link>https://dev.to/aelmanaa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4187492%2F1808567a-4f4a-47ef-83ea-b7af02a857da.jpg</url>
      <title>DEV Community: Amine E.</title>
      <link>https://dev.to/aelmanaa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aelmanaa"/>
    <language>en</language>
    <item>
      <title>hardhat-kms 1.0: sign Hardhat 3 deployments with AWS KMS, Google Cloud KMS or Azure Key Vault</title>
      <dc:creator>Amine E.</dc:creator>
      <pubDate>Thu, 15 Oct 2026 21:19:07 +0000</pubDate>
      <link>https://dev.to/aelmanaa/hardhat-kms-10-sign-hardhat-3-deployments-with-aws-kms-google-cloud-kms-or-azure-key-vault-3nl0</link>
      <guid>https://dev.to/aelmanaa/hardhat-kms-10-sign-hardhat-3-deployments-with-aws-kms-google-cloud-kms-or-azure-key-vault-3nl0</guid>
      <description>&lt;p&gt;hardhat-kms 1.0 is out (latest: 1.0.1).&lt;/p&gt;

&lt;p&gt;hardhat-kms is a Hardhat 3 plugin that signs transactions, messages, typed data and EIP-7702 authorizations with secp256k1 keys in AWS KMS, Google Cloud KMS or Azure Key Vault. The private key never leaves the KMS, and every signature is checked against the key's address before the plugin uses it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;Install the core with the package for your cloud, here AWS (&lt;code&gt;@hardhat-kms/gcp&lt;/code&gt; and &lt;code&gt;@hardhat-kms/azure&lt;/code&gt; for the&lt;br&gt;
others):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; &lt;span class="s2"&gt;"hardhat@^3.18.0"&lt;/span&gt; hardhat-kms @hardhat-kms/aws
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configure a key
&lt;/h2&gt;

&lt;p&gt;Then attach a key to a network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;hardhatKmsAws&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@hardhat-kms/aws&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;configVariable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;defineConfig&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hardhat/config&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;hardhatKmsAws&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;kms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;deployer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;aws&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;keyId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;alias/deployer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;sepolia&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;configVariable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SEPOLIA_RPC_URL&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="na"&gt;chainId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;11155111&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;kmsAccounts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;deployer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;viem, ethers and Ignition sign with the key without code changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it and tell me what broke
&lt;/h2&gt;

&lt;p&gt;I'm looking for one developer per cloud to follow a tutorial from a new project, with a test key on Sepolia: &lt;a href="https://aelmanaa.github.io/hardhat-kms/user/tutorials/first-deploy-aws" rel="noopener noreferrer"&gt;AWS&lt;/a&gt;, &lt;a href="https://aelmanaa.github.io/hardhat-kms/user/tutorials/first-deploy-gcp" rel="noopener noreferrer"&gt;Google Cloud&lt;/a&gt;, &lt;a href="https://aelmanaa.github.io/hardhat-kms/user/tutorials/first-deploy-azure" rel="noopener noreferrer"&gt;Azure&lt;/a&gt;. Report what worked, broke or confused you with a &lt;a href="https://github.com/aelmanaa/hardhat-kms/issues/new?template=tester-report.yml" rel="noopener noreferrer"&gt;tester report&lt;/a&gt;. Test keys and testnets only; remove credentials, cloud identifiers and API-keyed RPC URLs before posting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/aelmanaa/hardhat-kms/releases/latest" rel="noopener noreferrer"&gt;Release notes and package verification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aelmanaa.github.io/hardhat-kms/" rel="noopener noreferrer"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aelmanaa/hardhat-kms" rel="noopener noreferrer"&gt;Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A community plugin, built in a personal capacity. Not affiliated with or endorsed by Nomic Foundation, Amazon Web Services, Google or Microsoft.&lt;/p&gt;

</description>
      <category>hardhat</category>
      <category>ethereum</category>
      <category>security</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
