Метод не найден при обновлении контракта в 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 ответ
Я думаю, что каждый контракт уникален. Фактически вы не можете обновить существующий контракт.
Что вы можете сделать, это использовать:
- используйте dev-deploy для создания нового идентификатора контракта каждый раз
- используйте свою текущую учетную запись (основную учетную запись) создайте вспомогательную учетную запись (дополнительную учетную запись), которую можно рассматривать как учетную запись пользователя / контракт.
- Затем вы используете этот субакк (контракт) для его развертывания.
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. Пожалуйста, поправьте меня, если я ошибаюсь.)