Fuel Network Деплой

Fuel Network Деплой

@Notkisa

микро предисловие:
OS: Manjaro Linux
Текстовый редактор: neovim

Чуть более полное предисловие:

На данный момент представленные ниже материалы не полные - фактически представлены для локального теста. Работа кошельков в тестнет еще не доделана. Что-то может работать не так, как вы ожидаете. Я лишь прочитал доки, гиты и выдал информацию ниже.

Поэтому я оставлю ссылку на документацию для тех, кто захочет разобраться полностью:

https://fuellabs.github.io/fuel-docs/master/

https://github.com/FuelLabs/fuels-rs


Первым делом ставим Rust (который не игра)

команда с оф сайта https://www.rust-lang.org/tools/install

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Затем идем ставить себе forc-wallet

cargo uninstall forc-wallet // если установил по старой версии гайда

curl --proto '=https' --tlsv1.2 -sSf https://fuellabs.github.io/fuelup/fuelup-init.sh | sh   

fuelup toolchain new test_toolchain
fuelup component add forc@0.26.0
fuelup component add forc-wallet
forc-wallet init
forc-wallet new
Примечание с гита: You can also initialize a wallet with your existing mnemonic phrase by using forc-wallet import.
forc-wallet init - создаем кошель, получаем сид и задаем пароль, там ENTER нажми
forc-wallet new - делаем новый адрес, по умолчанию самый первый с <account_index> 0

Пора и кран потрогать и блоки посмотреть
https://faucet-beta-1.fuel.network/

https://fuellabs.github.io/block-explorer-v2/

Подпишем транзу по гайду (Эта часть для деплоя внизу)

forc-wallet sign <transaction_id> <account_index>

ВНИМАНИЕ
Скорее всего твой терминал тебе сообщил, что в душе не знает шо такое forc-wallet
Решение проблемы:

export PATH=/home/<USER>/.cargo/bin:$PATH

Если не знает, что такое cargo - ты не установил rust из начала гайда. Если не знает, что такое git clone.. установи git, это база же.

Установлено и все сделано? Отлично! Идем деплоить!

Тут щас ставим всякие их языки аналоги npm и прочую шелупонь

fuelup toolchain install latest                                                                                                                                                                                                                                                                                                                                                                                                                                                        
y ENTER не забудь, но если шо export PATH=/home/<USER>/.fuelup/bin:$PATH
Советую на досуге почитать, первая ссылка зависимости и как поднять локальную ноду, вторая сам гайд по деплою.
https://fuellabs.github.io/fuels-ts/QUICKSTART
https://fuellabs.github.io/fuel-docs/master/developer-quickstart.html

Теперь Deploy!

mkdir fuel-project
cd fuel-project
forc new counter-contract
sudo pacman -S tree && tree counter-contract
cd counter-contract
nvim src/main.sw

 В файлик main.sw мы вставляем енто:

contract;

storage {
    counter: u64 = 0,
}

abi Counter {
    #[storage(read, write)]
    fn increment();

    #[storage(read)]
    fn count() -> u64;
}

impl Counter for Contract {
    #[storage(read)]
    fn count() -> u64 {
        storage.counter
    }

 #[storage(read, write)]
    fn increment() {
        storage.counter = storage.counter + 1;
    }
}


Ниже команды длинные и не хотят влезать в блок кода, поэтому присобачил их цитатами, уж простите :3


forc build
tree .
cargo install cargo-generate
cargo generate --init fuellabs/sway templates/sway-test-rs --name counter-contract
tree .
nvim tests/harness.rs

внизу где #[tokio::test] приведи в такой вид:

#[tokio::test]
async fn can_get_contract_id() {
    let (instance, _id) = get_contract_instance().await;

    // Increment the counter
    let _result = instance.methods().increment().call().await.unwrap();

    // Get the current value of the counter
    let result = instance.methods().count().call().await.unwrap();

    // Check that the current value of the counter is 1.
    // Recall that the initial value of the counter was 0.
    assert_eq!(result.value, 1);
}
cargo test
forc deploy --url https://node-beta-1.fuel.network/graphql --gas-price 1

Адрес узнаешь в forc-wallet list

Щас чутка микро душный момент. Тебе понадобится два терминала или две вкладки в терминале.
В одном остаешься где стоишь, в другом открываешь forc-wallet. Обозначим их deploy и forc

deploy: forc deploy --url https://node-beta-1.fuel.network/graphql --gas-price 1

forc: forc-wallet list (копируй свой адрес)
deploy: твой адрес
forc: транза которую нужно подписать
deploy: подпись

Простыми словами просто из терминала в терминал вывод прошлого пихуишь!


Или можно сделать так...

forc deploy --url https://node-beta-1.fuel.network/graphql --gas-price 1 <private_key>

узнать приватный ключ можно так: forc-wallet export <account_index>

в --help в доках это не указано, не знаю почему.


На этом этапе транза подписалась и куда-то улетела хе-хе

УСЕ, ДЕГЕН. Можешь выдохнуть и пометить себе успешный деплой в списке дел!
(или не успешный деплой, но зато узнал много нового)

UPD: Прикол как оказалось заключался тупо в том, что кошель выше 0.26.0 не могет в подпись транзакции отсюда такие траблы, в гайде я изменил установку и теперь ваш кошелек сможет все подписать.

Report Page