# 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 BitcoinG = Point(    x=0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798,    y=0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8,    curve=secp256k1)​# Order of the group generated by G, such that nG = IN = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141