Skip to content

Supercharging smart contract account security with custom virtual cold storage plugin functionalities | Built with @alchemyplatform Modular Smart Contract Account (ERC 6900) & aa-sdk | Learn More: https://accountkit.alchemy.com/

Notifications You must be signed in to change notification settings

alchemyplatform/aa-virtual-cold-storage

Repository files navigation

cold-storage-plugin

Overview

  • You have some NFTs that are really, really valuable. You don’t want to lose these NFTs, even if the rest of your account is compromised, including your owner key.
  • Today, you might put your NFTs in a separate EOA and lock the private key in a bank vault.
    • But then you can’t use the NFTs to get into exclusive events!
  • The Cold Storage plugin will let you secure your NFTs just as hard, but as part of your main modular account!
Screenshot 2024-03-12 at 3 34 20 PM

Core Plugin Functions

  1. Installing the Cold Storage Plugin
    • The owner specifies a highly secure storage key when installing the plugin
  2. Locking an NFT
    • The owner can lock NFTs (all ERC721s, collections, or tokens) and place them in cold storage
  3. Transferring NFT as the Owner
    • Transferring a locked NFT is blocked
    • Transferring a NFT that isn’t locked is fine
  4. Transferring a Locked NFT with Storage Key
    • The storage key has permission to transfer locked NFTs

Addtional Plugin Functions

  1. The storage key also has permissions to unlock NFTs and change the storage key
  2. Uninstalling the Plugin
    • The plugin blocks uninstalls when there locked NFTs

Demo

Screenshot 2024-03-12 at 2 28 20 PM Screenshot 2024-03-12 at 2 28 43 PM Screenshot 2024-03-12 at 2 28 58 PM Screenshot 2024-03-12 at 2 29 16 PM Screenshot 2024-03-12 at 2 29 55 PM Screenshot 2024-03-12 at 2 30 13 PM Screenshot 2024-03-12 at 2 30 42 PM Screenshot 2024-03-12 at 2 30 58 PM

Development

  • git clone git@github.com:OMGWINNING/cold-storage-plugin.git
  • cd cold-storage-plugin
  • yarn install
  • yarn run dev to load the site at http://localhost:3000

Environment variables

After you run init, your .env file should look like this

NODE_ENV=development

# https://dashboard.alchemy.com/apps
ALCHEMY_API_KEY=<YOUR_ALCHEMY_API_KEY>

# you can also use Access Keys of your account
# https://dashboard.alchemy.com/settings/access-keys
ALCHEMY_ACCESS_KEY=<YOUR_ALCHEMY_ACCESS_KEY>

# https://dashboard.alchemy.com/gas-manager
NEXT_PUBLIC_ALCHEMY_GAS_MANAGER_POLICY_ID=<YOUR_ALCHEMY_GAS_MANAGER_POLICY_ID>

NEXT_TELEMETRY_DISABLED=1

About

Supercharging smart contract account security with custom virtual cold storage plugin functionalities | Built with @alchemyplatform Modular Smart Contract Account (ERC 6900) & aa-sdk | Learn More: https://accountkit.alchemy.com/

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published