Ошибка: Blueprint — Contract not deployed

Причина и решение ошибки Blueprint «Contract not deployed» при вызове get-метода.

Blueprint: «Contract not deployed» при вызове get-метода

Обёртка Blueprint/@ton/ton пытается вызвать get-метод на адресе без активного аккаунта (нет кода на сети) или без предварительного deploy в sandbox.


Причина

  • забыли await contract.sendDeploy(...) / deploy перед get*;
  • смотришь mainnet-адрес, а деплоил в testnet (или наоборот);
  • в sandbox открыл контракт по адресу, но не отправил stateInit;
  • адрес посчитан с другими init-данными — на сети лежит другой (пустой) аккаунт.

Решение

typescript
// Blueprint + @ton/sandbox ^0.22, Tact wrapper
import { toNano } from "@ton/core";
import { Blockchain } from "@ton/sandbox";
import { Counter } from "../build/Counter/tact_Counter";

const blockchain = await Blockchain.create();
const deployer = await blockchain.treasury("deployer");

const contract = blockchain.openContract(
  await Counter.fromInit(0n), // те же аргументы init, что при деплое
);

// 1) Сначала деплой
await contract.send(
  deployer.getSender(),
  { value: toNano("0.05") },
  { $$type: "Deploy", queryId: 0n },
);

// 2) Потом get-метод
const value = await contract.getValue();
console.log(value);

В сети через Blueprint:

bash
npx blueprint run
# выбери deploy-скрипт, дождись подтверждения, затем вызывай get

Как избежать в будущем

Любой get/call — только после успешного deploy на тот же fromInit(...). В тестах проверяй blockchain.provider(address).getState() / баланс > 0 перед геттерами.

Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация