feat(core): implement core MEV bot functionality with market scanning and Uniswap V3 pricing
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
184
vendor/github.com/consensys/gnark-crypto/ecc/bls12-381/multiexp_jacobian.go
generated
vendored
Normal file
184
vendor/github.com/consensys/gnark-crypto/ecc/bls12-381/multiexp_jacobian.go
generated
vendored
Normal file
@@ -0,0 +1,184 @@
|
||||
// Copyright 2020-2025 Consensys Software Inc.
|
||||
// Licensed under the Apache License, Version 2.0. See the LICENSE file for details.
|
||||
|
||||
// Code generated by consensys/gnark-crypto DO NOT EDIT
|
||||
|
||||
package bls12381
|
||||
|
||||
func processChunkG1Jacobian[B ibg1JacExtended](chunk uint64,
|
||||
chRes chan<- g1JacExtended,
|
||||
c uint64,
|
||||
points []G1Affine,
|
||||
digits []uint16,
|
||||
sem chan struct{}) {
|
||||
|
||||
if sem != nil {
|
||||
// if we are limited, wait for a token in the semaphore
|
||||
<-sem
|
||||
}
|
||||
|
||||
var buckets B
|
||||
for i := 0; i < len(buckets); i++ {
|
||||
buckets[i].SetInfinity()
|
||||
}
|
||||
|
||||
// for each scalars, get the digit corresponding to the chunk we're processing.
|
||||
for i, digit := range digits {
|
||||
if digit == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// if msbWindow bit is set, we need to subtract
|
||||
if digit&1 == 0 {
|
||||
// add
|
||||
buckets[(digit>>1)-1].addMixed(&points[i])
|
||||
} else {
|
||||
// sub
|
||||
buckets[(digit >> 1)].subMixed(&points[i])
|
||||
}
|
||||
}
|
||||
|
||||
// reduce buckets into total
|
||||
// total = bucket[0] + 2*bucket[1] + 3*bucket[2] ... + n*bucket[n-1]
|
||||
|
||||
var runningSum, total g1JacExtended
|
||||
runningSum.SetInfinity()
|
||||
total.SetInfinity()
|
||||
for k := len(buckets) - 1; k >= 0; k-- {
|
||||
if !buckets[k].IsInfinity() {
|
||||
runningSum.add(&buckets[k])
|
||||
}
|
||||
total.add(&runningSum)
|
||||
}
|
||||
|
||||
if sem != nil {
|
||||
// release a token to the semaphore
|
||||
// before sending to chRes
|
||||
sem <- struct{}{}
|
||||
}
|
||||
|
||||
chRes <- total
|
||||
}
|
||||
|
||||
// we declare the buckets as fixed-size array types
|
||||
// this allow us to allocate the buckets on the stack
|
||||
type bucketg1JacExtendedC3 [4]g1JacExtended
|
||||
type bucketg1JacExtendedC4 [8]g1JacExtended
|
||||
type bucketg1JacExtendedC5 [16]g1JacExtended
|
||||
type bucketg1JacExtendedC6 [32]g1JacExtended
|
||||
type bucketg1JacExtendedC7 [64]g1JacExtended
|
||||
type bucketg1JacExtendedC8 [128]g1JacExtended
|
||||
type bucketg1JacExtendedC9 [256]g1JacExtended
|
||||
type bucketg1JacExtendedC10 [512]g1JacExtended
|
||||
type bucketg1JacExtendedC11 [1024]g1JacExtended
|
||||
type bucketg1JacExtendedC12 [2048]g1JacExtended
|
||||
type bucketg1JacExtendedC13 [4096]g1JacExtended
|
||||
type bucketg1JacExtendedC14 [8192]g1JacExtended
|
||||
type bucketg1JacExtendedC15 [16384]g1JacExtended
|
||||
type bucketg1JacExtendedC16 [32768]g1JacExtended
|
||||
|
||||
type ibg1JacExtended interface {
|
||||
bucketg1JacExtendedC3 |
|
||||
bucketg1JacExtendedC4 |
|
||||
bucketg1JacExtendedC5 |
|
||||
bucketg1JacExtendedC6 |
|
||||
bucketg1JacExtendedC7 |
|
||||
bucketg1JacExtendedC8 |
|
||||
bucketg1JacExtendedC9 |
|
||||
bucketg1JacExtendedC10 |
|
||||
bucketg1JacExtendedC11 |
|
||||
bucketg1JacExtendedC12 |
|
||||
bucketg1JacExtendedC13 |
|
||||
bucketg1JacExtendedC14 |
|
||||
bucketg1JacExtendedC15 |
|
||||
bucketg1JacExtendedC16
|
||||
}
|
||||
|
||||
func processChunkG2Jacobian[B ibg2JacExtended](chunk uint64,
|
||||
chRes chan<- g2JacExtended,
|
||||
c uint64,
|
||||
points []G2Affine,
|
||||
digits []uint16,
|
||||
sem chan struct{}) {
|
||||
|
||||
if sem != nil {
|
||||
// if we are limited, wait for a token in the semaphore
|
||||
<-sem
|
||||
}
|
||||
|
||||
var buckets B
|
||||
for i := 0; i < len(buckets); i++ {
|
||||
buckets[i].SetInfinity()
|
||||
}
|
||||
|
||||
// for each scalars, get the digit corresponding to the chunk we're processing.
|
||||
for i, digit := range digits {
|
||||
if digit == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// if msbWindow bit is set, we need to subtract
|
||||
if digit&1 == 0 {
|
||||
// add
|
||||
buckets[(digit>>1)-1].addMixed(&points[i])
|
||||
} else {
|
||||
// sub
|
||||
buckets[(digit >> 1)].subMixed(&points[i])
|
||||
}
|
||||
}
|
||||
|
||||
// reduce buckets into total
|
||||
// total = bucket[0] + 2*bucket[1] + 3*bucket[2] ... + n*bucket[n-1]
|
||||
|
||||
var runningSum, total g2JacExtended
|
||||
runningSum.SetInfinity()
|
||||
total.SetInfinity()
|
||||
for k := len(buckets) - 1; k >= 0; k-- {
|
||||
if !buckets[k].IsInfinity() {
|
||||
runningSum.add(&buckets[k])
|
||||
}
|
||||
total.add(&runningSum)
|
||||
}
|
||||
|
||||
if sem != nil {
|
||||
// release a token to the semaphore
|
||||
// before sending to chRes
|
||||
sem <- struct{}{}
|
||||
}
|
||||
|
||||
chRes <- total
|
||||
}
|
||||
|
||||
// we declare the buckets as fixed-size array types
|
||||
// this allow us to allocate the buckets on the stack
|
||||
type bucketg2JacExtendedC3 [4]g2JacExtended
|
||||
type bucketg2JacExtendedC4 [8]g2JacExtended
|
||||
type bucketg2JacExtendedC5 [16]g2JacExtended
|
||||
type bucketg2JacExtendedC6 [32]g2JacExtended
|
||||
type bucketg2JacExtendedC7 [64]g2JacExtended
|
||||
type bucketg2JacExtendedC8 [128]g2JacExtended
|
||||
type bucketg2JacExtendedC9 [256]g2JacExtended
|
||||
type bucketg2JacExtendedC10 [512]g2JacExtended
|
||||
type bucketg2JacExtendedC11 [1024]g2JacExtended
|
||||
type bucketg2JacExtendedC12 [2048]g2JacExtended
|
||||
type bucketg2JacExtendedC13 [4096]g2JacExtended
|
||||
type bucketg2JacExtendedC14 [8192]g2JacExtended
|
||||
type bucketg2JacExtendedC15 [16384]g2JacExtended
|
||||
type bucketg2JacExtendedC16 [32768]g2JacExtended
|
||||
|
||||
type ibg2JacExtended interface {
|
||||
bucketg2JacExtendedC3 |
|
||||
bucketg2JacExtendedC4 |
|
||||
bucketg2JacExtendedC5 |
|
||||
bucketg2JacExtendedC6 |
|
||||
bucketg2JacExtendedC7 |
|
||||
bucketg2JacExtendedC8 |
|
||||
bucketg2JacExtendedC9 |
|
||||
bucketg2JacExtendedC10 |
|
||||
bucketg2JacExtendedC11 |
|
||||
bucketg2JacExtendedC12 |
|
||||
bucketg2JacExtendedC13 |
|
||||
bucketg2JacExtendedC14 |
|
||||
bucketg2JacExtendedC15 |
|
||||
bucketg2JacExtendedC16
|
||||
}
|
||||
Reference in New Issue
Block a user