Starknet Деплой еее бой!

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

Ну и все получается, деплой окончен, там ток активити :-)
Пей чай, пеки булки, пока.

Report Page