Метод не найден при обновлении контракта в NEAR

Я видел странное поведение при обновлении контрактов в ближнем (используя ржавчину)

Я обычно запускаю 1 первый контракт как шаблоны, следуя обычным командам:

      $ cargo new rust-myproject
cargo test -- --nocapture
cargo build --target wasm32-unknown-unknown --release
near deploy --wasmFile target/wasm32-unknown-unknown/release/myproject.wasm --accountId myaccount.testnet

near call myaccount.testnet mymethod --accountId myaccount.testnet

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

Иногда обновляется, а иногда вообще не обновляется.

Как вы можете быть уверены, что контракт является новым? Я полагаюсь на проводник, но есть ли другой способ?

Очевидно, когда я пытаюсь позвонить, я получаю «Метод не найден».

      type: 'MethodNotFound',
  context: undefined,
  index: 0,
  transaction_outcome: {
    proof: [ [Object], [Object] ],
    block_hash: '57ULC9DaU63hbQGPCvGVvvLh7TPVhrXSZfAqcwyvoWWz',
    id: '5EGfWdg2qWXvddT4v2JiyvzZ7Esdp5Qy4MJoo3qJvTHu',
    outcome: {
      logs: [],
      receipt_ids: [Array],
      gas_burnt: 2427950067142,
      tokens_burnt: '242795006714200000000',
      executor_id: 'josedlujan.testnet',
      status: [Object],
      metadata: [Object]

1 ответ

Я думаю, что каждый контракт уникален. Фактически вы не можете обновить существующий контракт.

Что вы можете сделать, это использовать:

  1. используйте dev-deploy для создания нового идентификатора контракта каждый раз
  2. используйте свою текущую учетную запись (основную учетную запись) создайте вспомогательную учетную запись (дополнительную учетную запись), которую можно рассматривать как учетную запись пользователя / контракт.
  3. Затем вы используете этот субакк (контракт) для его развертывания.

near create-account CONTRACT_NAME.ACCOUNT_ID --masterAcount ACCOUNT_ID --initialBalance 10

near deploy --wasmFile target/wasm32-unknown-unknown/release/key_value_storage.wasm --accountId CONTRACT_ID

Вы можете сослаться на эту статью.

https://learn.figment.io/tutorials/write-and-deploy-a-smart-contract-on-near

(Я также только начинаю изучать смарт-контракт Near Protocol. Пожалуйста, поправьте меня, если я ошибаюсь.)

Другие вопросы по тегам