Group Theory
A group is a set of elements
$Z = \{a, b, c, ...\}$
and one binary operator
$+$
that satisfies the following axioms:
• Closure: for any
$a,b ∈ Z$
, the element
$a + b$
is in
$Z$
.
• Associativity: for any
$a,b,c ∈ Z$
,
$(a + b) + c = a + (b + c)$
.
• Identity:
$a + I = a$
, for all
$a ∈ Z$
.
• Invertibility:
$a + (-a) = I$
, for all
$a ∈ Z$
.
In addition to the above properties, if a group exhibits the commutative property of
$a + 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 ∈ Z$
, called the generator point, such that repeated additions of
$G$
with itself can generate every element in
$Z$
.
In fact, in prime order elliptic curves, every point is a generator point.
$Z = \{G, 2G, 3G, 4G, ...\}$
Additionally, our group is cyclic, which means it has an order
$n$
, such that
$nG = I$
.
Let us now represent the generator point
$G$
in Python, used in Bitcoin.
# Generator point of the abelian group used in Bitcoin
G = Point(
x=0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798,