{"id":19319665,"url":"https://github.com/blockcoders/xcm-sdk","last_synced_at":"2025-07-27T04:01:56.367Z","repository":{"id":65167188,"uuid":"544976247","full_name":"blockcoders/xcm-sdk","owner":"blockcoders","description":"XCM SDK is a tool that provides an interface to send XCM messages for Substrate based blockchains.","archived":false,"fork":false,"pushed_at":"2023-02-27T12:35:21.000Z","size":2461,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T02:22:27.451Z","etag":null,"topics":["asset","blockchain","kusama","multi-asset","polkadot","polkadot-js","substrate","token","vmp","xcm","xcm-format","xcmp"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blockcoders.png","metadata":{"files":{"readme":"README-es.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-03T15:08:57.000Z","updated_at":"2025-03-27T06:58:29.000Z","dependencies_parsed_at":"2024-11-10T01:28:09.008Z","dependency_job_id":"0d447b24-8f46-48ba-9722-9d9dccab4486","html_url":"https://github.com/blockcoders/xcm-sdk","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockcoders%2Fxcm-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockcoders%2Fxcm-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockcoders%2Fxcm-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blockcoders%2Fxcm-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blockcoders","download_url":"https://codeload.github.com/blockcoders/xcm-sdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250287645,"owners_count":21405656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asset","blockchain","kusama","multi-asset","polkadot","polkadot-js","substrate","token","vmp","xcm","xcm-format","xcmp"],"created_at":"2024-11-10T01:24:45.195Z","updated_at":"2025-04-22T17:31:56.588Z","avatar_url":"https://github.com/blockcoders.png","language":"TypeScript","readme":"XCM SDK\n=======\n\n[![CircleCI](https://circleci.com/gh/blockcoders/xcm-sdk/tree/main.svg?style=svg)](https://circleci.com/gh/blockcoders/xcm-sdk/tree/main)\n[![Coverage Status](https://coveralls.io/repos/github/blockcoders/xcm-sdk/badge.svg?branch=main)](https://coveralls.io/github/blockcoders/xcm-sdk?branch=main)\n[![CodeQL](https://github.com/blockcoders/xcm-sdk/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/blockcoders/xcm-sdk/actions/workflows/codeql-analysis.yml)\n[![npm](https://img.shields.io/npm/v/xcm-sdk?label=version\u0026logo=npm)](https://www.npmjs.com/package/xcm-sdk)\n[![npm](https://img.shields.io/npm/dw/xcm-sdk?logo=npm)](https://www.npmjs.com/package/xcm-sdk?activeTab=versions)\n[![vulnerabilities](https://img.shields.io/snyk/vulnerabilities/npm/xcm-sdk)](https://snyk.io/test/github/blockcoders/xcm-sdk)\n[![License](https://img.shields.io/badge/license-MIT%20License-brightgreen.svg)](https://opensource.org/licenses/MIT)\n\n## Acerca\n\nXCM SDK es una herramienta que proporciona una interfaz para enviar mensajes XCM para cadenas de bloques basadas en Substrate. Esta biblioteca está escrita en Typescript, por lo que se puede importar en un conjunto completamente nuevo de aplicaciones o dApps que usan motores Javascript/Typescript como Node.js.\n\n## Introduccion\n\n### Instalar\n\n```sh\nnpm i xcm-sdk\n```\n\n### Importar\n\n```ts\n// JavaScript\nconst { Provider } = require(\"xcm-sdk\");\n\n// TypeScript\nimport { Provider } from \"xcm-sdk\";\n```\n\n### Proveedor\n\n```ts\nconst provider = new Provider(rpc, sender);\n```\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eParametro\u003c/th\u003e\n    \u003cth\u003eDescripcion\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003erpc\u003c/td\u003e\n    \u003ctd\u003erpc URL\u003c/td\u003e\n  \u003c/tr\u003e\n    \u003ctr\u003e\n    \u003ctd\u003esender\u003c/td\u003e\n    \u003ctd\u003efirmante de la transacción\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Ejemplos\n\nSi quieres firmar con Alice en un nodo local:\n\n```ts\nimport { Keyring } from '@polkadot/keyring'\nimport { cryptoWaitReady } from '@polkadot/util-crypto'\n\nconst rpc = \"ws://127.0.0.1:37345\"; // ws del nodo local\nawait cryptoWaitReady();\n\nconst keyring = new Keyring({ type: \"sr25519\" });\nconst sender = keyring.addFromUri(\"//Alice\");\n\nconst provider = new Provider(rpc, sender);\n```\n\nSi quieres firmar con una semilla mnemotécnica\n\n```ts\nimport { Keyring } from '@polkadot/keyring'\n\n\nconst sender = keyring.addFromMnemonic(\"\u003cyour mnemonic seed here\u003e\");\n```\n\nSi quieres firmar con la extensión de polkadotjs\n\n```ts\nimport { web3FromAddress, web3Accounts, web3Enable } from \"@polkadot/extension-dapp\";\n\nconst extensions = await web3Enable(\"\u003cyour app name\u003e\");\nconst accounts = await web3Accounts();\nconst accountId = accounts[0].address;\n\nconst injector = await web3FromAddress(accountId);\n\nconst provider = new Provider(rpc, accountId);\nprovider.setInjectorSigner(injector.signer);\n```\n\n## Metodos soportados\n\n\u003ca href=\"https://wiki.polkadot.network/docs/learn-xcm#reserve-asset-transfer\"\u003e Reserve Asset Transfer \u003c/a\u003e con los metodos reserveTransferAsset y LimitedReserveTransferAsset y \u003ca href=\"https://wiki.polkadot.network/docs/learn-xcm#asset-teleportation\"\u003eAsset teleportation \u003c/a\u003e con los metodos teleportAsset y LimitedTeleportAsset.\n\n```ts\nprovider.limitedReserveTransferAssets(params);\n\nprovider.reserveTransferAssets(params);\n\nprovider.limitedReserveTransferAssets(params);\n\nprovider.reserveTransferAssets(params);\n```\n\n### Parametros de los metodos\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eParametro\u003c/th\u003e\n    \u003cth\u003eDescripcion\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003edestination\u003c/td\u003e\n    \u003ctd\u003eEl destino para transferir el activo. Si desea transferir activos de la cadena 'relay/principal' a una cadena 'parachain', configure 'Parachain'. Predeterminado 'Here'.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003edestinationParents\u003c/td\u003e\n    \u003ctd\u003e0 es el valor predeterminado, 1 cuando desea transferir de parachain a relaychain o de parachain a parachain\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003edestinationValue\u003c/td\u003e\n    \u003ctd\u003eEl valor de destino, por ejemplo, una identificación de parachain\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003ebeneficiary\u003c/td\u003e\n    \u003ctd\u003eobjetivo del beneficiario, una accountId32\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003ebeneficiaryParents\u003c/td\u003e\n    \u003ctd\u003e0 por defecto\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003ebeneficiaryValue\u003c/td\u003e\n    \u003ctd\u003eEl valor del beneficiario, la dirección de la cuenta para enviar el activo\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eamount\u003c/td\u003e\n    \u003ctd\u003ecantidad de tokens a transferir\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eassetId\u003c/td\u003e\n    \u003ctd\u003eEl identificador del asset para transferir desde una parachain, asegúrese de que la parachain admita el activo y que la cuenta del remitente tenga suficientes activos para transferir\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eweightLimit\u003c/td\u003e\n    \u003ctd\u003eOpcional, solo para métodos limitados. Establece el peso máximo para la transaccion\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Descargo de responsabilidad\n\nDepende de la configuración de la parachain o la relay chain, debe usar la teletransportación de activos o la transferencia de activos de reserva. Asegúrese de saber qué método usar antes de ejecutar cualquier transferencia. Puedes buscar en cualquier escaneo para saber, por ejemplo \u003ca href=\"https://rococo.subscan.io/xcm_transfer\"\u003erococo scan\u003c/a\u003e\n\n## Ejemplos en Rococo\n\nSi quieres hacer pruebas en Testnet, tienes Rococo.\n\u003c/br\u003e\nConsigue algunos activos: \u003ca href=\"https://app.element.io/#/room/#rococo-faucet:matrix.org\"\u003eRococo faucet\u003c/a\u003e\n\n### Config\n\nLos ejemplos están en ./examples/rococo/, puede poner tu configuración en ./examples/rococo/rococo-examples-util.ts. Luego puedes ejecutar un comando por cada ejemplo. Si quieres ejecutarlos de forma manual, debes crear tu propio script (.js o .ts) e importar las dependencias.\n\n```ts\nexport const rococoExampleUtils = {\n  rococoRpc: 'wss://rococo-rpc.polkadot.io',\n  rockMineRpc: 'wss://rococo-rockmine-rpc.polkadot.io',\n  rockMineParachainId: 1000,\n  mangataParachainId: 2110,\n  daliParachainId: 2087,\n  senderMnemonic: '\u003cyour account mnemonic\u003e',\n  rockmineDestinationAccount: '\u003crockmine address account\u003e',\n  daliDestinationAccount: '\u003cdali destination account\u003e',\n  rococoDestinationAccount: '\u003crococo address account\u003e',\n  mangataDestinationAccount: '\u003cmangata address account\u003e',\n  rocAmount: \u003camount to transfer\u003e,\n}\n```\n\n### Enviar activos de Rococo a Rockmine\n\ncomando:\n\n```ts\nnpx ts-node src/examples/rococo/rococo-to-rockmine.ts\n```\n\nmanual:\n\n```ts\nconst destination = \"Parachain\";\nconst destinationValue = 2000; // Rockmine parchain id\nconst beneficiary = \"AccountId32\";\nconst beneficiaryValue = \"\u003crockmine account address\u003e\"; // account address\nconst amount = 1000000000000000;\n\nconst res = await provider.limitedTeleportAssets({\n  destination,\n  destinationValue,\n  beneficiary,\n  beneficiaryValue,\n  amount,\n});\n```\n\no\n\ncomando:\n\n```ts\nnpx ts-node src/examples/rococo/rococo-to-rockmine-no-limited.ts\n```\n\nmanual:\n\n```ts\n  const destination = \"Parachain\"\n  const destinationValue = 2000 // Rockmine parchain id\n  const beneficiary = \"AccountId32\"\n  const beneficiaryValue = \"\u003crockmine account address\u003e\" // account address\n  const amount = 1000000000000000\n\n  const res = await provider.teleportAssets({\n    destination,\n    destinationValue,\n    beneficiary,\n    beneficiaryValue,\n    amount,\n  });\n```\n\n### Enviar activos de RockMine a Rococo\n\ncomando:\n\n```ts\nnpx ts-node src/examples/rococo/rockmine-to-rococo.ts\n```\n\nmanual:\n\n```ts\nconst destinationParents = 1; // Destination to Rococo\nconst beneficiary = \"AccountId32\";\nconst beneficiaryValue = \"\u003crococo account address\u003e\"; // account address\nconst amount = 1000000000000000;\n\nconst res = await provider.limitedTeleportAssets({\n  destination,\n  destinationValue,\n  beneficiary,\n  beneficiaryValue,\n  amount,\n});\n```\n\n### Enviar Activo de Rococo a Mangata\n\nEl activo ROC en Mangata es el activo con id 4. Puedes chequear \u003ca href=\"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Froccoco-testnet-collator-01.mangatafinance.cloud#/chainstate\"\u003eaquí\u003c/a\u003e, en \"SELECTED STATE QUERY\" selecciona tokens, luego en el campo u128 input pon 4.\n\ncomando:\n\n```ts\nnpx ts-node src/examples/rococo/rococo-to-mangata-no-limited.ts\n```\n\nmanual:\n\n```ts\n  const destination = \"Parachain\"\n  const destinationValue = 2110 // Mangata parchain id\n  const beneficiary = \"AccountId32\"\n  const beneficiaryValue = \"\u003cmangata account address\u003e\" // account address\n  const amount = 1000000000000000\n\n  const res = await provider.reserveTransferAssets({\n    destination,\n    destinationValue,\n    beneficiary,\n    beneficiaryValue,\n    amount,\n  });\n```\n\nver token transferido:\n![](.images/mangata-roc.png)\n\n## Otros ejemplos\n\n\u003ca href=\"./src/examples/local-network/readme-es.md\"\u003eejemplos en un red local\u003c/a\u003e\n\n## Soporte para otras paletas y métodos\n\nEl sdk también tiene un método para hacer extrinsics personalizados definidos por el usuario. Puedes llamar a cualquier paleta y método y pasar un cuerpo personalizado a ese método por tu cuenta.\n\n```ts\nprovider.customExtrinsic(params)\n```\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eParámetro\u003c/th\u003e\n    \u003cth\u003eDescripción\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003easSudo\u003c/td\u003e\n    \u003ctd\u003epase true si desea ejecutar el extrinsic como sudo, por defecto es false\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003epallet\u003c/td\u003e\n    \u003ctd\u003eLa paleta a llamar, por ejemplo \"polkadotXcm\", \"xcmPallet\"\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003emethod\u003c/td\u003e\n    \u003ctd\u003eEl método a llamar en la paleta, por ejemplo: \"reserveTransferAssets\"\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003ebody\u003c/td\u003e\n    \u003ctd\u003eLos argumentos para el método, pueden ser un arreglo o un objeto\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Ejemplos\n\n### Teletransportar activos\n\nDesde Rococo a Rockmine utilizando el cuerpo como objeto:\n\ncomando:\n\n```sh\nnpx ts-node src/examples/custom-extrinsic/teleport-relaychain-to-parachain.ts\n```\n\nmanual:\n\n```ts\nconst pallet = \"xcmPallet\"\nconst method = \"limitedTeleportAssets\"\nconst body = {\n    dest: {\n      V1: {\n        parents: 0,\n        interior: {\n          X1: {\n            Parachain: 1000,\n          },\n        },\n      },\n    },\n    beneficiary: {\n      V1: {\n        parents: 0,\n        interior: {\n          X1: {\n            AccountId32: {\n              network: 'Any',\n              id: u8aToHex(decodeAddress(\"\u003crockmine address account\u003e\")),\n            },\n          },\n        },\n      },\n    },\n    assets: {\n      V1: [\n        {\n          id: {\n            Concrete: {\n              parents: 0,\n              interior: 'Here',\n            },\n          },\n          fun: {\n            Fungible: 100000000000,\n          },\n        },\n      ],\n    },\n    feeAssetItem: 0,\n    weightLimit: 'Unlimited',\n  }\n\nconst res = await provider.customExtrinsic({\n    pallet,\n    method,\n    body,\n})\n```\n\nDe Rococo a Rockmine utilizando el cuerpo como un arreglo:\n\n```ts\nconst pallet = \"xcmPallet\"\nconst method = \"limitedTeleportAssets\"\nconst body = [\n    // dest\n    {\n      V1: {\n        parents: 0,\n        interior: {\n          X1: {\n            Parachain: 1000,\n          },\n        },\n      },\n    },\n\n    // beneficiary\n    {\n      V1: {\n        parents: 0,\n        interior: {\n          X1: {\n            AccountId32: {\n              network: 'Any',\n              id: u8aToHex(decodeAddress(\"\u003crockmine address account\u003e\")),\n            },\n          },\n        },\n      },\n    },\n\n    // assets\n    {\n      V1: [\n        {\n          id: {\n            Concrete: {\n              parents: 0,\n              interior: 'Here',\n            },\n          },\n          fun: {\n            Fungible: 100000000000,\n          },\n        },\n      ],\n    },\n\n    // feeAssetItem\n    0,\n\n    // weigthLimit\n    'Unlimited',\n  ]\n\nconst res = await provider.customExtrinsic({\n    pallet,\n    method,\n    body,\n})\n```\n\nDe Rockmine a Rococo:\n\ncomando:\n\n```sh\nnpx ts-node src/examples/custom-extrinsic/teleport-parachain-to-relay.ts\n```\n\nmanual:\n\n```ts\nconst pallet = 'xcmPallet'\nconst method = 'limitedTeleportAssets'\nconst body = {\n    dest: {\n      V1: {\n        parents: 1,\n        interior: 'Here',\n      },\n    },\n    beneficiary: {\n      V1: {\n        parents: 0,\n        interior: {\n          X1: {\n            AccountId32: {\n              network: 'Any',\n              id: u8aToHex(decodeAddress('\u003crococo address account\u003e')),\n            },\n          },\n        },\n      },\n    },\n    assets: {\n      V1: [\n        {\n          id: {\n            Concrete: {\n              parents: 1,\n              interior: 'Here',\n            },\n          },\n          fun: {\n            Fungible: 100000000000,\n          },\n        },\n      ],\n    },\n    feeAssetItem: 0,\n    weightLimit: 'Unlimited',\n  }\n\n  const res = await provider.customExtrinsic({\n    pallet,\n    method,\n    body,\n  })\n```\n\n### Multilocalización de asset\n\nDe \u003ca href=\"./src/examples/local-network/readme-es.md\"\u003eeste ejemplo de red local\u003c/a\u003e, para marcar un activo en trappist como multilocalización:\n\ncomando:\n\n```sh\nnpx ts-node src/examples/custom-extrinsic/mark-asset-as-multilocation.ts\n```\n\nmanual:\n\n```ts\nconst pallet = \"assetRegistry\"\nconst method = \"registerReserveAsset\"\nconst body = {\n  assetId: 1, // local asset id\n  assetMultiLocation: {\n    parents: 1,\n    interior: {\n      X3: [\n        {\n          Parachain: 1000,\n        },\n        {\n          PalletInstance: 50,\n        },\n        {\n          GeneralIndex: 1,\n        },\n      ],\n    },\n  },\n}\n\nconst res = await provider.customExtrinsic({\n  asSudo: true,\n  pallet,\n  method,\n  body,\n})\n```\n\n## Uso de CLI\n\nxcm sdk es también una herramienta de interfaz de línea de comandos que te ayuda a transferir y teletransportar activos entre cadenas.\n\ninstalar:\n\n```sh\nnpm i -g xcm-sdk\n```\n\nHay 4 comandos disponibles:\n\n```sh\nxcm-sdk limitedReserveTransferAssets [..args]\nxcm-sdk reserveTransferAssets [..args]\nxcm-sdk teleportAssets [...args]\nxcm-sdk limitedTeleportAssets [..args]\n```\n\ncomandos:\n\n![](.images/cli/cli.png)\n\nargumentos:\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eArg\u003c/th\u003e\n    \u003cth\u003eSignificado\u003c/th\u003e\n    \u003cth\u003eDescripción\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e--dest\u003c/td\u003e\n    \u003ctd\u003edestination\u003c/td\u003e\n    \u003ctd\u003e\n    El destino para transferir el activo. Si desea transferir el activo de la relaychain a una parachain, establezca \"Parachain\". Valor por defecto 'Here'.\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e--destP\u003c/td\u003e\n    \u003ctd\u003eDestination Parents\u003c/td\u003e\n    \u003ctd\u003e0 es por defecto, 1 cuando se quiere transferir de una parachain a relaychain\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e--destV\u003c/td\u003e\n    \u003ctd\u003eDestination Value\u003c/td\u003e\n    \u003ctd\u003eEl valor de destino, por ejemplo un parachain id\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e--ben\u003c/td\u003e\n    \u003ctd\u003eBeneficiary\u003c/td\u003e\n    \u003ctd\u003eobjetivo beneficiario, un accountId32\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e--benV\u003c/td\u003e\n    \u003ctd\u003eBeneficiary Value\u003c/td\u003e\n    \u003ctd\u003eValor del beneficiario, dirección de la cuenta para enviar el activo\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e--a\u003c/td\u003e\n    \u003ctd\u003eAmount\u003c/td\u003e\n    \u003ctd\u003eBeneficiary value, account address to send the asset to\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd style=\"white-space: nowrap;\"\u003e--assetId\u003c/td\u003e\n    \u003ctd\u003eAsset Id\u003c/td\u003e\n    \u003ctd\u003eAssetId para transferir desde parachain, asegúrese de que la parchain soporta el activo y la cuenta del remitente tiene suficiente activo para transferir\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e--wl\u003c/td\u003e\n    \u003ctd\u003eWeight Limit\u003c/td\u003e\n    \u003ctd\u003eOpcional, sólo para métodos limitados. Establece el peso máximo del extrinsic\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Ejemplos del CLI\n\n\u003ca href=\"./.docs/cli-examples-es.md\"\u003eVer ejemplos del cli\u003c/a\u003e\n\n## Probar\n\nEjecución de las pruebas unitarias.\n\n```sh\nnpm run test\n```\n\nEjecución de la cobertura de pruebas.\n\n```sh\nnpm run test:cov\n```\n\n## Registro de cambios\n\nConsulte [Changelog](CHANGELOG.md) para más información.\n\n## Contribuye\n\n¡Las contribuciones son bienvenidas! Consulte [Contributing](CONTRIBUTING.md).\n\n## Colaboradores\n\n- [**Jose Ramirez**](https://github.com/0xslipk)\n- [**Fernando Sirni**](https://github.com/fersirni)\n- [**Ruben Gutierrez**](https://github.com/RubenGutierrezC)\n\n## Licencia\n\nCon licencia MIT - consulte el archivo [LICENSE](LICENSE) para obtener más información.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblockcoders%2Fxcm-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblockcoders%2Fxcm-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblockcoders%2Fxcm-sdk/lists"}