# C bindings for Constantine verkle-ipa by Richa | Devcon SEA

- Channel: [Devcon](https://streameth.org/devcon)
- Date: 2025-10-09
- Duration: 08:26
- Topics: Science & Technology
- Watch: https://streameth.org/watch/yt-LpL-KJqxUwo
- YouTube: https://www.youtube.com/watch?v=LpL-KJqxUwo

## Description

The session is part of final presentation of Ethereum Protocol Fellowship. In this talk I would be talking about the verkle-ipa provided by Constantine and exporting those to be made available for integration by clients for the verkle integration of ethereum roadmap.

Speaker(s): Richa
Skill level: Intermediate
Track: [CLS] EPF Day
Keywords: Cryptography, Ethereum Roadmap, Verkle trees

Follow us: https://twitter.com/efdevcon, https://twitter.com/ethereum, https://warpcast.com/devcon
Learn more about devcon: https://www.devcon.org/
Learn more about ethereum: https://ethereum.org/ 

Visit the https://archive.devcon.org/ to gain access to the entire library of Devcon talks with the ease of filtering, playlists, personalized suggestions, decentralized access on Swarm, IPFS and more.

Devcon is the Ethereum conference for developers, researchers, thinkers, and makers. 
Devcon SEA was held in Bangkok, Thailand on Nov 12 - Nov 15, 2024.
Devcon is organized and presented by the Ethereum Foundation. To find out more, please visit https://ethereum.foundation/

## Transcript

[Music] uh so hi everyone this is my project for C implementing C bindings for wal IPA so yeah I was mentored by uh matsim from Constantine and Agnes from nimas Team for the project so yeah talking about the project how it all started like uh um I started on the project pretty late last month so uh basically uh the idea behind the project was the Constantine Library provides a lot of cryptography uh Primitives for ethereum and non- ethereum uh backends so uh yeah so the project basically was developed since there was a lot of client teams which wanted to leverage the cryptographic support for work to integrate with their as the per performance provided by the uh Constantine and the nimus implementation of the vle drive was significantly good so yeah so that's why uh the the way to use the constant uh constanty library for integrating with other clients was to export the veral IPA implementation using the C bindings and this is what the project was about so how it all started was so the first step was implement M menting the bindings for the uh Edwards curves and the Vander vanderwagen curves along with their operations so yeah this basically involved um uh since uh the Constantine Library already had implementation of Wonder vanderwagen and the Twisted Edward curves but they were not uh exported through the sea bindings they have sea bindings for some of the curves like the elliptic curves or other palaz and Vestas curve but the adver curve and the vanderwagen curves were missing so the first part of the project was implementing the SE bindings for these curs and then since the Constantine uh code base is basically generic like it is not protocol is specific to ethereum so the next step was to implement the uh ethereum specific wrapper for the veral IPA implementation and then exporting that to be available to other client and next was to integrate it with the client teams uh so presently I was involved in working alongside with the B Basu team for integrating the Constantine bindings uh in their Basu native so yeah so how it went so I started with implementing the bindings for Twisted Edward curves so they this involved all the operations they had like the addition addition multiplication scalar multiplications Badge of find and so the uh mainly the curves which were used for the worker here were aine and projective and all the operations which were uh yeah and the operations for these were basically needed to be exported so the bindings were generated for the fine and projective curves and then uh implementation of the vanderen curve was also done in a similar way where they had the uh scaler field and uh scaler field implementation scaler field specific operations exported through the SE bindings so this first step was completed and was approved to be merged and here's the pr for it but there were some uh issues Since U Constantine is still not armed compatible so there were some issues which uh I was facing while working on like proceeding for further with it as there were some some uh GMP headers which were not being able to uh the Mac was not being able to uh find it so like had to work on it with the Linux systems uh so the next phase was to implement the um generic to make the ethereum a specific bindings for the Constantine code for veral IPA so uh yeah so this involved basically implementing the uh functions which were needed for uh to be integrated in the client architecture so it was the proof multi proof commit and verify and multi verify so uh and exporting these through the export C pragma so this PR is uh so like this work is also done and it is open for review talking about how the next steps will go on so yeah uh there are a lot of problems which are arising due to the arm incompatibility with the the Constantine so first like we need to figure out if there is some weight so that we can proceed on with the testings and then test the SE bindings with the uh test the SE bindings for the curves and the veral IPA from the Constantine and then finally integrating it with the client teams so uh we have a Basu team with which the work is currently going so there is a PR on which uh U the work has started but since the bindings were missing so we need to implement integrate it with that and yeah so this was all of thank you very much rich thank you so much yeah uh any questions any comments for Richa we still have we have ton of time to uh yeah um what what uh problems are you are facing we facing with uh the arm specific is it is it uh uh assembly level code or why why specifically is there an arm problem oh so there were some uh uh so there were some uh there's a library GMP which is uh which is available in the sea so that is that requires the x86 architecture so the Linker when I am I'm using it in the arm architecture the Linker is not able to find uh the path so I tried several ways like including the exact path for the GMP because GMP is in the system so I tried including the exact path and uh several other ways like uh manually trying the Linker to link to that GMP but that didn't work yet so I have to find other ways to see it nice work thank you awesome uh any more questions we still have a space if there is any question comment for richair yeah yeah this one test yeah I was just wondering uh can you say like what went really well with this project um um just in general sorry uh what went really well so uh what went really well was a like basically I got to know about the Constantine uh Library like for on my part like for the learning was the uh mainly thing which I actually enjoyed on and apart from that uh while working on the bindings uh like the uh veral try was already implemented so exporting those bindings were quite easier because the bindings like generating bindings there was already a template which could could be used directly to uh have the data types or the curves or the vanderwagen or the associated parts to be integrated and there were several segments of the code which needed to be modified because the library has a lot of links internally so that was also easier because of the way the code is awesome thank you so much again uh yeah good up for richer again thank you very much um yeah that was that was lovely uh yeah uh and again it's not the
