{"id":22700442,"url":"https://github.com/uncomputable/simpiwallet","last_synced_at":"2025-04-13T06:14:28.723Z","repository":{"id":188337895,"uuid":"678550569","full_name":"uncomputable/simpiwallet","owner":"uncomputable","description":"First wallet that uses Simplicity descriptors","archived":false,"fork":false,"pushed_at":"2023-09-19T19:45:01.000Z","size":94,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-13T06:14:13.380Z","etag":null,"topics":["bitcoin","cli","cryptography","rust","wallet"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uncomputable.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-14T20:19:07.000Z","updated_at":"2023-09-23T21:08:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"8f9bbd74-06cf-4b6a-92b6-5dcd1613c33d","html_url":"https://github.com/uncomputable/simpiwallet","commit_stats":null,"previous_names":["uncomputable/simpiwallet"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uncomputable%2Fsimpiwallet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uncomputable%2Fsimpiwallet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uncomputable%2Fsimpiwallet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uncomputable%2Fsimpiwallet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uncomputable","download_url":"https://codeload.github.com/uncomputable/simpiwallet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248670435,"owners_count":21142904,"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":["bitcoin","cli","cryptography","rust","wallet"],"created_at":"2024-12-10T06:12:11.858Z","updated_at":"2025-04-13T06:14:28.669Z","avatar_url":"https://github.com/uncomputable.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simplicity Wallet\n\nFirst wallet that uses Simplicity descriptors.\n\nThe latest research on Bitcoin smart contracts at your fingertips.\n\n## Build the wallet\n\n```\n$ cargo build\n```\n\n## Install Elements\n\nWe need [Elements Core with added Simplicity support](https://github.com/ElementsProject/elements/tree/simplicity).\n\nThere are multiple ways to install it:\n\n### Download the binary\n\nDownload the [prebuilt binary by psgreco](https://github.com/psgreco/elements/releases/tag/simplicityregtest1-0.0) which adheres to the same security standards as the Bitcoin Core binaries.\n\n### Compile the binary\n\nCompile Elements manually using the [official instructions](https://github.com/ElementsProject/elements/blob/simplicity/doc/build-unix.md).\n\n### Use the nix shell\n\nUse the [provided nix shell](https://github.com/uncomputable/simpiwallet/blob/master/shell.nix). This will give you `elementsd` and `elements-cli`.\n\n```\n$ nix-shell\n```\n\n### Install via nixpkgs\n\nA slightly outdated version of Elements + Simplicity can be installed via nixpkgs.\n\n```\n$ nix-shell -p elementsd-simplicity\n```\n\n## Run the wallet\n\n```\n$ simpiwallet \u003cSUBCOMMAND\u003e\n$ simpiwallet help\n```\n\n## Initialize the wallet\n\nGenerate the initial xpub and save it to disk.\n\n```\n$ simpiwallet new\n```\n\nOther operations will read and write from the same file.\n\n**Secret keys are stored in plain on disk!** Don't forget, this is a research prototype. Use it on regtest or testnet, but never on mainnet!\n\n## Run Elements\n\nThe wallet needs to communicate with Elements.\n\nFeel free to use the [provided Elements configuration](https://github.com/uncomputable/simpiwallet/blob/master/elements.conf).\n\n```\n$ mkdir ~/.elements\n$ cp elements.conf ~/.elements\n```\n\nRun elementsd.\n\n```\n$ elementsd\n```\n\n## Fund the wallet\n\nInitially the wallet will not have any funds. You have to generate an address and send coins from another wallet.\n\nCheck how many coins are inside your Simplicity wallet. If there are enough, then you can skip the rest of this section.\n\n```\n$ simpiwallet getbalance\n: \u003cBALANCE\u003e\n```\n\nCreate an Elements wallet if you don't already have one.\n\n```\n$ elements-cli createwallet \u003cWALLETNAME\u003e\n```\n\nOr load your existing Elements wallet.\n\n```\n$ elements-cli loadwallet \u003cWALLETNAME\u003e\n```\n\nFor technical reasons it is often necessary to rescan the blockchain.\n\n```\n$ elements-cli rescanblockchain\n```\n\nCheck if your Elements wallet has funds. With the provided configuration, it should have 21 million bitcoin.\n\n```\n$ elements-cli getbalance\n```\n\nGenerate an address for your Simplicity wallet.\n\n```\n$ simpiwallet getnewaddress\n: \u003cADDRESS\u003e\n```\n\nSend coins to your Simplicity wallet.\n\n```\n$ elements-cli sendtoaddress \u003cADDRESS\u003e \u003cAMOUNT\u003e\n```\n\nMine an Elements block to finalize the transaction.\n\n```\n$ elements-cli -generate 1\n```\n\nNow your Simplicity wallet should have a higher balance.\n\n```\n$ simpiwallet getfunds\n: \u003cHIGHER_BALANCE\u003e\n```\n\n## Send to an address\n\nSend coins to a given Elements address.\n\n```\n$ simpiwallet sendtoaddress \u003cADDRESS\u003e \u003cAMOUNT\u003e\n: \u003cTXID\u003e\n```\n\nThe wallet will sign and broadcast the transaction immediately to Elements via RPC.\n\nThe returned transaction ID can be used to get the full transaction hex.\n\n```\n$ elements-cli getrawtransaction \u003cTXID\u003e\n: \u003cTXHEX\u003e\n```\n\nUse [hal-simplicity](https://github.com/uncomputable/hal-simplicity) to inspect the transaction further.\n\n```\n$ hal-simplicity tx decode \u003cTXHEX\u003e\n```\n\nDon't forget to mine an Elements block to finalize the transaction.\n\n```\n$ elements-cli -generate 1\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funcomputable%2Fsimpiwallet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funcomputable%2Fsimpiwallet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funcomputable%2Fsimpiwallet/lists"}