Описание тега cairo-lang
1
ответ
Проверка результата сообщения/вызова L1 -> L2 в Starknet
Я написал пару контрактов для L1 (Ethereum) и L2 (Starknet), и они общаются здесь . Я вижу, что L1 отправил ожидаемое сообщение, см. этот TX на etherscan . Однако последнее сообщение там никогда не выполнялось в моем контракте L2. Я пытаюсь выяснить…
14 май '22 в 11:37
0
ответов
Что значит объявить «локальную» переменную внутри «let»?
Как я понимаю, letопределяет ссылку, которую можно рассматривать как псевдоним, например let x = y * y * yне вычисляет, а вхождения xбудет заменен y * y * y. Локальные переменные аналогичны локальным переменным других языков. Как и в https://www.cai…
04 апр '22 в 13:42
1
ответ
когда использовать оптимизацию хвостового вызова в смарт-контракте cairo
Я часто могу сделать терминальную рекурсивную версию своих функций с немного менее элегантным кодом. Должен ли я сделать это, потому что это может снизить комиссию, или я должен оставить неоптимизированную версию? Например, вот «неоптимизированная» …
20 май '22 в 16:08
1
ответ
Почему эта каирская программа хранит в памяти степень двойки?
Я пытаюсь решить этот бонусный вопрос из учебника «Как работает Каир». Я запустил следующую функцию, открыл трассировщик Cairo и увидел, что память заполнена степенями двойки. Почему? func main(): [fp + 1] = 2; ap++ [fp] = 5201798304953761792; ap++ …
16 мар '22 в 16:27
1
ответ
Ошибка: встроенные функции {'keccak'} отсутствуют в макете "все"
Когда я запускаю программу cairo(использую cairo_secp func verify_eth_signature ), я получаю сообщение об ошибке: встроенные функции {'keccak'} отсутствуют в макете «все» (слой = маленький). ПОЧЕМУ? я хочу запустить программу cairo с помощью функции…
13 янв '23 в 04:06
0
ответов
Развертывание контракта Cairo с использованием Protostar
protostar invoke --contract-address 0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf --function "deployContract" --network testnet --account-address 0x0691622bBFD29e835bA4004e7425A4e9630840EbD11c5269DE51C16774585b16 --max-fee auto…
16 дек '22 в 00:39
1
ответ
Как сгенерировать доказательство для программы Cairo и проверить его?
В SNARK вы можете использовать Zokrates или snarkjs , чтобы сгенерировать доказательство для программы/вычисления и проверить его локально или на Ethereum. Подобно этому оставшемуся без ответа вопросу , как сделать то же самое в Каире и СТАРКЕ, скаж…
20 июл '22 в 18:01
2
ответа
В чем неэффективность этого каирского кода с использованием alloc_locals
Следующий код: func pow4(n) -> (m : felt): alloc_locals local x jmp body if n != 0 [ap] = 0; ap++ ret body: x = n * n [ap] = x * x; ap++ ret end func main(): pow4(n=5) ret end объявлен неэффективным в документе из-за прерывистой памяти. Я запусти…
13 июн '22 в 10:20
1
ответ
Почему range_check_ptr проверяет [0, 2^128) вместо [0, P/2)
Согласно документу, войлок — это элемент поля, то есть любое целое число в диапазоне [0, P) с P = 2 ^ 251 + 17 * 2 ^ 192 + 1. С другой стороны, range_check_ptr проверяет, находится ли войлок в пределах [0, 2^128). Я не понимаю этого ограничения: поч…
09 июл '22 в 14:43
1
ответ
Как оптимизировать газ в Каире с помощью Uint256/felt?
Я изучаю Cairo и хочу узнать больше об оптимизации газа. В компиляторе Solidity есть разница между записью uint128 и uint256. Аналогично C и другим языкам, например: contract ThisIsNotAnOptimizedContract{ uint128 Zero; uint256 One; uint128 Two; } co…
29 ноя '22 в 15:57
1
ответ
Каир: let vs tempvar в чем разница?
Я новичок в Каире, и я хочу знать, в чем разница, когда я пишуlet x = 1;иtempvar x = 1;. Есть ли разница в Cairo Lang между let и tempvar?
29 ноя '22 в 17:42
1
ответ
Тестирование функции контракта Starknet Cairo с адресом
Я создал модуль на языке Cairo и хотел бы протестировать его. Контракт довольно прост: он управляет списком авторизованных адресов и предоставляет некоторые вспомогательные функции «модификатора». Я взял пример кода модульного тестирования из докуме…
19 июл '22 в 10:02
1
ответ
HashBuiltin - Каир
у меня этоcontract.cairo:3:59: Unknown identifier 'HashBuiltin'после выполнения: starknet-compile contract.cairo --output contract_compiled.json --abi contract_abi.json код : @external func increase_balance{syscall_ptr : felt*, pedersen_ptr : HashBu…
18 июл '22 в 11:41
1
ответ
Как удалить cairo 0 с Mac после обновления до Cairo 1?
Я пытаюсь удалить Cairo 1 и все файлы, установленные через него.protostar. Я уже собрал Cairo 1 и добавил его в PATH моего Mac, все работает нормально, но иногда у меня возникают конфликты со старыми исполняемыми файлами. Спасибо.
19 апр '23 в 05:17
0
ответов
Как добавить информацию для отслеживания в мой код Cairo?
В старом Каире можно было использоватьwith_attrдля добавления отладочной информации в контракты. Какой сейчас эквивалент?
27 авг '23 в 12:36
0
ответов
Есть ли поддержка плавающих чисел в Cairo 1?
Я знаю, прошло несколько дней с момента выхода Cairo 1, и уже несколько месяцев у меня возник вопрос о плавающем числе. Я знаю, что для Solidity работа с ними даже не является проблемой, но, поскольку Cairo занимается масштабированием вычислений, бу…
15 апр '23 в 03:22
1
ответ
Ошибка при объявлении/развертывании контракта в Starknet с помощью starkli
Я пытаюсь объявить о своем первом контракте в Starknet, следуя официальному руководству Starknet . Проблема в том, что когда я пытаюсь объявить свой контракт с помощью этой команды: starkli declare path/to/contract.sierra --compiler-version=2.0.1 по…
18 июл '23 в 15:06
1
ответ
Каирский контракт с конструктором не компилируется
У меня есть очень простой контракт в Каире, который я хочу скомпилировать, используяscarb buildно он не скомпилируется, ниже мой код: use serde:: Serde; use starknet:: ContractAddress; use array:: ArrayTrait; use option::OptionTrait; #[derive(Drop, …
19 июн '23 в 14:56
0
ответов
Почему многие функции в cairo включают {syscall_ptr, pedersen_ptr, range_check_ptr}?
Какой цели они служат? Я не могу найти ответ после краткого поиска в каирской книге.
25 окт '23 в 13:08
0
ответов
Что проходит эта проверка условия в cairo-lang?
Я рассматриваю задачу аукциона Paradigm ctf 2022 в Каире . Уязвимость заключается в 5 цитируемых строках. Здесь он проверяет, меньше или равна сумма unlocked_balance. Обе переменные — uint256. let (current_balance) = _balances.read(account=caller) l…
25 окт '23 в 13:16