Как оптимизировать газ в Каире с помощью Uint256/felt?

Я изучаю Cairo и хочу узнать больше об оптимизации газа. В компиляторе Solidity есть разница между записью uint128 и uint256. Аналогично C и другим языкам, например:

      contract ThisIsNotAnOptimizedContract{
    uint128 Zero;
    uint256 One;
    uint128 Two;
}

contract ThisIsAGasOptimizedContract{
    uint128 Zero;
    uint128 Two;
    uint256 One;
}

каждая переменная занимает отдельный uint256только для себя, тратя по 128 бит на каждый слот (как и первый контракт). Компилятор Solidity ставит 2 uint128 в одном 256-битном слоте памяти, когда они объявлены рядом друг с другом.

Мне любопытно, есть ли подобная проблема в Каире.Uint256использует два фетровых объекта для младших/старших битов значения.

      struct Uint256 {
    // The low 128 bits of the value.
    low: felt,
    // The high 128 bits of the value.
    high: felt,
}

Существует ли аналогичная практика в Каире для оптимизацииfeltи объекты Uint256, чтобы сохранить некоторые шаги компилятора?

1 ответ

Насколько я знаю, в Каире нет такого метода оптимизации, который вы описали для Solidity. Это может помочь иметь в виду, что a хранится с использованием 251 бита, поэтому все, что больше, чем это, напримерuint256потребуется более одногоfeltпредставлять его.

Другие вопросы по тегам