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

Советую на досуге почитать, первая ссылка зависимости и как поднять локальную ноду, вторая сам гайд по деплою.
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. Обозначим их 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 не могет в подпись транзакции отсюда такие траблы, в гайде я изменил установку и теперь ваш кошелек сможет все подписать.