Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
[workspace]
members = [
"constants/poseidon-1",
"constants/poseidon-2",
"constants/poseidon-3",
"constants/poseidon-4",
"constants/poseidon-5",
"constants/poseidon-6",
"constants/poseidon-7",
"constants/poseidon-8",
"constants/poseidon-9",
"constants/poseidon-10",
"constants/poseidon-11",
"constants/poseidon-12",
"constants/poseidon-13",
"constants/poseidon-14",
"constants/poseidon-15",
"constants/poseidon-16"
]

[package]
name = "poseidon-ark"
version = "0.0.1"
Expand All @@ -8,14 +28,53 @@ description = "Poseidon hash implementation"
repository = "https://github.com/arnaucube/poseidon-ark"
readme = "README.md"

[features]
default = ["poseidon-1", "poseidon-2", "poseidon-3", "poseidon-4", "poseidon-5", "poseidon-6", "poseidon-7", "poseidon-8", "poseidon-9", "poseidon-10", "poseidon-11", "poseidon-12", "poseidon-13", "poseidon-14", "poseidon-15", "poseidon-16"]
poseidon-1 = ["dep:poseidon-1"]
poseidon-2 = ["dep:poseidon-2"]
poseidon-3 = ["dep:poseidon-3"]
poseidon-4 = ["dep:poseidon-4"]
poseidon-5 = ["dep:poseidon-5"]
poseidon-6 = ["dep:poseidon-6"]
poseidon-7 = ["dep:poseidon-7"]
poseidon-8 = ["dep:poseidon-8"]
poseidon-9 = ["dep:poseidon-9"]
poseidon-10 = ["dep:poseidon-10"]
poseidon-11 = ["dep:poseidon-11"]
poseidon-12 = ["dep:poseidon-12"]
poseidon-13 = ["dep:poseidon-13"]
poseidon-14 = ["dep:poseidon-14"]
poseidon-15 = ["dep:poseidon-15"]
poseidon-16 = ["dep:poseidon-16"]

[dependencies]
ark-ff = "0.4.0"
ark-bn254 = { version = "0.4.0" }
ark-std = { version = "0.4.0" }
lazy_static = "1.4.0"

# Optional dependencies for each size
poseidon-1 = { path = "constants/poseidon-1", optional = true }
poseidon-2 = { path = "constants/poseidon-2", optional = true }
poseidon-3 = { path = "constants/poseidon-3", optional = true }
poseidon-4 = { path = "constants/poseidon-4", optional = true }
poseidon-5 = { path = "constants/poseidon-5", optional = true }
poseidon-6 = { path = "constants/poseidon-6", optional = true }
poseidon-7 = { path = "constants/poseidon-7", optional = true }
poseidon-8 = { path = "constants/poseidon-8", optional = true }
poseidon-9 = { path = "constants/poseidon-9", optional = true }
poseidon-10 = { path = "constants/poseidon-10", optional = true }
poseidon-11 = { path = "constants/poseidon-11", optional = true }
poseidon-12 = { path = "constants/poseidon-12", optional = true }
poseidon-13 = { path = "constants/poseidon-13", optional = true }
poseidon-14 = { path = "constants/poseidon-14", optional = true }
poseidon-15 = { path = "constants/poseidon-15", optional = true }
poseidon-16 = { path = "constants/poseidon-16", optional = true }

[dev-dependencies]
criterion = "0.3"

[[bench]]
name = "bench_poseidon_hash"
harness = false

9 changes: 9 additions & 0 deletions constants/poseidon-1/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[package]
name = "poseidon-1"
version = "0.1.0"
edition = "2021"

[dependencies]
ark-ff = "0.4.0"
ark-bn254 = "0.4.0"
ark-std = "0.4.0"
149 changes: 149 additions & 0 deletions constants/poseidon-1/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
pub fn c_constants() -> Vec<&'static str> {
{
vec![
"4417881134626180770308697923359573201005643519861877412381846989312604493735",
"5433650512959517612316327474713065966758808864213826738576266661723522780033",
"13641176377184356099764086973022553863760045607496549923679278773208775739952",
"17949713444224994136330421782109149544629237834775211751417461773584374506783",
"13765628375339178273710281891027109699578766420463125835325926111705201856003",
"19179513468172002314585757290678967643352171735526887944518845346318719730387",
"5157412437176756884543472904098424903141745259452875378101256928559722612176",
"535160875740282236955320458485730000677124519901643397458212725410971557409",
"1050793453380762984940163090920066886770841063557081906093018330633089036729",
"10665495010329663932664894101216428400933984666065399374198502106997623173873",
"19965634623406616956648724894636666805991993496469370618546874926025059150737",
"13007250030070838431593222885902415182312449212965120303174723305710127422213",
"16877538715074991604507979123743768693428157847423939051086744213162455276374",
"18211747749504876135588847560312685184956239426147543810126553367063157141465",
"18151553319826126919739798892854572062191241985315767086020821632812331245635",
"19957033149976712666746140949846950406660099037474791840946955175819555930825",
"3469514863538261843186854830917934449567467100548474599735384052339577040841",
"989698510043911779243192466312362856042600749099921773896924315611668507708",
"12568377015646290945235387813564567111330046038050864455358059568128000172201",
"20856104135605479600325529349246932565148587186338606236677138505306779314172",
"8206918720503535523121349917159924938835810381723474192155637697065780938424",
"1309058477013932989380617265069188723120054926187607548493110334522527703566",
"14076116939332667074621703729512195584105250395163383769419390236426287710606",
"10153498892749751942204288991871286290442690932856658983589258153608012428674",
"18202499207234128286137597834010475797175973146805180988367589376893530181575",
"12739388830157083522877690211447248168864006284243907142044329113461613743052",
"15123358710467780770838026754240340042441262572309759635224051333176022613949",
"19925004701844594370904593774447343836015483888496504201331110250494635362184",
"10352416606816998476681131583320899030072315953910679608943150613208329645891",
"10567371822366244361703342347428230537114808440249611395507235283708966113221",
"5635498582763880627392290206431559361272660937399944184533035305989295959602",
"11866432933224219174041051738704352719163271639958083608224676028593315904909",
"5795020705294401441272215064554385591292330721703923167136157291459784140431",
"9482202378699252817564375087302794636287866584767523335624368774856230692758",
"4245237636894546151746468406560945873445548423466753843402086544922216329298",
"12000500941313982757584712677991730019124834399479314697467598397927435905133",
"7596790274058425558167520209857956363736666939016807569082239187494363541787",
"2484867918246116343205467273440098378820186751202461278013576281097918148877",
"18312645949449997391810445935615409295369169383463185688973803378104013950190",
"15320686572748723004980855263301182130424010735782762814513954166519592552733",
"12618438900597948888520621062416758747872180395546164387827245287017031303859",
"17438141672027706116733201008397064011774368832458707512367404736905021019585",
"6374197807230665998865688675365359100400438034755781666913068586172586548950",
"2189398913433273865510950346186699930188746169476472274335177556702504595264",
"6268495580028970231803791523870131137294646402347399003576649137450213034606",
"17896250365994900261202920044129628104272791547990619503076839618914047059275",
"13692156312448722528008862371944543449350293305158722920787736248435893008873",
"15234446864368744483209945022439268713300180233589581910497691316744177619376",
"1572426502623310766593681563281600503979671244997798691029595521622402217227",
"80103447810215150918585162168214870083573048458555897999822831203653996617",
"8228820324013669567851850635126713973797711779951230446503353812192849106342",
"5375851433746509614045812476958526065449377558695752132494533666370449415873",
"12115998939203497346386774317892338270561208357481805380546938146796257365018",
"9764067909645821279940531410531154041386008396840887338272986634350423466622",
"8538708244538850542384936174629541085495830544298260335345008245230827876882",
"7140127896620013355910287215441004676619168261422440177712039790284719613114",
"14297402962228458726038826185823085337698917275385741292940049024977027409762",
"6667115556431351074165934212337261254608231545257434281887966406956835140819",
"20226761165244293291042617464655196752671169026542832236139342122602741090001",
"12038289506489256655759141386763477208196694421666339040483042079632134429119",
"19027757334170818571203982241812412991528769934917288000224335655934473717551",
"16272152964456553579565580463468069884359929612321610357528838696790370074720",
"2500392889689246014710135696485946334448570271481948765283016105301740284071",
"8595254970528530312401637448610398388203855633951264114100575485022581946023",
"11635945688914011450976408058407206367914559009113158286982919675551688078198",
"614739068603482619581328040478536306925147663946742687395148680260956671871",
"18692271780377861570175282183255720350972693125537599213951106550953176268753",
"4987059230784976306647166378298632695585915319042844495357753339378260807164",
"21851403978498723616722415377430107676258664746210815234490134600998983955497",
"9830635451186415300891533983087800047564037813328875992115573428596207326204",
"4842706106434537116860242620706030229206345167233200482994958847436425185478",
"6422235064906823218421386871122109085799298052314922856340127798647926126490",
"4564364104986856861943331689105797031330091877115997069096365671501473357846",
"1944043894089780613038197112872830569538541856657037469098448708685350671343",
"21179865974855950600518216085229498748425990426231530451599322283119880194955",
"14296697761894107574369608843560006996183955751502547883167824879840894933162",
"12274619649702218570450581712439138337725246879938860735460378251639845671898",
"16371396450276899401411886674029075408418848209575273031725505038938314070356",
"3702561221750983937578095019779188631407216522704543451228773892695044653565",
"19721616877735564664624984774636557499099875603996426215495516594530838681980",
"6383350109027696789969911008057747025018308755462287526819231672217685282429",
"20860583956177367265984596617324237471765572961978977333122281041544719622905",
"5766390934595026947545001478457407504285452477687752470140790011329357286275",
"4043175758319898049344746138515323336207420888499903387536875603879441092484",
"15579382179133608217098622223834161692266188678101563820988612253342538956534",
"1864640783252634743892105383926602930909039567065240010338908865509831749824",
"15943719865023133586707144161652035291705809358178262514871056013754142625673",
"2326415993032390211558498780803238091925402878871059708106213703504162832999",
"19995326402773833553207196590622808505547443523750970375738981396588337910289",
"5143583711361588952673350526320181330406047695593201009385718506918735286622",
"15436006486881920976813738625999473183944244531070780793506388892313517319583",
"16660446760173633166698660166238066533278664023818938868110282615200613695857",
"4966065365695755376133119391352131079892396024584848298231004326013366253934",
"20683781957411705574951987677641476019618457561419278856689645563561076926702",
"17280836839165902792086432296371645107551519324565649849400948918605456875699",
"17045635513701208892073056357048619435743564064921155892004135325530808465371",
"17055032967194400710390142791334572297458033582458169295920670679093585707295",
"15727174639569115300068198908071514334002742825679221638729902577962862163505",
"1001755657610446661315902885492677747789366510875120894840818704741370398633",
"18638547332826171619311285502376343504539399518545103511265465604926625041234",
"6751954224763196429755298529194402870632445298969935050224267844020826420799",
"3526747115904224771452549517614107688674036840088422555827581348280834879405",
"15705897908180497062880001271426561999724005008972544196300715293701537574122",
"574386695213920937259007343820417029802510752426579750428758189312416867750",
"15973040855000600860816974646787367136127946402908768408978806375685439868553",
"20934130413948796333037139460875996342810005558806621330680156931816867321122",
"6918585327145564636398173845411579411526758237572034236476079610890705810764",
"14158163500813182062258176233162498241310167509137716527054939926126453647182",
"4164602626597695668474100217150111342272610479949122406544277384862187287433",
"12146526846507496913615390662823936206892812880963914267275606265272996025304",
"10153527926900017763244212043512822363696541810586522108597162891799345289938",
"13564663485965299104296214940873270349072051793008946663855767889066202733588",
"5612449256997576125867742696783020582952387615430650198777254717398552960096",
"12151885480032032868507892738683067544172874895736290365318623681886999930120",
"380452237704664384810613424095477896605414037288009963200982915188629772177",
"9067557551252570188533509616805287919563636482030947363841198066124642069518",
"21280306817619711661335268484199763923870315733198162896599997188206277056900",
"5567165819557297006750252582140767993422097822227408837378089569369734876257",
"10411936321072105429908396649383171465939606386380071222095155850987201580137",
"21338390051413922944780864872652000187403217966653363270851298678606449622266",
"12156296560457833712186127325312904760045212412680904475497938949653569234473",
"4271647814574748734312113971565139132510281260328947438246615707172526380757",
"9061738206062369647211128232833114177054715885442782773131292534862178874950",
"10134551893627587797380445583959894183158393780166496661696555422178052339133",
"8932270237664043612366044102088319242789325050842783721780970129656616386103",
"3339412934966886386194449782756711637636784424032779155216609410591712750636",
"9704903972004596791086522314847373103670545861209569267884026709445485704400",
"17467570179597572575614276429760169990940929887711661192333523245667228809456",
]
}
}

pub fn m_constants() -> Vec<Vec<&'static str>> {
{
vec![
vec![
"2910766817845651019878574839501801340070030115151021261302834310722729507541",
"19727366863391167538122140361473584127147630672623100827934084310230022599144",
],
vec![
"5776684794125549462448597414050232243778680302179439492664047328281728356345",
"8348174920934122550483593999453880006756108121341067172388445916328941978568",
],
]
}
}
9 changes: 9 additions & 0 deletions constants/poseidon-10/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[package]
name = "poseidon-10"
version = "0.1.0"
edition = "2021"

[dependencies]
ark-ff = "0.4.0"
ark-bn254 = "0.4.0"
ark-std = "0.4.0"
Loading