From e0f87d3752edd792b7993d64622c216ebda225f4 Mon Sep 17 00:00:00 2001 From: Clawd Date: Thu, 19 Feb 2026 20:21:41 -0800 Subject: Add field arithmetic (mod p operations) --- main.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 main.go (limited to 'main.go') diff --git a/main.go b/main.go new file mode 100644 index 0000000..9e19d35 --- /dev/null +++ b/main.go @@ -0,0 +1,33 @@ +package main + +import "fmt" + +func main() { + fmt.Println("=== secp256k1 from scratch ===") + fmt.Println() + + // Test field arithmetic with small numbers first + fmt.Println("Testing field arithmetic:") + + a := NewFieldElementFromInt64(7) + b := NewFieldElementFromInt64(5) + + fmt.Printf("a = %d\n", 7) + fmt.Printf("b = %d\n", 5) + fmt.Printf("a + b = %s (should end in ...c)\n", a.Add(b).String()) + fmt.Printf("a - b = %s (should end in ...2)\n", a.Sub(b).String()) + fmt.Printf("a * b = %s (should end in ...23, which is 35)\n", a.Mul(b).String()) + + // Test division: 10 / 5 = 2 + ten := NewFieldElementFromInt64(10) + five := NewFieldElementFromInt64(5) + fmt.Printf("10 / 5 = %s (should end in ...2)\n", ten.Div(five).String()) + + // Test inverse: 5 * inverse(5) should = 1 + inv := five.Inverse() + product := five.Mul(inv) + fmt.Printf("5 * inverse(5) = %s (should end in ...1)\n", product.String()) + + fmt.Println() + fmt.Println("Field arithmetic works!") +} -- cgit v1.2.3