{"id":26647439,"url":"https://github.com/ar-io/vaot","last_synced_at":"2025-04-11T02:34:44.752Z","repository":{"id":277072098,"uuid":"916855276","full_name":"ar-io/vaot","owner":"ar-io","description":"An AO Process that provides a framework for administering vote-threshold-based proposals for Evals targeting other AO processes.","archived":false,"fork":false,"pushed_at":"2025-03-09T06:05:32.000Z","size":696,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-24T23:52:06.334Z","etag":null,"topics":["aos","arweave","controllers","multisig-wallet","process","remote-control","threshold-cryptography","voting-system"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/ar-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2025-01-14T22:08:06.000Z","updated_at":"2025-02-25T21:30:31.000Z","dependencies_parsed_at":"2025-02-12T01:30:00.218Z","dependency_job_id":"4ba6bded-b1ad-49a5-b587-deabbdacaab5","html_url":"https://github.com/ar-io/vaot","commit_stats":null,"previous_names":["ar-io/vaot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ar-io%2Fvaot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ar-io%2Fvaot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ar-io%2Fvaot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ar-io%2Fvaot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ar-io","download_url":"https://codeload.github.com/ar-io/vaot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248330012,"owners_count":21085634,"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":["aos","arweave","controllers","multisig-wallet","process","remote-control","threshold-cryptography","voting-system"],"created_at":"2025-03-24T23:52:10.118Z","updated_at":"2025-04-11T02:34:44.733Z","avatar_url":"https://github.com/ar-io.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vAOt - A Lightweight Proposal and Voting System in AO\n\n![image](https://github.com/user-attachments/assets/f89c8c96-911c-4cfc-8ba9-f63502690553)\n\nPropose and vAOt to:\n\n- add other wallet addresses, known as Controllers, that will have the right to propose votes and vote on proposals\n- remove existing controllers\n- have the process send an `Eval` message to another AO process (think: multi-sig-like, remote process control) or to itself (e.g. for controllers-sanctioned upgrades or customization of the process)\n\nSuggested workflow for controlling processes with multi-sig-like protections:\n\n1. Instantiate a vAOt process. The process creator will be the initial `Owner` of the vAOt process as well as the first Controller.\n2. Assign ownership of the vAOt process to either: a) the process itself if you want Controllers to manage upgrades or Ownership or state changes of the vAOt process or b) nil if you want the vAOt process to remain unowned\n3. Add other Controllers via proposal and voting workflows.\n4. Assign the `Owner` of a target process that you'd like to manage via vAOt to the vAOt process. The Controllers can now collectively manage the target process via proposal and voting workflows.\n\n## Handlers\n\n### Action: Propose\n\nActive Controllers may create proposals at any time and may also cast their vote at the time of the proposal's creation.\n\nRequired:\n\n```json\n{\n  \"Action\": \"Propose\",\n  \"Proposal-Type\": \"Add-Controller\"/\"Remove-Controller\"/\"Eval\"\n}\n```\n\nRequired for Add/Remove-Controller `Proposal-Type`:\n\n```json\n{\n  \"Controller\": \"\u003cAO-supported wallet address to use for Add/Remove-Controller\"\n}\n```\n\nRequired for Eval `Proposal-Type`:\n\nTags:\n\n```json\n{\n  \"Process-Id\": \"\u003cAO Process ID to target for Eval\u003e\"\n}\n```\n\nData:\n\n```text\n\u003cEval string to send to target Process-Id\u003e\n```\n\nOptional for all `Proposal-Type`s:\n\n```json\n{\n  \"Vote\": \"yay\" or \"nay\"\n}\n```\n\n### Action: Vote\n\nAny current Controller can cast a vote on an In-Progress Proposal. Proposals are completed when either:\n\n- a (round_down(Num Controllers / 2) + 1) majority has voted \"yay\", e.g. 1/1, 2/2, 2/3, 3/4, 3/5, 4/6, etc.\n- a majority of \"yay\"s can no longer be established, e.g. \"nay\"s votes are 1/2, 2/4, 3/6, etc.\n\nIf the deciding vote Passes the proposal, the proposal is immediately implemented.\n\nIf the outcome of a proposal is to remove a Controller, that Controller's existing votes on In-Progress proposals are revoked. In-Progress proposals are then re-evaluated for quorum immediately and may or may not reach a passable or failed outcome at that time. Proposal re-evaluation is handled in `Proposal-Number` order, i.e. the order in which proposals were created.\n\nRequired:\n\n```json\n{\n  \"Action\": \"Vote\",\n  \"Proposal-Id\": \"\u003cProposal ID string\u003e\"\n  \"Vote\": \"yay\" or \"nay\"\n}\n```\n\n### Action: Revoke-Proposal\n\nAllows the Controller that proposed a proposal to revoke it before it is finalized.\n\nRequired:\n\n```json\n{\n  \"Action\": \"Revoke-Proposal\",\n  \"Proposal-Number\": \"\u003cProposal-Number string\u003e\"\n}\n```\n\n### Action: Get-Controllers\n\nRetrieve the current controller list\n\n### Action: Get-Proposals\n\nRetrieve the current set of active proposals. NOTE: Completed proposals are dropped from state.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Far-io%2Fvaot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Far-io%2Fvaot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Far-io%2Fvaot/lists"}