āž°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 anya,bāˆˆZa,b āˆˆ Z, the element a+ba + b is in ZZ .

  • 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 GG with itself can generate every element in ZZ.

In fact, in prime order elliptic curves, any point can be a generator point.

Z={G,2G,3G,4G,...}Z = \{G, 2G, 3G, 4G, ...\}

Additionally, our group is cyclic, which means it has an order nn, such that nG=InG = I.

Let us now represent the generator point GGin Python, used in Bitcoin.

# Generator point of the abelian group used in Bitcoin
G = Point(
    x=0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798,
    y=0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8,
    curve=secp256k1
)

# Order of the group generated by G, such that nG = I
N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

Resources

Last updated