A group is a set of elements Z={a,b,c,...} and one binary operator + that satisfies the following axioms:
Closure: for anya,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, any point can be 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 Gin 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