Как оптимизировать газ в Каире с помощью 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
представлять его.