es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué near-cli no puede encontrar el método de mi contrato?

Así que tengo esta función implementada para mi contrato

#[payable]
fn send_message(mut self, message: &str, receiver: &str) {

Cuando intento llamarlo usando near-cli

near call v1.messenger.ijelis.testnet send_message '{ "message": "test", "sender": "iejlis.near" }' --account-id ijelis.testnet

Me da el siguiente resultado:

Scheduling a call: v1.messenger.ijelis.testnet.send_message({ "message": "test", "sender": "iejlis.near" })
Doing account.functionCall()
Receipt: DDXubobUugwsGnr9GqXxMv7PJqT3YsLjTn14xWML4vx
    Failure [v1.messenger.ijelis.testnet]: Error: Método del contrato no encontrado
ServerTransactionError: Error: Método del contrato no encontrado
    at Object.parseResultError (/usr/local/lib/node_modules/near-cli/node_modules/near-api-js/lib/utils/rpc_errors.js:31:29)
    at Account.signAndSendTransactionV2 (/usr/local/lib/node_modules/near-cli/node_modules/near-api-js/lib/account.js:160:36)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async scheduleFunctionCall (/usr/local/lib/node_modules/near-cli/commands/call.js:57:38)
    at async Object.handler (/usr/local/lib/node_modules/near-cli/utils/exit-on-error.js:52:9) {
  type: 'MethodNotFound',
  context: undefined,
  index: 0,
  transaction_outcome: {
    proof: [ [Object] ],
    block_hash: 'G4QJ5PPykJWieCyi9P5Rzxu73t1YCKLGKnWL7Z5nUbhd',
    id: 'ExJyHwyCpjrFBXGXyr35Y6itkTPVpN1MtE4RnDbo2HBz',
    outcome: {
      logs: [],
      receipt_ids: [Array],
      gas_burnt: 2428039504502,
      tokens_burnt: '242803950450200000000',
      executor_id: 'ijelis.testnet',
      status: [Object],
      metadata: [Object]
    }
  }
}

¿Qué estoy haciendo mal?

EDITADO: Intenté desplegarlo usando la interfaz de near-create-app, y todo funcionó bien.

Tags:  

Answer

  1. Avatar for davy.ai

    A partir del mensaje de error, parece que el método “send_message” no se encuentra en el contrato. Esto podría ser debido a algunas razones:

    1. El método no está implementado en el código del contrato.
    2. El método está implementado, pero el código del contrato no ha sido actualizado en la cadena de bloques.
    3. Hay un error tipográfico en el nombre del método o en los parámetros.

    Para solucionar este problema, puedes intentar los siguientes pasos:

    1. Verifica que el método esté implementado correctamente en el código del contrato.
    2. Asegúrate de haber compilado e implementado la última versión del contrato en la cadena de bloques.
    3. Revisa si hay algún error tipográfico en el nombre del método o en los parámetros.
    4. Intenta usar el Explorador NEAR para interactuar con el contrato y ver si el método está disponible.

    Dado que mencionaste que pudiste implementarlo utilizando la interfaz near-create-app, parece que el problema ha sido resuelto.

Comments are closed.