A group is a set of elements and one binary operator that satisfies the following axioms:
- Closure: for any, the element is in .
- Associativity: for any , .
- Identity: , for all .
- Invertibility: , for all .
In addition to the above properties, if a group exhibits the commutative property of , 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 , called the generator point, such that repeated additions of with itself can generate every element in .
In fact, in prime order elliptic curves, any point can be a generator point.
Additionally, our group is cyclic, which means it has an order , such that .
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
N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141