{"id":26684318,"url":"https://github.com/subscan-explorer/subscan-multisig-react","last_synced_at":"2026-02-14T10:15:50.738Z","repository":{"id":37423235,"uuid":"379519262","full_name":"subscan-explorer/subscan-multisig-react","owner":"subscan-explorer","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-20T05:25:03.000Z","size":13823,"stargazers_count":12,"open_issues_count":8,"forks_count":11,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-26T09:19:40.255Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://multisig.subscan.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/subscan-explorer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-23T07:37:00.000Z","updated_at":"2025-01-20T05:25:04.000Z","dependencies_parsed_at":"2024-08-12T07:32:40.970Z","dependency_job_id":"5d204257-f609-4f54-8c2e-c940791c2f22","html_url":"https://github.com/subscan-explorer/subscan-multisig-react","commit_stats":null,"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subscan-explorer%2Fsubscan-multisig-react","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subscan-explorer%2Fsubscan-multisig-react/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subscan-explorer%2Fsubscan-multisig-react/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/subscan-explorer%2Fsubscan-multisig-react/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/subscan-explorer","download_url":"https://codeload.github.com/subscan-explorer/subscan-multisig-react/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248583353,"owners_count":21128571,"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":[],"created_at":"2025-03-26T09:19:47.444Z","updated_at":"2026-02-11T08:51:57.288Z","avatar_url":"https://github.com/subscan-explorer.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![grants_badge](./docs/grants_badge.png)\n\n# Subscan Multisig UI - React\n\nSubscan Multisig UI is a web Multisignature management tool. It's developed by the Subscan team.\nDevelopers are free to use the codebase to extend functionalities and develop unique user experiences for their audiences.\n\nThe backend project stores historical calls can be found [here](https://github.com/itering/subscan-multisig-backend), and call data retrieved will be parsed and verified on the frontend.\n\nThis is a React-rewrite of previous Vue [implementation](https://github.com/itering/subscan-multisig-ui).\n\n## Contents\n\n- [Feature](#Feature)\n- [Tutorial](#Tutorial)\n- [Integration](#Integration)\n- [QuickStart](#QuickStart)\n  - [Requirement](#Requirement)\n  - [Installation](#Install)\n  - [Test](#Test)\n- [Contributions](#Contributions)\n- [LICENSE](#LICENSE)\n- [Resource](#Resource)\n\n## Feature\n\n1. Create multi-signature account and send extrinsic\n2. Manage multi-signature wallets and extrinsic\n3. Support multiple networks that are based on Substrate development\n4. User-friendly UI\n\n## Tutorial\n\n### Prerequisites\n\n#### 1.Install chrome extension polkadot.js\n\nThis application will not save your account's private key. All extrinsics initiated will be signed through the polkadot.js extension. Make sure you have installed the polkadot.js extension and created an account in it.\n\n[Download link](https://chrome.google.com/webstore/detail/polkadot%7Bjs%7D-extension/mopnmbcafieddcagagdcbnhejhlodfdd)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/1_download.png\" style=\"width:800px\";\u003e\n\u003c/p\u003e\n\n#### 2.Authorize chrome extension polkadot.js\n\nIf you have installed the polkadot.js extension, you will be automatically connected when you enter the page. Please authorize SUBSCAN_Multisig access.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/2_auth.png\" style=\"width:800px\";\u003e\n\u003c/p\u003e\n\n### Manage multi-sig accounts\n\n#### 1.Create/Add multi-sig accounts\n\n- Click \"Create Wallet\"\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/3_create_wallet.png\" style=\"width:800px\";\u003e\n  \u003c/p\u003e\n- Fill in the required form data for a multi-sig account. Click \"Create\" to proceed.\n\n  \\*Name: The name/label of this multi-signature account. It is stored locally on your computer only.\n\n  \\*Threshold: The minimum number of approved members required for each extrinsic to be executed. The minimum input value is 2.\n\n  \\*Members: Participating members of a multi-signature account. The minimum number is 2 and the maximum number is 100.\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/4_add_members.png\" style=\"width:800px\";\u003e\n  \u003c/p\u003e\n\n#### 2.Manage multi-sig accounts\n\n- View the members of multi-sig account\n  \u003cp align=\"left\"\u003e\n    Click\n    \u003cimg src=\"./docs/btn_member.png\" width=\"30px\"\u003e\n    to show/hide the members of the multi-sig account (include remark name, account, status)\n  \u003c/p\u003e\n\n  \\*Injected account: The account existing in the local polkadot.js extension can be used for signing.\n\n  \\*External account: The account that does not exist in the local polkadot.js extension and cannot be used for signing.\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/5_view_members.png\" style=\"width:800px\";\u003e\n  \u003c/p\u003e\n\n- Manage multi-sig accounts\n  \u003cp align=\"left\"\u003e\n    1. Click\n    \u003cimg src=\"./docs/btn_detail.png\" width=\"30px\"\u003e\n    to enter multi-sig account details\n  \u003c/p\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/6_enter_detail.png\" style=\"width:800px\";\u003e\n  \u003c/p\u003e\n\n  \u003cp align=\"left\"\u003e\n    2. In the multi-sig account details, you can either edit the wallet name or delete the wallet by click the correspond icon.\n  \u003c/p\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/7_account_ops.png\" style=\"width:800px\";\u003e\n  \u003c/p\u003e\n\n### Multi-sig transfer\n\n#### 1.Perform a Multi-sig balance transfer\n\nClick \"Initiate extrinsic,\" enter the parameters, choose the submission method you want, click the corresponding button to submit\n\nThe member account that initiates the multi-sig transfer needs to hold a few token balance to pay for the network fees. Otherwise, the extrinsic will fail, and an error of \"LiquidityRestrictions\" will be raised.\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/8_initial_extrinsic.png\" style=\"width:800px\";\u003e\n  \u003c/p\u003e\n\n#### 2.Authorize a multi-sig transfer\n\n- \u003cp align=\"left\"\u003e\n    As shown in the figure,\n    \u003cimg src=\"./docs/btn_pending.png\" width=\"30px\"\u003e\n    a red badge on the button indicates there is at least one pending transaction in this wallet.\n\n  \u003c/p\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/9_pending.png\" style=\"width:800px\";\u003e\n  \u003c/p\u003e\n\n- Click to view the multi-signature account details. After confirming that the extrinsic call data is correct, click \"Approve\" and approve the extrinsic.\n\n  \\*For externally initiated extrinsics, call data may not be stored on the chain or in the database. Therefore, in the last \"approved\" extrinsic, you need to manually fill in the call data.\n\n    \u003cp align=\"center\"\u003e\n      \u003cimg src=\"./docs/10_approve.png\" style=\"width:800px\";\u003e\n    \u003c/p\u003e\n\n- When the number of approvals reaches the threshold, the extrinsic will be executed.\n    \u003cp align=\"center\"\u003e\n      \u003cimg src=\"./docs/11_progress.png\" style=\"width:800px\";\u003e\n    \u003c/p\u003e\n\n#### 3.Cancel multi-sig transfer\n\nOnly the initiator has the authority to cancel the multi-sig extrinsic. Click \"Cancel\" and sign the extrinsic to cancel.\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/12_cancel.png\" style=\"width:800px\";\u003e\n  \u003c/p\u003e\n\n## Integration\n\n### Add your own network in supported network list\n\n#### 1.Write your network config file\n\nAll networks are configured in `src/config/chains` folder, You can take `polkadot.json` as an exmaple:\n\n```\n{\n  \"name\": \"polkadot\",\n  \"displayName\": \"Polkadot\",\n  \"rpc\": \"wss://rpc.polkadot.io\",\n  // Optional (Delete this line in PR!)\n  \"api\": {\n    \"subql\": \"https://api.subquery.network/sq/itering/multisig-polkadot\"\n  },\n  \"logo\": \"/image/polkadot-button-mobile.png\",\n  // Optional (Delete this line in PR!)\n  \"explorerHostName\": \"polkadot\",\n  \"themeColor\": \"#e6007a\"\n}\n```\n\n#### 2.Make a PR to submit your network\n\nAfter completing the above json config file, you can place it under `src/config/chains`, and submit a PR targeting `master` branch, once it's approved, multisig APP will display your network in the list.\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/13_select_network.png\" style=\"width:800px\";\u003e\n  \u003c/p\u003e\n\n#### 3.Deploy your own subquery endpoint (optional)\n\nIn order to support advanced features such as transaction history, you need to deploy your own [subquery](https://doc.subquery.network/) endpoint, and add it to the json file above.\nYou can fork from the [subscan multisig subquery repo](https://github.com/subscan-explorer/subscan-multisig-subql) and add support for your network.\n\n## QuickStart\n\n### Requirement\n\n- Linux / Mac OSX\n- Git\n- yarn / npm\n- Node 14.15.x\n\n### Install\n\n```bash\nyarn \u0026\u0026 yarn start:dev\n```\n\n### Test\n\n```bash\n//unit\nyarn test:unit\n//e2e\nyarn test:e2e\n\n```\n\n## Contributions\n\nWe welcome contributions of any kind. Issues labeled can be good (first) contributions.\n\n## LICENSE\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n## Resource\n\n- [ITERING] \u003chttps://github.com/itering\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsubscan-explorer%2Fsubscan-multisig-react","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsubscan-explorer%2Fsubscan-multisig-react","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsubscan-explorer%2Fsubscan-multisig-react/lists"}