Group Theory

A group is a set of elements
Z={a,b,c,...}Z = \{a, b, c, ...\}
and one binary operator
that satisfies the following axioms:
  • Closure: for any
    a,b∈Za,b ∈ Z
    , the element
    a+ba + b
    is in
  • Associativity: for any
    a,b,c∈Za,b,c ∈ Z
    (a+b)+c=a+(b+c)(a + b) + c = a + (b + c)
  • Identity:
    a+I=aa + I = a
    , for all
    a∈Za ∈ Z
  • Invertibility:
    a+(−a)=Ia + (-a) = I
    , for all
    a∈Za ∈ Z
In addition to the above properties, if a group exhibits the commutative property of
a+b=b+aa + b = b + a
, it is called an abelian group.
The elliptic curve used in Bitcoin is actually a mathematical group, that is finite, cyclic, abelian, and has a single-generator point, defined over the binary addition operator. These properties form the bedrock for an efficient signature and verification mechanism in Bitcoin.
A single-generator group contains an element
G∈ZG ∈ Z
, called the generator point, such that repeated additions of
with itself can generate every element in
In fact, in prime order elliptic curves, every point is a generator point.
Z={G,2G,3G,4G,...}Z = \{G, 2G, 3G, 4G, ...\}
Additionally, our group is cyclic, which means it has an order
, such that
nG=InG = I
Let us now represent the generator point
in Python, used in Bitcoin.
# Generator point of the abelian group used in Bitcoin
G = Point(
# Order of the group generated by G, such that nG = I