{"id":13767744,"url":"https://github.com/eqlabs/starknet-multisig","last_synced_at":"2026-01-17T16:35:56.071Z","repository":{"id":37425858,"uuid":"467035946","full_name":"eqlabs/starknet-multisig","owner":"eqlabs","description":"Multi-signature functionality for StarkNet","archived":false,"fork":false,"pushed_at":"2023-06-22T12:55:12.000Z","size":4662,"stargazers_count":92,"open_issues_count":0,"forks_count":20,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-05-10T23:31:44.794Z","etag":null,"topics":["multisig","starknet"],"latest_commit_sha":null,"homepage":"","language":"Cairo","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eqlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-03-07T09:56:28.000Z","updated_at":"2025-01-19T06:23:18.000Z","dependencies_parsed_at":"2024-01-12T00:10:40.398Z","dependency_job_id":"a9a30584-a2a4-4fd1-a751-5c482bc5471e","html_url":"https://github.com/eqlabs/starknet-multisig","commit_stats":{"total_commits":147,"total_committers":5,"mean_commits":29.4,"dds":"0.25850340136054417","last_synced_commit":"03f9e1ee884df95d58daa3b236210b247c6e79f8"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eqlabs/starknet-multisig","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eqlabs%2Fstarknet-multisig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eqlabs%2Fstarknet-multisig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eqlabs%2Fstarknet-multisig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eqlabs%2Fstarknet-multisig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eqlabs","download_url":"https://codeload.github.com/eqlabs/starknet-multisig/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eqlabs%2Fstarknet-multisig/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28511868,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["multisig","starknet"],"created_at":"2024-08-03T16:01:11.692Z","updated_at":"2026-01-17T16:35:56.054Z","avatar_url":"https://github.com/eqlabs.png","language":"Cairo","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# Starsign multisig\n\nMulti-signature functionality for [StarkNet](https://starknet.io/what-is-starknet) utilizing Cairo 1.\n\n\u003e ## ⚠️ WARNING! ⚠️\n\u003e\n\u003e This project is under construction.\n\u003e **Do not use in production.**\n\n## Current version\n\nThe current version contains all basic multisig functionality, written in Cairo 1. This version consists of two pieces:\n\n- Cairo contract code\n- Unit tests for testing all the multisig functionality\n\nThe current version supports on-chain multi-signatures. The multisig is a separate contract, which is called through your regular account contract (wallet).\n\nThe current version is not finalized and is lacking some unit tests. As the Cairo 1 compiler evolves, the contract syntax and language capabilities also evolve - this repo will be updated to reflect the new functionalities.\n\n## Audit\n\nThis code has not been audited yet.\n\n## Functionality\n\nThe following functionality is supported:\n\n- Create a new multisig contract with the following parameters:\n  - List of signer addresses\n  - Multisig threshold\n- Submit a transaction\n- Confirm a transaction\n- Execute a transaction\n- Revoke a transaction confirmation\n- Change the list of signers and threshold\n\n### Creating a new transaction\n\nWhen creating a new transaction, you should call the `submit_transaction` function with the following parameters:\n\n- `to`: Address of the transaction target\n- `function_selector`: Name of the target function, decoded as an integer (felt)\n- `function_calldata`: The custom parameters to pass to the target function\n- `nonce`: Transaction nonce. Has to be +1 compared to the previous submitted transaction\n\nOnly signers of the multisig can submit a transaction.\n\n### Confirming a transaction\n\nOnce a transaction has been submitted to the multisig, it needs to be confirmed by `threshold` amount of signers. To confirm a transaction as a signer, you should call the `confirm_transaction` function with the transaction `nonce` as parameter.\n\nOnly signers of the multisig can confirm a transaction.\n\n### Executing a transaction\n\nOnce a transaction has been confirmed by `threshold` amount of signers, it can be executed by anyone - the executer does not have to be a signer. The execution is done by calling the `execute_transaction` function with the transaction `nonce` as parameter.\n\n### Revoking a confirmation\n\nIf you, as a signer, have confirmed a transaction, but wish to revoke the confirmation, you can call the `revoke_confirmation` function with the transaction `nonce` as parameter.\n\n### Changing the signers and threshold\n\nThere exist three functions for changing the signers and threshold:\n\n- `set_threshold`\n- `set_signers`\n- `set_signers_and_threshold`\n\nOnly signers can change the threshold and the amount of signers. These actions need to go through the multisig itself, so you have to go through the `submit_transaction` function (setting the multisig contract itself as the transaction target).\n\n## UI\n\nThe UI for the contracts is being developed in its own [repo](https://github.com/eqlabs/starknet-multisig-ui).\n\n## Future development\n\nIn near future we'll get here:\n\n- Possibly an option to use an account contract as multisig\n- Possibly off-chain signatures\n\n### Multisig implementation options\n\nThe current implementation uses Option 1 in the following image. Option 2 is in our roadmap for near future.\n\n\u003cimg src=\"multisig_options.png\" alt=\"options\" width=\"800\"/\u003e\n\n## Used technologies\n\n- Scarb for package management\n- Cairo 1 compiler\n\n## Usage\n\n- Install [Scarb](https://docs.swmansion.com/scarb)\n- If needed, install [Cairo 1.0](https://github.com/auditless/cairo-template) separately\n- Compile: `scarb build`\n- Run tests: `scarb run test`\n\n## Fluffy stuff\n\nCreated by [Equilibrium](https://equilibrium.co).\n\nIf you have any question, feel free to [join our Discord](https://discord.gg/BZbrRbSd2f).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feqlabs%2Fstarknet-multisig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feqlabs%2Fstarknet-multisig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feqlabs%2Fstarknet-multisig/lists"}