C двоичный код (после компиляции) в EVM преобразование байт-кода
Рассмотрим следующий пример:
Предположим, у меня есть функция ADD, написанная на языке C, которая добавляет два целых числа int A и int B и возвращает сумму C. Теперь я хочу убедиться, что моя функция ADD работает правильно, используя блокчейн Ethereum.
Для этого я развернул простой умный контракт в блокчейне Ethereum, в котором есть функция Verify ((A,B), C), которая возвращает true, если проверка выполняется, и false в противном случае. Для этой проверки я хочу передать два параметра в функцию проверки. Первый параметр должен быть входами, а второй параметр - выходом моей функции ADD.
Функция Verify будет выполнена на (A,B), сгенерирует выход C'и сравнит его с C. Если C'== C, вернуть true, иначе вернуть false. Теперь для приведенного выше примера мой вопрос следующий:
- Как перевести скомпилированный двоичный код моей программы на C в код EVM? Другими словами, если я рассматриваю (A,B,0) как вывод состояния 1 и (A,B,C) как вывод состояния 2 моей программы на C, то как я могу преобразовать каждое состояние в байт-код EVM, чтобы EVM начать выполнение из состояния1 и заканчивается в состоянии2?