Starknet Деплой еее бой!
Этот день настал, аж на дебиан уехал ради такого!
Потом есесно вернулся на манжаро, но гайд как есть (пс, там yay -S python39 а в остальном тоже самое)
Деплоим гемный гем Starknet ака вен ламбо
Вот тебе кста сразу доки по установке, ну чтоб не терялся:
https://starknet.io/docs/quickstart.html#quickstart
https://starknet.io/docs/hello_starknet/account_setup.html
Установка всей важной чепухи
sudo apt install python3.9 sudo apt install python3-pip python3.9 -m venv ~/cairo_venv source ~/cairo_venv/bin/activate sudo apt install -y libgmp3-dev pip3 install cairo-lang
Теперь делаем себе кошелек
export STARKNET_NETWORK=alpha-goerli
export STARKNET_WALLET=starkware.starknet.wallets.open_zeppelin.OpenZeppelinAccount
starknet new_account starknet deploy_account
Сохрани полученные данные (адрес и паблик кей) и лети на краник
https://faucet.goerli.starknet.io/ вбиваешь свой адрес и просишь подачку
Ну и иди чай сделай себе, домашнее печенье и ребенка. Потому-что ждать ты будешь дохера и больше, кран мертвый, медленный и тупой. Смирись.
Или идешь на мост goerli https://goerli.starkgate.starknet.io/
Это быстрее и проще, когда уже нашел где насосать тестовых эфиров.
Но тут с ММ на старкнет, а затем на кошель в терминале. Да и сами транзы по прежнему долгииииииииииииие.
НО КОЛЬ СМОГ - ДЕПЛОЙ
mkdir starknet cd starknet nvim contract.cairo
текст ниже вот от сюда взял это первый экзампл контракт - https://starknet.io/docs/hello_starknet/intro.html#your-first-contract
Но есть еще такой инструментарий: https://wizard.openzeppelin.com/cairo
// Declare this file as a StarkNet contract.
%lang starknet
from starkware.cairo.common.cairo_builtins import HashBuiltin
// Define a storage variable.
@storage_var
func balance() -> (res: felt) {
}
// Increases the balance by the given amount.
@external
func increase_balance{
syscall_ptr: felt*,
pedersen_ptr: HashBuiltin*,
range_check_ptr,
}(amount: felt) {
let (res) = balance.read();
balance.write(res + amount);
return ();
}
// Returns the current balance.
@view
func get_balance{
syscall_ptr: felt*,
pedersen_ptr: HashBuiltin*,
range_check_ptr,
}() -> (res: felt) {
let (res) = balance.read();
return (res=res);
}
Компилим и деплоем
starknet-compile contract.cairo --output contract_compiled.json --abi contract_abi.json
starknet declare --contract contract_compiled.json starknet deploy --class_hash <CONTRACT CLASS HASH> starknet invoke --address <CONTRACT ADDRESS> --abi contract_abi.json --function increase_balance --inputs 1234
после declare ты получишь хэш транзакции и хеш класса контракта. Жди пока транза пройдет, посмотреть тут - https://testnet.starkscan.co/
Я ждал прям очееееееееень долго. 8+ часов с учетом кучи ошибок транзакций. А ждать нужно каждый этап между командами.
Если выдало ошибку, мол адрес не сдеплоен не прошла твоя транза
nvim ~/.starknet_accounts/starknet_open_zeppelin_accounts.json true меняешь на false здесь же кста твой приватник от кошелька, удобна, да?) Можно нужные параметры подставить и на разных кошельках деплоить. starknet deploy_account starknet declare --contract contract_compiled.json
Ну и все получается, деплой окончен, там ток активити :-)
Пей чай, пеки булки, пока.