BattleZips
  • Awesome Circom
  • 🔬Theory
    • Prerequisite Knowledge
    • Resources
      • White Papers & PDF's
      • Blogs and Writeups
      • Videos
      • Important Entities
      • Communities
    • Proving Schemes
    • Primitives
      • Hash Functions
      • Public Key Cryptosystems
        • Note on L1 key registry → L2 hot key + callback to circuit-optimized hash functions
        • ECDSA & secp256k1
        • EdDSA
      • Merkle Trees
        • What is a Merkle Tree?
        • What is a merkle proof of inclusion?
        • zk-kit
        • Incremental Merkle Trees
        • Sparse Merkle Trees
        • Tree Arity (Binary, Quinary)
      • Semaphore
      • Arithmetic Circuits
  • 🏗️Development
    • Circom Language
      • Installation
      • IDE
      • Signals and Variables
      • Signal Assignment and Constraint Generation
      • Conditional Statements
      • Components and Templates
      • Circuit Compilation
      • Syntax
    • SnarkJS
      • Proving Schemes
      • Powers of Tau
      • ZK Keys
      • Zero Knowledge Proofs
      • On-Chain ZKP
      • Page 2
    • circomlib
      • Basic Math Constraints
      • Multiplexing
      • Hashing
      • EdDSA
      • circomlibjs
    • circom-tester
    • hardhat-circom
    • SHIELD
    • Circomspect
  • 🌆Ecosystem
    • Circom vs Other Solutions
      • Domain-Specific Languages
      • ZK Virtual Machines
      • ZK Ethereum Virtual Machines
    • Communities to Join
    • Recorded Content
    • Projects
  • 🛳️Examples
    • BattleZips V1
      • On the BattleZips Project
      • Docs holder
        • Join Game UML Sequence Diagram
        • Play Game UML Sequence Diagram
        • End Game UML Sequence Diagram
      • ZK Privacy Stack
      • Deploying Artifacts to Prod
      • Browser Client
    • RollupNC
      • Smart Contracts
      • Account/ State Tree
      • Transaction Tree
      • Layer 1 Deposits to Layer 2
      • Layer 2 Transacting
      • Layer 2 Withdrawals to Layer 1
Powered by GitBook
On this page
  1. 🔬Theory
  2. Primitives
  3. Public Key Cryptosystems

ECDSA & secp256k1

PreviousNote on L1 key registry → L2 hot key + callback to circuit-optimized hash functionsNextEdDSA

Last updated 2 years ago

CtrlK
  • Background on Elliptic Curves
  • ECDSA
  • Secp256k1

Background on Elliptic Curves

Elliptic curves are geometric constructions whose equations make them ideal for asymmetric encryption. They enable a form of public key cryptography where a user is able to create a private key from the curve that can then be used to derive a public key which is represented by two points on the curve. There are many different curves that are used based on different equations

Simple equation representing an elliptic curve

ECDSA

Elliptic Curve Digital Signature Algorithm (ECDSA) is a widely used across public blockchains. It utilizes elliptic curves (hence the name) to enable the creation of digital signatures. Digital signatures are cryptographic construct that allows one to digitally verify that they have authorized a transaction on a Blockchain. There are plethora of signature algorithms but ECDSA is one of the most widely used ones

Secp256k1

ECDSA is an algorithm that allows the use of many different types of Elliptic curves based on interchangeable variables. One must take care when choosing an elliptic curve however because they are not all created equal. A curve is likely not secure if it has not been created by a team of experienced cryptographers. Due to this there are a number of adopted elliptic curve variants that have been adopted over others. Secp256k1 is one of these curves has seen its use proliferate across the Blockchain sphere. It is the curve of choice in the Bitcoin blockchain and also has been widely used in zero knowledge applications